ZGlmZiAtLWdpdCBhL0luYy9MZWdhY3kvc3RtMzJfaGFsX2xlZ2FjeS5oIGIvSW5jL0xlZ2FjeS9zdG0zMl9oYWxfbGVnYWN5LmgKaW5kZXggMjk5ZWQ3MC4uNDhhZmY1NSAxMDA2NDQKLS0tIGEvSW5jL0xlZ2FjeS9zdG0zMl9oYWxfbGVnYWN5LmgKKysrIGIvSW5jL0xlZ2FjeS9zdG0zMl9oYWxfbGVnYWN5LmgKQEAgLTcsMTMgKzcsMTIgQEAKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgICogQGF0dGVudGlvbgogICAqCi0gICogPGgyPjxjZW50ZXI+JmNvcHk7IENvcHlyaWdodCAoYykgMjAxOSBTVE1pY3JvZWxlY3Ryb25pY3MuCi0gICogQWxsIHJpZ2h0cyByZXNlcnZlZC48L2NlbnRlcj48L2gyPgorICAqIENvcHlyaWdodCAoYykgMjAyMSBTVE1pY3JvZWxlY3Ryb25pY3MuCisgICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgKgotICAqIFRoaXMgc29mdHdhcmUgY29tcG9uZW50IGlzIGxpY2Vuc2VkIGJ5IFNUIHVuZGVyIEJTRCAzLUNsYXVzZSBsaWNlbnNlLAotICAqIHRoZSAiTGljZW5zZSI7IFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUKLSAgKiBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQ6Ci0gICogICAgICAgICAgICAgICAgICAgICAgICBvcGVuc291cmNlLm9yZy9saWNlbnNlcy9CU0QtMy1DbGF1c2UKKyAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIHVuZGVyIHRlcm1zIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUKKyAgKiBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb2Z0d2FyZSBjb21wb25lbnQuCisgICogSWYgbm8gTElDRU5TRSBmaWxlIGNvbWVzIHdpdGggdGhpcyBzb2Z0d2FyZSwgaXQgaXMgcHJvdmlkZWQgQVMtSVMuCiAgICoKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgICovCkBAIC0zOCw2ICszNywxNCBAQAogI2RlZmluZSBBRVNfQ0xFQVJGTEFHX0NDRiAgICAgICAgICAgICAgIENSWVBfQ0xFQVJGTEFHX0NDRgogI2RlZmluZSBBRVNfQ0xFQVJGTEFHX1JERVJSICAgICAgICAgICAgIENSWVBfQ0xFQVJGTEFHX1JERVJSCiAjZGVmaW5lIEFFU19DTEVBUkZMQUdfV1JFUlIgICAgICAgICAgICAgQ1JZUF9DTEVBUkZMQUdfV1JFUlIKKyNpZiBkZWZpbmVkKFNUTTMyVTUpCisjZGVmaW5lIENSWVBfREFUQVRZUEVfMzJCICAgICAgICAgICAgICAgQ1JZUF9OT19TV0FQCisjZGVmaW5lIENSWVBfREFUQVRZUEVfMTZCICAgICAgICAgICAgICAgQ1JZUF9IQUxGV09SRF9TV0FQCisjZGVmaW5lIENSWVBfREFUQVRZUEVfOEIgICAgICAgICAgICAgICAgQ1JZUF9CWVRFX1NXQVAKKyNkZWZpbmUgQ1JZUF9EQVRBVFlQRV8xQiAgICAgICAgICAgICAgICBDUllQX0JJVF9TV0FQCisjZGVmaW5lIENSWVBfQ0NGX0NMRUFSICAgICAgICAgICAgICAgICAgQ1JZUF9DTEVBUl9DQ0YKKyNkZWZpbmUgQ1JZUF9FUlJfQ0xFQVIgICAgICAgICAgICAgICAgICBDUllQX0NMRUFSX1JXRUlGCisjZW5kaWYgLyogU1RNMzJVNSAqLwogLyoqCiAgICogQH0KICAgKi8KQEAgLTIwNiw2ICsyMTMsMjAgQEAKICAgKiBAewogICAqLwogI2RlZmluZSBfX0hBTF9DT1JURVhfU1lTVElDS0NMS19DT05GSUcgSEFMX1NZU1RJQ0tfQ0xLU291cmNlQ29uZmlnCisjaWYgZGVmaW5lZChTVE0zMlU1KQorI2RlZmluZSAgTVBVX0RFVklDRV9uR25SbkUgICAgICAgICAgTVBVX0RFVklDRV9OR05STkUKKyNkZWZpbmUgIE1QVV9ERVZJQ0VfbkduUkUgICAgICAgICAgIE1QVV9ERVZJQ0VfTkdOUkUKKyNkZWZpbmUgIE1QVV9ERVZJQ0VfbkdSRSAgICAgICAgICAgIE1QVV9ERVZJQ0VfTkdSRQorI2VuZGlmIC8qIFNUTTMyVTUgKi8KKy8qKgorICAqIEB9CisgICovCisKKy8qKiBAZGVmZ3JvdXAgQ1JDX0FsaWFzZXMgQ1JDIEFQSSBhbGlhc2VzCisgICogQHsKKyAgKi8KKyNkZWZpbmUgSEFMX0NSQ19JbnB1dF9EYXRhX1JldmVyc2UgICBIQUxfQ1JDRXhfSW5wdXRfRGF0YV9SZXZlcnNlICAgIC8qITwgQWxpYXNlZCB0byBIQUxfQ1JDRXhfSW5wdXRfRGF0YV9SZXZlcnNlIGZvciBpbnRlciBTVE0zMiBzZXJpZXMgY29tcGF0aWJpbGl0eSAgKi8KKyNkZWZpbmUgSEFMX0NSQ19PdXRwdXRfRGF0YV9SZXZlcnNlICBIQUxfQ1JDRXhfT3V0cHV0X0RhdGFfUmV2ZXJzZSAgIC8qITwgQWxpYXNlZCB0byBIQUxfQ1JDRXhfT3V0cHV0X0RhdGFfUmV2ZXJzZSBmb3IgaW50ZXIgU1RNMzIgc2VyaWVzIGNvbXBhdGliaWxpdHkgKi8KIC8qKgogICAqIEB9CiAgICovCkBAIC0yMzUsMTEgKzI1NiwxOCBAQAogI2RlZmluZSBEQUNfV0FWRUdFTkVSQVRJT05fTk9JU0UgICAgICAgICAgICAgICAgICAgICAgICBEQUNfV0FWRV9OT0lTRQogI2RlZmluZSBEQUNfV0FWRUdFTkVSQVRJT05fVFJJQU5HTEUgICAgICAgICAgICAgICAgICAgICBEQUNfV0FWRV9UUklBTkdMRQogCi0jaWYgZGVmaW5lZChTVE0zMkc0KSB8fCBkZWZpbmVkKFNUTTMySDcpCisjaWYgZGVmaW5lZChTVE0zMkc0KSB8fCBkZWZpbmVkKFNUTTMySDcpIHx8IGRlZmluZWQgKFNUTTMyVTUpCiAjZGVmaW5lIERBQ19DSElQQ09OTkVDVF9ESVNBQkxFICAgICAgIERBQ19DSElQQ09OTkVDVF9FWFRFUk5BTAogI2RlZmluZSBEQUNfQ0hJUENPTk5FQ1RfRU5BQkxFICAgICAgICBEQUNfQ0hJUENPTk5FQ1RfSU5URVJOQUwKICNlbmRpZgogCisjaWYgZGVmaW5lZChTVE0zMlU1KQorI2RlZmluZSBEQUNfVFJJR0dFUl9TVE9QX0xQVElNMV9PVVQgIERBQ19UUklHR0VSX1NUT1BfTFBUSU0xX0NIMQorI2RlZmluZSBEQUNfVFJJR0dFUl9TVE9QX0xQVElNM19PVVQgIERBQ19UUklHR0VSX1NUT1BfTFBUSU0zX0NIMQorI2RlZmluZSBEQUNfVFJJR0dFUl9MUFRJTTFfT1VUICAgICAgIERBQ19UUklHR0VSX0xQVElNMV9DSDEKKyNkZWZpbmUgREFDX1RSSUdHRVJfTFBUSU0zX09VVCAgICAgICBEQUNfVFJJR0dFUl9MUFRJTTNfQ0gxCisjZW5kaWYKKwogI2lmIGRlZmluZWQoU1RNMzJMMSkgfHwgZGVmaW5lZChTVE0zMkw0KSB8fCBkZWZpbmVkKFNUTTMyRzApIHx8IGRlZmluZWQoU1RNMzJMNSkgfHwgZGVmaW5lZChTVE0zMkg3KSB8fCBkZWZpbmVkKFNUTTMyRjQpIHx8IGRlZmluZWQoU1RNMzJHNCkKICNkZWZpbmUgSEFMX0RBQ19NU1BfSU5JVF9DQl9JRCAgICAgICBIQUxfREFDX01TUElOSVRfQ0JfSUQKICNkZWZpbmUgSEFMX0RBQ19NU1BfREVJTklUX0NCX0lEICAgICBIQUxfREFDX01TUERFSU5JVF9DQl9JRApAQCAtMzgyLDcgKzQxMCw2IEBACiAjZGVmaW5lIERBQ19UUklHR0VSX0xQMl9PVVQgICAgICAgICAgICAgICAgICAgICAgICBEQUNfVFJJR0dFUl9MUFRJTTJfT1VUCiAKICNlbmRpZiAvKiBTVE0zMkg3ICovCi0KIC8qKgogICAqIEB9CiAgICovCkBAIC00NzAsMTUgKzQ5NywyNCBAQAogI2RlZmluZSBPQl9CT09UX0VOVFJZX0ZPUkNFRF9GTEFTSCAgICBPQl9CT09UX0xPQ0tfRU5BQkxFCiAjZW5kaWYKICNpZiBkZWZpbmVkKFNUTTMySDcpCi0jZGVmaW5lIEZMQVNIX0ZMQUdfU05FQ0NFX0JBTksxUlIgRkxBU0hfRkxBR19TTkVDQ0VSUl9CQU5LMQotI2RlZmluZSBGTEFTSF9GTEFHX0RCRUNDRV9CQU5LMVJSIEZMQVNIX0ZMQUdfREJFQ0NFUlJfQkFOSzEKLSNkZWZpbmUgRkxBU0hfRkxBR19TVFJCRVJfQkFOSzFSICBGTEFTSF9GTEFHX1NUUkJFUlJfQkFOSzEKLSNkZWZpbmUgRkxBU0hfRkxBR19TTkVDQ0VfQkFOSzJSUiBGTEFTSF9GTEFHX1NORUNDRVJSX0JBTksyCi0jZGVmaW5lIEZMQVNIX0ZMQUdfREJFQ0NFX0JBTksyUlIgRkxBU0hfRkxBR19EQkVDQ0VSUl9CQU5LMgotI2RlZmluZSBGTEFTSF9GTEFHX1NUUkJFUl9CQU5LMlIgIEZMQVNIX0ZMQUdfU1RSQkVSUl9CQU5LMgotI2RlZmluZSBGTEFTSF9GTEFHX1dEVyAgICAgICAgICAgIEZMQVNIX0ZMQUdfV0JORQotI2RlZmluZSBPQl9XUlBfU0VDVE9SX0FsbCAgICAgICAgIE9CX1dSUF9TRUNUT1JfQUxMCisjZGVmaW5lIEZMQVNIX0ZMQUdfU05FQ0NFX0JBTksxUlIgICAgIEZMQVNIX0ZMQUdfU05FQ0NFUlJfQkFOSzEKKyNkZWZpbmUgRkxBU0hfRkxBR19EQkVDQ0VfQkFOSzFSUiAgICAgRkxBU0hfRkxBR19EQkVDQ0VSUl9CQU5LMQorI2RlZmluZSBGTEFTSF9GTEFHX1NUUkJFUl9CQU5LMVIgICAgICBGTEFTSF9GTEFHX1NUUkJFUlJfQkFOSzEKKyNkZWZpbmUgRkxBU0hfRkxBR19TTkVDQ0VfQkFOSzJSUiAgICAgRkxBU0hfRkxBR19TTkVDQ0VSUl9CQU5LMgorI2RlZmluZSBGTEFTSF9GTEFHX0RCRUNDRV9CQU5LMlJSICAgICBGTEFTSF9GTEFHX0RCRUNDRVJSX0JBTksyCisjZGVmaW5lIEZMQVNIX0ZMQUdfU1RSQkVSX0JBTksyUiAgICAgIEZMQVNIX0ZMQUdfU1RSQkVSUl9CQU5LMgorI2RlZmluZSBGTEFTSF9GTEFHX1dEVyAgICAgICAgICAgICAgICBGTEFTSF9GTEFHX1dCTkUKKyNkZWZpbmUgT0JfV1JQX1NFQ1RPUl9BbGwgICAgICAgICAgICAgT0JfV1JQX1NFQ1RPUl9BTEwKICNlbmRpZiAvKiBTVE0zMkg3ICovCisjaWYgZGVmaW5lZChTVE0zMlU1KQorI2RlZmluZSBPQl9VU0VSX25SU1RfU1RPUCAgICAgICAgICAgICBPQl9VU0VSX05SU1RfU1RPUAorI2RlZmluZSBPQl9VU0VSX25SU1RfU1REQlkgICAgICAgICAgICBPQl9VU0VSX05SU1RfU1REQlkKKyNkZWZpbmUgT0JfVVNFUl9uUlNUX1NIRFcgICAgICAgICAgICAgT0JfVVNFUl9OUlNUX1NIRFcKKyNkZWZpbmUgT0JfVVNFUl9uU1dCT09UMCAgICAgICAgICAgICAgT0JfVVNFUl9OU1dCT09UMAorI2RlZmluZSBPQl9VU0VSX25CT09UMCAgICAgICAgICAgICAgICBPQl9VU0VSX05CT09UMAorI2RlZmluZSBPQl9uQk9PVDBfUkVTRVQgICAgICAgICAgICAgICBPQl9OQk9PVDBfUkVTRVQKKyNkZWZpbmUgT0JfbkJPT1QwX1NFVCAgICAgICAgICAgICAgICAgT0JfTkJPT1QwX1NFVAorI2VuZGlmIC8qIFNUTTMyVTUgKi8KIAogLyoqCiAgICogQH0KQEAgLTUyMSw2ICs1NTcsNyBAQAogI2RlZmluZSBIQUxfU1lTQ0ZHX0VuYWJsZUlPQW5hbG9nU3dpdGNoVkREICAgICAgICBIQUxfU1lTQ0ZHX0VuYWJsZUlPU3dpdGNoVkRECiAjZGVmaW5lIEhBTF9TWVNDRkdfRGlzYWJsZUlPQW5hbG9nU3dpdGNoVkREICAgICAgIEhBTF9TWVNDRkdfRGlzYWJsZUlPU3dpdGNoVkRECiAjZW5kaWYgLyogU1RNMzJHNCAqLworCiAvKioKICAgKiBAfQogICAqLwpAQCAtNTk1LDEyICs2MzIsMTIgQEAKICNkZWZpbmUgR1BJT19BRjFfTFBUSU0gICAgICAgICAgICAgICAgICAgICAgICAgICAgR1BJT19BRjFfTFBUSU0xCiAjZGVmaW5lIEdQSU9fQUYyX0xQVElNICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdQSU9fQUYyX0xQVElNMQogCi0jaWYgZGVmaW5lZChTVE0zMkwwKSB8fCBkZWZpbmVkKFNUTTMyTDQpIHx8IGRlZmluZWQoU1RNMzJGNCkgfHwgZGVmaW5lZChTVE0zMkYyKSB8fCBkZWZpbmVkKFNUTTMyRjcpIHx8IGRlZmluZWQoU1RNMzJHNCkgfHwgZGVmaW5lZChTVE0zMkg3KSB8fCBkZWZpbmVkKFNUTTMyV0IpCisjaWYgZGVmaW5lZChTVE0zMkwwKSB8fCBkZWZpbmVkKFNUTTMyTDQpIHx8IGRlZmluZWQoU1RNMzJGNCkgfHwgZGVmaW5lZChTVE0zMkYyKSB8fCBkZWZpbmVkKFNUTTMyRjcpIHx8IGRlZmluZWQoU1RNMzJHNCkgfHwgZGVmaW5lZChTVE0zMkg3KSB8fCBkZWZpbmVkKFNUTTMyV0IpIHx8IGRlZmluZWQoU1RNMzJVNSkKICNkZWZpbmUgIEdQSU9fU1BFRURfTE9XICAgICAgICAgICAgICAgICAgICAgICAgICAgR1BJT19TUEVFRF9GUkVRX0xPVwogI2RlZmluZSAgR1BJT19TUEVFRF9NRURJVU0gICAgICAgICAgICAgICAgICAgICAgICBHUElPX1NQRUVEX0ZSRVFfTUVESVVNCiAjZGVmaW5lICBHUElPX1NQRUVEX0ZBU1QgICAgICAgICAgICAgICAgICAgICAgICAgIEdQSU9fU1BFRURfRlJFUV9ISUdICiAjZGVmaW5lICBHUElPX1NQRUVEX0hJR0ggICAgICAgICAgICAgICAgICAgICAgICAgIEdQSU9fU1BFRURfRlJFUV9WRVJZX0hJR0gKLSNlbmRpZiAvKiBTVE0zMkwwIHx8IFNUTTMyTDQgfHwgU1RNMzJGNCB8fCBTVE0zMkYyIHx8IFNUTTMyRjcgfHwgU1RNMzJHNCB8fCBTVE0zMkg3IHx8IFNUTTMyV0IqLworI2VuZGlmIC8qIFNUTTMyTDAgfHwgU1RNMzJMNCB8fCBTVE0zMkY0IHx8IFNUTTMyRjIgfHwgU1RNMzJGNyB8fCBTVE0zMkc0IHx8IFNUTTMySDcgfHwgU1RNMzJXQiB8fCBTVE0zMlU1Ki8KIAogI2lmIGRlZmluZWQoU1RNMzJMMSkKICNkZWZpbmUgIEdQSU9fU1BFRURfVkVSWV9MT1cgICAgR1BJT19TUEVFRF9GUkVRX0xPVwpAQCAtNjE2LDYgKzY1MywyMCBAQAogI2VuZGlmIC8qIFNUTTMyRjAgfHwgU1RNMzJGMyB8fCBTVE0zMkYxICovCiAKICNkZWZpbmUgR1BJT19BRjZfREZTRE0gICAgICAgICAgICAgICAgICAgICAgICAgICAgR1BJT19BRjZfREZTRE0xCisKKyNpZiBkZWZpbmVkKFNUTTMyVTUpCisjZGVmaW5lIEdQSU9fQUYwX1JUQ181MEh6ICAgICAgICAgICAgICAgICAgICAgICAgIEdQSU9fQUYwX1JUQ181MEhaCisjZW5kaWYgLyogU1RNMzJVNSAqLworLyoqCisgICogQH0KKyAgKi8KKworLyoqIEBkZWZncm91cCBIQUxfR1RaQ19BbGlhc2VkX0RlZmluZXMgSEFMIEdUWkMgQWxpYXNlZCBEZWZpbmVzIG1haW50YWluZWQgZm9yIGxlZ2FjeSBwdXJwb3NlCisgICogQHsKKyAgKi8KKyNpZiBkZWZpbmVkKFNUTTMyVTUpCisjZGVmaW5lIEdUWkNfUEVSSVBIX0RDTUkgICAgICAgICAgICAgICAgICAgICAgR1RaQ19QRVJJUEhfRENNSV9QU1NJCisjZW5kaWYgLyogU1RNMzJVNSAqLwogLyoqCiAgICogQH0KICAgKi8KQEAgLTg1Myw2ICs5MDQsMjAgQEAKICNkZWZpbmUgTFBUSU1fVFJJR1NBTVBMRVRJTUVfNFRSQU5TSVRJT04gICAgICAgIExQVElNX1RSSUdTQU1QTEVUSU1FXzRUUkFOU0lUSU9OUwogI2RlZmluZSBMUFRJTV9UUklHU0FNUExFVElNRV84VFJBTlNJVElPTiAgICAgICAgTFBUSU1fVFJJR1NBTVBMRVRJTUVfOFRSQU5TSVRJT05TCiAKKworLyoqIEBkZWZncm91cCBIQUxfTFBUSU1fQWxpYXNlZF9EZWZpbmVzIEhBTCBMUFRJTSBBbGlhc2VkIERlZmluZXMgbWFpbnRhaW5lZCBmb3IgbGVnYWN5IHB1cnBvc2UKKyAgKiBAeworICAqLworI2RlZmluZSBIQUxfTFBUSU1fUmVhZENvbXBhcmUgICAgICBIQUxfTFBUSU1fUmVhZENhcHR1cmVkVmFsdWUKKy8qKgorICAqIEB9CisgICovCisKKyNpZiBkZWZpbmVkKFNUTTMyVTUpCisjZGVmaW5lIExQVElNX0lTUl9DQzEgICAgICAgIExQVElNX0lTUl9DQzFJRgorI2RlZmluZSBMUFRJTV9JU1JfQ0MyICAgICAgICBMUFRJTV9JU1JfQ0MySUYKKyNkZWZpbmUgTFBUSU1fQ0hBTk5FTF9BTEwgICAgMHgwMDAwMDAwMFUKKyNlbmRpZiAvKiBTVE0zMlU1ICovCiAvKioKICAgKiBAfQogICAqLwpAQCAtMTE5MSw2ICsxMjU2LDEwIEBACiAjZGVmaW5lIFRJTV9USU0zX1RJMV9DT01QMUNPTVAyX09VVCAgIFRJTV9USU0zX1RJMV9DT01QMV9DT01QMgogI2VuZGlmCiAKKyNpZiBkZWZpbmVkKFNUTTMyVTUpIHx8IGRlZmluZWQoU1RNMzJNUDIpCisjZGVmaW5lIE9DUkVGX0NMRUFSX1NFTEVDVF9Qb3MgICAgICAgT0NSRUZfQ0xFQVJfU0VMRUNUX1BPUworI2RlZmluZSBPQ1JFRl9DTEVBUl9TRUxFQ1RfTXNrICAgICAgIE9DUkVGX0NMRUFSX1NFTEVDVF9NU0sKKyNlbmRpZgogLyoqCiAgICogQH0KICAgKi8KQEAgLTEzNzksNiArMTQ0OCwyMCBAQAogICAqLwogI2VuZGlmICAvKiBTVE0zMkw0IHx8ICBTVE0zMkY3IHx8ICBTVE0zMkY0IHx8ICBTVE0zMkg3ICovCiAKKyNpZiBkZWZpbmVkKFNUTTMyTDQpIHx8IGRlZmluZWQoU1RNMzJGNykgfHwgZGVmaW5lZChTVE0zMkY0Mjd4eCkgfHwgZGVmaW5lZChTVE0zMkY0Mzd4eCkgXAorICB8fCBkZWZpbmVkKFNUTTMyRjQyOXh4KSB8fCBkZWZpbmVkKFNUTTMyRjQzOXh4KSB8fCBkZWZpbmVkKFNUTTMyRjQ2OXh4KSB8fCBkZWZpbmVkKFNUTTMyRjQ3OXh4KSBcCisgIHx8IGRlZmluZWQoU1RNMzJINykgfHwgZGVmaW5lZChTVE0zMlU1KQorLyoqIEBkZWZncm91cCBETUEyRF9BbGlhc2VzIERNQTJEIEFQSSBBbGlhc2VzCisgICogQHsKKyAgKi8KKyNkZWZpbmUgSEFMX0RNQTJEX0Rpc2FibGVDTFVUICAgICAgIEhBTF9ETUEyRF9DTFVUTG9hZGluZ19BYm9ydCAgICAvKiE8IEFsaWFzZWQgdG8gSEFMX0RNQTJEX0NMVVRMb2FkaW5nX0Fib3J0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIGxlZ2FjeSBjb2RlICovCisvKioKKyAgKiBAfQorICAqLworCisjZW5kaWYgIC8qIFNUTTMyTDQgfHwgIFNUTTMyRjcgfHwgIFNUTTMyRjQgfHwgIFNUTTMySDcgfHwgU1RNMzJVNSAqLworCiAvKiogQGRlZmdyb3VwIEhBTF9QUFBfQWxpYXNlZF9EZWZpbmVzIEhBTCBQUFAgQWxpYXNlZCBEZWZpbmVzIG1haW50YWluZWQgZm9yIGxlZ2FjeSBwdXJwb3NlCiAgICogQHsKICAgKi8KQEAgLTEzOTcsNiArMTQ4MCwyOSBAQAogICAqIEB9CiAgICovCiAKKy8qKiBAZGVmZ3JvdXAgSEFMX0RDQUNIRV9BbGlhc2VkX0Z1bmN0aW9ucyBIQUwgRENBQ0hFIEFsaWFzZWQgRnVuY3Rpb25zIG1haW50YWluZWQgZm9yIGxlZ2FjeSBwdXJwb3NlCisgICogQHsKKyAgKi8KKworI2lmIGRlZmluZWQoU1RNMzJVNSkKKyNkZWZpbmUgSEFMX0RDQUNIRV9DbGVhbkludmFsaWRhdGVCeUFkZHIgICAgIEhBTF9EQ0FDSEVfQ2xlYW5JbnZhbGlkQnlBZGRyCisjZGVmaW5lIEhBTF9EQ0FDSEVfQ2xlYW5JbnZhbGlkYXRlQnlBZGRyX0lUICBIQUxfRENBQ0hFX0NsZWFuSW52YWxpZEJ5QWRkcl9JVAorI2VuZGlmIC8qIFNUTTMyVTUgKi8KKworLyoqCisgICogQH0KKyAgKi8KKworI2lmICFkZWZpbmVkKFNUTTMyRjIpCisvKiogQGRlZmdyb3VwIEhBU0hfYWxpYXMgSEFTSCBBUEkgYWxpYXMKKyAgKiBAeworICAqLworI2RlZmluZSBIQUxfSEFTSEV4X0lSUUhhbmRsZXIgICBIQUxfSEFTSF9JUlFIYW5kbGVyICAvKiE8IFJlZGlyZWN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbGVnYWN5IGNvZGUgKi8KKy8qKgorICAqCisgICogQH0KKyAgKi8KKyNlbmRpZiAvKiBTVE0zMkYyICovCiAvKiogQGRlZmdyb3VwIEhBTF9IQVNIX0FsaWFzZWRfRnVuY3Rpb25zIEhBTCBIQVNIIEFsaWFzZWQgRnVuY3Rpb25zIG1haW50YWluZWQgZm9yIGxlZ2FjeSBwdXJwb3NlCiAgICogQHsKICAgKi8KQEAgLTMzMjksNiArMzQzNSwzMSBAQAogI2RlZmluZSBSQ0NfREZTRE0xQ0xLU09VUkNFX0FQQjIgICAgICAgICAgICBSQ0NfREZTRE0xQ0xLU09VUkNFX1BDTEsyCiAjZGVmaW5lIFJDQ19ERlNETTJDTEtTT1VSQ0VfQVBCMiAgICAgICAgICAgIFJDQ19ERlNETTJDTEtTT1VSQ0VfUENMSzIKICNkZWZpbmUgUkNDX0ZNUEkyQzFDTEtTT1VSQ0VfQVBCICAgICAgICAgICAgUkNDX0ZNUEkyQzFDTEtTT1VSQ0VfUENMSzEKKyNpZiBkZWZpbmVkKFNUTTMyVTUpCisjZGVmaW5lIE1TSUtQTExNb2RlU0VMICBSQ0NfTVNJS1BMTF9NT0RFX1NFTAorI2RlZmluZSBNU0lTUExMTW9kZVNFTCAgUkNDX01TSVNQTExfTU9ERV9TRUwKKyNkZWZpbmUgX19IQUxfUkNDX0FIQjIxX0NMS19ESVNBQkxFICAgICAgICAgICBfX0hBTF9SQ0NfQUhCMl8xX0NMS19ESVNBQkxFCisjZGVmaW5lIF9fSEFMX1JDQ19BSEIyMl9DTEtfRElTQUJMRSAgICAgICAgICAgX19IQUxfUkNDX0FIQjJfMl9DTEtfRElTQUJMRQorI2RlZmluZSBfX0hBTF9SQ0NfQUhCMV9DTEtfRGlzYWJsZV9DbGVhciAgICAgIF9fSEFMX1JDQ19BSEIxX0NMS19FTkFCTEUKKyNkZWZpbmUgX19IQUxfUkNDX0FIQjIxX0NMS19EaXNhYmxlX0NsZWFyICAgICBfX0hBTF9SQ0NfQUhCMl8xX0NMS19FTkFCTEUKKyNkZWZpbmUgX19IQUxfUkNDX0FIQjIyX0NMS19EaXNhYmxlX0NsZWFyICAgICBfX0hBTF9SQ0NfQUhCMl8yX0NMS19FTkFCTEUKKyNkZWZpbmUgX19IQUxfUkNDX0FIQjNfQ0xLX0Rpc2FibGVfQ2xlYXIgICAgICBfX0hBTF9SQ0NfQUhCM19DTEtfRU5BQkxFCisjZGVmaW5lIF9fSEFMX1JDQ19BUEIxX0NMS19EaXNhYmxlX0NsZWFyICAgICAgX19IQUxfUkNDX0FQQjFfQ0xLX0VOQUJMRQorI2RlZmluZSBfX0hBTF9SQ0NfQVBCMl9DTEtfRGlzYWJsZV9DbGVhciAgICAgIF9fSEFMX1JDQ19BUEIyX0NMS19FTkFCTEUKKyNkZWZpbmUgX19IQUxfUkNDX0FQQjNfQ0xLX0Rpc2FibGVfQ2xlYXIgICAgICBfX0hBTF9SQ0NfQVBCM19DTEtfRU5BQkxFCisjZGVmaW5lIElTX1JDQ19NU0lQTExNb2RlU2VsZWN0aW9uICAgICAgICAgICAgSVNfUkNDX01TSVBMTE1PREVfU0VMRUNUCisjZGVmaW5lIFJDQ19QRVJJUEhDTEtfQ0xLNDggICAgICAgICAgICAgICAgICAgUkNDX1BFUklQSENMS19JQ0xLCisjZGVmaW5lIFJDQ19DTEs0OENMS1NPVVJDRV9IU0k0OCAgICAgICAgICAgICAgUkNDX0lDTEtfQ0xLU09VUkNFX0hTSTQ4CisjZGVmaW5lIFJDQ19DTEs0OENMS1NPVVJDRV9QTEwyICAgICAgICAgICAgICAgUkNDX0lDTEtfQ0xLU09VUkNFX1BMTDIKKyNkZWZpbmUgUkNDX0NMSzQ4Q0xLU09VUkNFX1BMTDEgICAgICAgICAgICAgICBSQ0NfSUNMS19DTEtTT1VSQ0VfUExMMQorI2RlZmluZSBSQ0NfQ0xLNDhDTEtTT1VSQ0VfTVNJSyAgICAgICAgICAgICAgIFJDQ19JQ0xLX0NMS1NPVVJDRV9NU0lLCisjZGVmaW5lIF9fSEFMX1JDQ19BREMxX0NMS19FTkFCTEUgICAgICAgICAgICBfX0hBTF9SQ0NfQURDMTJfQ0xLX0VOQUJMRQorI2RlZmluZSBfX0hBTF9SQ0NfQURDMV9DTEtfRElTQUJMRSAgICAgICAgICBfX0hBTF9SQ0NfQURDMTJfQ0xLX0RJU0FCTEUKKyNkZWZpbmUgX19IQUxfUkNDX0FEQzFfSVNfQ0xLX0VOQUJMRUQgICAgICAgX19IQUxfUkNDX0FEQzEyX0lTX0NMS19FTkFCTEVECisjZGVmaW5lIF9fSEFMX1JDQ19BREMxX0lTX0NMS19ESVNBQkxFRCAgICAgIF9fSEFMX1JDQ19BREMxMl9JU19DTEtfRElTQUJMRUQKKyNkZWZpbmUgX19IQUxfUkNDX0FEQzFfRk9SQ0VfUkVTRVQgICAgICAgICAgX19IQUxfUkNDX0FEQzEyX0ZPUkNFX1JFU0VUCisjZGVmaW5lIF9fSEFMX1JDQ19BREMxX1JFTEVBU0VfUkVTRVQgICAgICAgX19IQUxfUkNDX0FEQzEyX1JFTEVBU0VfUkVTRVQKKyNlbmRpZgogCiAvKioKICAgKiBAfQpAQCAtMzM0Niw3ICszNDc3LDcgQEAKIC8qKiBAZGVmZ3JvdXAgSEFMX1JUQ19BbGlhc2VkX01hY3JvcyBIQUwgUlRDIEFsaWFzZWQgTWFjcm9zIG1haW50YWluZWQgZm9yIGxlZ2FjeSBwdXJwb3NlCiAgICogQHsKICAgKi8KLSNpZiBkZWZpbmVkIChTVE0zMkcwKSB8fCBkZWZpbmVkIChTVE0zMkw1KSB8fCBkZWZpbmVkIChTVE0zMkw0MTJ4eCkgfHwgZGVmaW5lZCAoU1RNMzJMNDIyeHgpIHx8IGRlZmluZWQgKFNUTTMyTDRQNXh4KSB8fCBkZWZpbmVkIChTVE0zMkw0UTV4eCkgfHwgZGVmaW5lZCAoU1RNMzJHNCkgfHwgZGVmaW5lZCAoU1RNMzJXTCkKKyNpZiBkZWZpbmVkIChTVE0zMkcwKSB8fCBkZWZpbmVkIChTVE0zMkw1KSB8fCBkZWZpbmVkIChTVE0zMkw0MTJ4eCkgfHwgZGVmaW5lZCAoU1RNMzJMNDIyeHgpIHx8IGRlZmluZWQgKFNUTTMyTDRQNXh4KSB8fCBkZWZpbmVkIChTVE0zMkw0UTV4eCkgfHwgZGVmaW5lZCAoU1RNMzJHNCkgfHwgZGVmaW5lZCAoU1RNMzJXTCkgfHwgZGVmaW5lZCAoU1RNMzJVNSkKICNlbHNlCiAjZGVmaW5lIF9fSEFMX1JUQ19DTEVBUl9GTEFHICAgICAgICAgICAgICAgICAgICAgIF9fSEFMX1JUQ19FWFRJX0NMRUFSX0ZMQUcKICNlbmRpZgpAQCAtMzQwMywxMyArMzUzNCwyMiBAQAogICAqIEB9CiAgICovCiAKLS8qKiBAZGVmZ3JvdXAgSEFMX1NEX0FsaWFzZWRfTWFjcm9zIEhBTCBTRCBBbGlhc2VkIE1hY3JvcyBtYWludGFpbmVkIGZvciBsZWdhY3kgcHVycG9zZQorLyoqIEBkZWZncm91cCBIQUxfU0RfQWxpYXNlZF9NYWNyb3MgSEFMIFNEL01NQyBBbGlhc2VkIE1hY3JvcyBtYWludGFpbmVkIGZvciBsZWdhY3kgcHVycG9zZQogICAqIEB7CiAgICovCiAKICNkZWZpbmUgU0RfT0NSX0NJRF9DU0RfT1ZFUldSSUVURSAgIFNEX09DUl9DSURfQ1NEX09WRVJXUklURQogI2RlZmluZSBTRF9DTURfU0RfQVBQX1NUQVVTICAgICAgICAgU0RfQ01EX1NEX0FQUF9TVEFUVVMKIAorI2lmICFkZWZpbmVkKFNUTTMyRjEpICYmICFkZWZpbmVkKFNUTTMyRjIpICYmICFkZWZpbmVkKFNUTTMyRjQpICYmICFkZWZpbmVkKFNUTTMyTDEpCisjZGVmaW5lIGVNTUNfSElHSF9WT0xUQUdFX1JBTkdFICAgICBFTU1DX0hJR0hfVk9MVEFHRV9SQU5HRQorI2RlZmluZSBlTU1DX0RVQUxfVk9MVEFHRV9SQU5HRSAgICAgRU1NQ19EVUFMX1ZPTFRBR0VfUkFOR0UKKyNkZWZpbmUgZU1NQ19MT1dfVk9MVEFHRV9SQU5HRSAgICAgIEVNTUNfTE9XX1ZPTFRBR0VfUkFOR0UKKworI2RlZmluZSBTRE1NQ19OU3BlZWRfQ0xLX0RJViAgICAgICAgU0RNTUNfTlNQRUVEX0NMS19ESVYKKyNkZWZpbmUgU0RNTUNfSFNwZWVkX0NMS19ESVYgICAgICAgIFNETU1DX0hTUEVFRF9DTEtfRElWCisjZW5kaWYKKwogI2lmIGRlZmluZWQoU1RNMzJGNCkgfHwgZGVmaW5lZChTVE0zMkYyKQogI2RlZmluZSAgU0RfU0RNTUNfRElTQUJMRUQgICAgICAgICAgU0RfU0RJT19ESVNBQkxFRAogI2RlZmluZSAgU0RfU0RNTUNfRlVOQ1RJT05fQlVTWSAgICAgU0RfU0RJT19GVU5DVElPTl9CVVNZCkBAIC0zNzUyLDUgKzM4OTIsNCBAQAogCiAjZW5kaWYgLyogU1RNMzJfSEFMX0xFR0FDWSAqLwogCi0vKioqKioqKioqKioqKioqKioqKioqKioqIChDKSBDT1BZUklHSFQgU1RNaWNyb2VsZWN0cm9uaWNzICoqKioqRU5EIE9GIEZJTEUqKioqLwogCmRpZmYgLS1naXQgYS9JbmMvTGVnYWN5L3N0bTMyZjd4eF9oYWxfY2FuX2xlZ2FjeS5oIGIvSW5jL0xlZ2FjeS9zdG0zMmY3eHhfaGFsX2Nhbl9sZWdhY3kuaAppbmRleCA0OTg0YTFjLi5iYmM1MTRjIDEwMDY0NAotLS0gYS9JbmMvTGVnYWN5L3N0bTMyZjd4eF9oYWxfY2FuX2xlZ2FjeS5oCisrKyBiL0luYy9MZWdhY3kvc3RtMzJmN3h4X2hhbF9jYW5fbGVnYWN5LmgKQEAgLTYsMjkgKzYsMTIgQEAKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgICogQGF0dGVudGlvbgogICAqCi0gICogPGgyPjxjZW50ZXI+JmNvcHk7IENPUFlSSUdIVChjKSAyMDE3IFNUTWljcm9lbGVjdHJvbmljczwvY2VudGVyPjwvaDI+CisgICogQ29weXJpZ2h0IChjKSAyMDE3IFNUTWljcm9lbGVjdHJvbmljcy4KKyAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAqCi0gICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwKLSAgKiBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6Ci0gICogICAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsCi0gICogICAgICB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICAqICAgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLAotICAqICAgICAgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbgotICAqICAgICAgYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gICogICAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIFNUTWljcm9lbGVjdHJvbmljcyBub3IgdGhlIG5hbWVzIG9mIGl0cyBjb250cmlidXRvcnMKLSAgKiAgICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZQotICAqICAgICAgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gICoKLSAgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIKLSAgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQotICAqIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0gICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKLSAgKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgotICAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCi0gICogT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgdW5kZXIgdGVybXMgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZQorICAqIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvZnR3YXJlIGNvbXBvbmVudC4KKyAgKiBJZiBubyBMSUNFTlNFIGZpbGUgY29tZXMgd2l0aCB0aGlzIHNvZnR3YXJlLCBpdCBpcyBwcm92aWRlZCBBUy1JUy4KICAgKgogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgKi8KQEAgLTc3Miw2ICs3NTUsMyBAQAogI2VuZGlmCiAKICNlbmRpZiAvKiBfX1NUTTMyRjd4eF9IQUxfQ0FOX0xFR0FDWV9IICovCi0KLQotLyoqKioqKioqKioqKioqKioqKioqKioqKiAoQykgQ09QWVJJR0hUIFNUTWljcm9lbGVjdHJvbmljcyAqKioqKkVORCBPRiBGSUxFKioqKi8KZGlmZiAtLWdpdCBhL0luYy9zdG0zMl9hc3NlcnRfdGVtcGxhdGUuaCBiL0luYy9zdG0zMl9hc3NlcnRfdGVtcGxhdGUuaAppbmRleCA0NzExYjY1Li4zYWU3M2YwIDEwMDY0NAotLS0gYS9JbmMvc3RtMzJfYXNzZXJ0X3RlbXBsYXRlLmgKKysrIGIvSW5jL3N0bTMyX2Fzc2VydF90ZW1wbGF0ZS5oCkBAIC04LDEzICs4LDEyIEBACiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAqIEBhdHRlbnRpb24KICAgKgotICAqIDxoMj48Y2VudGVyPiZjb3B5OyBDb3B5cmlnaHQgKGMpIDIwMTcgU1RNaWNyb2VsZWN0cm9uaWNzLgotICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuPC9jZW50ZXI+PC9oMj4KKyAgKiBDb3B5cmlnaHQgKGMpIDIwMTcgU1RNaWNyb2VsZWN0cm9uaWNzLgorICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICoKLSAgKiBUaGlzIHNvZnR3YXJlIGNvbXBvbmVudCBpcyBsaWNlbnNlZCBieSBTVCB1bmRlciBCU0QgMy1DbGF1c2UgbGljZW5zZSwKLSAgKiB0aGUgIkxpY2Vuc2UiOyBZb3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlCi0gICogTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0OgotICAqICAgICAgICAgICAgICAgICAgICAgICAgb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvQlNELTMtQ2xhdXNlCisgICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCB1bmRlciB0ZXJtcyB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlCisgICogaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc29mdHdhcmUgY29tcG9uZW50LgorICAqIElmIG5vIExJQ0VOU0UgZmlsZSBjb21lcyB3aXRoIHRoaXMgc29mdHdhcmUsIGl0IGlzIHByb3ZpZGVkIEFTLUlTLgogICAqCiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAqLwpAQCAtNTQsNCArNTMsNCBAQAogI2VuZGlmIC8qIF9fU1RNMzJfQVNTRVJUX0ggKi8KIAogCi0vKioqKioqKioqKioqKioqKioqKioqKioqIChDKSBDT1BZUklHSFQgU1RNaWNyb2VsZWN0cm9uaWNzICoqKioqRU5EIE9GIEZJTEUqKioqLworCmRpZmYgLS1naXQgYS9JbmMvc3RtMzJmN3h4X2hhbC5oIGIvSW5jL3N0bTMyZjd4eF9oYWwuaAppbmRleCA0ZGY2ZmUzLi44NjA2YjdiIDEwMDY0NAotLS0gYS9JbmMvc3RtMzJmN3h4X2hhbC5oCisrKyBiL0luYy9zdG0zMmY3eHhfaGFsLmgKQEAgLTcsMTMgKzcsMTIgQEAKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgICogQGF0dGVudGlvbgogICAqCi0gICogPGgyPjxjZW50ZXI+JmNvcHk7IENvcHlyaWdodCAoYykgMjAxNyBTVE1pY3JvZWxlY3Ryb25pY3MuCi0gICogQWxsIHJpZ2h0cyByZXNlcnZlZC48L2NlbnRlcj48L2gyPgorICAqIENvcHlyaWdodCAoYykgMjAxNyBTVE1pY3JvZWxlY3Ryb25pY3MuCisgICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgKgotICAqIFRoaXMgc29mdHdhcmUgY29tcG9uZW50IGlzIGxpY2Vuc2VkIGJ5IFNUIHVuZGVyIEJTRCAzLUNsYXVzZSBsaWNlbnNlLAotICAqIHRoZSAiTGljZW5zZSI7IFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUKLSAgKiBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQ6Ci0gICogICAgICAgICAgICAgICAgICAgICAgICBvcGVuc291cmNlLm9yZy9saWNlbnNlcy9CU0QtMy1DbGF1c2UKKyAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIHVuZGVyIHRlcm1zIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUKKyAgKiBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb2Z0d2FyZSBjb21wb25lbnQuCisgICogSWYgbm8gTElDRU5TRSBmaWxlIGNvbWVzIHdpdGggdGhpcyBzb2Z0d2FyZSwgaXQgaXMgcHJvdmlkZWQgQVMtSVMuCiAgICoKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgICovIApAQCAtMjczLDQgKzI3Miw0IEBACiAKICNlbmRpZiAvKiBfX1NUTTMyRjd4eF9IQUxfSCAqLwogCi0vKioqKioqKioqKioqKioqKioqKioqKioqIChDKSBDT1BZUklHSFQgU1RNaWNyb2VsZWN0cm9uaWNzICoqKioqRU5EIE9GIEZJTEUqKioqLworCmRpZmYgLS1naXQgYS9JbmMvc3RtMzJmN3h4X2hhbF9hZGMuaCBiL0luYy9zdG0zMmY3eHhfaGFsX2FkYy5oCmluZGV4IDM4YTY4MTguLjk1NTk3YTMgMTAwNjQ0Ci0tLSBhL0luYy9zdG0zMmY3eHhfaGFsX2FkYy5oCisrKyBiL0luYy9zdG0zMmY3eHhfaGFsX2FkYy5oCkBAIC02LDEzICs2LDEyIEBACiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAqIEBhdHRlbnRpb24KICAgKgotICAqIDxoMj48Y2VudGVyPiZjb3B5OyBDb3B5cmlnaHQgKGMpIDIwMTcgU1RNaWNyb2VsZWN0cm9uaWNzLgotICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuPC9jZW50ZXI+PC9oMj4KKyAgKiBDb3B5cmlnaHQgKGMpIDIwMTcgU1RNaWNyb2VsZWN0cm9uaWNzLgorICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICoKLSAgKiBUaGlzIHNvZnR3YXJlIGNvbXBvbmVudCBpcyBsaWNlbnNlZCBieSBTVCB1bmRlciBCU0QgMy1DbGF1c2UgbGljZW5zZSwKLSAgKiB0aGUgIkxpY2Vuc2UiOyBZb3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlCi0gICogTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0OgotICAqICAgICAgICAgICAgICAgICAgICAgICAgb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvQlNELTMtQ2xhdXNlCisgICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCB1bmRlciB0ZXJtcyB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlCisgICogaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc29mdHdhcmUgY29tcG9uZW50LgorICAqIElmIG5vIExJQ0VOU0UgZmlsZSBjb21lcyB3aXRoIHRoaXMgc29mdHdhcmUsIGl0IGlzIHByb3ZpZGVkIEFTLUlTLgogICAqCiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAqLwpAQCAtOTU2LDQgKzk1NSwzIEBACiAjZW5kaWYgLyogU1RNMzJGN3h4X0FEQ19IICovCiAKIAotLyoqKioqKioqKioqKioqKioqKioqKioqKiAoQykgQ09QWVJJR0hUIFNUTWljcm9lbGVjdHJvbmljcyAqKioqKkVORCBPRiBGSUxFKioqKi8KZGlmZiAtLWdpdCBhL0luYy9zdG0zMmY3eHhfaGFsX2FkY19leC5oIGIvSW5jL3N0bTMyZjd4eF9oYWxfYWRjX2V4LmgKaW5kZXggY2VmOGY0OS4uYWUyNzBhNSAxMDA2NDQKLS0tIGEvSW5jL3N0bTMyZjd4eF9oYWxfYWRjX2V4LmgKKysrIGIvSW5jL3N0bTMyZjd4eF9oYWxfYWRjX2V4LmgKQEAgLTYsMTMgKzYsMTIgQEAKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgICogQGF0dGVudGlvbgogICAqCi0gICogPGgyPjxjZW50ZXI+JmNvcHk7IENvcHlyaWdodCAoYykgMjAxNyBTVE1pY3JvZWxlY3Ryb25pY3MuCi0gICogQWxsIHJpZ2h0cyByZXNlcnZlZC48L2NlbnRlcj48L2gyPgorICAqIENvcHlyaWdodCAoYykgMjAxNyBTVE1pY3JvZWxlY3Ryb25pY3MuCisgICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgKgotICAqIFRoaXMgc29mdHdhcmUgY29tcG9uZW50IGlzIGxpY2Vuc2VkIGJ5IFNUIHVuZGVyIEJTRCAzLUNsYXVzZSBsaWNlbnNlLAotICAqIHRoZSAiTGljZW5zZSI7IFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUKLSAgKiBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQ6Ci0gICogICAgICAgICAgICAgICAgICAgICAgICBvcGVuc291cmNlLm9yZy9saWNlbnNlcy9CU0QtMy1DbGF1c2UKKyAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIHVuZGVyIHRlcm1zIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUKKyAgKiBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb2Z0d2FyZSBjb21wb25lbnQuCisgICogSWYgbm8gTElDRU5TRSBmaWxlIGNvbWVzIHdpdGggdGhpcyBzb2Z0d2FyZSwgaXQgaXMgcHJvdmlkZWQgQVMtSVMuCiAgICoKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgICovCkBAIC0zNTMsNCArMzUyLDMgQEAKICNlbmRpZiAvKiBTVE0zMkY3eHhfQURDX0VYX0ggKi8KIAogCi0vKioqKioqKioqKioqKioqKioqKioqKioqIChDKSBDT1BZUklHSFQgU1RNaWNyb2VsZWN0cm9uaWNzICoqKioqRU5EIE9GIEZJTEUqKioqLwpkaWZmIC0tZ2l0IGEvSW5jL3N0bTMyZjd4eF9oYWxfY2FuLmggYi9JbmMvc3RtMzJmN3h4X2hhbF9jYW4uaAppbmRleCA1NDAzODI4Li41NDMwODg3IDEwMDY0NAotLS0gYS9JbmMvc3RtMzJmN3h4X2hhbF9jYW4uaAorKysgYi9JbmMvc3RtMzJmN3h4X2hhbF9jYW4uaApAQCAtNiwxMyArNiwxMiBAQAogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgKiBAYXR0ZW50aW9uCiAgICoKLSAgKiA8aDI+PGNlbnRlcj4mY29weTsgQ29weXJpZ2h0IChjKSAyMDE3IFNUTWljcm9lbGVjdHJvbmljcy4KLSAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLjwvY2VudGVyPjwvaDI+CisgICogQ29weXJpZ2h0IChjKSAyMDE3IFNUTWljcm9lbGVjdHJvbmljcy4KKyAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAqCi0gICogVGhpcyBzb2Z0d2FyZSBjb21wb25lbnQgaXMgbGljZW5zZWQgYnkgU1QgdW5kZXIgQlNEIDMtQ2xhdXNlIGxpY2Vuc2UsCi0gICogdGhlICJMaWNlbnNlIjsgWW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZQotICAqIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdDoKLSAgKiAgICAgICAgICAgICAgICAgICAgICAgIG9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0JTRC0zLUNsYXVzZQorICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgdW5kZXIgdGVybXMgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZQorICAqIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvZnR3YXJlIGNvbXBvbmVudC4KKyAgKiBJZiBubyBMSUNFTlNFIGZpbGUgY29tZXMgd2l0aCB0aGlzIHNvZnR3YXJlLCBpdCBpcyBwcm92aWRlZCBBUy1JUy4KICAgKgogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgKi8KQEAgLTg0NSw2ICs4NDQsMyBAQAogI2VuZGlmCiAKICNlbmRpZiAvKiBTVE0zMkY3eHhfSEFMX0NBTl9IICovCi0KLQotLyoqKioqKioqKioqKioqKioqKioqKioqKiAoQykgQ09QWVJJR0hUIFNUTWljcm9lbGVjdHJvbmljcyAqKioqKkVORCBPRiBGSUxFKioqKi8KZGlmZiAtLWdpdCBhL0luYy9zdG0zMmY3eHhfaGFsX2NlYy5oIGIvSW5jL3N0bTMyZjd4eF9oYWxfY2VjLmgKaW5kZXggNzIxZWRjMS4uZGY5MDhjYyAxMDA2NDQKLS0tIGEvSW5jL3N0bTMyZjd4eF9oYWxfY2VjLmgKKysrIGIvSW5jL3N0bTMyZjd4eF9oYWxfY2VjLmgKQEAgLTYsMTMgKzYsMTIgQEAKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgICogQGF0dGVudGlvbgogICAqCi0gICogPGgyPjxjZW50ZXI+JmNvcHk7IENvcHlyaWdodCAoYykgMjAxNyBTVE1pY3JvZWxlY3Ryb25pY3MuCi0gICogQWxsIHJpZ2h0cyByZXNlcnZlZC48L2NlbnRlcj48L2gyPgorICAqIENvcHlyaWdodCAoYykgMjAxNyBTVE1pY3JvZWxlY3Ryb25pY3MuCisgICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgKgotICAqIFRoaXMgc29mdHdhcmUgY29tcG9uZW50IGlzIGxpY2Vuc2VkIGJ5IFNUIHVuZGVyIEJTRCAzLUNsYXVzZSBsaWNlbnNlLAotICAqIHRoZSAiTGljZW5zZSI7IFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUKLSAgKiBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQ6Ci0gICogICAgICAgICAgICAgICAgICAgICAgICBvcGVuc291cmNlLm9yZy9saWNlbnNlcy9CU0QtMy1DbGF1c2UKKyAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIHVuZGVyIHRlcm1zIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUKKyAgKiBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb2Z0d2FyZSBjb21wb25lbnQuCisgICogSWYgbm8gTElDRU5TRSBmaWxlIGNvbWVzIHdpdGggdGhpcyBzb2Z0d2FyZSwgaXQgaXMgcHJvdmlkZWQgQVMtSVMuCiAgICoKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgICovCkBAIC0xMjEsMTQgKzEyMCwxNCBAQAogICAqICAgICAgICAgIGI2ICBFcnJvciBpbmZvcm1hdGlvbgogICAqICAgICAgICAgICAgIDAgIDogTm8gRXJyb3IKICAgKiAgICAgICAgICAgICAxICA6IEVycm9yCi0gICogICAgICAgICAgYjUgICAgIElQIGluaXRpYWxpemF0aW9uIHN0YXR1cwotICAqICAgICAgICAgICAgIDAgIDogUmVzZXQgKElQIG5vdCBpbml0aWFsaXplZCkKLSAgKiAgICAgICAgICAgICAxICA6IEluaXQgZG9uZSAoSVAgaW5pdGlhbGl6ZWQuIEhBTCBDRUMgSW5pdCBmdW5jdGlvbiBhbHJlYWR5IGNhbGxlZCkKKyAgKiAgICAgICAgICBiNSAgICAgQ0VDIHBlcmlwaGVyYWwgaW5pdGlhbGl6YXRpb24gc3RhdHVzCisgICogICAgICAgICAgICAgMCAgOiBSZXNldCAocGVyaXBoZXJhbCBub3QgaW5pdGlhbGl6ZWQpCisgICogICAgICAgICAgICAgMSAgOiBJbml0IGRvbmUgKHBlcmlwaGVyYWwgaW5pdGlhbGl6ZWQuIEhBTCBDRUMgSW5pdCBmdW5jdGlvbiBhbHJlYWR5IGNhbGxlZCkKICAgKiAgICAgICAgICBiNC1iMyAgKG5vdCB1c2VkKQogICAqICAgICAgICAgICAgIHh4IDogU2hvdWxkIGJlIHNldCB0byAwMAogICAqICAgICAgICAgIGIyICAgICBJbnRyaW5zaWMgcHJvY2VzcyBzdGF0ZQogICAqICAgICAgICAgICAgIDAgIDogUmVhZHkKLSAgKiAgICAgICAgICAgICAxICA6IEJ1c3kgKElQIGJ1c3kgd2l0aCBzb21lIGNvbmZpZ3VyYXRpb24gb3IgaW50ZXJuYWwgb3BlcmF0aW9ucykKKyAgKiAgICAgICAgICAgICAxICA6IEJ1c3kgKHBlcmlwaGVyYWwgYnVzeSB3aXRoIHNvbWUgY29uZmlndXJhdGlvbiBvciBpbnRlcm5hbCBvcGVyYXRpb25zKQogICAqICAgICAgICAgIGIxICAgICAobm90IHVzZWQpCiAgICogICAgICAgICAgICAgeCAgOiBTaG91bGQgYmUgc2V0IHRvIDAKICAgKiAgICAgICAgICBiMCAgICAgVHggc3RhdGUKQEAgLTEzOCw5ICsxMzcsOSBAQAogICAqICAgICAgICAgIFJ4U3RhdGUgdmFsdWUgY29kaW5nIGZvbGxvdyBiZWxvdyBkZXNjcmliZWQgYml0bWFwIDoKICAgKiAgICAgICAgICBiNy1iNiAgKG5vdCB1c2VkKQogICAqICAgICAgICAgICAgIHh4IDogU2hvdWxkIGJlIHNldCB0byAwMAotICAqICAgICAgICAgIGI1ICAgICBJUCBpbml0aWFsaXphdGlvbiBzdGF0dXMKLSAgKiAgICAgICAgICAgICAwICA6IFJlc2V0IChJUCBub3QgaW5pdGlhbGl6ZWQpCi0gICogICAgICAgICAgICAgMSAgOiBJbml0IGRvbmUgKElQIGluaXRpYWxpemVkKQorICAqICAgICAgICAgIGI1ICAgICBDRUMgcGVyaXBoZXJhbCBpbml0aWFsaXphdGlvbiBzdGF0dXMKKyAgKiAgICAgICAgICAgICAwICA6IFJlc2V0IChwZXJpcGhlcmFsIG5vdCBpbml0aWFsaXplZCkKKyAgKiAgICAgICAgICAgICAxICA6IEluaXQgZG9uZSAocGVyaXBoZXJhbCBpbml0aWFsaXplZCkKICAgKiAgICAgICAgICBiNC1iMiAgKG5vdCB1c2VkKQogICAqICAgICAgICAgICAgeHh4IDogU2hvdWxkIGJlIHNldCB0byAwMDAKICAgKiAgICAgICAgICBiMSAgICAgUnggc3RhdGUKQEAgLTc5MSw0ICs3OTAsMyBAQAogCiAjZW5kaWYgLyogU1RNMzJGN3h4SEFMX0NFQ19IICovCiAKLS8qKioqKioqKioqKioqKioqKioqKioqKiogKEMpIENPUFlSSUdIVCBTVE1pY3JvZWxlY3Ryb25pY3MgKioqKipFTkQgT0YgRklMRSoqKiovCmRpZmYgLS1naXQgYS9JbmMvc3RtMzJmN3h4X2hhbF9jb25mX3RlbXBsYXRlLmggYi9JbmMvc3RtMzJmN3h4X2hhbF9jb25mX3RlbXBsYXRlLmgKaW5kZXggYjI3ZjY2ZS4uMDc1YzFlYSAxMDA2NDQKLS0tIGEvSW5jL3N0bTMyZjd4eF9oYWxfY29uZl90ZW1wbGF0ZS5oCisrKyBiL0luYy9zdG0zMmY3eHhfaGFsX2NvbmZfdGVtcGxhdGUuaApAQCAtOCwxMyArOCwxMiBAQAogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgKiBAYXR0ZW50aW9uCiAgICoKLSAgKiA8aDI+PGNlbnRlcj4mY29weTsgQ29weXJpZ2h0IChjKSAyMDE3IFNUTWljcm9lbGVjdHJvbmljcy4KLSAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLjwvY2VudGVyPjwvaDI+CisgICogQ29weXJpZ2h0IChjKSAyMDE3IFNUTWljcm9lbGVjdHJvbmljcy4KKyAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAqCi0gICogVGhpcyBzb2Z0d2FyZSBjb21wb25lbnQgaXMgbGljZW5zZWQgYnkgU1QgdW5kZXIgQlNEIDMtQ2xhdXNlIGxpY2Vuc2UsCi0gICogdGhlICJMaWNlbnNlIjsgWW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZQotICAqIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdDoKLSAgKiAgICAgICAgICAgICAgICAgICAgICAgIG9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0JTRC0zLUNsYXVzZQorICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgdW5kZXIgdGVybXMgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZQorICAqIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvZnR3YXJlIGNvbXBvbmVudC4KKyAgKiBJZiBubyBMSUNFTlNFIGZpbGUgY29tZXMgd2l0aCB0aGlzIHNvZnR3YXJlLCBpdCBpcyBwcm92aWRlZCBBUy1JUy4KICAgKgogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgKi8gCkBAIC00OTIsNCArNDkxLDQgQEAKICNlbmRpZiAvKiBfX1NUTTMyRjd4eF9IQUxfQ09ORl9IICovCiAgCiAKLS8qKioqKioqKioqKioqKioqKioqKioqKiogKEMpIENPUFlSSUdIVCBTVE1pY3JvZWxlY3Ryb25pY3MgKioqKipFTkQgT0YgRklMRSoqKiovCisKZGlmZiAtLWdpdCBhL0luYy9zdG0zMmY3eHhfaGFsX2NvcnRleC5oIGIvSW5jL3N0bTMyZjd4eF9oYWxfY29ydGV4LmgKaW5kZXggYzkxNjJkNC4uNDYyMDI0YiAxMDA2NDQKLS0tIGEvSW5jL3N0bTMyZjd4eF9oYWxfY29ydGV4LmgKKysrIGIvSW5jL3N0bTMyZjd4eF9oYWxfY29ydGV4LmgKQEAgLTYsMTMgKzYsMTIgQEAKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgICogQGF0dGVudGlvbgogICAqCi0gICogPGgyPjxjZW50ZXI+JmNvcHk7IENvcHlyaWdodCAoYykgMjAxNyBTVE1pY3JvZWxlY3Ryb25pY3MuCi0gICogQWxsIHJpZ2h0cyByZXNlcnZlZC48L2NlbnRlcj48L2gyPgorICAqIENvcHlyaWdodCAoYykgMjAxNyBTVE1pY3JvZWxlY3Ryb25pY3MuCisgICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgKgotICAqIFRoaXMgc29mdHdhcmUgY29tcG9uZW50IGlzIGxpY2Vuc2VkIGJ5IFNUIHVuZGVyIEJTRCAzLUNsYXVzZSBsaWNlbnNlLAotICAqIHRoZSAiTGljZW5zZSI7IFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUKLSAgKiBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQ6Ci0gICogICAgICAgICAgICAgICAgICAgICAgICBvcGVuc291cmNlLm9yZy9saWNlbnNlcy9CU0QtMy1DbGF1c2UKKyAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIHVuZGVyIHRlcm1zIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4KKyAgKiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb2Z0d2FyZSBjb21wb25lbnQuCisgICogSWYgbm8gTElDRU5TRSBmaWxlIGNvbWVzIHdpdGggdGhpcyBzb2Z0d2FyZSwgaXQgaXMgcHJvdmlkZWQgQVMtSVMuCiAgICoKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgICovIApAQCAtNDAzLDQgKzQwMiwzIEBACiAjZW5kaWYgLyogX19TVE0zMkY3eHhfSEFMX0NPUlRFWF9IICovCiAgCiAKLS8qKioqKioqKioqKioqKioqKioqKioqKiogKEMpIENPUFlSSUdIVCBTVE1pY3JvZWxlY3Ryb25pY3MgKioqKipFTkQgT0YgRklMRSoqKiovCmRpZmYgLS1naXQgYS9JbmMvc3RtMzJmN3h4X2hhbF9jcmMuaCBiL0luYy9zdG0zMmY3eHhfaGFsX2NyYy5oCmluZGV4IDA4YTUwMjUuLjE3MWRlYmIgMTAwNjQ0Ci0tLSBhL0luYy9zdG0zMmY3eHhfaGFsX2NyYy5oCisrKyBiL0luYy9zdG0zMmY3eHhfaGFsX2NyYy5oCkBAIC02LDEzICs2LDEyIEBACiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAqIEBhdHRlbnRpb24KICAgKgotICAqIDxoMj48Y2VudGVyPiZjb3B5OyBDb3B5cmlnaHQgKGMpIDIwMTcgU1RNaWNyb2VsZWN0cm9uaWNzLgotICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuPC9jZW50ZXI+PC9oMj4KKyAgKiBDb3B5cmlnaHQgKGMpIDIwMTcgU1RNaWNyb2VsZWN0cm9uaWNzLgorICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICoKLSAgKiBUaGlzIHNvZnR3YXJlIGNvbXBvbmVudCBpcyBsaWNlbnNlZCBieSBTVCB1bmRlciBCU0QgMy1DbGF1c2UgbGljZW5zZSwKLSAgKiB0aGUgIkxpY2Vuc2UiOyBZb3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlCi0gICogTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0OgotICAqICAgICAgICAgICAgICAgICAgICAgICAgb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvQlNELTMtQ2xhdXNlCisgICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCB1bmRlciB0ZXJtcyB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlCisgICogaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc29mdHdhcmUgY29tcG9uZW50LgorICAqIElmIG5vIExJQ0VOU0UgZmlsZSBjb21lcyB3aXRoIHRoaXMgc29mdHdhcmUsIGl0IGlzIHByb3ZpZGVkIEFTLUlTLgogICAqCiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAqLwpAQCAtNjAsMTkgKzU5LDIyIEBACiB7CiAgIHVpbnQ4X3QgRGVmYXVsdFBvbHlub21pYWxVc2U7ICAgICAgIC8qITwgVGhpcyBwYXJhbWV0ZXIgaXMgYSB2YWx1ZSBvZiBAcmVmIENSQ19EZWZhdWx0X1BvbHlub21pYWwgYW5kIGluZGljYXRlcyBpZiBkZWZhdWx0IHBvbHlub21pYWwgaXMgdXNlZC4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgc2V0IHRvIERFRkFVTFRfUE9MWU5PTUlBTF9FTkFCTEUsIHJlc29ydCB0byBkZWZhdWx0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFheMzIgKyBYXjI2ICsgWF4yMyArIFheMjIgKyBYXjE2ICsgWF4xMiArIFheMTEgKyBYXjEwICtYXjggKyBYXjcgKyBYXjUgKyBYXjQgKyBYXjIrIFggKzEuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFheMzIgKyBYXjI2ICsgWF4yMyArIFheMjIgKyBYXjE2ICsgWF4xMiArIFheMTEgKyBYXjEwICtYXjggKyBYXjcgKyBYXjUgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYXjQgKyBYXjIrIFggKzEuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluIHRoYXQgY2FzZSwgdGhlcmUgaXMgbm8gbmVlZCB0byBzZXQgR2VuZXJhdGluZ1BvbHlub21pYWwgZmllbGQuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElmIG90aGVyd2lzZSBzZXQgdG8gREVGQVVMVF9QT0xZTk9NSUFMX0RJU0FCTEUsIEdlbmVyYXRpbmdQb2x5bm9taWFsIGFuZCBDUkNMZW5ndGggZmllbGRzIG11c3QgYmUgc2V0LiAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiBvdGhlcndpc2Ugc2V0IHRvIERFRkFVTFRfUE9MWU5PTUlBTF9ESVNBQkxFLCBHZW5lcmF0aW5nUG9seW5vbWlhbCBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1JDTGVuZ3RoIGZpZWxkcyBtdXN0IGJlIHNldC4gKi8KIAogICB1aW50OF90IERlZmF1bHRJbml0VmFsdWVVc2U7ICAgICAgICAvKiE8IFRoaXMgcGFyYW1ldGVyIGlzIGEgdmFsdWUgb2YgQHJlZiBDUkNfRGVmYXVsdF9Jbml0VmFsdWVfVXNlIGFuZCBpbmRpY2F0ZXMgaWYgZGVmYXVsdCBpbml0IHZhbHVlIGlzIHVzZWQuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgc2V0IHRvIERFRkFVTFRfSU5JVF9WQUxVRV9FTkFCTEUsIHJlc29ydCB0byBkZWZhdWx0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGRkZGRiB2YWx1ZS4gSW4gdGhhdCBjYXNlLCB0aGVyZSBpcyBubyBuZWVkIHRvIHNldCBJbml0VmFsdWUgZmllbGQuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgb3RoZXJ3aXNlIHNldCB0byBERUZBVUxUX0lOSVRfVkFMVUVfRElTQUJMRSwgIEluaXRWYWx1ZSBmaWVsZCBtdXN0IGJlIHNldC4gKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEZGRkZGRkZGIHZhbHVlLiBJbiB0aGF0IGNhc2UsIHRoZXJlIGlzIG5vIG5lZWQgdG8gc2V0IEluaXRWYWx1ZSBmaWVsZC4gSWYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdGhlcndpc2Ugc2V0IHRvIERFRkFVTFRfSU5JVF9WQUxVRV9ESVNBQkxFLCBJbml0VmFsdWUgZmllbGQgbXVzdCBiZSBzZXQuICovCiAKICAgdWludDMyX3QgR2VuZXJhdGluZ1BvbHlub21pYWw7ICAgICAgLyohPCBTZXQgQ1JDIGdlbmVyYXRpbmcgcG9seW5vbWlhbCBhcyBhIDcsIDgsIDE2IG9yIDMyLWJpdCBsb25nIHZhbHVlIGZvciBhIHBvbHlub21pYWwgZGVncmVlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcGVjdGl2ZWx5IGVxdWFsIHRvIDcsIDgsIDE2IG9yIDMyLiBUaGlzIGZpZWxkIGlzIHdyaXR0ZW4gaW4gbm9ybWFsIHJlcHJlc2VudGF0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUuZy4sIGZvciBhIHBvbHlub21pYWwgb2YgZGVncmVlIDcsIFheNyArIFheNiArIFheNSArIFheMiArIDEgaXMgd3JpdHRlbiAweDY1LgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vIG5lZWQgdG8gc3BlY2lmeSBpdCBpZiBEZWZhdWx0UG9seW5vbWlhbFVzZSBpcyBzZXQgdG8gREVGQVVMVF9QT0xZTk9NSUFMX0VOQUJMRS4gICAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BlY3RpdmVseSBlcXVhbCB0byA3LCA4LCAxNiBvciAzMi4gVGhpcyBmaWVsZCBpcyB3cml0dGVuIGluIG5vcm1hbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXByZXNlbnRhdGlvbiBlLmcuLCBmb3IgYSBwb2x5bm9taWFsIG9mIGRlZ3JlZSA3LCBYXjcgKyBYXjYgKyBYXjUgKyBYXjIgKyAxCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMgd3JpdHRlbiAweDY1LiBObyBuZWVkIHRvIHNwZWNpZnkgaXQgaWYgRGVmYXVsdFBvbHlub21pYWxVc2UgaXMgc2V0IHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERFRkFVTFRfUE9MWU5PTUlBTF9FTkFCTEUuICAgKi8KIAogICB1aW50MzJfdCBDUkNMZW5ndGg7ICAgICAgICAgICAgICAgICAvKiE8IFRoaXMgcGFyYW1ldGVyIGlzIGEgdmFsdWUgb2YgQHJlZiBDUkNfUG9seW5vbWlhbF9TaXplcyBhbmQgaW5kaWNhdGVzIENSQyBsZW5ndGguCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgY2FuIGJlIGVpdGhlciBvbmUgb2YKQEAgLTg3LDE0ICs4OSwxOCBAQAogICB1aW50MzJfdCBJbnB1dERhdGFJbnZlcnNpb25Nb2RlOyAgICAvKiE8IFRoaXMgcGFyYW1ldGVyIGlzIGEgdmFsdWUgb2YgQHJlZiBDUkNFeF9JbnB1dF9EYXRhX0ludmVyc2lvbiBhbmQgc3BlY2lmaWVzIGlucHV0IGRhdGEgaW52ZXJzaW9uIG1vZGUuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FuIGJlIGVpdGhlciBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAYXJnIEByZWYgQ1JDX0lOUFVUREFUQV9JTlZFUlNJT05fTk9ORSAgICAgICBubyBpbnB1dCBkYXRhIGludmVyc2lvbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBhcmcgQHJlZiBDUkNfSU5QVVREQVRBX0lOVkVSU0lPTl9CWVRFICAgICAgIGJ5dGUtd2lzZSBpbnZlcnNpb24sIDB4MUEyQjNDNEQgYmVjb21lcyAweDU4RDQzQ0IyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGFyZyBAcmVmIENSQ19JTlBVVERBVEFfSU5WRVJTSU9OX0hBTEZXT1JEICAgaGFsZndvcmQtd2lzZSBpbnZlcnNpb24sIDB4MUEyQjNDNEQgYmVjb21lcyAweEQ0NThCMjNDCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGFyZyBAcmVmIENSQ19JTlBVVERBVEFfSU5WRVJTSU9OX1dPUkQgICAgICAgd29yZC13aXNlIGludmVyc2lvbiwgMHgxQTJCM0M0RCBiZWNvbWVzIDB4QjIzQ0Q0NTggKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAYXJnIEByZWYgQ1JDX0lOUFVUREFUQV9JTlZFUlNJT05fQllURSAgICAgICBieXRlLXdpc2UgaW52ZXJzaW9uLCAweDFBMkIzQzRECisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVjb21lcyAweDU4RDQzQ0IyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGFyZyBAcmVmIENSQ19JTlBVVERBVEFfSU5WRVJTSU9OX0hBTEZXT1JEICAgaGFsZndvcmQtd2lzZSBpbnZlcnNpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxQTJCM0M0RCBiZWNvbWVzIDB4RDQ1OEIyM0MKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAYXJnIEByZWYgQ1JDX0lOUFVUREFUQV9JTlZFUlNJT05fV09SRCAgICAgICB3b3JkLXdpc2UgaW52ZXJzaW9uLCAweDFBMkIzQzRECisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVjb21lcyAweEIyM0NENDU4ICovCiAKICAgdWludDMyX3QgT3V0cHV0RGF0YUludmVyc2lvbk1vZGU7ICAgLyohPCBUaGlzIHBhcmFtZXRlciBpcyBhIHZhbHVlIG9mIEByZWYgQ1JDRXhfT3V0cHV0X0RhdGFfSW52ZXJzaW9uIGFuZCBzcGVjaWZpZXMgb3V0cHV0IGRhdGEgKGkuZS4gQ1JDKSBpbnZlcnNpb24gbW9kZS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FuIGJlIGVpdGhlcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAYXJnIEByZWYgQ1JDX09VVFBVVERBVEFfSU5WRVJTSU9OX0RJU0FCTEUgICBubyBDUkMgaW52ZXJzaW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAYXJnIEByZWYgQ1JDX09VVFBVVERBVEFfSU5WRVJTSU9OX0VOQUJMRSAgICBDUkMgMHgxMTIyMzM0NCBpcyBjb252ZXJ0ZWQgaW50byAweDIyQ0M0NDg4ICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBhcmcgQHJlZiBDUkNfT1VUUFVUREFUQV9JTlZFUlNJT05fRU5BQkxFICAgIENSQyAweDExMjIzMzQ0IGlzIGNvbnZlcnRlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50byAweDIyQ0M0NDg4ICovCiB9IENSQ19Jbml0VHlwZURlZjsKIAogLyoqCkBAIC0xMTIsMTIgKzExOCwxNiBAQAogCiAgIHVpbnQzMl90IElucHV0RGF0YUZvcm1hdDsgICAgICAgICAgICAgICAgLyohPCBUaGlzIHBhcmFtZXRlciBpcyBhIHZhbHVlIG9mIEByZWYgQ1JDX0lucHV0X0J1ZmZlcl9Gb3JtYXQgYW5kIHNwZWNpZmllcyBpbnB1dCBkYXRhIGZvcm1hdC4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FuIGJlIGVpdGhlcgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAYXJnIEByZWYgQ1JDX0lOUFVUREFUQV9GT1JNQVRfQllURVMgICAgICAgaW5wdXQgZGF0YSBpcyBhIHN0cmVhbSBvZiBieXRlcyAoOC1iaXQgZGF0YSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGFyZyBAcmVmIENSQ19JTlBVVERBVEFfRk9STUFUX0hBTEZXT1JEUyAgIGlucHV0IGRhdGEgaXMgYSBzdHJlYW0gb2YgaGFsZi13b3JkcyAoMTYtYml0IGRhdGEpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBhcmcgQHJlZiBDUkNfSU5QVVREQVRBX0ZPUk1BVF9XT1JEUyAgICAgICBpbnB1dCBkYXRhIGlzIGEgc3RyZWFtIG9mIHdvcmRzICgzMi1iaXQgZGF0YSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGFyZyBAcmVmIENSQ19JTlBVVERBVEFfRk9STUFUX0JZVEVTICAgICAgIGlucHV0IGRhdGEgaXMgYSBzdHJlYW0gb2YgYnl0ZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDgtYml0IGRhdGEpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBhcmcgQHJlZiBDUkNfSU5QVVREQVRBX0ZPUk1BVF9IQUxGV09SRFMgICBpbnB1dCBkYXRhIGlzIGEgc3RyZWFtIG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbGYtd29yZHMgKDE2LWJpdCBkYXRhKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAYXJnIEByZWYgQ1JDX0lOUFVUREFUQV9GT1JNQVRfV09SRFMgICAgICAgaW5wdXQgZGF0YSBpcyBhIHN0cmVhbSBvZiB3b3JkcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMzItYml0IGRhdGEpCiAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOb3RlIHRoYXQgY29uc3RhbnQgQ1JDX0lOUFVUX0ZPUk1BVF9VTkRFRklORUQgaXMgZGVmaW5lZCBidXQgYW4gaW5pdGlhbGl6YXRpb24gZXJyb3IKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdXN0IG9jY3VyIGlmIElucHV0QnVmZmVyRm9ybWF0IGlzIG5vdCBvbmUgb2YgdGhlIHRocmVlIHZhbHVlcyBsaXN0ZWQgYWJvdmUgICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOb3RlIHRoYXQgY29uc3RhbnQgQ1JDX0lOUFVUX0ZPUk1BVF9VTkRFRklORUQgaXMgZGVmaW5lZCBidXQgYW4gaW5pdGlhbGl6YXRpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yIG11c3Qgb2NjdXIgaWYgSW5wdXRCdWZmZXJGb3JtYXQgaXMgbm90IG9uZSBvZiB0aGUgdGhyZWUgdmFsdWVzIGxpc3RlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWJvdmUgICovCiB9IENSQ19IYW5kbGVUeXBlRGVmOwogLyoqCiAgICogQH0KQEAgLTE5OSwxNSArMjA5LDYgQEAKICAgKiBAfQogICAqLwogCi0vKiogQGRlZmdyb3VwIENSQ19BbGlhc2VzIENSQyBBUEkgYWxpYXNlcwotICAqIEB7Ci0gICovCi0jZGVmaW5lIEhBTF9DUkNfSW5wdXRfRGF0YV9SZXZlcnNlICAgSEFMX0NSQ0V4X0lucHV0X0RhdGFfUmV2ZXJzZSAgICAvKiE8IEFsaWFzZWQgdG8gSEFMX0NSQ0V4X0lucHV0X0RhdGFfUmV2ZXJzZSBmb3IgaW50ZXIgU1RNMzIgc2VyaWVzIGNvbXBhdGliaWxpdHkgICovCi0jZGVmaW5lIEhBTF9DUkNfT3V0cHV0X0RhdGFfUmV2ZXJzZSAgSEFMX0NSQ0V4X091dHB1dF9EYXRhX1JldmVyc2UgICAvKiE8IEFsaWFzZWQgdG8gSEFMX0NSQ0V4X091dHB1dF9EYXRhX1JldmVyc2UgZm9yIGludGVyIFNUTTMyIHNlcmllcyBjb21wYXRpYmlsaXR5ICovCi0vKioKLSAgKiBAfQotICAqLwotCiAvKioKICAgKiBAfQogICAqLwpAQCAtMzM5LDUgKzM0MCwzIEBACiAjZW5kaWYKIAogI2VuZGlmIC8qIFNUTTMyRjd4eF9IQUxfQ1JDX0ggKi8KLQotLyoqKioqKioqKioqKioqKioqKioqKioqKiAoQykgQ09QWVJJR0hUIFNUTWljcm9lbGVjdHJvbmljcyAqKioqKkVORCBPRiBGSUxFKioqKi8KZGlmZiAtLWdpdCBhL0luYy9zdG0zMmY3eHhfaGFsX2NyY19leC5oIGIvSW5jL3N0bTMyZjd4eF9oYWxfY3JjX2V4LmgKaW5kZXggZjJlYmJhMS4uZWRmOWM4MiAxMDA2NDQKLS0tIGEvSW5jL3N0bTMyZjd4eF9oYWxfY3JjX2V4LmgKKysrIGIvSW5jL3N0bTMyZjd4eF9oYWxfY3JjX2V4LmgKQEAgLTYsMTMgKzYsMTIgQEAKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgICogQGF0dGVudGlvbgogICAqCi0gICogPGgyPjxjZW50ZXI+JmNvcHk7IENvcHlyaWdodCAoYykgMjAxNyBTVE1pY3JvZWxlY3Ryb25pY3MuCi0gICogQWxsIHJpZ2h0cyByZXNlcnZlZC48L2NlbnRlcj48L2gyPgorICAqIENvcHlyaWdodCAoYykgMjAxNyBTVE1pY3JvZWxlY3Ryb25pY3MuCisgICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgKgotICAqIFRoaXMgc29mdHdhcmUgY29tcG9uZW50IGlzIGxpY2Vuc2VkIGJ5IFNUIHVuZGVyIEJTRCAzLUNsYXVzZSBsaWNlbnNlLAotICAqIHRoZSAiTGljZW5zZSI7IFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUKLSAgKiBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQ6Ci0gICogICAgICAgICAgICAgICAgICAgICAgICBvcGVuc291cmNlLm9yZy9saWNlbnNlcy9CU0QtMy1DbGF1c2UKKyAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIHVuZGVyIHRlcm1zIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUKKyAgKiBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb2Z0d2FyZSBjb21wb25lbnQuCisgICogSWYgbm8gTElDRU5TRSBmaWxlIGNvbWVzIHdpdGggdGhpcyBzb2Z0d2FyZSwgaXQgaXMgcHJvdmlkZWQgQVMtSVMuCiAgICoKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgICovCkBAIC0xNDksNSArMTQ4LDMgQEAKICNlbmRpZgogCiAjZW5kaWYgLyogU1RNMzJGN3h4X0hBTF9DUkNfRVhfSCAqLwotCi0vKioqKioqKioqKioqKioqKioqKioqKioqIChDKSBDT1BZUklHSFQgU1RNaWNyb2VsZWN0cm9uaWNzICoqKioqRU5EIE9GIEZJTEUqKioqLwpkaWZmIC0tZ2l0IGEvSW5jL3N0bTMyZjd4eF9oYWxfY3J5cC5oIGIvSW5jL3N0bTMyZjd4eF9oYWxfY3J5cC5oCmluZGV4IDgzYmZmYWYuLmNjYzEyM2QgMTAwNjQ0Ci0tLSBhL0luYy9zdG0zMmY3eHhfaGFsX2NyeXAuaAorKysgYi9JbmMvc3RtMzJmN3h4X2hhbF9jcnlwLmgKQEAgLTYsMTMgKzYsMTIgQEAKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgICogQGF0dGVudGlvbgogICAqCi0gICogPGgyPjxjZW50ZXI+JmNvcHk7IENvcHlyaWdodCAoYykgMjAxNiBTVE1pY3JvZWxlY3Ryb25pY3MuCi0gICogQWxsIHJpZ2h0cyByZXNlcnZlZC48L2NlbnRlcj48L2gyPgorICAqIENvcHlyaWdodCAoYykgMjAxNyBTVE1pY3JvZWxlY3Ryb25pY3MuCisgICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgKgotICAqIFRoaXMgc29mdHdhcmUgY29tcG9uZW50IGlzIGxpY2Vuc2VkIGJ5IFNUIHVuZGVyIEJTRCAzLUNsYXVzZSBsaWNlbnNlLAotICAqIHRoZSAiTGljZW5zZSI7IFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUKLSAgKiBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQ6Ci0gICogICAgICAgICAgICAgICAgICAgICAgICBvcGVuc291cmNlLm9yZy9saWNlbnNlcy9CU0QtMy1DbGF1c2UKKyAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIHVuZGVyIHRlcm1zIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUKKyAgKiBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb2Z0d2FyZSBjb21wb25lbnQuCisgICogSWYgbm8gTElDRU5TRSBmaWxlIGNvbWVzIHdpdGggdGhpcyBzb2Z0d2FyZSwgaXQgaXMgcHJvdmlkZWQgQVMtSVMuCiAgICoKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgICovCkBAIC02NzAsNCArNjY5LDMgQEAKIAogI2VuZGlmIC8qIF9fU1RNMzJGN3h4X0hBTF9DUllQX0ggKi8KIAotLyoqKioqKioqKioqKioqKioqKioqKioqKiAoQykgQ09QWVJJR0hUIFNUTWljcm9lbGVjdHJvbmljcyAqKioqKkVORCBPRiBGSUxFKioqKi8KZGlmZiAtLWdpdCBhL0luYy9zdG0zMmY3eHhfaGFsX2NyeXBfZXguaCBiL0luYy9zdG0zMmY3eHhfaGFsX2NyeXBfZXguaAppbmRleCBkOWZhNzc2Li4zNDdmZmU4IDEwMDY0NAotLS0gYS9JbmMvc3RtMzJmN3h4X2hhbF9jcnlwX2V4LmgKKysrIGIvSW5jL3N0bTMyZjd4eF9oYWxfY3J5cF9leC5oCkBAIC02LDEzICs2LDEyIEBACiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAqIEBhdHRlbnRpb24KICAgKgotICAqIDxoMj48Y2VudGVyPiZjb3B5OyBDb3B5cmlnaHQgKGMpIDIwMTYgU1RNaWNyb2VsZWN0cm9uaWNzLgotICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuPC9jZW50ZXI+PC9oMj4KKyAgKiBDb3B5cmlnaHQgKGMpIDIwMTcgU1RNaWNyb2VsZWN0cm9uaWNzLgorICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICoKLSAgKiBUaGlzIHNvZnR3YXJlIGNvbXBvbmVudCBpcyBsaWNlbnNlZCBieSBTVCB1bmRlciBCU0QgMy1DbGF1c2UgbGljZW5zZSwKLSAgKiB0aGUgIkxpY2Vuc2UiOyBZb3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlCi0gICogTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0OgotICAqICAgICAgICAgICAgICAgICAgICAgICAgb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvQlNELTMtQ2xhdXNlCisgICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCB1bmRlciB0ZXJtcyB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlCisgICogaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc29mdHdhcmUgY29tcG9uZW50LgorICAqIElmIG5vIExJQ0VOU0UgZmlsZSBjb21lcyB3aXRoIHRoaXMgc29mdHdhcmUsIGl0IGlzIHByb3ZpZGVkIEFTLUlTLgogICAqCiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAqLwpAQCAtMTQxLDQgKzE0MCwzIEBACiAKICNlbmRpZiAvKiBfX1NUTTMyRjd4eF9IQUxfQ1JZUF9FWF9IICovCiAKLS8qKioqKioqKioqKioqKioqKioqKioqKiogKEMpIENPUFlSSUdIVCBTVE1pY3JvZWxlY3Ryb25pY3MgKioqKipFTkQgT0YgRklMRSoqKiovCmRpZmYgLS1naXQgYS9JbmMvc3RtMzJmN3h4X2hhbF9kYWMuaCBiL0luYy9zdG0zMmY3eHhfaGFsX2RhYy5oCmluZGV4IDNlMDFlMjkuLmFiYzJjMDEgMTAwNjQ0Ci0tLSBhL0luYy9zdG0zMmY3eHhfaGFsX2RhYy5oCisrKyBiL0luYy9zdG0zMmY3eHhfaGFsX2RhYy5oCkBAIC02LDEzICs2LDEyIEBACiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAqIEBhdHRlbnRpb24KICAgKgotICAqIDxoMj48Y2VudGVyPiZjb3B5OyBDb3B5cmlnaHQgKGMpIDIwMTcgU1RNaWNyb2VsZWN0cm9uaWNzLgotICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuPC9jZW50ZXI+PC9oMj4KKyAgKiBDb3B5cmlnaHQgKGMpIDIwMTcgU1RNaWNyb2VsZWN0cm9uaWNzLgorICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICoKLSAgKiBUaGlzIHNvZnR3YXJlIGNvbXBvbmVudCBpcyBsaWNlbnNlZCBieSBTVCB1bmRlciBCU0QgMy1DbGF1c2UgbGljZW5zZSwKLSAgKiB0aGUgIkxpY2Vuc2UiOyBZb3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlCi0gICogTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0OgotICAqICAgICAgICAgICAgICAgICAgICAgICAgb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvQlNELTMtQ2xhdXNlCisgICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCB1bmRlciB0ZXJtcyB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlCisgICogaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc29mdHdhcmUgY29tcG9uZW50LgorICAqIElmIG5vIExJQ0VOU0UgZmlsZSBjb21lcyB3aXRoIHRoaXMgc29mdHdhcmUsIGl0IGlzIHByb3ZpZGVkIEFTLUlTLgogICAqCiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAqLwpAQCAtNzksMTkgKzc4LDE5IEBACiAgIF9fSU8gdWludDMyX3QgICAgICAgICAgICAgICBFcnJvckNvZGU7ICAgICAvKiE8IERBQyBFcnJvciBjb2RlICAgICAgICAgICAgICAgICAgICAqLwogCiAjaWYgKFVTRV9IQUxfREFDX1JFR0lTVEVSX0NBTExCQUNLUyA9PSAxKQotICB2b2lkICgqIENvbnZDcGx0Q2FsbGJhY2tDaDEpKHN0cnVjdCBfX0RBQ19IYW5kbGVUeXBlRGVmICpoZGFjKTsKLSAgdm9pZCAoKiBDb252SGFsZkNwbHRDYWxsYmFja0NoMSkoc3RydWN0IF9fREFDX0hhbmRsZVR5cGVEZWYgKmhkYWMpOwotICB2b2lkICgqIEVycm9yQ2FsbGJhY2tDaDEpKHN0cnVjdCBfX0RBQ19IYW5kbGVUeXBlRGVmICpoZGFjKTsKLSAgdm9pZCAoKiBETUFVbmRlcnJ1bkNhbGxiYWNrQ2gxKShzdHJ1Y3QgX19EQUNfSGFuZGxlVHlwZURlZiAqaGRhYyk7CisgIHZvaWQgKCogQ29udkNwbHRDYWxsYmFja0NoMSkgICAgICAgICAgICAoc3RydWN0IF9fREFDX0hhbmRsZVR5cGVEZWYgKmhkYWMpOworICB2b2lkICgqIENvbnZIYWxmQ3BsdENhbGxiYWNrQ2gxKSAgICAgICAgKHN0cnVjdCBfX0RBQ19IYW5kbGVUeXBlRGVmICpoZGFjKTsKKyAgdm9pZCAoKiBFcnJvckNhbGxiYWNrQ2gxKSAgICAgICAgICAgICAgIChzdHJ1Y3QgX19EQUNfSGFuZGxlVHlwZURlZiAqaGRhYyk7CisgIHZvaWQgKCogRE1BVW5kZXJydW5DYWxsYmFja0NoMSkgICAgICAgICAoc3RydWN0IF9fREFDX0hhbmRsZVR5cGVEZWYgKmhkYWMpOwogCi0gIHZvaWQgKCogQ29udkNwbHRDYWxsYmFja0NoMikoc3RydWN0IF9fREFDX0hhbmRsZVR5cGVEZWYgKmhkYWMpOwotICB2b2lkICgqIENvbnZIYWxmQ3BsdENhbGxiYWNrQ2gyKShzdHJ1Y3QgX19EQUNfSGFuZGxlVHlwZURlZiAqaGRhYyk7Ci0gIHZvaWQgKCogRXJyb3JDYWxsYmFja0NoMikoc3RydWN0IF9fREFDX0hhbmRsZVR5cGVEZWYgKmhkYWMpOwotICB2b2lkICgqIERNQVVuZGVycnVuQ2FsbGJhY2tDaDIpKHN0cnVjdCBfX0RBQ19IYW5kbGVUeXBlRGVmICpoZGFjKTsKKyAgdm9pZCAoKiBDb252Q3BsdENhbGxiYWNrQ2gyKSAgICAgICAgICAgIChzdHJ1Y3QgX19EQUNfSGFuZGxlVHlwZURlZiAqaGRhYyk7CisgIHZvaWQgKCogQ29udkhhbGZDcGx0Q2FsbGJhY2tDaDIpICAgICAgICAoc3RydWN0IF9fREFDX0hhbmRsZVR5cGVEZWYgKmhkYWMpOworICB2b2lkICgqIEVycm9yQ2FsbGJhY2tDaDIpICAgICAgICAgICAgICAgKHN0cnVjdCBfX0RBQ19IYW5kbGVUeXBlRGVmICpoZGFjKTsKKyAgdm9pZCAoKiBETUFVbmRlcnJ1bkNhbGxiYWNrQ2gyKSAgICAgICAgIChzdHJ1Y3QgX19EQUNfSGFuZGxlVHlwZURlZiAqaGRhYyk7CiAKIAotICB2b2lkICgqIE1zcEluaXRDYWxsYmFjaykoc3RydWN0IF9fREFDX0hhbmRsZVR5cGVEZWYgKmhkYWMpOwotICB2b2lkICgqIE1zcERlSW5pdENhbGxiYWNrKShzdHJ1Y3QgX19EQUNfSGFuZGxlVHlwZURlZiAqaGRhYyk7CisgIHZvaWQgKCogTXNwSW5pdENhbGxiYWNrKSAgICAgICAgICAgICAgICAoc3RydWN0IF9fREFDX0hhbmRsZVR5cGVEZWYgKmhkYWMpOworICB2b2lkICgqIE1zcERlSW5pdENhbGxiYWNrKSAgICAgICAgICAgICAgKHN0cnVjdCBfX0RBQ19IYW5kbGVUeXBlRGVmICpoZGFjKTsKICNlbmRpZiAvKiBVU0VfSEFMX0RBQ19SRUdJU1RFUl9DQUxMQkFDS1MgKi8KIAogfSBEQUNfSGFuZGxlVHlwZURlZjsKQEAgLTQ3Myw0ICs0NzIsMyBAQAogCiAjZW5kaWYgLyogU1RNMzJGN3h4X0hBTF9EQUNfSCAqLwogCi0vKioqKioqKioqKioqKioqKioqKioqKioqIChDKSBDT1BZUklHSFQgU1RNaWNyb2VsZWN0cm9uaWNzICoqKioqRU5EIE9GIEZJTEUqKioqLwpkaWZmIC0tZ2l0IGEvSW5jL3N0bTMyZjd4eF9oYWxfZGFjX2V4LmggYi9JbmMvc3RtMzJmN3h4X2hhbF9kYWNfZXguaAppbmRleCAxNjQ2YzhlLi4wMjk0ODM0IDEwMDY0NAotLS0gYS9JbmMvc3RtMzJmN3h4X2hhbF9kYWNfZXguaAorKysgYi9JbmMvc3RtMzJmN3h4X2hhbF9kYWNfZXguaApAQCAtNiwxMyArNiwxMiBAQAogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgKiBAYXR0ZW50aW9uCiAgICoKLSAgKiA8aDI+PGNlbnRlcj4mY29weTsgQ29weXJpZ2h0IChjKSAyMDE3IFNUTWljcm9lbGVjdHJvbmljcy4KLSAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLjwvY2VudGVyPjwvaDI+CisgICogQ29weXJpZ2h0IChjKSAyMDE3IFNUTWljcm9lbGVjdHJvbmljcy4KKyAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAqCi0gICogVGhpcyBzb2Z0d2FyZSBjb21wb25lbnQgaXMgbGljZW5zZWQgYnkgU1QgdW5kZXIgQlNEIDMtQ2xhdXNlIGxpY2Vuc2UsCi0gICogdGhlICJMaWNlbnNlIjsgWW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZQotICAqIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdDoKLSAgKiAgICAgICAgICAgICAgICAgICAgICAgIG9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0JTRC0zLUNsYXVzZQorICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgdW5kZXIgdGVybXMgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZQorICAqIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvZnR3YXJlIGNvbXBvbmVudC4KKyAgKiBJZiBubyBMSUNFTlNFIGZpbGUgY29tZXMgd2l0aCB0aGlzIHNvZnR3YXJlLCBpdCBpcyBwcm92aWRlZCBBUy1JUy4KICAgKgogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgKi8KQEAgLTIwMCw0ICsxOTksMyBAQAogCiAjZW5kaWYgLyogU1RNMzJGN3h4X0hBTF9EQUNfRVhfSCAqLwogCi0vKioqKioqKioqKioqKioqKioqKioqKioqIChDKSBDT1BZUklHSFQgU1RNaWNyb2VsZWN0cm9uaWNzICoqKioqRU5EIE9GIEZJTEUqKioqLwpkaWZmIC0tZ2l0IGEvSW5jL3N0bTMyZjd4eF9oYWxfZGNtaS5oIGIvSW5jL3N0bTMyZjd4eF9oYWxfZGNtaS5oCmluZGV4IDc4ODIxOTguLmU1ZDA3ZjYgMTAwNjQ0Ci0tLSBhL0luYy9zdG0zMmY3eHhfaGFsX2RjbWkuaAorKysgYi9JbmMvc3RtMzJmN3h4X2hhbF9kY21pLmgKQEAgLTYsMTMgKzYsMTIgQEAKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgICogQGF0dGVudGlvbgogICAqCi0gICogPGgyPjxjZW50ZXI+JmNvcHk7IENvcHlyaWdodCAoYykgMjAxNyBTVE1pY3JvZWxlY3Ryb25pY3MuCi0gICogQWxsIHJpZ2h0cyByZXNlcnZlZC48L2NlbnRlcj48L2gyPgorICAqIENvcHlyaWdodCAoYykgMjAxNyBTVE1pY3JvZWxlY3Ryb25pY3MuCisgICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgKgotICAqIFRoaXMgc29mdHdhcmUgY29tcG9uZW50IGlzIGxpY2Vuc2VkIGJ5IFNUIHVuZGVyIEJTRCAzLUNsYXVzZSBsaWNlbnNlLAotICAqIHRoZSAiTGljZW5zZSI7IFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUKLSAgKiBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQ6Ci0gICogICAgICAgICAgICAgICAgICAgICAgICBvcGVuc291cmNlLm9yZy9saWNlbnNlcy9CU0QtMy1DbGF1c2UKKyAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIHVuZGVyIHRlcm1zIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUKKyAgKiBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb2Z0d2FyZSBjb21wb25lbnQuCisgICogSWYgbm8gTElDRU5TRSBmaWxlIGNvbWVzIHdpdGggdGhpcyBzb2Z0d2FyZSwgaXQgaXMgcHJvdmlkZWQgQVMtSVMuCiAgICoKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgICovCkBAIC02NTUsNCArNjU0LDMgQEAKIAogI2VuZGlmIC8qIFNUTTMyRjd4eF9IQUxfRENNSV9IICovCiAKLS8qKioqKioqKioqKioqKioqKioqKioqKiogKEMpIENPUFlSSUdIVCBTVE1pY3JvZWxlY3Ryb25pY3MgKioqKipFTkQgT0YgRklMRSoqKiovCmRpZmYgLS1naXQgYS9JbmMvc3RtMzJmN3h4X2hhbF9kY21pX2V4LmggYi9JbmMvc3RtMzJmN3h4X2hhbF9kY21pX2V4LmgKaW5kZXggNTA2Y2U0Ni4uNTFiMzk2YyAxMDA2NDQKLS0tIGEvSW5jL3N0bTMyZjd4eF9oYWxfZGNtaV9leC5oCisrKyBiL0luYy9zdG0zMmY3eHhfaGFsX2RjbWlfZXguaApAQCAtNiwxMyArNiwxMiBAQAogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgKiBAYXR0ZW50aW9uCiAgICoKLSAgKiA8aDI+PGNlbnRlcj4mY29weTsgQ29weXJpZ2h0IChjKSAyMDE3IFNUTWljcm9lbGVjdHJvbmljcy4KLSAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLjwvY2VudGVyPjwvaDI+CisgICogQ29weXJpZ2h0IChjKSAyMDE3IFNUTWljcm9lbGVjdHJvbmljcy4KKyAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAqCi0gICogVGhpcyBzb2Z0d2FyZSBjb21wb25lbnQgaXMgbGljZW5zZWQgYnkgU1QgdW5kZXIgQlNEIDMtQ2xhdXNlIGxpY2Vuc2UsCi0gICogdGhlICJMaWNlbnNlIjsgWW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZQotICAqIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdDoKLSAgKiAgICAgICAgICAgICAgICAgICAgICAgIG9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0JTRC0zLUNsYXVzZQorICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgdW5kZXIgdGVybXMgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZQorICAqIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvZnR3YXJlIGNvbXBvbmVudC4KKyAgKiBJZiBubyBMSUNFTlNFIGZpbGUgY29tZXMgd2l0aCB0aGlzIHNvZnR3YXJlLCBpdCBpcyBwcm92aWRlZCBBUy1JUy4KICAgKgogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgKi8KQEAgLTM0LDQgKzMzLDMgQEAKIAogI2VuZGlmIC8qIF9fU1RNMzJGN3h4X0hBTF9EQ01JX0ggKi8KIAotLyoqKioqKioqKioqKioqKioqKioqKioqKiAoQykgQ09QWVJJR0hUIFNUTWljcm9lbGVjdHJvbmljcyAqKioqKkVORCBPRiBGSUxFKioqKi8KZGlmZiAtLWdpdCBhL0luYy9zdG0zMmY3eHhfaGFsX2RlZi5oIGIvSW5jL3N0bTMyZjd4eF9oYWxfZGVmLmgKaW5kZXggM2Q5NGZiMi4uN2EwMjIzZiAxMDA2NDQKLS0tIGEvSW5jL3N0bTMyZjd4eF9oYWxfZGVmLmgKKysrIGIvSW5jL3N0bTMyZjd4eF9oYWxfZGVmLmgKQEAgLTMsMTcgKzMsMTYgQEAKICAgKiBAZmlsZSAgICBzdG0zMmY3eHhfaGFsX2RlZi5oCiAgICogQGF1dGhvciAgTUNEIEFwcGxpY2F0aW9uIFRlYW0KICAgKiBAYnJpZWYgICBUaGlzIGZpbGUgY29udGFpbnMgSEFMIGNvbW1vbiBkZWZpbmVzLCBlbnVtZXJhdGlvbiwgbWFjcm9zIGFuZCAKLSAgKiAgICAgICAgICBzdHJ1Y3R1cmVzIGRlZmluaXRpb25zLiAKKyAgKiAgICAgICAgICBzdHJ1Y3R1cmVzIGRlZmluaXRpb25zLgogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgKiBAYXR0ZW50aW9uCiAgICoKLSAgKiA8aDI+PGNlbnRlcj4mY29weTsgQ29weXJpZ2h0IChjKSAyMDE3IFNUTWljcm9lbGVjdHJvbmljcy4KLSAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLjwvY2VudGVyPjwvaDI+CisgICogQ29weXJpZ2h0IChjKSAyMDE3IFNUTWljcm9lbGVjdHJvbmljcy4KKyAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAqCi0gICogVGhpcyBzb2Z0d2FyZSBjb21wb25lbnQgaXMgbGljZW5zZWQgYnkgU1QgdW5kZXIgQlNEIDMtQ2xhdXNlIGxpY2Vuc2UsCi0gICogdGhlICJMaWNlbnNlIjsgWW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZQotICAqIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdDoKLSAgKiAgICAgICAgICAgICAgICAgICAgICAgIG9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0JTRC0zLUNsYXVzZQorICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgdW5kZXIgdGVybXMgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZQorICAqIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvZnR3YXJlIGNvbXBvbmVudC4KKyAgKiBJZiBubyBMSUNFTlNFIGZpbGUgY29tZXMgd2l0aCB0aGlzIHNvZnR3YXJlLCBpdCBpcyBwcm92aWRlZCBBUy1JUy4KICAgKgogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgKi8KQEAgLTIxNiw0ICsyMTUsNCBAQAogCiAjZW5kaWYgLyogX19fU1RNMzJGN3h4X0hBTF9ERUYgKi8KIAotLyoqKioqKioqKioqKioqKioqKioqKioqKiAoQykgQ09QWVJJR0hUIFNUTWljcm9lbGVjdHJvbmljcyAqKioqKkVORCBPRiBGSUxFKioqKi8KKwpkaWZmIC0tZ2l0IGEvSW5jL3N0bTMyZjd4eF9oYWxfZGZzZG0uaCBiL0luYy9zdG0zMmY3eHhfaGFsX2Rmc2RtLmgKaW5kZXggNjc3ZGJhZC4uZjI0NGEzYiAxMDA2NDQKLS0tIGEvSW5jL3N0bTMyZjd4eF9oYWxfZGZzZG0uaAorKysgYi9JbmMvc3RtMzJmN3h4X2hhbF9kZnNkbS5oCkBAIC02LDEzICs2LDEyIEBACiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAqIEBhdHRlbnRpb24KICAgKgotICAqIDxoMj48Y2VudGVyPiZjb3B5OyBDb3B5cmlnaHQgKGMpIDIwMTcgU1RNaWNyb2VsZWN0cm9uaWNzLgotICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuPC9jZW50ZXI+PC9oMj4KKyAgKiBDb3B5cmlnaHQgKGMpIDIwMTcgU1RNaWNyb2VsZWN0cm9uaWNzLgorICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICoKLSAgKiBUaGlzIHNvZnR3YXJlIGNvbXBvbmVudCBpcyBsaWNlbnNlZCBieSBTVCB1bmRlciBCU0QgMy1DbGF1c2UgbGljZW5zZSwKLSAgKiB0aGUgIkxpY2Vuc2UiOyBZb3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlCi0gICogTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0OgotICAqICAgICAgICAgICAgICAgICAgICAgICAgb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvQlNELTMtQ2xhdXNlCisgICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCB1bmRlciB0ZXJtcyB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlCisgICogaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc29mdHdhcmUgY29tcG9uZW50LgorICAqIElmIG5vIExJQ0VOU0UgZmlsZSBjb21lcyB3aXRoIHRoaXMgc29mdHdhcmUsIGl0IGlzIHByb3ZpZGVkIEFTLUlTLgogICAqCiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAqLwpAQCAtNzkxLDUgKzc5MCwzIEBACiAjZW5kaWYKIAogI2VuZGlmIC8qIF9fU1RNMzJGN3h4X0hBTF9ERlNETV9IICovCi0KLS8qKioqKioqKioqKioqKioqKioqKioqKiogKEMpIENPUFlSSUdIVCBTVE1pY3JvZWxlY3Ryb25pY3MgKioqKipFTkQgT0YgRklMRSoqKiovCmRpZmYgLS1naXQgYS9JbmMvc3RtMzJmN3h4X2hhbF9kbWEuaCBiL0luYy9zdG0zMmY3eHhfaGFsX2RtYS5oCmluZGV4IDk5YTM2ZTguLmRlN2MwN2UgMTAwNjQ0Ci0tLSBhL0luYy9zdG0zMmY3eHhfaGFsX2RtYS5oCisrKyBiL0luYy9zdG0zMmY3eHhfaGFsX2RtYS5oCkBAIC02LDEzICs2LDEyIEBACiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAqIEBhdHRlbnRpb24KICAgKgotICAqIDxoMj48Y2VudGVyPiZjb3B5OyBDb3B5cmlnaHQgKGMpIDIwMTcgU1RNaWNyb2VsZWN0cm9uaWNzLgotICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuPC9jZW50ZXI+PC9oMj4KKyAgKiBDb3B5cmlnaHQgKGMpIDIwMTcgU1RNaWNyb2VsZWN0cm9uaWNzLgorICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICoKLSAgKiBUaGlzIHNvZnR3YXJlIGNvbXBvbmVudCBpcyBsaWNlbnNlZCBieSBTVCB1bmRlciBCU0QgMy1DbGF1c2UgbGljZW5zZSwKLSAgKiB0aGUgIkxpY2Vuc2UiOyBZb3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlCi0gICogTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0OgotICAqICAgICAgICAgICAgICAgICAgICAgICAgb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvQlNELTMtQ2xhdXNlCisgICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCB1bmRlciB0ZXJtcyB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluCisgICogdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc29mdHdhcmUgY29tcG9uZW50LgorICAqIElmIG5vIExJQ0VOU0UgZmlsZSBjb21lcyB3aXRoIHRoaXMgc29mdHdhcmUsIGl0IGlzIHByb3ZpZGVkIEFTLUlTLgogICAqCiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAqLyAKQEAgLTc0Niw0ICs3NDUsMyBAQAogCiAjZW5kaWYgLyogX19TVE0zMkY3eHhfSEFMX0RNQV9IICovCiAKLS8qKioqKioqKioqKioqKioqKioqKioqKiogKEMpIENPUFlSSUdIVCBTVE1pY3JvZWxlY3Ryb25pY3MgKioqKipFTkQgT0YgRklMRSoqKiovCmRpZmYgLS1naXQgYS9JbmMvc3RtMzJmN3h4X2hhbF9kbWEyZC5oIGIvSW5jL3N0bTMyZjd4eF9oYWxfZG1hMmQuaAppbmRleCA3YWYwYzZjLi5jNjAzNjVlIDEwMDY0NAotLS0gYS9JbmMvc3RtMzJmN3h4X2hhbF9kbWEyZC5oCisrKyBiL0luYy9zdG0zMmY3eHhfaGFsX2RtYTJkLmgKQEAgLTYsMTMgKzYsMTIgQEAKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgICogQGF0dGVudGlvbgogICAqCi0gICogPGgyPjxjZW50ZXI+JmNvcHk7IENvcHlyaWdodCAoYykgMjAxNyBTVE1pY3JvZWxlY3Ryb25pY3MuCi0gICogQWxsIHJpZ2h0cyByZXNlcnZlZC48L2NlbnRlcj48L2gyPgorICAqIENvcHlyaWdodCAoYykgMjAxNyBTVE1pY3JvZWxlY3Ryb25pY3MuCisgICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgKgotICAqIFRoaXMgc29mdHdhcmUgY29tcG9uZW50IGlzIGxpY2Vuc2VkIGJ5IFNUIHVuZGVyIEJTRCAzLUNsYXVzZSBsaWNlbnNlLAotICAqIHRoZSAiTGljZW5zZSI7IFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUKLSAgKiBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQ6Ci0gICogICAgICAgICAgICAgICAgICAgICAgICBvcGVuc291cmNlLm9yZy9saWNlbnNlcy9CU0QtMy1DbGF1c2UKKyAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIHVuZGVyIHRlcm1zIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUKKyAgKiBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb2Z0d2FyZSBjb21wb25lbnQuCisgICogSWYgbm8gTElDRU5TRSBmaWxlIGNvbWVzIHdpdGggdGhpcyBzb2Z0d2FyZSwgaXQgaXMgcHJvdmlkZWQgQVMtSVMuCiAgICoKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgICovCkBAIC0zMTUsMTUgKzMxNCw2IEBACiAgICogQH0KICAgKi8KIAotLyoqIEBkZWZncm91cCBETUEyRF9BbGlhc2VzIERNQTJEIEFQSSBBbGlhc2VzCi0gICogQHsKLSAgKi8KLSNkZWZpbmUgSEFMX0RNQTJEX0Rpc2FibGVDTFVUICAgICAgIEhBTF9ETUEyRF9DTFVUTG9hZGluZ19BYm9ydCAgICAvKiE8IEFsaWFzZWQgdG8gSEFMX0RNQTJEX0NMVVRMb2FkaW5nX0Fib3J0IAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBsZWdhY3kgY29kZSAqLwotLyoqCi0gICogQH0KLSAgKi8KLQogI2lmIChVU0VfSEFMX0RNQTJEX1JFR0lTVEVSX0NBTExCQUNLUyA9PSAxKQogLyoqCiAgICogQGJyaWVmICBIQUwgRE1BMkQgY29tbW9uIENhbGxiYWNrIElEIGVudW1lcmF0aW9uIGRlZmluaXRpb24KQEAgLTY4OSw2ICs2NzksMyBAQAogI2VuZGlmCiAKICNlbmRpZiAvKiBTVE0zMkY3eHhfSEFMX0RNQTJEX0ggKi8KLQotCi0vKioqKioqKioqKioqKioqKioqKioqKioqIChDKSBDT1BZUklHSFQgU1RNaWNyb2VsZWN0cm9uaWNzICoqKioqRU5EIE9GIEZJTEUqKioqLwpkaWZmIC0tZ2l0IGEvSW5jL3N0bTMyZjd4eF9oYWxfZG1hX2V4LmggYi9JbmMvc3RtMzJmN3h4X2hhbF9kbWFfZXguaAppbmRleCBkMTVlYTUwLi41ZDc2ZTlmIDEwMDY0NAotLS0gYS9JbmMvc3RtMzJmN3h4X2hhbF9kbWFfZXguaAorKysgYi9JbmMvc3RtMzJmN3h4X2hhbF9kbWFfZXguaApAQCAtNiwxMyArNiwxMiBAQAogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgKiBAYXR0ZW50aW9uCiAgICoKLSAgKiA8aDI+PGNlbnRlcj4mY29weTsgQ29weXJpZ2h0IChjKSAyMDE3IFNUTWljcm9lbGVjdHJvbmljcy4KLSAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLjwvY2VudGVyPjwvaDI+CisgICogQ29weXJpZ2h0IChjKSAyMDE3IFNUTWljcm9lbGVjdHJvbmljcy4KKyAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAqCi0gICogVGhpcyBzb2Z0d2FyZSBjb21wb25lbnQgaXMgbGljZW5zZWQgYnkgU1QgdW5kZXIgQlNEIDMtQ2xhdXNlIGxpY2Vuc2UsCi0gICogdGhlICJMaWNlbnNlIjsgWW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZQotICAqIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdDoKLSAgKiAgICAgICAgICAgICAgICAgICAgICAgIG9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0JTRC0zLUNsYXVzZQorICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgdW5kZXIgdGVybXMgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbgorICAqIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvZnR3YXJlIGNvbXBvbmVudC4KKyAgKiBJZiBubyBMSUNFTlNFIGZpbGUgY29tZXMgd2l0aCB0aGlzIHNvZnR3YXJlLCBpdCBpcyBwcm92aWRlZCBBUy1JUy4KICAgKgogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgKi8KQEAgLTE4Miw0ICsxODEsMyBAQAogCiAjZW5kaWYgLyogX19TVE0zMkY3eHhfSEFMX0RNQV9IICovCiAKLS8qKioqKioqKioqKioqKioqKioqKioqKiogKEMpIENPUFlSSUdIVCBTVE1pY3JvZWxlY3Ryb25pY3MgKioqKipFTkQgT0YgRklMRSoqKiovCmRpZmYgLS1naXQgYS9JbmMvc3RtMzJmN3h4X2hhbF9kc2kuaCBiL0luYy9zdG0zMmY3eHhfaGFsX2RzaS5oCmluZGV4IDcwOTFlODIuLmY3MzI2MjggMTAwNjQ0Ci0tLSBhL0luYy9zdG0zMmY3eHhfaGFsX2RzaS5oCisrKyBiL0luYy9zdG0zMmY3eHhfaGFsX2RzaS5oCkBAIC02LDEzICs2LDEyIEBACiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAqIEBhdHRlbnRpb24KICAgKgotICAqIDxoMj48Y2VudGVyPiZjb3B5OyBDb3B5cmlnaHQgKGMpIDIwMTcgU1RNaWNyb2VsZWN0cm9uaWNzLgotICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuPC9jZW50ZXI+PC9oMj4KKyAgKiBDb3B5cmlnaHQgKGMpIDIwMTcgU1RNaWNyb2VsZWN0cm9uaWNzLgorICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICoKLSAgKiBUaGlzIHNvZnR3YXJlIGNvbXBvbmVudCBpcyBsaWNlbnNlZCBieSBTVCB1bmRlciBCU0QgMy1DbGF1c2UgbGljZW5zZSwKLSAgKiB0aGUgIkxpY2Vuc2UiOyBZb3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlCi0gICogTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0OgotICAqICAgICAgICAgICAgICAgICAgICAgICAgb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvQlNELTMtQ2xhdXNlCisgICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCB1bmRlciB0ZXJtcyB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlCisgICogaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc29mdHdhcmUgY29tcG9uZW50LgorICAqIElmIG5vIExJQ0VOU0UgZmlsZSBjb21lcyB3aXRoIHRoaXMgc29mdHdhcmUsIGl0IGlzIHByb3ZpZGVkIEFTLUlTLgogICAqCiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAqLwpAQCAtNDAsNiArMzksOSBAQAogICAqLwogCiAvKiBFeHBvcnRlZCB0eXBlcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworLyoqIEBkZWZncm91cCBEU0lfRXhwb3J0ZWRfVHlwZXMgRFNJIEV4cG9ydGVkIFR5cGVzCisgICogQHsKKyAgKi8KIC8qKgogICAqIEBicmllZiAgRFNJIEluaXQgU3RydWN0dXJlIGRlZmluaXRpb24KICAgKi8KQEAgLTYxLDE0ICs2MywxNCBAQAogICAqLwogdHlwZWRlZiBzdHJ1Y3QKIHsKLSAgdWludDMyX3QgUExMTkRJVjsgICAgICAgICAgICAgICAgICAgICAgLyohPCBQTEwgTG9vcCBEaXZpc2lvbiBGYWN0b3IKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBtdXN0IGJlIGEgdmFsdWUgYmV0d2VlbiAxMCBhbmQgMTI1ICAgKi8KKyAgdWludDMyX3QgUExMTkRJVjsgICAgICAgICAgICAgICAgIC8qITwgUExMIExvb3AgRGl2aXNpb24gRmFjdG9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIG11c3QgYmUgYSB2YWx1ZSBiZXR3ZWVuIDEwIGFuZCAxMjUgICAgICAgICAgICAgICAgICAgICovCiAKLSAgdWludDMyX3QgUExMSURGOyAgICAgICAgICAgICAgICAgICAgICAgLyohPCBQTEwgSW5wdXQgRGl2aXNpb24gRmFjdG9yCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGFueSB2YWx1ZSBvZiBAcmVmIERTSV9QTExfSURGICovCisgIHVpbnQzMl90IFBMTElERjsgICAgICAgICAgICAgICAgICAvKiE8IFBMTCBJbnB1dCBEaXZpc2lvbiBGYWN0b3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGFueSB2YWx1ZSBvZiBAcmVmIERTSV9QTExfSURGICAgICAgICAgICAgICAgICAgKi8KIAotICB1aW50MzJfdCBQTExPREY7ICAgICAgICAgICAgICAgICAgICAgICAvKiE8IFBMTCBPdXRwdXQgRGl2aXNpb24gRmFjdG9yCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGFueSB2YWx1ZSBvZiBAcmVmIERTSV9QTExfT0RGICovCisgIHVpbnQzMl90IFBMTE9ERjsgICAgICAgICAgICAgICAgICAvKiE8IFBMTCBPdXRwdXQgRGl2aXNpb24gRmFjdG9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhbnkgdmFsdWUgb2YgQHJlZiBEU0lfUExMX09ERiAgICAgICAgICAgICAgICAgICovCiAKIH0gRFNJX1BMTEluaXRUeXBlRGVmOwogCkBAIC0zNDYsNiArMzQ4LDkgQEAKIHR5cGVkZWYgIHZvaWQgKCpwRFNJX0NhbGxiYWNrVHlwZURlZikoRFNJX0hhbmRsZVR5cGVEZWYgKmhkc2kpOyAgLyohPCBwb2ludGVyIHRvIGFuIERTSSBjYWxsYmFjayBmdW5jdGlvbiAqLwogCiAjZW5kaWYgLyogVVNFX0hBTF9EU0lfUkVHSVNURVJfQ0FMTEJBQ0tTICovCisvKioKKyAgKiBAfQorICAqLwogCiAvKiBFeHBvcnRlZCBjb25zdGFudHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogLyoqIEBkZWZncm91cCBEU0lfRXhwb3J0ZWRfQ29uc3RhbnRzIERTSSBFeHBvcnRlZCBDb25zdGFudHMKQEAgLTcwMCw4ICs3MDUsOCBAQAogI2RlZmluZSBEU0lfRkxPV19DT05UUk9MX0JUQSAgICAgICBEU0lfUENSX0JUQUUKICNkZWZpbmUgRFNJX0ZMT1dfQ09OVFJPTF9FT1RQX1JYICAgRFNJX1BDUl9FVFJYRQogI2RlZmluZSBEU0lfRkxPV19DT05UUk9MX0VPVFBfVFggICBEU0lfUENSX0VUVFhFCi0jZGVmaW5lIERTSV9GTE9XX0NPTlRST0xfQUxMICAgICAgIChEU0lfRkxPV19DT05UUk9MX0NSQ19SWCB8IERTSV9GTE9XX0NPTlRST0xfRUNDX1JYIHwgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFNJX0ZMT1dfQ09OVFJPTF9CVEEgfCBEU0lfRkxPV19DT05UUk9MX0VPVFBfUlggfCBcCisjZGVmaW5lIERTSV9GTE9XX0NPTlRST0xfQUxMICAgICAgIChEU0lfRkxPV19DT05UUk9MX0NSQ19SWCB8IERTSV9GTE9XX0NPTlRST0xfRUNDX1JYICB8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERTSV9GTE9XX0NPTlRST0xfQlRBICAgIHwgRFNJX0ZMT1dfQ09OVFJPTF9FT1RQX1JYIHwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFNJX0ZMT1dfQ09OVFJPTF9FT1RQX1RYKQogLyoqCiAgICogQH0KQEAgLTg0MSwxOCArODQ2LDE4IEBACiAgICogQHsKICAgKi8KICNkZWZpbmUgSEFMX0RTSV9FUlJPUl9OT05FICAgICAgICAgICAgICAwVQotI2RlZmluZSBIQUxfRFNJX0VSUk9SX0FDSyAgICAgICAgICAgICAgIDB4MDAwMDAwMDFVIC8qITwgYWNrbm93bGVkZ2UgZXJyb3JzICAgICAgICAgICovCi0jZGVmaW5lIEhBTF9EU0lfRVJST1JfUEhZICAgICAgICAgICAgICAgMHgwMDAwMDAwMlUgLyohPCBQSFkgcmVsYXRlZCBlcnJvcnMgICAgICAgICAgKi8KLSNkZWZpbmUgSEFMX0RTSV9FUlJPUl9UWCAgICAgICAgICAgICAgICAweDAwMDAwMDA0VSAvKiE8IHRyYW5zbWlzc2lvbiBlcnJvciAgICAgICAgICAqLwotI2RlZmluZSBIQUxfRFNJX0VSUk9SX1JYICAgICAgICAgICAgICAgIDB4MDAwMDAwMDhVIC8qITwgcmVjZXB0aW9uIGVycm9yICAgICAgICAgICAgICovCi0jZGVmaW5lIEhBTF9EU0lfRVJST1JfRUNDICAgICAgICAgICAgICAgMHgwMDAwMDAxMFUgLyohPCBFQ0MgZXJyb3JzICAgICAgICAgICAgICAgICAgKi8KLSNkZWZpbmUgSEFMX0RTSV9FUlJPUl9DUkMgICAgICAgICAgICAgICAweDAwMDAwMDIwVSAvKiE8IENSQyBlcnJvciAgICAgICAgICAgICAgICAgICAqLwotI2RlZmluZSBIQUxfRFNJX0VSUk9SX1BTRSAgICAgICAgICAgICAgIDB4MDAwMDAwNDBVIC8qITwgUGFja2V0IFNpemUgZXJyb3IgICAgICAgICAgICovCi0jZGVmaW5lIEhBTF9EU0lfRVJST1JfRU9UICAgICAgICAgICAgICAgMHgwMDAwMDA4MFUgLyohPCBFbmQgT2YgVHJhbnNtaXNzaW9uIGVycm9yICAgKi8KLSNkZWZpbmUgSEFMX0RTSV9FUlJPUl9PVkYgICAgICAgICAgICAgICAweDAwMDAwMTAwVSAvKiE8IEZJRk8gb3ZlcmZsb3cgZXJyb3IgICAgICAgICAqLwotI2RlZmluZSBIQUxfRFNJX0VSUk9SX0dFTiAgICAgICAgICAgICAgIDB4MDAwMDAyMDBVIC8qITwgR2VuZXJpYyBGSUZPIHJlbGF0ZWQgZXJyb3JzICovCisjZGVmaW5lIEhBTF9EU0lfRVJST1JfQUNLICAgICAgICAgICAgICAgMHgwMDAwMDAwMVUgLyohPCBBY2tub3dsZWRnZSBlcnJvcnMgICAgICAgICAgICAgKi8KKyNkZWZpbmUgSEFMX0RTSV9FUlJPUl9QSFkgICAgICAgICAgICAgICAweDAwMDAwMDAyVSAvKiE8IFBIWSByZWxhdGVkIGVycm9ycyAgICAgICAgICAgICAqLworI2RlZmluZSBIQUxfRFNJX0VSUk9SX1RYICAgICAgICAgICAgICAgIDB4MDAwMDAwMDRVIC8qITwgVHJhbnNtaXNzaW9uIGVycm9yICAgICAgICAgICAgICovCisjZGVmaW5lIEhBTF9EU0lfRVJST1JfUlggICAgICAgICAgICAgICAgMHgwMDAwMDAwOFUgLyohPCBSZWNlcHRpb24gZXJyb3IgICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgSEFMX0RTSV9FUlJPUl9FQ0MgICAgICAgICAgICAgICAweDAwMDAwMDEwVSAvKiE8IEVDQyBlcnJvcnMgICAgICAgICAgICAgICAgICAgICAqLworI2RlZmluZSBIQUxfRFNJX0VSUk9SX0NSQyAgICAgICAgICAgICAgIDB4MDAwMDAwMjBVIC8qITwgQ1JDIGVycm9yICAgICAgICAgICAgICAgICAgICAgICovCisjZGVmaW5lIEhBTF9EU0lfRVJST1JfUFNFICAgICAgICAgICAgICAgMHgwMDAwMDA0MFUgLyohPCBQYWNrZXQgU2l6ZSBlcnJvciAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgSEFMX0RTSV9FUlJPUl9FT1QgICAgICAgICAgICAgICAweDAwMDAwMDgwVSAvKiE8IEVuZCBPZiBUcmFuc21pc3Npb24gZXJyb3IgICAgICAqLworI2RlZmluZSBIQUxfRFNJX0VSUk9SX09WRiAgICAgICAgICAgICAgIDB4MDAwMDAxMDBVIC8qITwgRklGTyBvdmVyZmxvdyBlcnJvciAgICAgICAgICAgICovCisjZGVmaW5lIEhBTF9EU0lfRVJST1JfR0VOICAgICAgICAgICAgICAgMHgwMDAwMDIwMFUgLyohPCBHZW5lcmljIEZJRk8gcmVsYXRlZCBlcnJvcnMgICAgKi8KICNpZiAoVVNFX0hBTF9EU0lfUkVHSVNURVJfQ0FMTEJBQ0tTID09IDEpCi0jZGVmaW5lIEhBTF9EU0lfRVJST1JfSU5WQUxJRF9DQUxMQkFDSyAgMHgwMDAwMDQwMFUgLyohPCBEU0kgSW52YWxpZCBDYWxsYmFjayBlcnJvciAgKi8KKyNkZWZpbmUgSEFMX0RTSV9FUlJPUl9JTlZBTElEX0NBTExCQUNLICAweDAwMDAwNDAwVSAvKiE8IERTSSBJbnZhbGlkIENhbGxiYWNrIGVycm9yICAgICAgKi8KICNlbmRpZiAvKiBVU0VfSEFMX0RTSV9SRUdJU1RFUl9DQUxMQkFDS1MgKi8KIC8qKgogICAqIEB9CkBAIC05MTIsNiArOTE3LDcgQEAKICAgKiBAfQogICAqLwogCisKIC8qKgogICAqIEB9CiAgICovCkBAIC05NTUsMTEgKzk2MSwxMSBAQAogICAqIEByZXR2YWwgTm9uZS4KICAgKi8KICNkZWZpbmUgX19IQUxfRFNJX0RJU0FCTEUoX19IQU5ETEVfXykgZG8geyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX0lPIHVpbnQzMl90IHRtcHJlZyA9IDB4MDBVOyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDTEVBUl9CSVQoKF9fSEFORExFX18pLT5JbnN0YW5jZS0+Q1IsIERTSV9DUl9FTik7XAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogRGVsYXkgYWZ0ZXIgYW4gRFNJIEhvc3QgZGlzYWJsaW5nICovIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtcHJlZyA9IFJFQURfQklUKChfX0hBTkRMRV9fKS0+SW5zdGFuY2UtPkNSLCBEU0lfQ1JfRU4pO1wKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVOVVNFRCh0bXByZWcpOyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19JTyB1aW50MzJfdCB0bXByZWcgPSAweDAwVTsgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENMRUFSX0JJVCgoX19IQU5ETEVfXyktPkluc3RhbmNlLT5DUiwgRFNJX0NSX0VOKTtcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogRGVsYXkgYWZ0ZXIgYW4gRFNJIEhvc3QgZGlzYWJsaW5nICovIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bXByZWcgPSBSRUFEX0JJVCgoX19IQU5ETEVfXyktPkluc3RhbmNlLT5DUiwgRFNJX0NSX0VOKTtcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVU5VU0VEKHRtcHJlZyk7IFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSB3aGlsZSgwVSkKIAogLyoqCkBAIC05NjgsMTEgKzk3NCwxMSBAQAogICAqIEByZXR2YWwgTm9uZS4KICAgKi8KICNkZWZpbmUgX19IQUxfRFNJX1dSQVBQRVJfRU5BQkxFKF9fSEFORExFX18pIGRvIHsgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fSU8gdWludDMyX3QgdG1wcmVnID0gMHgwMFU7IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTRVRfQklUKChfX0hBTkRMRV9fKS0+SW5zdGFuY2UtPldDUiwgRFNJX1dDUl9EU0lFTik7XAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIERlbGF5IGFmdGVyIGFuIERTSSB3YXJwcGVyIGVuYWJsaW5nICovIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bXByZWcgPSBSRUFEX0JJVCgoX19IQU5ETEVfXyktPkluc3RhbmNlLT5XQ1IsIERTSV9XQ1JfRFNJRU4pO1wKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVTlVTRUQodG1wcmVnKTsgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX0lPIHVpbnQzMl90IHRtcHJlZyA9IDB4MDBVOyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNFVF9CSVQoKF9fSEFORExFX18pLT5JbnN0YW5jZS0+V0NSLCBEU0lfV0NSX0RTSUVOKTtcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIERlbGF5IGFmdGVyIGFuIERTSSB3YXJwcGVyIGVuYWJsaW5nICovIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG1wcmVnID0gUkVBRF9CSVQoKF9fSEFORExFX18pLT5JbnN0YW5jZS0+V0NSLCBEU0lfV0NSX0RTSUVOKTtcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVOVVNFRCh0bXByZWcpOyBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IHdoaWxlKDBVKQogCiAvKioKQEAgLTk4MSwxMSArOTg3LDExIEBACiAgICogQHJldHZhbCBOb25lLgogICAqLwogI2RlZmluZSBfX0hBTF9EU0lfV1JBUFBFUl9ESVNBQkxFKF9fSEFORExFX18pIGRvIHsgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX0lPIHVpbnQzMl90IHRtcHJlZyA9IDB4MDBVOyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENMRUFSX0JJVCgoX19IQU5ETEVfXyktPkluc3RhbmNlLT5XQ1IsIERTSV9XQ1JfRFNJRU4pO1wKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogRGVsYXkgYWZ0ZXIgYW4gRFNJIHdhcnBwZXIgZGlzYWJsaW5nKi8gXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bXByZWcgPSBSRUFEX0JJVCgoX19IQU5ETEVfXyktPkluc3RhbmNlLT5XQ1IsIERTSV9XQ1JfRFNJRU4pO1wKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVU5VU0VEKHRtcHJlZyk7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fSU8gdWludDMyX3QgdG1wcmVnID0gMHgwMFU7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENMRUFSX0JJVCgoX19IQU5ETEVfXyktPkluc3RhbmNlLT5XQ1IsIERTSV9XQ1JfRFNJRU4pO1wKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIERlbGF5IGFmdGVyIGFuIERTSSB3YXJwcGVyIGRpc2FibGluZyovIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtcHJlZyA9IFJFQURfQklUKChfX0hBTkRMRV9fKS0+SW5zdGFuY2UtPldDUiwgRFNJX1dDUl9EU0lFTik7XAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVU5VU0VEKHRtcHJlZyk7IFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IHdoaWxlKDBVKQogCiAvKioKQEAgLTk5NCwxMSArMTAwMCwxMSBAQAogICAqIEByZXR2YWwgTm9uZS4KICAgKi8KICNkZWZpbmUgX19IQUxfRFNJX1BMTF9FTkFCTEUoX19IQU5ETEVfXykgZG8geyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX0lPIHVpbnQzMl90IHRtcHJlZyA9IDB4MDBVOyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTRVRfQklUKChfX0hBTkRMRV9fKS0+SW5zdGFuY2UtPldSUENSLCBEU0lfV1JQQ1JfUExMRU4pO1wKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIERlbGF5IGFmdGVyIGFuIERTSSBQTEwgZW5hYmxpbmcgKi8gXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG1wcmVnID0gUkVBRF9CSVQoKF9fSEFORExFX18pLT5JbnN0YW5jZS0+V1JQQ1IsIERTSV9XUlBDUl9QTExFTik7XAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVU5VU0VEKHRtcHJlZyk7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX0lPIHVpbnQzMl90IHRtcHJlZyA9IDB4MDBVOyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0VUX0JJVCgoX19IQU5ETEVfXyktPkluc3RhbmNlLT5XUlBDUiwgRFNJX1dSUENSX1BMTEVOKTtcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogRGVsYXkgYWZ0ZXIgYW4gRFNJIFBMTCBlbmFibGluZyAqLyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG1wcmVnID0gUkVBRF9CSVQoKF9fSEFORExFX18pLT5JbnN0YW5jZS0+V1JQQ1IsIERTSV9XUlBDUl9QTExFTik7XAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVOVVNFRCh0bXByZWcpOyBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gd2hpbGUoMFUpCiAKIC8qKgpAQCAtMTAwNywxMSArMTAxMywxMSBAQAogICAqIEByZXR2YWwgTm9uZS4KICAgKi8KICNkZWZpbmUgX19IQUxfRFNJX1BMTF9ESVNBQkxFKF9fSEFORExFX18pIGRvIHsgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fSU8gdWludDMyX3QgdG1wcmVnID0gMHgwMFU7IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDTEVBUl9CSVQoKF9fSEFORExFX18pLT5JbnN0YW5jZS0+V1JQQ1IsIERTSV9XUlBDUl9QTExFTik7XAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIERlbGF5IGFmdGVyIGFuIERTSSBQTEwgZGlzYWJsaW5nICovIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bXByZWcgPSBSRUFEX0JJVCgoX19IQU5ETEVfXyktPkluc3RhbmNlLT5XUlBDUiwgRFNJX1dSUENSX1BMTEVOKTtcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVU5VU0VEKHRtcHJlZyk7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19JTyB1aW50MzJfdCB0bXByZWcgPSAweDAwVTsgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDTEVBUl9CSVQoKF9fSEFORExFX18pLT5JbnN0YW5jZS0+V1JQQ1IsIERTSV9XUlBDUl9QTExFTik7XAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBEZWxheSBhZnRlciBhbiBEU0kgUExMIGRpc2FibGluZyAqLyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtcHJlZyA9IFJFQURfQklUKChfX0hBTkRMRV9fKS0+SW5zdGFuY2UtPldSUENSLCBEU0lfV1JQQ1JfUExMRU4pO1wKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVU5VU0VEKHRtcHJlZyk7IFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gd2hpbGUoMFUpCiAKIC8qKgpAQCAtMTAzMywxMSArMTAzOSwxMSBAQAogICAqIEByZXR2YWwgTm9uZS4KICAgKi8KICNkZWZpbmUgX19IQUxfRFNJX1JFR19ESVNBQkxFKF9fSEFORExFX18pIGRvIHsgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fSU8gdWludDMyX3QgdG1wcmVnID0gMHgwMFU7IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDTEVBUl9CSVQoKF9fSEFORExFX18pLT5JbnN0YW5jZS0+V1JQQ1IsIERTSV9XUlBDUl9SRUdFTik7XAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIERlbGF5IGFmdGVyIGFuIERTSSByZWd1bGF0b3IgZGlzYWJsaW5nICovIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bXByZWcgPSBSRUFEX0JJVCgoX19IQU5ETEVfXyktPkluc3RhbmNlLT5XUlBDUiwgRFNJX1dSUENSX1JFR0VOKTtcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVU5VU0VEKHRtcHJlZyk7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19JTyB1aW50MzJfdCB0bXByZWcgPSAweDAwVTsgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDTEVBUl9CSVQoKF9fSEFORExFX18pLT5JbnN0YW5jZS0+V1JQQ1IsIERTSV9XUlBDUl9SRUdFTik7XAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBEZWxheSBhZnRlciBhbiBEU0kgcmVndWxhdG9yIGRpc2FibGluZyAqLyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtcHJlZyA9IFJFQURfQklUKChfX0hBTkRMRV9fKS0+SW5zdGFuY2UtPldSUENSLCBEU0lfV1JQQ1JfUkVHRU4pO1wKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVU5VU0VEKHRtcHJlZyk7IFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gd2hpbGUoMFUpCiAKIC8qKgpAQCAtMTEyMSwyMyArMTEyNyw0MSBAQAogLyoqIEBkZWZncm91cCBEU0lfRXhwb3J0ZWRfRnVuY3Rpb25zIERTSSBFeHBvcnRlZCBGdW5jdGlvbnMKICAgKiBAewogICAqLworLyoqIEBkZWZncm91cCBEU0lfR3JvdXAxIEluaXRpYWxpemF0aW9uIGFuZCBDb25maWd1cmF0aW9uIGZ1bmN0aW9ucworICAqICBAYnJpZWYgICBJbml0aWFsaXphdGlvbiBhbmQgQ29uZmlndXJhdGlvbiBmdW5jdGlvbnMKKyAgKiBAeworICAqLwogSEFMX1N0YXR1c1R5cGVEZWYgSEFMX0RTSV9Jbml0KERTSV9IYW5kbGVUeXBlRGVmICpoZHNpLCBEU0lfUExMSW5pdFR5cGVEZWYgKlBMTEluaXQpOwogSEFMX1N0YXR1c1R5cGVEZWYgSEFMX0RTSV9EZUluaXQoRFNJX0hhbmRsZVR5cGVEZWYgKmhkc2kpOwogdm9pZCBIQUxfRFNJX01zcEluaXQoRFNJX0hhbmRsZVR5cGVEZWYgKmhkc2kpOwogdm9pZCBIQUxfRFNJX01zcERlSW5pdChEU0lfSGFuZGxlVHlwZURlZiAqaGRzaSk7Ci0KLXZvaWQgSEFMX0RTSV9JUlFIYW5kbGVyKERTSV9IYW5kbGVUeXBlRGVmICpoZHNpKTsKLXZvaWQgSEFMX0RTSV9UZWFyaW5nRWZmZWN0Q2FsbGJhY2soRFNJX0hhbmRsZVR5cGVEZWYgKmhkc2kpOwotdm9pZCBIQUxfRFNJX0VuZE9mUmVmcmVzaENhbGxiYWNrKERTSV9IYW5kbGVUeXBlRGVmICpoZHNpKTsKLXZvaWQgSEFMX0RTSV9FcnJvckNhbGxiYWNrKERTSV9IYW5kbGVUeXBlRGVmICpoZHNpKTsKLQorSEFMX1N0YXR1c1R5cGVEZWYgSEFMX0RTSV9Db25maWdFcnJvck1vbml0b3IoRFNJX0hhbmRsZVR5cGVEZWYgKmhkc2ksIHVpbnQzMl90IEFjdGl2ZUVycm9ycyk7CiAvKiBDYWxsYmFja3MgUmVnaXN0ZXIvVW5SZWdpc3RlciBmdW5jdGlvbnMgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogI2lmIChVU0VfSEFMX0RTSV9SRUdJU1RFUl9DQUxMQkFDS1MgPT0gMSkKIEhBTF9TdGF0dXNUeXBlRGVmIEhBTF9EU0lfUmVnaXN0ZXJDYWxsYmFjayhEU0lfSGFuZGxlVHlwZURlZiAqaGRzaSwgSEFMX0RTSV9DYWxsYmFja0lEVHlwZURlZiBDYWxsYmFja0lELAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBEU0lfQ2FsbGJhY2tUeXBlRGVmIHBDYWxsYmFjayk7CiBIQUxfU3RhdHVzVHlwZURlZiBIQUxfRFNJX1VuUmVnaXN0ZXJDYWxsYmFjayhEU0lfSGFuZGxlVHlwZURlZiAqaGRzaSwgSEFMX0RTSV9DYWxsYmFja0lEVHlwZURlZiBDYWxsYmFja0lEKTsKICNlbmRpZiAvKiBVU0VfSEFMX0RTSV9SRUdJU1RFUl9DQUxMQkFDS1MgKi8KKy8qKgorICAqIEB9CisgICovCiAKKy8qKiBAZGVmZ3JvdXAgRFNJX0dyb3VwMiBJTyBvcGVyYXRpb24gZnVuY3Rpb25zCisgICogIEBicmllZiAgICBJTyBvcGVyYXRpb24gZnVuY3Rpb25zCisgICogQHsKKyAgKi8KK3ZvaWQgSEFMX0RTSV9JUlFIYW5kbGVyKERTSV9IYW5kbGVUeXBlRGVmICpoZHNpKTsKK3ZvaWQgSEFMX0RTSV9UZWFyaW5nRWZmZWN0Q2FsbGJhY2soRFNJX0hhbmRsZVR5cGVEZWYgKmhkc2kpOwordm9pZCBIQUxfRFNJX0VuZE9mUmVmcmVzaENhbGxiYWNrKERTSV9IYW5kbGVUeXBlRGVmICpoZHNpKTsKK3ZvaWQgSEFMX0RTSV9FcnJvckNhbGxiYWNrKERTSV9IYW5kbGVUeXBlRGVmICpoZHNpKTsKKy8qKgorICAqIEB9CisgICovCisKKy8qKiBAZGVmZ3JvdXAgRFNJX0dyb3VwMyBQZXJpcGhlcmFsIENvbnRyb2wgZnVuY3Rpb25zCisgICogIEBicmllZiAgICBQZXJpcGhlcmFsIENvbnRyb2wgZnVuY3Rpb25zCisgICogQHsKKyAgKi8KIEhBTF9TdGF0dXNUeXBlRGVmIEhBTF9EU0lfU2V0R2VuZXJpY1ZDSUQoRFNJX0hhbmRsZVR5cGVEZWYgKmhkc2ksIHVpbnQzMl90IFZpcnR1YWxDaGFubmVsSUQpOwogSEFMX1N0YXR1c1R5cGVEZWYgSEFMX0RTSV9Db25maWdWaWRlb01vZGUoRFNJX0hhbmRsZVR5cGVEZWYgKmhkc2ksIERTSV9WaWRDZmdUeXBlRGVmICpWaWRDZmcpOwogSEFMX1N0YXR1c1R5cGVEZWYgSEFMX0RTSV9Db25maWdBZGFwdGVkQ29tbWFuZE1vZGUoRFNJX0hhbmRsZVR5cGVEZWYgKmhkc2ksIERTSV9DbWRDZmdUeXBlRGVmICpDbWRDZmcpOwpAQCAtMTE5MCw0MCArMTIxNCwyOCBAQAogSEFMX1N0YXR1c1R5cGVEZWYgSEFMX0RTSV9TZXRQdWxsRG93bihEU0lfSGFuZGxlVHlwZURlZiAqaGRzaSwgRnVuY3Rpb25hbFN0YXRlIFN0YXRlKTsKIEhBTF9TdGF0dXNUeXBlRGVmIEhBTF9EU0lfU2V0Q29udGVudGlvbkRldGVjdGlvbk9mZihEU0lfSGFuZGxlVHlwZURlZiAqaGRzaSwgRnVuY3Rpb25hbFN0YXRlIFN0YXRlKTsKIAorLyoqCisgICogQH0KKyAgKi8KKworLyoqIEBkZWZncm91cCBEU0lfR3JvdXA0IFBlcmlwaGVyYWwgU3RhdGUgYW5kIEVycm9ycyBmdW5jdGlvbnMKKyAgKiAgQGJyaWVmICAgIFBlcmlwaGVyYWwgU3RhdGUgYW5kIEVycm9ycyBmdW5jdGlvbnMKKyAgKiBAeworICAqLwogdWludDMyX3QgSEFMX0RTSV9HZXRFcnJvcihEU0lfSGFuZGxlVHlwZURlZiAqaGRzaSk7Ci1IQUxfU3RhdHVzVHlwZURlZiBIQUxfRFNJX0NvbmZpZ0Vycm9yTW9uaXRvcihEU0lfSGFuZGxlVHlwZURlZiAqaGRzaSwgdWludDMyX3QgQWN0aXZlRXJyb3JzKTsKIEhBTF9EU0lfU3RhdGVUeXBlRGVmIEhBTF9EU0lfR2V0U3RhdGUoRFNJX0hhbmRsZVR5cGVEZWYgKmhkc2kpOworCisvKioKKyAgKiBAfQorICAqLworCiAvKioKICAgKiBAfQogICAqLwogCiAvKiBQcml2YXRlIHR5cGVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwotLyoqIEBkZWZncm91cCBEU0lfUHJpdmF0ZV9UeXBlcyBEU0kgUHJpdmF0ZSBUeXBlcwotICAqIEB7Ci0gICovCi0KLS8qKgotICAqIEB9Ci0gICovCi0KIC8qIFByaXZhdGUgZGVmaW5lcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi0vKiogQGRlZmdyb3VwIERTSV9Qcml2YXRlX0RlZmluZXMgRFNJIFByaXZhdGUgRGVmaW5lcwotICAqIEB7Ci0gICovCi0KLS8qKgotICAqIEB9Ci0gICovCi0KIC8qIFByaXZhdGUgdmFyaWFibGVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi0vKiogQGRlZmdyb3VwIERTSV9Qcml2YXRlX1ZhcmlhYmxlcyBEU0kgUHJpdmF0ZSBWYXJpYWJsZXMKLSAgKiBAewotICAqLwotCi0vKioKLSAgKiBAfQotICAqLwotCiAvKiBQcml2YXRlIGNvbnN0YW50cyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogLyoqIEBkZWZncm91cCBEU0lfUHJpdmF0ZV9Db25zdGFudHMgRFNJIFByaXZhdGUgQ29uc3RhbnRzCiAgICogQHsKQEAgLTEyNDksNDUgKzEyNjEsNzMgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChPREYpID09IERTSV9QTExfT1VUX0RJVjIpIHx8IFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChPREYpID09IERTSV9QTExfT1VUX0RJVjQpIHx8IFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChPREYpID09IERTSV9QTExfT1VUX0RJVjgpKQotI2RlZmluZSBJU19EU0lfQVVUT19DTEtMQU5FX0NPTlRST0woQXV0b0Nsa0xhbmUpICAgICgoKEF1dG9DbGtMYW5lKSA9PSBEU0lfQVVUT19DTEtfTEFORV9DVFJMX0RJU0FCTEUpIHx8ICgoQXV0b0Nsa0xhbmUpID09IERTSV9BVVRPX0NMS19MQU5FX0NUUkxfRU5BQkxFKSkKLSNkZWZpbmUgSVNfRFNJX05VTUJFUl9PRl9MQU5FUyhOdW1iZXJPZkxhbmVzKSAgICAgICAoKChOdW1iZXJPZkxhbmVzKSA9PSBEU0lfT05FX0RBVEFfTEFORSkgfHwgKChOdW1iZXJPZkxhbmVzKSA9PSBEU0lfVFdPX0RBVEFfTEFORVMpKQorI2RlZmluZSBJU19EU0lfQVVUT19DTEtMQU5FX0NPTlRST0woQXV0b0Nsa0xhbmUpICAgICgoKEF1dG9DbGtMYW5lKSA9PSBEU0lfQVVUT19DTEtfTEFORV9DVFJMX0RJU0FCTEUpXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAoKEF1dG9DbGtMYW5lKSA9PSBEU0lfQVVUT19DTEtfTEFORV9DVFJMX0VOQUJMRSkpCisjZGVmaW5lIElTX0RTSV9OVU1CRVJfT0ZfTEFORVMoTnVtYmVyT2ZMYW5lcykgICAgICAgKCgoTnVtYmVyT2ZMYW5lcykgPT0gRFNJX09ORV9EQVRBX0xBTkUpXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAoKE51bWJlck9mTGFuZXMpID09IERTSV9UV09fREFUQV9MQU5FUykpCiAjZGVmaW5lIElTX0RTSV9GTE9XX0NPTlRST0woRmxvd0NvbnRyb2wpICAgICAgICAgICAgKCgoRmxvd0NvbnRyb2wpIHwgRFNJX0ZMT1dfQ09OVFJPTF9BTEwpID09IERTSV9GTE9XX0NPTlRST0xfQUxMKQogI2RlZmluZSBJU19EU0lfQ09MT1JfQ09ESU5HKENvbG9yQ29kaW5nKSAgICAgICAgICAgICgoQ29sb3JDb2RpbmcpIDw9IDVVKQotI2RlZmluZSBJU19EU0lfTE9PU0VMWV9QQUNLRUQoTG9vc2VseVBhY2tlZCkgICAgICAgICgoKExvb3NlbHlQYWNrZWQpID09IERTSV9MT09TRUxZX1BBQ0tFRF9FTkFCTEUpIHx8ICgoTG9vc2VseVBhY2tlZCkgPT0gRFNJX0xPT1NFTFlfUEFDS0VEX0RJU0FCTEUpKQotI2RlZmluZSBJU19EU0lfREVfUE9MQVJJVFkoRGF0YUVuYWJsZSkgICAgICAgICAgICAgICgoKERhdGFFbmFibGUpID09IERTSV9EQVRBX0VOQUJMRV9BQ1RJVkVfSElHSCkgfHwgKChEYXRhRW5hYmxlKSA9PSBEU0lfREFUQV9FTkFCTEVfQUNUSVZFX0xPVykpCi0jZGVmaW5lIElTX0RTSV9WU1lOQ19QT0xBUklUWShWU1lOQykgICAgICAgICAgICAgICAgKCgoVlNZTkMpID09IERTSV9WU1lOQ19BQ1RJVkVfSElHSCkgfHwgKChWU1lOQykgPT0gRFNJX1ZTWU5DX0FDVElWRV9MT1cpKQotI2RlZmluZSBJU19EU0lfSFNZTkNfUE9MQVJJVFkoSFNZTkMpICAgICAgICAgICAgICAgICgoKEhTWU5DKSA9PSBEU0lfSFNZTkNfQUNUSVZFX0hJR0gpIHx8ICgoSFNZTkMpID09IERTSV9IU1lOQ19BQ1RJVkVfTE9XKSkKKyNkZWZpbmUgSVNfRFNJX0xPT1NFTFlfUEFDS0VEKExvb3NlbHlQYWNrZWQpICAgICAgICAoKChMb29zZWx5UGFja2VkKSA9PSBEU0lfTE9PU0VMWV9QQUNLRURfRU5BQkxFKVwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgKChMb29zZWx5UGFja2VkKSA9PSBEU0lfTE9PU0VMWV9QQUNLRURfRElTQUJMRSkpCisjZGVmaW5lIElTX0RTSV9ERV9QT0xBUklUWShEYXRhRW5hYmxlKSAgICAgICAgICAgICAgKCgoRGF0YUVuYWJsZSkgPT0gRFNJX0RBVEFfRU5BQkxFX0FDVElWRV9ISUdIKVwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgKChEYXRhRW5hYmxlKSA9PSBEU0lfREFUQV9FTkFCTEVfQUNUSVZFX0xPVykpCisjZGVmaW5lIElTX0RTSV9WU1lOQ19QT0xBUklUWShWU1lOQykgICAgICAgICAgICAgICAgKCgoVlNZTkMpID09IERTSV9WU1lOQ19BQ1RJVkVfSElHSClcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICgoVlNZTkMpID09IERTSV9WU1lOQ19BQ1RJVkVfTE9XKSkKKyNkZWZpbmUgSVNfRFNJX0hTWU5DX1BPTEFSSVRZKEhTWU5DKSAgICAgICAgICAgICAgICAoKChIU1lOQykgPT0gRFNJX0hTWU5DX0FDVElWRV9ISUdIKVwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgKChIU1lOQykgPT0gRFNJX0hTWU5DX0FDVElWRV9MT1cpKQogI2RlZmluZSBJU19EU0lfVklERU9fTU9ERV9UWVBFKFZpZGVvTW9kZVR5cGUpICAgICAgICgoKFZpZGVvTW9kZVR5cGUpID09IERTSV9WSURfTU9ERV9OQl9QVUxTRVMpIHx8IFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChWaWRlb01vZGVUeXBlKSA9PSBEU0lfVklEX01PREVfTkJfRVZFTlRTKSB8fCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoVmlkZW9Nb2RlVHlwZSkgPT0gRFNJX1ZJRF9NT0RFX0JVUlNUKSkKLSNkZWZpbmUgSVNfRFNJX0NPTE9SX01PREUoQ29sb3JNb2RlKSAgICAgICAgICAgICAgICAoKChDb2xvck1vZGUpID09IERTSV9DT0xPUl9NT0RFX0ZVTEwpIHx8ICgoQ29sb3JNb2RlKSA9PSBEU0lfQ09MT1JfTU9ERV9FSUdIVCkpCisjZGVmaW5lIElTX0RTSV9DT0xPUl9NT0RFKENvbG9yTW9kZSkgICAgICAgICAgICAgICAgKCgoQ29sb3JNb2RlKSA9PSBEU0lfQ09MT1JfTU9ERV9GVUxMKVwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgKChDb2xvck1vZGUpID09IERTSV9DT0xPUl9NT0RFX0VJR0hUKSkKICNkZWZpbmUgSVNfRFNJX1NIVVRfRE9XTihTaHV0RG93bikgICAgICAgICAgICAgICAgICAoKChTaHV0RG93bikgPT0gRFNJX0RJU1BMQVlfT04pIHx8ICgoU2h1dERvd24pID09IERTSV9ESVNQTEFZX09GRikpCi0jZGVmaW5lIElTX0RTSV9MUF9DT01NQU5EKExQQ29tbWFuZCkgICAgICAgICAgICAgICAgKCgoTFBDb21tYW5kKSA9PSBEU0lfTFBfQ09NTUFORF9ESVNBQkxFKSB8fCAoKExQQ29tbWFuZCkgPT0gRFNJX0xQX0NPTU1BTkRfRU5BQkxFKSkKKyNkZWZpbmUgSVNfRFNJX0xQX0NPTU1BTkQoTFBDb21tYW5kKSAgICAgICAgICAgICAgICAoKChMUENvbW1hbmQpID09IERTSV9MUF9DT01NQU5EX0RJU0FCTEUpXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAoKExQQ29tbWFuZCkgPT0gRFNJX0xQX0NPTU1BTkRfRU5BQkxFKSkKICNkZWZpbmUgSVNfRFNJX0xQX0hGUChMUEhGUCkgICAgICAgICAgICAgICAgICAgICAgICAoKChMUEhGUCkgPT0gRFNJX0xQX0hGUF9ESVNBQkxFKSB8fCAoKExQSEZQKSA9PSBEU0lfTFBfSEZQX0VOQUJMRSkpCiAjZGVmaW5lIElTX0RTSV9MUF9IQlAoTFBIQlApICAgICAgICAgICAgICAgICAgICAgICAgKCgoTFBIQlApID09IERTSV9MUF9IQlBfRElTQUJMRSkgfHwgKChMUEhCUCkgPT0gRFNJX0xQX0hCUF9FTkFCTEUpKQotI2RlZmluZSBJU19EU0lfTFBfVkFDVElWRShMUFZBY3RpdmUpICAgICAgICAgICAgICAgICgoKExQVkFjdGl2ZSkgPT0gRFNJX0xQX1ZBQ1RfRElTQUJMRSkgfHwgKChMUFZBY3RpdmUpID09IERTSV9MUF9WQUNUX0VOQUJMRSkpCisjZGVmaW5lIElTX0RTSV9MUF9WQUNUSVZFKExQVkFjdGl2ZSkgICAgICAgICAgICAgICAgKCgoTFBWQWN0aXZlKSA9PSBEU0lfTFBfVkFDVF9ESVNBQkxFKVwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgKChMUFZBY3RpdmUpID09IERTSV9MUF9WQUNUX0VOQUJMRSkpCiAjZGVmaW5lIElTX0RTSV9MUF9WRlAoTFBWRlApICAgICAgICAgICAgICAgICAgICAgICAgKCgoTFBWRlApID09IERTSV9MUF9WRlBfRElTQUJMRSkgfHwgKChMUFZGUCkgPT0gRFNJX0xQX1ZGUF9FTkFCTEUpKQogI2RlZmluZSBJU19EU0lfTFBfVkJQKExQVkJQKSAgICAgICAgICAgICAgICAgICAgICAgICgoKExQVkJQKSA9PSBEU0lfTFBfVkJQX0RJU0FCTEUpIHx8ICgoTFBWQlApID09IERTSV9MUF9WQlBfRU5BQkxFKSkKLSNkZWZpbmUgSVNfRFNJX0xQX1ZTWU5DKExQVlNZTkMpICAgICAgICAgICAgICAgICAgICAoKChMUFZTWU5DKSA9PSBEU0lfTFBfVlNZTkNfRElTQUJMRSkgfHwgKChMUFZTWU5DKSA9PSBEU0lfTFBfVlNZTkNfRU5BQkxFKSkKLSNkZWZpbmUgSVNfRFNJX0ZCVEFBKEZyYW1lQlRBQWNrbm93bGVkZ2UpICAgICAgICAgICAoKChGcmFtZUJUQUFja25vd2xlZGdlKSA9PSBEU0lfRkJUQUFfRElTQUJMRSkgfHwgKChGcmFtZUJUQUFja25vd2xlZGdlKSA9PSBEU0lfRkJUQUFfRU5BQkxFKSkKKyNkZWZpbmUgSVNfRFNJX0xQX1ZTWU5DKExQVlNZTkMpICAgICAgICAgICAgICAgICAgICAoKChMUFZTWU5DKSA9PSBEU0lfTFBfVlNZTkNfRElTQUJMRSlcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICgoTFBWU1lOQykgPT0gRFNJX0xQX1ZTWU5DX0VOQUJMRSkpCisjZGVmaW5lIElTX0RTSV9GQlRBQShGcmFtZUJUQUFja25vd2xlZGdlKSAgICAgICAgICAgKCgoRnJhbWVCVEFBY2tub3dsZWRnZSkgPT0gRFNJX0ZCVEFBX0RJU0FCTEUpXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAoKEZyYW1lQlRBQWNrbm93bGVkZ2UpID09IERTSV9GQlRBQV9FTkFCTEUpKQogI2RlZmluZSBJU19EU0lfVEVfU09VUkNFKFRFU291cmNlKSAgICAgICAgICAgICAgICAgICgoKFRFU291cmNlKSA9PSBEU0lfVEVfRFNJTElOSykgfHwgKChURVNvdXJjZSkgPT0gRFNJX1RFX0VYVEVSTkFMKSkKLSNkZWZpbmUgSVNfRFNJX1RFX1BPTEFSSVRZKFRFUG9sYXJpdHkpICAgICAgICAgICAgICAoKChURVBvbGFyaXR5KSA9PSBEU0lfVEVfUklTSU5HX0VER0UpIHx8ICgoVEVQb2xhcml0eSkgPT0gRFNJX1RFX0ZBTExJTkdfRURHRSkpCi0jZGVmaW5lIElTX0RTSV9BVVRPTUFUSUNfUkVGUkVTSChBdXRvbWF0aWNSZWZyZXNoKSAgKCgoQXV0b21hdGljUmVmcmVzaCkgPT0gRFNJX0FSX0RJU0FCTEUpIHx8ICgoQXV0b21hdGljUmVmcmVzaCkgPT0gRFNJX0FSX0VOQUJMRSkpCi0jZGVmaW5lIElTX0RTSV9WU19QT0xBUklUWShWU1BvbGFyaXR5KSAgICAgICAgICAgICAgKCgoVlNQb2xhcml0eSkgPT0gRFNJX1ZTWU5DX0ZBTExJTkcpIHx8ICgoVlNQb2xhcml0eSkgPT0gRFNJX1ZTWU5DX1JJU0lORykpCi0jZGVmaW5lIElTX0RTSV9URV9BQ0tfUkVRVUVTVChURUFja25vd2xlZGdlUmVxdWVzdCkgKCgoVEVBY2tub3dsZWRnZVJlcXVlc3QpID09IERTSV9URV9BQ0tOT1dMRURHRV9ESVNBQkxFKSB8fCAoKFRFQWNrbm93bGVkZ2VSZXF1ZXN0KSA9PSBEU0lfVEVfQUNLTk9XTEVER0VfRU5BQkxFKSkKLSNkZWZpbmUgSVNfRFNJX0FDS19SRVFVRVNUKEFja25vd2xlZGdlUmVxdWVzdCkgICAgICAoKChBY2tub3dsZWRnZVJlcXVlc3QpID09IERTSV9BQ0tOT1dMRURHRV9ESVNBQkxFKSB8fCAoKEFja25vd2xlZGdlUmVxdWVzdCkgPT0gRFNJX0FDS05PV0xFREdFX0VOQUJMRSkpCi0jZGVmaW5lIElTX0RTSV9MUF9HU1cwUChMUF9HU1cwUCkgICAgICAgICAgICAgICAgICAgKCgoTFBfR1NXMFApID09IERTSV9MUF9HU1cwUF9ESVNBQkxFKSB8fCAoKExQX0dTVzBQKSA9PSBEU0lfTFBfR1NXMFBfRU5BQkxFKSkKLSNkZWZpbmUgSVNfRFNJX0xQX0dTVzFQKExQX0dTVzFQKSAgICAgICAgICAgICAgICAgICAoKChMUF9HU1cxUCkgPT0gRFNJX0xQX0dTVzFQX0RJU0FCTEUpIHx8ICgoTFBfR1NXMVApID09IERTSV9MUF9HU1cxUF9FTkFCTEUpKQotI2RlZmluZSBJU19EU0lfTFBfR1NXMlAoTFBfR1NXMlApICAgICAgICAgICAgICAgICAgICgoKExQX0dTVzJQKSA9PSBEU0lfTFBfR1NXMlBfRElTQUJMRSkgfHwgKChMUF9HU1cyUCkgPT0gRFNJX0xQX0dTVzJQX0VOQUJMRSkpCi0jZGVmaW5lIElTX0RTSV9MUF9HU1IwUChMUF9HU1IwUCkgICAgICAgICAgICAgICAgICAgKCgoTFBfR1NSMFApID09IERTSV9MUF9HU1IwUF9ESVNBQkxFKSB8fCAoKExQX0dTUjBQKSA9PSBEU0lfTFBfR1NSMFBfRU5BQkxFKSkKLSNkZWZpbmUgSVNfRFNJX0xQX0dTUjFQKExQX0dTUjFQKSAgICAgICAgICAgICAgICAgICAoKChMUF9HU1IxUCkgPT0gRFNJX0xQX0dTUjFQX0RJU0FCTEUpIHx8ICgoTFBfR1NSMVApID09IERTSV9MUF9HU1IxUF9FTkFCTEUpKQotI2RlZmluZSBJU19EU0lfTFBfR1NSMlAoTFBfR1NSMlApICAgICAgICAgICAgICAgICAgICgoKExQX0dTUjJQKSA9PSBEU0lfTFBfR1NSMlBfRElTQUJMRSkgfHwgKChMUF9HU1IyUCkgPT0gRFNJX0xQX0dTUjJQX0VOQUJMRSkpCi0jZGVmaW5lIElTX0RTSV9MUF9HTFcoTFBfR0xXKSAgICAgICAgICAgICAgICAgICAgICAgKCgoTFBfR0xXKSA9PSBEU0lfTFBfR0xXX0RJU0FCTEUpIHx8ICgoTFBfR0xXKSA9PSBEU0lfTFBfR0xXX0VOQUJMRSkpCi0jZGVmaW5lIElTX0RTSV9MUF9EU1cwUChMUF9EU1cwUCkgICAgICAgICAgICAgICAgICAgKCgoTFBfRFNXMFApID09IERTSV9MUF9EU1cwUF9ESVNBQkxFKSB8fCAoKExQX0RTVzBQKSA9PSBEU0lfTFBfRFNXMFBfRU5BQkxFKSkKLSNkZWZpbmUgSVNfRFNJX0xQX0RTVzFQKExQX0RTVzFQKSAgICAgICAgICAgICAgICAgICAoKChMUF9EU1cxUCkgPT0gRFNJX0xQX0RTVzFQX0RJU0FCTEUpIHx8ICgoTFBfRFNXMVApID09IERTSV9MUF9EU1cxUF9FTkFCTEUpKQotI2RlZmluZSBJU19EU0lfTFBfRFNSMFAoTFBfRFNSMFApICAgICAgICAgICAgICAgICAgICgoKExQX0RTUjBQKSA9PSBEU0lfTFBfRFNSMFBfRElTQUJMRSkgfHwgKChMUF9EU1IwUCkgPT0gRFNJX0xQX0RTUjBQX0VOQUJMRSkpCi0jZGVmaW5lIElTX0RTSV9MUF9ETFcoTFBfRExXKSAgICAgICAgICAgICAgICAgICAgICAgKCgoTFBfRExXKSA9PSBEU0lfTFBfRExXX0RJU0FCTEUpIHx8ICgoTFBfRExXKSA9PSBEU0lfTFBfRExXX0VOQUJMRSkpCi0jZGVmaW5lIElTX0RTSV9MUF9NUkRQKExQX01SRFApICAgICAgICAgICAgICAgICAgICAgKCgoTFBfTVJEUCkgPT0gRFNJX0xQX01SRFBfRElTQUJMRSkgfHwgKChMUF9NUkRQKSA9PSBEU0lfTFBfTVJEUF9FTkFCTEUpKQorI2RlZmluZSBJU19EU0lfVEVfUE9MQVJJVFkoVEVQb2xhcml0eSkgICAgICAgICAgICAgICgoKFRFUG9sYXJpdHkpID09IERTSV9URV9SSVNJTkdfRURHRSlcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICgoVEVQb2xhcml0eSkgPT0gRFNJX1RFX0ZBTExJTkdfRURHRSkpCisjZGVmaW5lIElTX0RTSV9BVVRPTUFUSUNfUkVGUkVTSChBdXRvbWF0aWNSZWZyZXNoKSAgKCgoQXV0b21hdGljUmVmcmVzaCkgPT0gRFNJX0FSX0RJU0FCTEUpXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAoKEF1dG9tYXRpY1JlZnJlc2gpID09IERTSV9BUl9FTkFCTEUpKQorI2RlZmluZSBJU19EU0lfVlNfUE9MQVJJVFkoVlNQb2xhcml0eSkgICAgICAgICAgICAgICgoKFZTUG9sYXJpdHkpID09IERTSV9WU1lOQ19GQUxMSU5HKVwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgKChWU1BvbGFyaXR5KSA9PSBEU0lfVlNZTkNfUklTSU5HKSkKKyNkZWZpbmUgSVNfRFNJX1RFX0FDS19SRVFVRVNUKFRFQWNrbm93bGVkZ2VSZXF1ZXN0KSAoKChURUFja25vd2xlZGdlUmVxdWVzdCkgPT0gRFNJX1RFX0FDS05PV0xFREdFX0RJU0FCTEUpXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAoKFRFQWNrbm93bGVkZ2VSZXF1ZXN0KSA9PSBEU0lfVEVfQUNLTk9XTEVER0VfRU5BQkxFKSkKKyNkZWZpbmUgSVNfRFNJX0FDS19SRVFVRVNUKEFja25vd2xlZGdlUmVxdWVzdCkgICAgICAoKChBY2tub3dsZWRnZVJlcXVlc3QpID09IERTSV9BQ0tOT1dMRURHRV9ESVNBQkxFKVwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgKChBY2tub3dsZWRnZVJlcXVlc3QpID09IERTSV9BQ0tOT1dMRURHRV9FTkFCTEUpKQorI2RlZmluZSBJU19EU0lfTFBfR1NXMFAoTFBfR1NXMFApICAgICAgICAgICAgICAgICAgICgoKExQX0dTVzBQKSA9PSBEU0lfTFBfR1NXMFBfRElTQUJMRSlcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICgoTFBfR1NXMFApID09IERTSV9MUF9HU1cwUF9FTkFCTEUpKQorI2RlZmluZSBJU19EU0lfTFBfR1NXMVAoTFBfR1NXMVApICAgICAgICAgICAgICAgICAgICgoKExQX0dTVzFQKSA9PSBEU0lfTFBfR1NXMVBfRElTQUJMRSlcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICgoTFBfR1NXMVApID09IERTSV9MUF9HU1cxUF9FTkFCTEUpKQorI2RlZmluZSBJU19EU0lfTFBfR1NXMlAoTFBfR1NXMlApICAgICAgICAgICAgICAgICAgICgoKExQX0dTVzJQKSA9PSBEU0lfTFBfR1NXMlBfRElTQUJMRSlcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICgoTFBfR1NXMlApID09IERTSV9MUF9HU1cyUF9FTkFCTEUpKQorI2RlZmluZSBJU19EU0lfTFBfR1NSMFAoTFBfR1NSMFApICAgICAgICAgICAgICAgICAgICgoKExQX0dTUjBQKSA9PSBEU0lfTFBfR1NSMFBfRElTQUJMRSlcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICgoTFBfR1NSMFApID09IERTSV9MUF9HU1IwUF9FTkFCTEUpKQorI2RlZmluZSBJU19EU0lfTFBfR1NSMVAoTFBfR1NSMVApICAgICAgICAgICAgICAgICAgICgoKExQX0dTUjFQKSA9PSBEU0lfTFBfR1NSMVBfRElTQUJMRSlcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICgoTFBfR1NSMVApID09IERTSV9MUF9HU1IxUF9FTkFCTEUpKQorI2RlZmluZSBJU19EU0lfTFBfR1NSMlAoTFBfR1NSMlApICAgICAgICAgICAgICAgICAgICgoKExQX0dTUjJQKSA9PSBEU0lfTFBfR1NSMlBfRElTQUJMRSlcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICgoTFBfR1NSMlApID09IERTSV9MUF9HU1IyUF9FTkFCTEUpKQorI2RlZmluZSBJU19EU0lfTFBfR0xXKExQX0dMVykgICAgICAgICAgICAgICAgICAgICAgICgoKExQX0dMVykgPT0gRFNJX0xQX0dMV19ESVNBQkxFKVwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgKChMUF9HTFcpID09IERTSV9MUF9HTFdfRU5BQkxFKSkKKyNkZWZpbmUgSVNfRFNJX0xQX0RTVzBQKExQX0RTVzBQKSAgICAgICAgICAgICAgICAgICAoKChMUF9EU1cwUCkgPT0gRFNJX0xQX0RTVzBQX0RJU0FCTEUpXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAoKExQX0RTVzBQKSA9PSBEU0lfTFBfRFNXMFBfRU5BQkxFKSkKKyNkZWZpbmUgSVNfRFNJX0xQX0RTVzFQKExQX0RTVzFQKSAgICAgICAgICAgICAgICAgICAoKChMUF9EU1cxUCkgPT0gRFNJX0xQX0RTVzFQX0RJU0FCTEUpXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAoKExQX0RTVzFQKSA9PSBEU0lfTFBfRFNXMVBfRU5BQkxFKSkKKyNkZWZpbmUgSVNfRFNJX0xQX0RTUjBQKExQX0RTUjBQKSAgICAgICAgICAgICAgICAgICAoKChMUF9EU1IwUCkgPT0gRFNJX0xQX0RTUjBQX0RJU0FCTEUpXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAoKExQX0RTUjBQKSA9PSBEU0lfTFBfRFNSMFBfRU5BQkxFKSkKKyNkZWZpbmUgSVNfRFNJX0xQX0RMVyhMUF9ETFcpICAgICAgICAgICAgICAgICAgICAgICAoKChMUF9ETFcpID09IERTSV9MUF9ETFdfRElTQUJMRSlcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICgoTFBfRExXKSA9PSBEU0lfTFBfRExXX0VOQUJMRSkpCisjZGVmaW5lIElTX0RTSV9MUF9NUkRQKExQX01SRFApICAgICAgICAgICAgICAgICAgICAgKCgoTFBfTVJEUCkgPT0gRFNJX0xQX01SRFBfRElTQUJMRSlcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICgoTFBfTVJEUCkgPT0gRFNJX0xQX01SRFBfRU5BQkxFKSkKICNkZWZpbmUgSVNfRFNJX1NIT1JUX1dSSVRFX1BBQ0tFVF9UWVBFKE1PREUpICAgICAgICAoKChNT0RFKSA9PSBEU0lfRENTX1NIT1JUX1BLVF9XUklURV9QMCkgfHwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKE1PREUpID09IERTSV9EQ1NfU0hPUlRfUEtUX1dSSVRFX1AxKSB8fCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoTU9ERSkgPT0gRFNJX0dFTl9TSE9SVF9QS1RfV1JJVEVfUDApIHx8IFwKQEAgLTEyOTksMTAgKzEzMzksMTQgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChNT0RFKSA9PSBEU0lfR0VOX1NIT1JUX1BLVF9SRUFEX1AwKSB8fCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoTU9ERSkgPT0gRFNJX0dFTl9TSE9SVF9QS1RfUkVBRF9QMSkgfHwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKE1PREUpID09IERTSV9HRU5fU0hPUlRfUEtUX1JFQURfUDIpKQotI2RlZmluZSBJU19EU0lfQ09NTVVOSUNBVElPTl9ERUxBWShDb21tRGVsYXkpICAgICAgICgoKENvbW1EZWxheSkgPT0gRFNJX1NMRVdfUkFURV9IU1RYKSB8fCAoKENvbW1EZWxheSkgPT0gRFNJX1NMRVdfUkFURV9MUFRYKSB8fCAoKENvbW1EZWxheSkgPT0gRFNJX0hTX0RFTEFZKSkKKyNkZWZpbmUgSVNfRFNJX0NPTU1VTklDQVRJT05fREVMQVkoQ29tbURlbGF5KSAgICAgICAoKChDb21tRGVsYXkpID09IERTSV9TTEVXX1JBVEVfSFNUWCkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKENvbW1EZWxheSkgPT0gRFNJX1NMRVdfUkFURV9MUFRYKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoQ29tbURlbGF5KSA9PSBEU0lfSFNfREVMQVkpKQogI2RlZmluZSBJU19EU0lfTEFORV9HUk9VUChMYW5lKSAgICAgICAgICAgICAgICAgICAgICgoKExhbmUpID09IERTSV9DTE9DS19MQU5FKSB8fCAoKExhbmUpID09IERTSV9EQVRBX0xBTkVTKSkKLSNkZWZpbmUgSVNfRFNJX0NVU1RPTV9MQU5FKEN1c3RvbUxhbmUpICAgICAgICAgICAgICAoKChDdXN0b21MYW5lKSA9PSBEU0lfU1dBUF9MQU5FX1BJTlMpIHx8ICgoQ3VzdG9tTGFuZSkgPT0gRFNJX0lOVkVSVF9IU19TSUdOQUwpKQotI2RlZmluZSBJU19EU0lfTEFORShMYW5lKSAgICAgICAgICAgICAgICAgICAgICAgICAgICgoKExhbmUpID09IERTSV9DTE9DS19MQU5FKSB8fCAoKExhbmUpID09IERTSV9EQVRBX0xBTkUwKSB8fCAoKExhbmUpID09IERTSV9EQVRBX0xBTkUxKSkKKyNkZWZpbmUgSVNfRFNJX0NVU1RPTV9MQU5FKEN1c3RvbUxhbmUpICAgICAgICAgICAgICAoKChDdXN0b21MYW5lKSA9PSBEU0lfU1dBUF9MQU5FX1BJTlMpXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAoKEN1c3RvbUxhbmUpID09IERTSV9JTlZFUlRfSFNfU0lHTkFMKSkKKyNkZWZpbmUgSVNfRFNJX0xBTkUoTGFuZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAoKChMYW5lKSA9PSBEU0lfQ0xPQ0tfTEFORSkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKExhbmUpID09IERTSV9EQVRBX0xBTkUwKSB8fCAoKExhbmUpID09IERTSV9EQVRBX0xBTkUxKSkKICNkZWZpbmUgSVNfRFNJX1BIWV9USU1JTkcoVGltaW5nKSAgICAgICAgICAgICAgICAgICAoKChUaW1pbmcpID09IERTSV9UQ0xLX1BPU1QgICApIHx8IFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChUaW1pbmcpID09IERTSV9UTFBYX0NMSyAgICApIHx8IFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChUaW1pbmcpID09IERTSV9USFNfRVhJVCAgICApIHx8IFwKQEAgLTEzMTcsMjQgKzEzNjEsNiBAQAogICAqIEB9CiAgICovCiAKLS8qIFByaXZhdGUgZnVuY3Rpb25zIHByb3RvdHlwZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi0vKiogQGRlZmdyb3VwIERTSV9Qcml2YXRlX0Z1bmN0aW9uc19Qcm90b3R5cGVzIERTSSBQcml2YXRlIEZ1bmN0aW9ucyBQcm90b3R5cGVzCi0gICogQHsKLSAgKi8KLQotLyoqCi0gICogQH0KLSAgKi8KLQotLyogUHJpdmF0ZSBmdW5jdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLS8qKiBAZGVmZ3JvdXAgRFNJX1ByaXZhdGVfRnVuY3Rpb25zIERTSSBQcml2YXRlIEZ1bmN0aW9ucwotICAqIEB7Ci0gICovCi0KLS8qKgotICAqIEB9Ci0gICovCi0KIC8qKgogICAqIEB9CiAgICovCkBAIC0xMzQ5LDUgKzEzNzUsMyBAQAogI2VuZGlmCiAKICNlbmRpZiAvKiBTVE0zMkY3eHhfSEFMX0RTSV9IICovCi0KLS8qKioqKioqKioqKioqKioqKioqKioqKiogKEMpIENPUFlSSUdIVCBTVE1pY3JvZWxlY3Ryb25pY3MgKioqKipFTkQgT0YgRklMRSoqKiovCmRpZmYgLS1naXQgYS9JbmMvc3RtMzJmN3h4X2hhbF9ldGguaCBiL0luYy9zdG0zMmY3eHhfaGFsX2V0aC5oCmluZGV4IDMwMzk4MzIuLjZlMTliYjQgMTAwNjQ0Ci0tLSBhL0luYy9zdG0zMmY3eHhfaGFsX2V0aC5oCisrKyBiL0luYy9zdG0zMmY3eHhfaGFsX2V0aC5oCkBAIC02LDE2ICs2LDE1IEBACiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAqIEBhdHRlbnRpb24KICAgKgotICAqIDxoMj48Y2VudGVyPiZjb3B5OyBDb3B5cmlnaHQgKGMpIDIwMTcgU1RNaWNyb2VsZWN0cm9uaWNzLgotICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuPC9jZW50ZXI+PC9oMj4KKyAgKiBDb3B5cmlnaHQgKGMpIDIwMTcgU1RNaWNyb2VsZWN0cm9uaWNzLgorICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICoKLSAgKiBUaGlzIHNvZnR3YXJlIGNvbXBvbmVudCBpcyBsaWNlbnNlZCBieSBTVCB1bmRlciBCU0QgMy1DbGF1c2UgbGljZW5zZSwKLSAgKiB0aGUgIkxpY2Vuc2UiOyBZb3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlCi0gICogTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0OgotICAqICAgICAgICAgICAgICAgICAgICAgICAgb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvQlNELTMtQ2xhdXNlCisgICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCB1bmRlciB0ZXJtcyB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlCisgICogaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc29mdHdhcmUgY29tcG9uZW50LgorICAqIElmIG5vIExJQ0VOU0UgZmlsZSBjb21lcyB3aXRoIHRoaXMgc29mdHdhcmUsIGl0IGlzIHByb3ZpZGVkIEFTLUlTLgogICAqCiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICAqLyAKKyAgKi8KIAogLyogRGVmaW5lIHRvIHByZXZlbnQgcmVjdXJzaXZlIGluY2x1c2lvbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KICNpZm5kZWYgX19TVE0zMkY3eHhfSEFMX0VUSF9ICkBAIC0yMjE0LDQgKzIyMTMsMyBAQAogCiAKIAotLyoqKioqKioqKioqKioqKioqKioqKioqKiAoQykgQ09QWVJJR0hUIFNUTWljcm9lbGVjdHJvbmljcyAqKioqKkVORCBPRiBGSUxFKioqKi8KZGlmZiAtLWdpdCBhL0luYy9zdG0zMmY3eHhfaGFsX2V4dGkuaCBiL0luYy9zdG0zMmY3eHhfaGFsX2V4dGkuaAppbmRleCA2NDExZjgxLi5jYWYzYWIzIDEwMDY0NAotLS0gYS9JbmMvc3RtMzJmN3h4X2hhbF9leHRpLmgKKysrIGIvSW5jL3N0bTMyZjd4eF9oYWxfZXh0aS5oCkBAIC02LDEzICs2LDEyIEBACiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAqIEBhdHRlbnRpb24KICAgKgotICAqIDxoMj48Y2VudGVyPiZjb3B5OyBDb3B5cmlnaHQgKGMpIDIwMTggU1RNaWNyb2VsZWN0cm9uaWNzLgotICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuPC9jZW50ZXI+PC9oMj4KKyAgKiBDb3B5cmlnaHQgKGMpIDIwMTggU1RNaWNyb2VsZWN0cm9uaWNzLgorICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICoKLSAgKiBUaGlzIHNvZnR3YXJlIGNvbXBvbmVudCBpcyBsaWNlbnNlZCBieSBTVCB1bmRlciBCU0QgMy1DbGF1c2UgbGljZW5zZSwKLSAgKiB0aGUgIkxpY2Vuc2UiOyBZb3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlCi0gICogTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0OgotICAqICAgICAgICAgICAgICAgICAgICAgICAgb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvQlNELTMtQ2xhdXNlCisgICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCB1bmRlciB0ZXJtcyB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlCisgICogaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc29mdHdhcmUgY29tcG9uZW50LgorICAqIElmIG5vIExJQ0VOU0UgZmlsZSBjb21lcyB3aXRoIHRoaXMgc29mdHdhcmUsIGl0IGlzIHByb3ZpZGVkIEFTLUlTLgogICAqCiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAqLwpAQCAtMzE2LDQgKzMxNSwzIEBACiAKICNlbmRpZiAvKiBTVE0zMkY3eHhfSEFMX0VYVElfSCAqLwogCi0vKioqKioqKioqKioqKioqKioqKioqKioqIChDKSBDT1BZUklHSFQgU1RNaWNyb2VsZWN0cm9uaWNzICoqKioqRU5EIE9GIEZJTEUqKioqLwpkaWZmIC0tZ2l0IGEvSW5jL3N0bTMyZjd4eF9oYWxfZmxhc2guaCBiL0luYy9zdG0zMmY3eHhfaGFsX2ZsYXNoLmgKaW5kZXggZWQwNzNlOS4uMWZhZDM5MiAxMDA2NDQKLS0tIGEvSW5jL3N0bTMyZjd4eF9oYWxfZmxhc2guaAorKysgYi9JbmMvc3RtMzJmN3h4X2hhbF9mbGFzaC5oCkBAIC02LDE0ICs2LDEyIEBACiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAqIEBhdHRlbnRpb24KICAgKgotICAqIDxoMj48Y2VudGVyPiZjb3B5OyBDb3B5cmlnaHQgKGMpIDIwMTcgU1RNaWNyb2VsZWN0cm9uaWNzLgotICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuPC9jZW50ZXI+PC9oMj4KKyAgKiBDb3B5cmlnaHQgKGMpIDIwMTcgU1RNaWNyb2VsZWN0cm9uaWNzLgorICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICoKLSAgKiBUaGlzIHNvZnR3YXJlIGNvbXBvbmVudCBpcyBsaWNlbnNlZCBieSBTVCB1bmRlciBCU0QgMy1DbGF1c2UgbGljZW5zZSwKLSAgKiB0aGUgIkxpY2Vuc2UiOyBZb3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlCi0gICogTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0OgotICAqICAgICAgICAgICAgICAgICAgICAgICAgb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvQlNELTMtQ2xhdXNlCi0gICoKKyAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIHVuZGVyIHRlcm1zIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4KKyAgKiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb2Z0d2FyZSBjb21wb25lbnQuCisgICogSWYgbm8gTElDRU5TRSBmaWxlIGNvbWVzIHdpdGggdGhpcyBzb2Z0d2FyZSwgaXQgaXMgcHJvdmlkZWQgQVMtSVMuCiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAqLwogCkBAIC00MTUsNCArNDEzLDMgQEAKIAogI2VuZGlmIC8qIF9fU1RNMzJGN3h4X0hBTF9GTEFTSF9IICovCiAKLS8qKioqKioqKioqKioqKioqKioqKioqKiogKEMpIENPUFlSSUdIVCBTVE1pY3JvZWxlY3Ryb25pY3MgKioqKipFTkQgT0YgRklMRSoqKiovCmRpZmYgLS1naXQgYS9JbmMvc3RtMzJmN3h4X2hhbF9mbGFzaF9leC5oIGIvSW5jL3N0bTMyZjd4eF9oYWxfZmxhc2hfZXguaAppbmRleCA4YjJjZjk5Li5jZGFkYTNkIDEwMDY0NAotLS0gYS9JbmMvc3RtMzJmN3h4X2hhbF9mbGFzaF9leC5oCisrKyBiL0luYy9zdG0zMmY3eHhfaGFsX2ZsYXNoX2V4LmgKQEAgLTYsMTQgKzYsMTIgQEAKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgICogQGF0dGVudGlvbgogICAqCi0gICogPGgyPjxjZW50ZXI+JmNvcHk7IENvcHlyaWdodCAoYykgMjAxNyBTVE1pY3JvZWxlY3Ryb25pY3MuCi0gICogQWxsIHJpZ2h0cyByZXNlcnZlZC48L2NlbnRlcj48L2gyPgorICAqIENvcHlyaWdodCAoYykgMjAxNyBTVE1pY3JvZWxlY3Ryb25pY3MuCisgICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgKgotICAqIFRoaXMgc29mdHdhcmUgY29tcG9uZW50IGlzIGxpY2Vuc2VkIGJ5IFNUIHVuZGVyIEJTRCAzLUNsYXVzZSBsaWNlbnNlLAotICAqIHRoZSAiTGljZW5zZSI7IFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUKLSAgKiBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQ6Ci0gICogICAgICAgICAgICAgICAgICAgICAgICBvcGVuc291cmNlLm9yZy9saWNlbnNlcy9CU0QtMy1DbGF1c2UKLSAgKgorICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgdW5kZXIgdGVybXMgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbgorICAqIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvZnR3YXJlIGNvbXBvbmVudC4KKyAgKiBJZiBubyBMSUNFTlNFIGZpbGUgY29tZXMgd2l0aCB0aGlzIHNvZnR3YXJlLCBpdCBpcyBwcm92aWRlZCBBUy1JUy4KICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgICovCiAKQEAgLTY5Nyw0ICs2OTUsMyBAQAogCiAjZW5kaWYgLyogX19TVE0zMkY3eHhfSEFMX0ZMQVNIX0VYX0ggKi8KIAotLyoqKioqKioqKioqKioqKioqKioqKioqKiAoQykgQ09QWVJJR0hUIFNUTWljcm9lbGVjdHJvbmljcyAqKioqKkVORCBPRiBGSUxFKioqKi8KZGlmZiAtLWdpdCBhL0luYy9zdG0zMmY3eHhfaGFsX2dwaW8uaCBiL0luYy9zdG0zMmY3eHhfaGFsX2dwaW8uaAppbmRleCA0NmE2NDk4Li44NmE5ZTBlIDEwMDY0NAotLS0gYS9JbmMvc3RtMzJmN3h4X2hhbF9ncGlvLmgKKysrIGIvSW5jL3N0bTMyZjd4eF9oYWxfZ3Bpby5oCkBAIC02LDEzICs2LDEyIEBACiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAqIEBhdHRlbnRpb24KICAgKgotICAqIDxoMj48Y2VudGVyPiZjb3B5OyBDb3B5cmlnaHQgKGMpIDIwMTcgU1RNaWNyb2VsZWN0cm9uaWNzLgotICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuPC9jZW50ZXI+PC9oMj4KKyAgKiBDb3B5cmlnaHQgKGMpIDIwMTcgU1RNaWNyb2VsZWN0cm9uaWNzLgorICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICoKLSAgKiBUaGlzIHNvZnR3YXJlIGNvbXBvbmVudCBpcyBsaWNlbnNlZCBieSBTVCB1bmRlciBCU0QgMy1DbGF1c2UgbGljZW5zZSwKLSAgKiB0aGUgIkxpY2Vuc2UiOyBZb3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlCi0gICogTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0OgotICAqICAgICAgICAgICAgICAgICAgICAgICAgb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvQlNELTMtQ2xhdXNlCisgICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCB1bmRlciB0ZXJtcyB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlCisgICogaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc29mdHdhcmUgY29tcG9uZW50LgorICAqIElmIG5vIExJQ0VOU0UgZmlsZSBjb21lcyB3aXRoIHRoaXMgc29mdHdhcmUsIGl0IGlzIHByb3ZpZGVkIEFTLUlTLgogICAqCiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAqLyAKQEAgLTEwOCwyOSArMTA3LDI4IEBACiAKIC8qKiBAZGVmZ3JvdXAgR1BJT19tb2RlX2RlZmluZSBHUElPIG1vZGUgZGVmaW5lCiAgICogQGJyaWVmIEdQSU8gQ29uZmlndXJhdGlvbiBNb2RlIAotICAqICAgICAgICBFbGVtZW50cyB2YWx1ZXMgY29udmVudGlvbjogMHhYMHl6MDBZWgotICAqICAgICAgICAgICAtIFggIDogR1BJTyBtb2RlIG9yIEVYVEkgTW9kZQotICAqICAgICAgICAgICAtIHkgIDogRXh0ZXJuYWwgSVQgb3IgRXZlbnQgdHJpZ2dlciBkZXRlY3Rpb24gCi0gICogICAgICAgICAgIC0geiAgOiBJTyBjb25maWd1cmF0aW9uIG9uIEV4dGVybmFsIElUIG9yIEV2ZW50Ci0gICogICAgICAgICAgIC0gWSAgOiBPdXRwdXQgdHlwZSAoUHVzaCBQdWxsIG9yIE9wZW4gRHJhaW4pCi0gICogICAgICAgICAgIC0gWiAgOiBJTyBEaXJlY3Rpb24gbW9kZSAoSW5wdXQsIE91dHB1dCwgQWx0ZXJuYXRlIG9yIEFuYWxvZykKKyAgKiAgICAgICAgRWxlbWVudHMgdmFsdWVzIGNvbnZlbnRpb246IDB4MDBXWDAwWVoKKyAgKiAgICAgICAgICAgLSBXICA6IEVYVEkgdHJpZ2dlciBkZXRlY3Rpb24gb24gMyBiaXRzCisgICogICAgICAgICAgIC0gWCAgOiBFWFRJIG1vZGUgKElUIG9yIEV2ZW50KSBvbiAyIGJpdHMKKyAgKiAgICAgICAgICAgLSBZICA6IE91dHB1dCB0eXBlIChQdXNoIFB1bGwgb3IgT3BlbiBEcmFpbikgb24gMSBiaXQKKyAgKiAgICAgICAgICAgLSBaICA6IEdQSU8gbW9kZSAoSW5wdXQsIE91dHB1dCwgQWx0ZXJuYXRlIG9yIEFuYWxvZykgb24gMiBiaXRzCiAgICogQHsKICAgKi8gCi0jZGVmaW5lICBHUElPX01PREVfSU5QVVQgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDBVKSAgIC8qITwgSW5wdXQgRmxvYXRpbmcgTW9kZSAgICAgICAgICAgICAgICAgICAqLwotI2RlZmluZSAgR1BJT19NT0RFX09VVFBVVF9QUCAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAxVSkgICAvKiE8IE91dHB1dCBQdXNoIFB1bGwgTW9kZSAgICAgICAgICAgICAgICAgKi8KLSNkZWZpbmUgIEdQSU9fTU9ERV9PVVRQVVRfT0QgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAxMVUpICAgLyohPCBPdXRwdXQgT3BlbiBEcmFpbiBNb2RlICAgICAgICAgICAgICAgICovCi0jZGVmaW5lICBHUElPX01PREVfQUZfUFAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDJVKSAgIC8qITwgQWx0ZXJuYXRlIEZ1bmN0aW9uIFB1c2ggUHVsbCBNb2RlICAgICAqLwotI2RlZmluZSAgR1BJT19NT0RFX0FGX09EICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDEyVSkgICAvKiE8IEFsdGVybmF0ZSBGdW5jdGlvbiBPcGVuIERyYWluIE1vZGUgICAgKi8KKyNkZWZpbmUgIEdQSU9fTU9ERV9JTlBVVCAgICAgICAgICAgICAgICAgICAgICAgIE1PREVfSU5QVVQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgSW5wdXQgRmxvYXRpbmcgTW9kZSAgICAgICAgICAgICAgICAgICAqLworI2RlZmluZSAgR1BJT19NT0RFX09VVFBVVF9QUCAgICAgICAgICAgICAgICAgICAgKE1PREVfT1VUUFVUIHwgT1VUUFVUX1BQKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBPdXRwdXQgUHVzaCBQdWxsIE1vZGUgICAgICAgICAgICAgICAgICovCisjZGVmaW5lICBHUElPX01PREVfT1VUUFVUX09EICAgICAgICAgICAgICAgICAgICAoTU9ERV9PVVRQVVQgfCBPVVRQVVRfT0QpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IE91dHB1dCBPcGVuIERyYWluIE1vZGUgICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgIEdQSU9fTU9ERV9BRl9QUCAgICAgICAgICAgICAgICAgICAgICAgIChNT0RFX0FGIHwgT1VUUFVUX1BQKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgQWx0ZXJuYXRlIEZ1bmN0aW9uIFB1c2ggUHVsbCBNb2RlICAgICAqLworI2RlZmluZSAgR1BJT19NT0RFX0FGX09EICAgICAgICAgICAgICAgICAgICAgICAgKE1PREVfQUYgfCBPVVRQVVRfT0QpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBBbHRlcm5hdGUgRnVuY3Rpb24gT3BlbiBEcmFpbiBNb2RlICAgICovCiAKLSNkZWZpbmUgIEdQSU9fTU9ERV9BTkFMT0cgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwM1UpICAgLyohPCBBbmFsb2cgTW9kZSAgKi8KKyNkZWZpbmUgIEdQSU9fTU9ERV9BTkFMT0cgICAgICAgICAgICAgICAgICAgICAgIE1PREVfQU5BTE9HICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgQW5hbG9nIE1vZGUgICovCiAgICAgCi0jZGVmaW5lICBHUElPX01PREVfSVRfUklTSU5HICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MTAxMTAwMDBVKSAgIC8qITwgRXh0ZXJuYWwgSW50ZXJydXB0IE1vZGUgd2l0aCBSaXNpbmcgZWRnZSB0cmlnZ2VyIGRldGVjdGlvbiAgICAgICAgICAqLwotI2RlZmluZSAgR1BJT19NT0RFX0lUX0ZBTExJTkcgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDEwMjEwMDAwVSkgICAvKiE8IEV4dGVybmFsIEludGVycnVwdCBNb2RlIHdpdGggRmFsbGluZyBlZGdlIHRyaWdnZXIgZGV0ZWN0aW9uICAgICAgICAgKi8KLSNkZWZpbmUgIEdQSU9fTU9ERV9JVF9SSVNJTkdfRkFMTElORyAgICAgICAgICAgICgodWludDMyX3QpMHgxMDMxMDAwMFUpICAgLyohPCBFeHRlcm5hbCBJbnRlcnJ1cHQgTW9kZSB3aXRoIFJpc2luZy9GYWxsaW5nIGVkZ2UgdHJpZ2dlciBkZXRlY3Rpb24gICovCisjZGVmaW5lICBHUElPX01PREVfSVRfUklTSU5HICAgICAgICAgICAgICAgICAgICAoTU9ERV9JTlBVVCB8IEVYVElfSVQgfCBUUklHR0VSX1JJU0lORykgICAgICAgICAgICAgICAgICAgICAvKiE8IEV4dGVybmFsIEludGVycnVwdCBNb2RlIHdpdGggUmlzaW5nIGVkZ2UgdHJpZ2dlciBkZXRlY3Rpb24gICAgICAgICAgKi8KKyNkZWZpbmUgIEdQSU9fTU9ERV9JVF9GQUxMSU5HICAgICAgICAgICAgICAgICAgIChNT0RFX0lOUFVUIHwgRVhUSV9JVCB8IFRSSUdHRVJfRkFMTElORykgICAgICAgICAgICAgICAgICAgIC8qITwgRXh0ZXJuYWwgSW50ZXJydXB0IE1vZGUgd2l0aCBGYWxsaW5nIGVkZ2UgdHJpZ2dlciBkZXRlY3Rpb24gICAgICAgICAqLworI2RlZmluZSAgR1BJT19NT0RFX0lUX1JJU0lOR19GQUxMSU5HICAgICAgICAgICAgKE1PREVfSU5QVVQgfCBFWFRJX0lUIHwgVFJJR0dFUl9SSVNJTkcgfCBUUklHR0VSX0ZBTExJTkcpICAgLyohPCBFeHRlcm5hbCBJbnRlcnJ1cHQgTW9kZSB3aXRoIFJpc2luZy9GYWxsaW5nIGVkZ2UgdHJpZ2dlciBkZXRlY3Rpb24gICovCiAgCi0jZGVmaW5lICBHUElPX01PREVfRVZUX1JJU0lORyAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MTAxMjAwMDBVKSAgIC8qITwgRXh0ZXJuYWwgRXZlbnQgTW9kZSB3aXRoIFJpc2luZyBlZGdlIHRyaWdnZXIgZGV0ZWN0aW9uICAgICAgICAgICAgICAgKi8KLSNkZWZpbmUgIEdQSU9fTU9ERV9FVlRfRkFMTElORyAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgxMDIyMDAwMFUpICAgLyohPCBFeHRlcm5hbCBFdmVudCBNb2RlIHdpdGggRmFsbGluZyBlZGdlIHRyaWdnZXIgZGV0ZWN0aW9uICAgICAgICAgICAgICAqLwotI2RlZmluZSAgR1BJT19NT0RFX0VWVF9SSVNJTkdfRkFMTElORyAgICAgICAgICAgKCh1aW50MzJfdCkweDEwMzIwMDAwVSkgICAvKiE8IEV4dGVybmFsIEV2ZW50IE1vZGUgd2l0aCBSaXNpbmcvRmFsbGluZyBlZGdlIHRyaWdnZXIgZGV0ZWN0aW9uICAgICAgICovCisjZGVmaW5lICBHUElPX01PREVfRVZUX1JJU0lORyAgICAgICAgICAgICAgICAgICAoTU9ERV9JTlBVVCB8IEVYVElfRVZUIHwgVFJJR0dFUl9SSVNJTkcpICAgICAgICAgICAgICAgICAgICAgLyohPCBFeHRlcm5hbCBFdmVudCBNb2RlIHdpdGggUmlzaW5nIGVkZ2UgdHJpZ2dlciBkZXRlY3Rpb24gICAgICAgICAgICAgKi8KKyNkZWZpbmUgIEdQSU9fTU9ERV9FVlRfRkFMTElORyAgICAgICAgICAgICAgICAgIChNT0RFX0lOUFVUIHwgRVhUSV9FVlQgfCBUUklHR0VSX0ZBTExJTkcpICAgICAgICAgICAgICAgICAgICAvKiE8IEV4dGVybmFsIEV2ZW50IE1vZGUgd2l0aCBGYWxsaW5nIGVkZ2UgdHJpZ2dlciBkZXRlY3Rpb24gICAgICAgICAgICAqLworI2RlZmluZSAgR1BJT19NT0RFX0VWVF9SSVNJTkdfRkFMTElORyAgICAgICAgICAgKE1PREVfSU5QVVQgfCBFWFRJX0VWVCB8IFRSSUdHRVJfUklTSU5HIHwgVFJJR0dFUl9GQUxMSU5HKSAgIC8qITwgRXh0ZXJuYWwgRXZlbnQgTW9kZSB3aXRoIFJpc2luZy9GYWxsaW5nIGVkZ2UgdHJpZ2dlciBkZXRlY3Rpb24gICAgICovCiAvKioKICAgKiBAfQogICAqLwpAQCAtMjUyLDcgKzI1MCwyNCBAQAogLyoqIEBkZWZncm91cCBHUElPX1ByaXZhdGVfQ29uc3RhbnRzIEdQSU8gUHJpdmF0ZSBDb25zdGFudHMKICAgKiBAewogICAqLwotCisjZGVmaW5lIEdQSU9fTU9ERV9Qb3MgICAgICAgICAgICAgICAgICAgICAgICAgICAwVQorI2RlZmluZSBHUElPX01PREUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDB4M1VMIDw8IEdQSU9fTU9ERV9Qb3MpCisjZGVmaW5lIE1PREVfSU5QVVQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMHgwVUwgPDwgR1BJT19NT0RFX1BvcykKKyNkZWZpbmUgTU9ERV9PVVRQVVQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgweDFVTCA8PCBHUElPX01PREVfUG9zKQorI2RlZmluZSBNT0RFX0FGICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDB4MlVMIDw8IEdQSU9fTU9ERV9Qb3MpCisjZGVmaW5lIE1PREVfQU5BTE9HICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMHgzVUwgPDwgR1BJT19NT0RFX1BvcykKKyNkZWZpbmUgT1VUUFVUX1RZUEVfUG9zICAgICAgICAgICAgICAgICAgICAgICAgIDRVCisjZGVmaW5lIE9VVFBVVF9UWVBFICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMHgxVUwgPDwgT1VUUFVUX1RZUEVfUG9zKQorI2RlZmluZSBPVVRQVVRfUFAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDB4MFVMIDw8IE9VVFBVVF9UWVBFX1BvcykKKyNkZWZpbmUgT1VUUFVUX09EICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgweDFVTCA8PCBPVVRQVVRfVFlQRV9Qb3MpCisjZGVmaW5lIEVYVElfTU9ERV9Qb3MgICAgICAgICAgICAgICAgICAgICAgICAgICAxNlUKKyNkZWZpbmUgRVhUSV9NT0RFICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgweDNVTCA8PCBFWFRJX01PREVfUG9zKQorI2RlZmluZSBFWFRJX0lUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDB4MVVMIDw8IEVYVElfTU9ERV9Qb3MpCisjZGVmaW5lIEVYVElfRVZUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMHgyVUwgPDwgRVhUSV9NT0RFX1BvcykKKyNkZWZpbmUgVFJJR0dFUl9NT0RFX1BvcyAgICAgICAgICAgICAgICAgICAgICAgICAyMFUKKyNkZWZpbmUgVFJJR0dFUl9NT0RFICAgICAgICAgICAgICAgICAgICAgICAgICAgICgweDdVTCA8PCBUUklHR0VSX01PREVfUG9zKQorI2RlZmluZSBUUklHR0VSX1JJU0lORyAgICAgICAgICAgICAgICAgICAgICAgICAgKDB4MVVMIDw8IFRSSUdHRVJfTU9ERV9Qb3MpCisjZGVmaW5lIFRSSUdHRVJfRkFMTElORyAgICAgICAgICAgICAgICAgICAgICAgICAoMHgyVUwgPDwgVFJJR0dFUl9NT0RFX1BvcykKIC8qKgogICAqIEB9CiAgICovCkBAIC0zMDYsNCArMzIxLDMgQEAKIAogI2VuZGlmIC8qIF9fU1RNMzJGN3h4X0hBTF9HUElPX0ggKi8KIAotLyoqKioqKioqKioqKioqKioqKioqKioqKiAoQykgQ09QWVJJR0hUIFNUTWljcm9lbGVjdHJvbmljcyAqKioqKkVORCBPRiBGSUxFKioqKi8KZGlmZiAtLWdpdCBhL0luYy9zdG0zMmY3eHhfaGFsX2dwaW9fZXguaCBiL0luYy9zdG0zMmY3eHhfaGFsX2dwaW9fZXguaAppbmRleCBmOTNiYWRiLi4xZDVlZjQzIDEwMDY0NAotLS0gYS9JbmMvc3RtMzJmN3h4X2hhbF9ncGlvX2V4LmgKKysrIGIvSW5jL3N0bTMyZjd4eF9oYWxfZ3Bpb19leC5oCkBAIC02LDEzICs2LDEyIEBACiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAqIEBhdHRlbnRpb24KICAgKgotICAqIDxoMj48Y2VudGVyPiZjb3B5OyBDb3B5cmlnaHQgKGMpIDIwMTcgU1RNaWNyb2VsZWN0cm9uaWNzLgotICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuPC9jZW50ZXI+PC9oMj4KKyAgKiBDb3B5cmlnaHQgKGMpIDIwMTcgU1RNaWNyb2VsZWN0cm9uaWNzLgorICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICoKLSAgKiBUaGlzIHNvZnR3YXJlIGNvbXBvbmVudCBpcyBsaWNlbnNlZCBieSBTVCB1bmRlciBCU0QgMy1DbGF1c2UgbGljZW5zZSwKLSAgKiB0aGUgIkxpY2Vuc2UiOyBZb3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlCi0gICogTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0OgotICAqICAgICAgICAgICAgICAgICAgICAgICAgb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvQlNELTMtQ2xhdXNlCisgICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCB1bmRlciB0ZXJtcyB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlCisgICogaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc29mdHdhcmUgY29tcG9uZW50LgorICAqIElmIG5vIExJQ0VOU0UgZmlsZSBjb21lcyB3aXRoIHRoaXMgc29mdHdhcmUsIGl0IGlzIHByb3ZpZGVkIEFTLUlTLgogICAqCiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAqLyAKQEAgLTY1NSw0ICs2NTQsMyBAQAogCiAjZW5kaWYgLyogX19TVE0zMkY3eHhfSEFMX0dQSU9fRVhfSCAqLwogCi0vKioqKioqKioqKioqKioqKioqKioqKioqIChDKSBDT1BZUklHSFQgU1RNaWNyb2VsZWN0cm9uaWNzICoqKioqRU5EIE9GIEZJTEUqKioqLwpkaWZmIC0tZ2l0IGEvSW5jL3N0bTMyZjd4eF9oYWxfaGFzaC5oIGIvSW5jL3N0bTMyZjd4eF9oYWxfaGFzaC5oCmluZGV4IGE5Y2NmM2YuLjFjZDU0NDggMTAwNjQ0Ci0tLSBhL0luYy9zdG0zMmY3eHhfaGFsX2hhc2guaAorKysgYi9JbmMvc3RtMzJmN3h4X2hhbF9oYXNoLmgKQEAgLTYsMTMgKzYsMTIgQEAKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgICogQGF0dGVudGlvbgogICAqCi0gICogPGgyPjxjZW50ZXI+JmNvcHk7IENvcHlyaWdodCAoYykgMjAxNyBTVE1pY3JvZWxlY3Ryb25pY3MuCi0gICogQWxsIHJpZ2h0cyByZXNlcnZlZC48L2NlbnRlcj48L2gyPgorICAqIENvcHlyaWdodCAoYykgMjAxNyBTVE1pY3JvZWxlY3Ryb25pY3MuCisgICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgKgotICAqIFRoaXMgc29mdHdhcmUgY29tcG9uZW50IGlzIGxpY2Vuc2VkIGJ5IFNUIHVuZGVyIEJTRCAzLUNsYXVzZSBsaWNlbnNlLAotICAqIHRoZSAiTGljZW5zZSI7IFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUKLSAgKiBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQ6Ci0gICogICAgICAgICAgICAgICAgICAgICAgICBvcGVuc291cmNlLm9yZy9saWNlbnNlcy9CU0QtMy1DbGF1c2UKKyAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIHVuZGVyIHRlcm1zIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUKKyAgKiBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb2Z0d2FyZSBjb21wb25lbnQuCisgICogSWYgbm8gTElDRU5TRSBmaWxlIGNvbWVzIHdpdGggdGhpcyBzb2Z0d2FyZSwgaXQgaXMgcHJvdmlkZWQgQVMtSVMuCiAgICoKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgICovCkBAIC0yNDcsMTMgKzI0Niw2IEBACiAvKioKICAgKiBAfQogICAqLwotLyoqIEBkZWZncm91cCBIQVNIX2FsaWFzIEhBU0ggQVBJIGFsaWFzCi0gICogQHsKLSAgKi8KLSNkZWZpbmUgSEFMX0hBU0hFeF9JUlFIYW5kbGVyICAgSEFMX0hBU0hfSVJRSGFuZGxlciAgLyohPCBSZWRpcmVjdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIGxlZ2FjeSBjb2RlICovCi0vKioKLSAgKiBAfQotICAqLwogCiAvKiogQGRlZmdyb3VwIEhBU0hfRXJyb3JfRGVmaW5pdGlvbiAgIEhBU0ggRXJyb3IgRGVmaW5pdGlvbgogICAqIEB7CkBAIC02MzYsNCArNjI4LDMgQEAKIAogI2VuZGlmIC8qIFNUTTMyRjd4eF9IQUxfSEFTSF9IICovCiAKLS8qKioqKioqKioqKioqKioqKioqKioqKiogKEMpIENPUFlSSUdIVCBTVE1pY3JvZWxlY3Ryb25pY3MgKioqKipFTkQgT0YgRklMRSoqKiovCmRpZmYgLS1naXQgYS9JbmMvc3RtMzJmN3h4X2hhbF9oYXNoX2V4LmggYi9JbmMvc3RtMzJmN3h4X2hhbF9oYXNoX2V4LmgKaW5kZXggNmFjMDcxNS4uNjkwMThiYiAxMDA2NDQKLS0tIGEvSW5jL3N0bTMyZjd4eF9oYWxfaGFzaF9leC5oCisrKyBiL0luYy9zdG0zMmY3eHhfaGFsX2hhc2hfZXguaApAQCAtNiwxMyArNiwxMiBAQAogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgKiBAYXR0ZW50aW9uCiAgICoKLSAgKiA8aDI+PGNlbnRlcj4mY29weTsgQ29weXJpZ2h0IChjKSAyMDE3IFNUTWljcm9lbGVjdHJvbmljcy4KLSAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLjwvY2VudGVyPjwvaDI+CisgICogQ29weXJpZ2h0IChjKSAyMDE3IFNUTWljcm9lbGVjdHJvbmljcy4KKyAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAqCi0gICogVGhpcyBzb2Z0d2FyZSBjb21wb25lbnQgaXMgbGljZW5zZWQgYnkgU1QgdW5kZXIgQlNEIDMtQ2xhdXNlIGxpY2Vuc2UsCi0gICogdGhlICJMaWNlbnNlIjsgWW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZQotICAqIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdDoKLSAgKiAgICAgICAgICAgICAgICAgICAgICAgIG9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0JTRC0zLUNsYXVzZQorICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgdW5kZXIgdGVybXMgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZQorICAqIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvZnR3YXJlIGNvbXBvbmVudC4KKyAgKiBJZiBubyBMSUNFTlNFIGZpbGUgY29tZXMgd2l0aCB0aGlzIHNvZnR3YXJlLCBpdCBpcyBwcm92aWRlZCBBUy1JUy4KICAgKgogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgKi8KQEAgLTE3NCw0ICsxNzMsMyBAQAogCiAjZW5kaWYgLyogU1RNMzJGN3h4X0hBTF9IQVNIX0VYX0ggKi8KIAotLyoqKioqKioqKioqKioqKioqKioqKioqKiAoQykgQ09QWVJJR0hUIFNUTWljcm9lbGVjdHJvbmljcyAqKioqKkVORCBPRiBGSUxFKioqKi8KZGlmZiAtLWdpdCBhL0luYy9zdG0zMmY3eHhfaGFsX2hjZC5oIGIvSW5jL3N0bTMyZjd4eF9oYWxfaGNkLmgKaW5kZXggNjhkOTE1YS4uNDMzYTgwOCAxMDA2NDQKLS0tIGEvSW5jL3N0bTMyZjd4eF9oYWxfaGNkLmgKKysrIGIvSW5jL3N0bTMyZjd4eF9oYWxfaGNkLmgKQEAgLTYsMTMgKzYsMTIgQEAKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgICogQGF0dGVudGlvbgogICAqCi0gICogPGgyPjxjZW50ZXI+JmNvcHk7IENvcHlyaWdodCAoYykgMjAxNyBTVE1pY3JvZWxlY3Ryb25pY3MuCi0gICogQWxsIHJpZ2h0cyByZXNlcnZlZC48L2NlbnRlcj48L2gyPgorICAqIENvcHlyaWdodCAoYykgMjAxNyBTVE1pY3JvZWxlY3Ryb25pY3MuCisgICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgKgotICAqIFRoaXMgc29mdHdhcmUgY29tcG9uZW50IGlzIGxpY2Vuc2VkIGJ5IFNUIHVuZGVyIEJTRCAzLUNsYXVzZSBsaWNlbnNlLAotICAqIHRoZSAiTGljZW5zZSI7IFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUKLSAgKiBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQ6Ci0gICogICAgICAgICAgICAgICAgICAgICAgICBvcGVuc291cmNlLm9yZy9saWNlbnNlcy9CU0QtMy1DbGF1c2UKKyAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIHVuZGVyIHRlcm1zIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUKKyAgKiBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb2Z0d2FyZSBjb21wb25lbnQuCisgICogSWYgbm8gTElDRU5TRSBmaWxlIGNvbWVzIHdpdGggdGhpcyBzb2Z0d2FyZSwgaXQgaXMgcHJvdmlkZWQgQVMtSVMuCiAgICoKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgICovCkBAIC0xMTEsMTEgKzExMCwxNiBAQAogI2RlZmluZSBIQ0RfU1BFRURfSElHSCAgICAgICAgICAgICAgIFVTQkhfSFNfU1BFRUQKICNkZWZpbmUgSENEX1NQRUVEX0ZVTEwgICAgICAgICAgICAgICBVU0JIX0ZTTFNfU1BFRUQKICNkZWZpbmUgSENEX1NQRUVEX0xPVyAgICAgICAgICAgICAgICBVU0JIX0ZTTFNfU1BFRUQKKy8qKgorICAqIEB9CisgICovCiAKKy8qKiBAZGVmZ3JvdXAgSENEX0RldmljZV9TcGVlZCBIQ0QgRGV2aWNlIFNwZWVkCisgICogQHsKKyAgKi8KICNkZWZpbmUgSENEX0RFVklDRV9TUEVFRF9ISUdIICAgICAgICAgICAgICAgMFUKICNkZWZpbmUgSENEX0RFVklDRV9TUEVFRF9GVUxMICAgICAgICAgICAgICAgMVUKICNkZWZpbmUgSENEX0RFVklDRV9TUEVFRF9MT1cgICAgICAgICAgICAgICAgMlUKLQogLyoqCiAgICogQH0KICAgKi8KQEAgLTE1Myw3ICsxNTcsOCBAQAogI2RlZmluZSBfX0hBTF9IQ0RfRU5BQkxFKF9fSEFORExFX18pICAgICAgICAgICAgICAgICAgICh2b2lkKVVTQl9FbmFibGVHbG9iYWxJbnQgKChfX0hBTkRMRV9fKS0+SW5zdGFuY2UpCiAjZGVmaW5lIF9fSEFMX0hDRF9ESVNBQkxFKF9fSEFORExFX18pICAgICAgICAgICAgICAgICAgKHZvaWQpVVNCX0Rpc2FibGVHbG9iYWxJbnQgKChfX0hBTkRMRV9fKS0+SW5zdGFuY2UpCiAKLSNkZWZpbmUgX19IQUxfSENEX0dFVF9GTEFHKF9fSEFORExFX18sIF9fSU5URVJSVVBUX18pICAgICAgKChVU0JfUmVhZEludGVycnVwdHMoKF9fSEFORExFX18pLT5JbnN0YW5jZSkgJiAoX19JTlRFUlJVUFRfXykpID09IChfX0lOVEVSUlVQVF9fKSkKKyNkZWZpbmUgX19IQUxfSENEX0dFVF9GTEFHKF9fSEFORExFX18sIF9fSU5URVJSVVBUX18pICAgICAgKChVU0JfUmVhZEludGVycnVwdHMoKF9fSEFORExFX18pLT5JbnN0YW5jZSlcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiAoX19JTlRFUlJVUFRfXykpID09IChfX0lOVEVSUlVQVF9fKSkKICNkZWZpbmUgX19IQUxfSENEX0NMRUFSX0ZMQUcoX19IQU5ETEVfXywgX19JTlRFUlJVUFRfXykgICAgKCgoX19IQU5ETEVfXyktPkluc3RhbmNlLT5HSU5UU1RTKSA9IChfX0lOVEVSUlVQVF9fKSkKICNkZWZpbmUgX19IQUxfSENEX0lTX0lOVkFMSURfSU5URVJSVVBUKF9fSEFORExFX18pICAgICAgICAgKFVTQl9SZWFkSW50ZXJydXB0cygoX19IQU5ETEVfXyktPkluc3RhbmNlKSA9PSAwVSkKIApAQCAtMjk2LDEwICszMDEsMTAgQEAKICAgKi8KIC8qIFByaXZhdGUgZnVuY3Rpb25zIHByb3RvdHlwZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAKLSAvKioKKy8qKgogICAqIEB9CiAgICovCi0gLyoqCisvKioKICAgKiBAfQogICAqLwogI2VuZGlmIC8qIGRlZmluZWQgKFVTQl9PVEdfRlMpIHx8IGRlZmluZWQgKFVTQl9PVEdfSFMpICovCkBAIC0zMDksNSArMzE0LDMgQEAKICNlbmRpZgogCiAjZW5kaWYgLyogU1RNMzJGN3h4X0hBTF9IQ0RfSCAqLwotCi0vKioqKioqKioqKioqKioqKioqKioqKioqIChDKSBDT1BZUklHSFQgU1RNaWNyb2VsZWN0cm9uaWNzICoqKioqRU5EIE9GIEZJTEUqKioqLwpkaWZmIC0tZ2l0IGEvSW5jL3N0bTMyZjd4eF9oYWxfaTJjLmggYi9JbmMvc3RtMzJmN3h4X2hhbF9pMmMuaAppbmRleCBjMmFhOWY2Li5mOGU2N2Q2IDEwMDY0NAotLS0gYS9JbmMvc3RtMzJmN3h4X2hhbF9pMmMuaAorKysgYi9JbmMvc3RtMzJmN3h4X2hhbF9pMmMuaApAQCAtNiwxMyArNiwxMiBAQAogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgKiBAYXR0ZW50aW9uCiAgICoKLSAgKiA8aDI+PGNlbnRlcj4mY29weTsgQ29weXJpZ2h0IChjKSAyMDE3IFNUTWljcm9lbGVjdHJvbmljcy4KLSAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLjwvY2VudGVyPjwvaDI+CisgICogQ29weXJpZ2h0IChjKSAyMDE3IFNUTWljcm9lbGVjdHJvbmljcy4KKyAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAqCi0gICogVGhpcyBzb2Z0d2FyZSBjb21wb25lbnQgaXMgbGljZW5zZWQgYnkgU1QgdW5kZXIgQlNEIDMtQ2xhdXNlIGxpY2Vuc2UsCi0gICogdGhlICJMaWNlbnNlIjsgWW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZQotICAqIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdDoKLSAgKiAgICAgICAgICAgICAgICAgICAgICAgIG9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0JTRC0zLUNsYXVzZQorICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgdW5kZXIgdGVybXMgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZQorICAqIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvZnR3YXJlIGNvbXBvbmVudC4KKyAgKiBJZiBubyBMSUNFTlNFIGZpbGUgY29tZXMgd2l0aCB0aGlzIHNvZnR3YXJlLCBpdCBpcyBwcm92aWRlZCBBUy1JUy4KICAgKgogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgKi8KQEAgLTQ4LDI5ICs0NywzMCBAQAogdHlwZWRlZiBzdHJ1Y3QKIHsKICAgdWludDMyX3QgVGltaW5nOyAgICAgICAgICAgICAgLyohPCBTcGVjaWZpZXMgdGhlIEkyQ19USU1JTkdSX3JlZ2lzdGVyIHZhbHVlLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbGN1bGF0ZWQgYnkgcmVmZXJyaW5nIHRvIEkyQyBpbml0aWFsaXphdGlvbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIFJlZmVyZW5jZSBtYW51YWwgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYWxjdWxhdGVkIGJ5IHJlZmVycmluZyB0byBJMkMgaW5pdGlhbGl6YXRpb24gc2VjdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIFJlZmVyZW5jZSBtYW51YWwgKi8KIAogICB1aW50MzJfdCBPd25BZGRyZXNzMTsgICAgICAgICAvKiE8IFNwZWNpZmllcyB0aGUgZmlyc3QgZGV2aWNlIG93biBhZGRyZXNzLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhIDctYml0IG9yIDEwLWJpdCBhZGRyZXNzLiAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhIDctYml0IG9yIDEwLWJpdCBhZGRyZXNzLiAqLwogCiAgIHVpbnQzMl90IEFkZHJlc3NpbmdNb2RlOyAgICAgIC8qITwgU3BlY2lmaWVzIGlmIDctYml0IG9yIDEwLWJpdCBhZGRyZXNzaW5nIG1vZGUgaXMgc2VsZWN0ZWQuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGEgdmFsdWUgb2YgQHJlZiBJMkNfQUREUkVTU0lOR19NT0RFICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGEgdmFsdWUgb2YgQHJlZiBJMkNfQUREUkVTU0lOR19NT0RFICovCiAKICAgdWludDMyX3QgRHVhbEFkZHJlc3NNb2RlOyAgICAgLyohPCBTcGVjaWZpZXMgaWYgZHVhbCBhZGRyZXNzaW5nIG1vZGUgaXMgc2VsZWN0ZWQuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGEgdmFsdWUgb2YgQHJlZiBJMkNfRFVBTF9BRERSRVNTSU5HX01PREUgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYSB2YWx1ZSBvZiBAcmVmIEkyQ19EVUFMX0FERFJFU1NJTkdfTU9ERSAqLwogCiAgIHVpbnQzMl90IE93bkFkZHJlc3MyOyAgICAgICAgIC8qITwgU3BlY2lmaWVzIHRoZSBzZWNvbmQgZGV2aWNlIG93biBhZGRyZXNzIGlmIGR1YWwgYWRkcmVzc2luZyBtb2RlIGlzIHNlbGVjdGVkCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGEgNy1iaXQgYWRkcmVzcy4gKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYSA3LWJpdCBhZGRyZXNzLiAqLwogCi0gIHVpbnQzMl90IE93bkFkZHJlc3MyTWFza3M7ICAgIC8qITwgU3BlY2lmaWVzIHRoZSBhY2tub3dsZWRnZSBtYXNrIGFkZHJlc3Mgc2Vjb25kIGRldmljZSBvd24gYWRkcmVzcyBpZiBkdWFsIGFkZHJlc3NpbmcgbW9kZSBpcyBzZWxlY3RlZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhIHZhbHVlIG9mIEByZWYgSTJDX09XTl9BRERSRVNTMl9NQVNLUyAqLworICB1aW50MzJfdCBPd25BZGRyZXNzMk1hc2tzOyAgICAvKiE8IFNwZWNpZmllcyB0aGUgYWNrbm93bGVkZ2UgbWFzayBhZGRyZXNzIHNlY29uZCBkZXZpY2Ugb3duIGFkZHJlc3MgaWYgZHVhbCBhZGRyZXNzaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kZSBpcyBzZWxlY3RlZC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYSB2YWx1ZSBvZiBAcmVmIEkyQ19PV05fQUREUkVTUzJfTUFTS1MgKi8KIAogICB1aW50MzJfdCBHZW5lcmFsQ2FsbE1vZGU7ICAgICAvKiE8IFNwZWNpZmllcyBpZiBnZW5lcmFsIGNhbGwgbW9kZSBpcyBzZWxlY3RlZC4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYSB2YWx1ZSBvZiBAcmVmIEkyQ19HRU5FUkFMX0NBTExfQUREUkVTU0lOR19NT0RFICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGEgdmFsdWUgb2YgQHJlZiBJMkNfR0VORVJBTF9DQUxMX0FERFJFU1NJTkdfTU9ERSAqLwogCiAgIHVpbnQzMl90IE5vU3RyZXRjaE1vZGU7ICAgICAgIC8qITwgU3BlY2lmaWVzIGlmIG5vc3RyZXRjaCBtb2RlIGlzIHNlbGVjdGVkLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhIHZhbHVlIG9mIEByZWYgSTJDX05PU1RSRVRDSF9NT0RFICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGEgdmFsdWUgb2YgQHJlZiBJMkNfTk9TVFJFVENIX01PREUgKi8KIAogfSBJMkNfSW5pdFR5cGVEZWY7CiAKQEAgLTIwMCw3ICsyMDAsOCBAQAogCiAgIF9fSU8gdWludDMyX3QgICAgICAgICAgICAgIFByZXZpb3VzU3RhdGU7ICAvKiE8IEkyQyBjb21tdW5pY2F0aW9uIFByZXZpb3VzIHN0YXRlICAgICAgICAgICovCiAKLSAgSEFMX1N0YXR1c1R5cGVEZWYoKlhmZXJJU1IpKHN0cnVjdCBfX0kyQ19IYW5kbGVUeXBlRGVmICpoaTJjLCB1aW50MzJfdCBJVEZsYWdzLCB1aW50MzJfdCBJVFNvdXJjZXMpOyAgLyohPCBJMkMgdHJhbnNmZXIgSVJRIGhhbmRsZXIgZnVuY3Rpb24gcG9pbnRlciAqLworICBIQUxfU3RhdHVzVHlwZURlZigqWGZlcklTUikoc3RydWN0IF9fSTJDX0hhbmRsZVR5cGVEZWYgKmhpMmMsIHVpbnQzMl90IElURmxhZ3MsIHVpbnQzMl90IElUU291cmNlcyk7CisgIC8qITwgSTJDIHRyYW5zZmVyIElSUSBoYW5kbGVyIGZ1bmN0aW9uIHBvaW50ZXIgKi8KIAogICBETUFfSGFuZGxlVHlwZURlZiAgICAgICAgICAqaGRtYXR4OyAgICAgICAgLyohPCBJMkMgVHggRE1BIGhhbmRsZSBwYXJhbWV0ZXJzICAgICAgICAgICAgICAqLwogCkBAIC0yMTcsMjAgKzIxOCwzMiBAQAogICBfX0lPIHVpbnQzMl90ICAgICAgICAgICAgICBBZGRyRXZlbnRDb3VudDsgLyohPCBJMkMgQWRkcmVzcyBFdmVudCBjb3VudGVyICAgICAgICAgICAgICAgICAqLwogCiAjaWYgKFVTRV9IQUxfSTJDX1JFR0lTVEVSX0NBTExCQUNLUyA9PSAxKQotICB2b2lkICgqIE1hc3RlclR4Q3BsdENhbGxiYWNrKShzdHJ1Y3QgX19JMkNfSGFuZGxlVHlwZURlZiAqaGkyYyk7ICAgICAgICAgICAvKiE8IEkyQyBNYXN0ZXIgVHggVHJhbnNmZXIgY29tcGxldGVkIGNhbGxiYWNrICovCi0gIHZvaWQgKCogTWFzdGVyUnhDcGx0Q2FsbGJhY2spKHN0cnVjdCBfX0kyQ19IYW5kbGVUeXBlRGVmICpoaTJjKTsgICAgICAgICAgIC8qITwgSTJDIE1hc3RlciBSeCBUcmFuc2ZlciBjb21wbGV0ZWQgY2FsbGJhY2sgKi8KLSAgdm9pZCAoKiBTbGF2ZVR4Q3BsdENhbGxiYWNrKShzdHJ1Y3QgX19JMkNfSGFuZGxlVHlwZURlZiAqaGkyYyk7ICAgICAgICAgICAgLyohPCBJMkMgU2xhdmUgVHggVHJhbnNmZXIgY29tcGxldGVkIGNhbGxiYWNrICAqLwotICB2b2lkICgqIFNsYXZlUnhDcGx0Q2FsbGJhY2spKHN0cnVjdCBfX0kyQ19IYW5kbGVUeXBlRGVmICpoaTJjKTsgICAgICAgICAgICAvKiE8IEkyQyBTbGF2ZSBSeCBUcmFuc2ZlciBjb21wbGV0ZWQgY2FsbGJhY2sgICovCi0gIHZvaWQgKCogTGlzdGVuQ3BsdENhbGxiYWNrKShzdHJ1Y3QgX19JMkNfSGFuZGxlVHlwZURlZiAqaGkyYyk7ICAgICAgICAgICAgIC8qITwgSTJDIExpc3RlbiBDb21wbGV0ZSBjYWxsYmFjayAgICAgICAgICAgICAgKi8KLSAgdm9pZCAoKiBNZW1UeENwbHRDYWxsYmFjaykoc3RydWN0IF9fSTJDX0hhbmRsZVR5cGVEZWYgKmhpMmMpOyAgICAgICAgICAgICAgLyohPCBJMkMgTWVtb3J5IFR4IFRyYW5zZmVyIGNvbXBsZXRlZCBjYWxsYmFjayAqLwotICB2b2lkICgqIE1lbVJ4Q3BsdENhbGxiYWNrKShzdHJ1Y3QgX19JMkNfSGFuZGxlVHlwZURlZiAqaGkyYyk7ICAgICAgICAgICAgICAvKiE8IEkyQyBNZW1vcnkgUnggVHJhbnNmZXIgY29tcGxldGVkIGNhbGxiYWNrICovCi0gIHZvaWQgKCogRXJyb3JDYWxsYmFjaykoc3RydWN0IF9fSTJDX0hhbmRsZVR5cGVEZWYgKmhpMmMpOyAgICAgICAgICAgICAgICAgIC8qITwgSTJDIEVycm9yIGNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgKi8KLSAgdm9pZCAoKiBBYm9ydENwbHRDYWxsYmFjaykoc3RydWN0IF9fSTJDX0hhbmRsZVR5cGVEZWYgKmhpMmMpOyAgICAgICAgICAgICAgLyohPCBJMkMgQWJvcnQgY2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAqLworICB2b2lkICgqIE1hc3RlclR4Q3BsdENhbGxiYWNrKShzdHJ1Y3QgX19JMkNfSGFuZGxlVHlwZURlZiAqaGkyYyk7CisgIC8qITwgSTJDIE1hc3RlciBUeCBUcmFuc2ZlciBjb21wbGV0ZWQgY2FsbGJhY2sgKi8KKyAgdm9pZCAoKiBNYXN0ZXJSeENwbHRDYWxsYmFjaykoc3RydWN0IF9fSTJDX0hhbmRsZVR5cGVEZWYgKmhpMmMpOworICAvKiE8IEkyQyBNYXN0ZXIgUnggVHJhbnNmZXIgY29tcGxldGVkIGNhbGxiYWNrICovCisgIHZvaWQgKCogU2xhdmVUeENwbHRDYWxsYmFjaykoc3RydWN0IF9fSTJDX0hhbmRsZVR5cGVEZWYgKmhpMmMpOworICAvKiE8IEkyQyBTbGF2ZSBUeCBUcmFuc2ZlciBjb21wbGV0ZWQgY2FsbGJhY2sgICovCisgIHZvaWQgKCogU2xhdmVSeENwbHRDYWxsYmFjaykoc3RydWN0IF9fSTJDX0hhbmRsZVR5cGVEZWYgKmhpMmMpOworICAvKiE8IEkyQyBTbGF2ZSBSeCBUcmFuc2ZlciBjb21wbGV0ZWQgY2FsbGJhY2sgICovCisgIHZvaWQgKCogTGlzdGVuQ3BsdENhbGxiYWNrKShzdHJ1Y3QgX19JMkNfSGFuZGxlVHlwZURlZiAqaGkyYyk7CisgIC8qITwgSTJDIExpc3RlbiBDb21wbGV0ZSBjYWxsYmFjayAgICAgICAgICAgICAgKi8KKyAgdm9pZCAoKiBNZW1UeENwbHRDYWxsYmFjaykoc3RydWN0IF9fSTJDX0hhbmRsZVR5cGVEZWYgKmhpMmMpOworICAvKiE8IEkyQyBNZW1vcnkgVHggVHJhbnNmZXIgY29tcGxldGVkIGNhbGxiYWNrICovCisgIHZvaWQgKCogTWVtUnhDcGx0Q2FsbGJhY2spKHN0cnVjdCBfX0kyQ19IYW5kbGVUeXBlRGVmICpoaTJjKTsKKyAgLyohPCBJMkMgTWVtb3J5IFJ4IFRyYW5zZmVyIGNvbXBsZXRlZCBjYWxsYmFjayAqLworICB2b2lkICgqIEVycm9yQ2FsbGJhY2spKHN0cnVjdCBfX0kyQ19IYW5kbGVUeXBlRGVmICpoaTJjKTsKKyAgLyohPCBJMkMgRXJyb3IgY2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAqLworICB2b2lkICgqIEFib3J0Q3BsdENhbGxiYWNrKShzdHJ1Y3QgX19JMkNfSGFuZGxlVHlwZURlZiAqaGkyYyk7CisgIC8qITwgSTJDIEFib3J0IGNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgKi8KIAotICB2b2lkICgqIEFkZHJDYWxsYmFjaykoc3RydWN0IF9fSTJDX0hhbmRsZVR5cGVEZWYgKmhpMmMsIHVpbnQ4X3QgVHJhbnNmZXJEaXJlY3Rpb24sIHVpbnQxNl90IEFkZHJNYXRjaENvZGUpOyAgLyohPCBJMkMgU2xhdmUgQWRkcmVzcyBNYXRjaCBjYWxsYmFjayAqLworICB2b2lkICgqIEFkZHJDYWxsYmFjaykoc3RydWN0IF9fSTJDX0hhbmRsZVR5cGVEZWYgKmhpMmMsIHVpbnQ4X3QgVHJhbnNmZXJEaXJlY3Rpb24sIHVpbnQxNl90IEFkZHJNYXRjaENvZGUpOworICAvKiE8IEkyQyBTbGF2ZSBBZGRyZXNzIE1hdGNoIGNhbGxiYWNrICovCiAKLSAgdm9pZCAoKiBNc3BJbml0Q2FsbGJhY2spKHN0cnVjdCBfX0kyQ19IYW5kbGVUeXBlRGVmICpoaTJjKTsgICAgICAgICAgICAgICAgLyohPCBJMkMgTXNwIEluaXQgY2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAqLwotICB2b2lkICgqIE1zcERlSW5pdENhbGxiYWNrKShzdHJ1Y3QgX19JMkNfSGFuZGxlVHlwZURlZiAqaGkyYyk7ICAgICAgICAgICAgICAvKiE8IEkyQyBNc3AgRGVJbml0IGNhbGxiYWNrICAgICAgICAgICAgICAgICAgICovCisgIHZvaWQgKCogTXNwSW5pdENhbGxiYWNrKShzdHJ1Y3QgX19JMkNfSGFuZGxlVHlwZURlZiAqaGkyYyk7CisgIC8qITwgSTJDIE1zcCBJbml0IGNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgKi8KKyAgdm9pZCAoKiBNc3BEZUluaXRDYWxsYmFjaykoc3RydWN0IF9fSTJDX0hhbmRsZVR5cGVEZWYgKmhpMmMpOworICAvKiE8IEkyQyBNc3AgRGVJbml0IGNhbGxiYWNrICAgICAgICAgICAgICAgICAgICovCiAKICNlbmRpZiAgLyogVVNFX0hBTF9JMkNfUkVHSVNURVJfQ0FMTEJBQ0tTICovCiB9IEkyQ19IYW5kbGVUeXBlRGVmOwpAQCAtMjU5LDggKzI3MiwxMSBAQAogLyoqCiAgICogQGJyaWVmICBIQUwgSTJDIENhbGxiYWNrIHBvaW50ZXIgZGVmaW5pdGlvbgogICAqLwotdHlwZWRlZiAgdm9pZCAoKnBJMkNfQ2FsbGJhY2tUeXBlRGVmKShJMkNfSGFuZGxlVHlwZURlZiAqaGkyYyk7IC8qITwgcG9pbnRlciB0byBhbiBJMkMgY2FsbGJhY2sgZnVuY3Rpb24gKi8KLXR5cGVkZWYgIHZvaWQgKCpwSTJDX0FkZHJDYWxsYmFja1R5cGVEZWYpKEkyQ19IYW5kbGVUeXBlRGVmICpoaTJjLCB1aW50OF90IFRyYW5zZmVyRGlyZWN0aW9uLCB1aW50MTZfdCBBZGRyTWF0Y2hDb2RlKTsgLyohPCBwb2ludGVyIHRvIGFuIEkyQyBBZGRyZXNzIE1hdGNoIGNhbGxiYWNrIGZ1bmN0aW9uICovCit0eXBlZGVmICB2b2lkICgqcEkyQ19DYWxsYmFja1R5cGVEZWYpKEkyQ19IYW5kbGVUeXBlRGVmICpoaTJjKTsKKy8qITwgcG9pbnRlciB0byBhbiBJMkMgY2FsbGJhY2sgZnVuY3Rpb24gKi8KK3R5cGVkZWYgIHZvaWQgKCpwSTJDX0FkZHJDYWxsYmFja1R5cGVEZWYpKEkyQ19IYW5kbGVUeXBlRGVmICpoaTJjLCB1aW50OF90IFRyYW5zZmVyRGlyZWN0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDE2X3QgQWRkck1hdGNoQ29kZSk7CisvKiE8IHBvaW50ZXIgdG8gYW4gSTJDIEFkZHJlc3MgTWF0Y2ggY2FsbGJhY2sgZnVuY3Rpb24gKi8KIAogI2VuZGlmIC8qIFVTRV9IQUxfSTJDX1JFR0lTVEVSX0NBTExCQUNLUyAqLwogLyoqCkBAIC00NDAsMTQgKzQ1NiwxNCBAQAogICAqIEByZXR2YWwgTm9uZQogICAqLwogI2lmIChVU0VfSEFMX0kyQ19SRUdJU1RFUl9DQUxMQkFDS1MgPT0gMSkKLSNkZWZpbmUgX19IQUxfSTJDX1JFU0VUX0hBTkRMRV9TVEFURShfX0hBTkRMRV9fKSAgICAgICAgICAgICAgICBkb3sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX0hBTkRMRV9fKS0+U3RhdGUgPSBIQUxfSTJDX1NUQVRFX1JFU0VUOyAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX0hBTkRMRV9fKS0+TXNwSW5pdENhbGxiYWNrID0gTlVMTDsgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX0hBTkRMRV9fKS0+TXNwRGVJbml0Q2FsbGJhY2sgPSBOVUxMOyAgICAgICAgICBcCisjZGVmaW5lIF9fSEFMX0kyQ19SRVNFVF9IQU5ETEVfU1RBVEUoX19IQU5ETEVfXykgICAgICAgICAgICAgICAgZG97ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19IQU5ETEVfXyktPlN0YXRlID0gSEFMX0kyQ19TVEFURV9SRVNFVDsgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fSEFORExFX18pLT5Nc3BJbml0Q2FsbGJhY2sgPSBOVUxMOyAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX0hBTkRMRV9fKS0+TXNwRGVJbml0Q2FsbGJhY2sgPSBOVUxMOyAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSB3aGlsZSgwKQogI2Vsc2UKICNkZWZpbmUgX19IQUxfSTJDX1JFU0VUX0hBTkRMRV9TVEFURShfX0hBTkRMRV9fKSAgICAgICAgICAgICAgICAoKF9fSEFORExFX18pLT5TdGF0ZSA9IEhBTF9JMkNfU1RBVEVfUkVTRVQpCi0jZW5kaWYKKyNlbmRpZiAvKiBVU0VfSEFMX0kyQ19SRUdJU1RFUl9DQUxMQkFDS1MgKi8KIAogLyoqIEBicmllZiAgRW5hYmxlIHRoZSBzcGVjaWZpZWQgSTJDIGludGVycnVwdC4KICAgKiBAcGFyYW0gIF9fSEFORExFX18gc3BlY2lmaWVzIHRoZSBJMkMgSGFuZGxlLgpAQCAtNTQyLDI2ICs1NTgsMjcgQEAKICAgKgogICAqIEByZXR2YWwgTm9uZQogICAqLwotI2RlZmluZSBfX0hBTF9JMkNfQ0xFQVJfRkxBRyhfX0hBTkRMRV9fLCBfX0ZMQUdfXykgKCgoX19GTEFHX18pID09IEkyQ19GTEFHX1RYRSkgPyAoKF9fSEFORExFX18pLT5JbnN0YW5jZS0+SVNSIHw9IChfX0ZMQUdfXykpIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICgoX19IQU5ETEVfXyktPkluc3RhbmNlLT5JQ1IgPSAoX19GTEFHX18pKSkKKyNkZWZpbmUgX19IQUxfSTJDX0NMRUFSX0ZMQUcoX19IQU5ETEVfXywgX19GTEFHX18pICgoKF9fRkxBR19fKSA9PSBJMkNfRkxBR19UWEUpID8gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoX19IQU5ETEVfXyktPkluc3RhbmNlLT5JU1IgfD0gKF9fRkxBR19fKSkgOiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChfX0hBTkRMRV9fKS0+SW5zdGFuY2UtPklDUiA9IChfX0ZMQUdfXykpKQogCiAvKiogQGJyaWVmICBFbmFibGUgdGhlIHNwZWNpZmllZCBJMkMgcGVyaXBoZXJhbC4KICAgKiBAcGFyYW0gIF9fSEFORExFX18gc3BlY2lmaWVzIHRoZSBJMkMgSGFuZGxlLgogICAqIEByZXR2YWwgTm9uZQogICAqLwotI2RlZmluZSBfX0hBTF9JMkNfRU5BQkxFKF9fSEFORExFX18pICAgICAgICAgICAgICAgICAgICAgICAgICAgIChTRVRfQklUKChfX0hBTkRMRV9fKS0+SW5zdGFuY2UtPkNSMSwgIEkyQ19DUjFfUEUpKQorI2RlZmluZSBfX0hBTF9JMkNfRU5BQkxFKF9fSEFORExFX18pICAgICAgICAgICAgICAgICAgICAgICAgIChTRVRfQklUKChfX0hBTkRMRV9fKS0+SW5zdGFuY2UtPkNSMSwgSTJDX0NSMV9QRSkpCiAKIC8qKiBAYnJpZWYgIERpc2FibGUgdGhlIHNwZWNpZmllZCBJMkMgcGVyaXBoZXJhbC4KICAgKiBAcGFyYW0gIF9fSEFORExFX18gc3BlY2lmaWVzIHRoZSBJMkMgSGFuZGxlLgogICAqIEByZXR2YWwgTm9uZQogICAqLwotI2RlZmluZSBfX0hBTF9JMkNfRElTQUJMRShfX0hBTkRMRV9fKSAgICAgICAgICAgICAgICAgICAgICAgICAgIChDTEVBUl9CSVQoKF9fSEFORExFX18pLT5JbnN0YW5jZS0+Q1IxLCBJMkNfQ1IxX1BFKSkKKyNkZWZpbmUgX19IQUxfSTJDX0RJU0FCTEUoX19IQU5ETEVfXykgICAgICAgICAgICAgICAgICAgICAgICAoQ0xFQVJfQklUKChfX0hBTkRMRV9fKS0+SW5zdGFuY2UtPkNSMSwgSTJDX0NSMV9QRSkpCiAKIC8qKiBAYnJpZWYgIEdlbmVyYXRlIGEgTm9uLUFja25vd2xlZGdlIEkyQyBwZXJpcGhlcmFsIGluIFNsYXZlIG1vZGUuCiAgICogQHBhcmFtICBfX0hBTkRMRV9fIHNwZWNpZmllcyB0aGUgSTJDIEhhbmRsZS4KICAgKiBAcmV0dmFsIE5vbmUKICAgKi8KLSNkZWZpbmUgX19IQUxfSTJDX0dFTkVSQVRFX05BQ0soX19IQU5ETEVfXykgICAgICAgICAgICAgICAgICAgICAoU0VUX0JJVCgoX19IQU5ETEVfXyktPkluc3RhbmNlLT5DUjIsIEkyQ19DUjJfTkFDSykpCisjZGVmaW5lIF9fSEFMX0kyQ19HRU5FUkFURV9OQUNLKF9fSEFORExFX18pICAgICAgICAgICAgICAgICAgKFNFVF9CSVQoKF9fSEFORExFX18pLT5JbnN0YW5jZS0+Q1IyLCBJMkNfQ1IyX05BQ0spKQogLyoqCiAgICogQH0KICAgKi8KQEAgLTYwMSwxMiArNjE4LDE0IEBACiAgICovCiAvKiBJTyBvcGVyYXRpb24gZnVuY3Rpb25zICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogLyoqKioqKiogQmxvY2tpbmcgbW9kZTogUG9sbGluZyAqLwotSEFMX1N0YXR1c1R5cGVEZWYgSEFMX0kyQ19NYXN0ZXJfVHJhbnNtaXQoSTJDX0hhbmRsZVR5cGVEZWYgKmhpMmMsIHVpbnQxNl90IERldkFkZHJlc3MsIHVpbnQ4X3QgKnBEYXRhLCB1aW50MTZfdCBTaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgVGltZW91dCk7Ci1IQUxfU3RhdHVzVHlwZURlZiBIQUxfSTJDX01hc3Rlcl9SZWNlaXZlKEkyQ19IYW5kbGVUeXBlRGVmICpoaTJjLCB1aW50MTZfdCBEZXZBZGRyZXNzLCB1aW50OF90ICpwRGF0YSwgdWludDE2X3QgU2l6ZSwKK0hBTF9TdGF0dXNUeXBlRGVmIEhBTF9JMkNfTWFzdGVyX1RyYW5zbWl0KEkyQ19IYW5kbGVUeXBlRGVmICpoaTJjLCB1aW50MTZfdCBEZXZBZGRyZXNzLCB1aW50OF90ICpwRGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQxNl90IFNpemUsIHVpbnQzMl90IFRpbWVvdXQpOworSEFMX1N0YXR1c1R5cGVEZWYgSEFMX0kyQ19NYXN0ZXJfUmVjZWl2ZShJMkNfSGFuZGxlVHlwZURlZiAqaGkyYywgdWludDE2X3QgRGV2QWRkcmVzcywgdWludDhfdCAqcERhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQxNl90IFNpemUsIHVpbnQzMl90IFRpbWVvdXQpOworSEFMX1N0YXR1c1R5cGVEZWYgSEFMX0kyQ19TbGF2ZV9UcmFuc21pdChJMkNfSGFuZGxlVHlwZURlZiAqaGkyYywgdWludDhfdCAqcERhdGEsIHVpbnQxNl90IFNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IFRpbWVvdXQpOwotSEFMX1N0YXR1c1R5cGVEZWYgSEFMX0kyQ19TbGF2ZV9UcmFuc21pdChJMkNfSGFuZGxlVHlwZURlZiAqaGkyYywgdWludDhfdCAqcERhdGEsIHVpbnQxNl90IFNpemUsIHVpbnQzMl90IFRpbWVvdXQpOwotSEFMX1N0YXR1c1R5cGVEZWYgSEFMX0kyQ19TbGF2ZV9SZWNlaXZlKEkyQ19IYW5kbGVUeXBlRGVmICpoaTJjLCB1aW50OF90ICpwRGF0YSwgdWludDE2X3QgU2l6ZSwgdWludDMyX3QgVGltZW91dCk7CitIQUxfU3RhdHVzVHlwZURlZiBIQUxfSTJDX1NsYXZlX1JlY2VpdmUoSTJDX0hhbmRsZVR5cGVEZWYgKmhpMmMsIHVpbnQ4X3QgKnBEYXRhLCB1aW50MTZfdCBTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IFRpbWVvdXQpOwogSEFMX1N0YXR1c1R5cGVEZWYgSEFMX0kyQ19NZW1fV3JpdGUoSTJDX0hhbmRsZVR5cGVEZWYgKmhpMmMsIHVpbnQxNl90IERldkFkZHJlc3MsIHVpbnQxNl90IE1lbUFkZHJlc3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MTZfdCBNZW1BZGRTaXplLCB1aW50OF90ICpwRGF0YSwgdWludDE2X3QgU2l6ZSwgdWludDMyX3QgVGltZW91dCk7CiBIQUxfU3RhdHVzVHlwZURlZiBIQUxfSTJDX01lbV9SZWFkKEkyQ19IYW5kbGVUeXBlRGVmICpoaTJjLCB1aW50MTZfdCBEZXZBZGRyZXNzLCB1aW50MTZfdCBNZW1BZGRyZXNzLApAQCAtNzU3LDEwICs3NzYsMTQgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChSRVFVRVNUKSA9PSBJMkNfT1RIRVJfQU5EX0xBU1RfRlJBTUUpKQogCiAjZGVmaW5lIEkyQ19SRVNFVF9DUjIoX19IQU5ETEVfXykgICAgICAgICAgICAgICAgICgoX19IQU5ETEVfXyktPkluc3RhbmNlLT5DUjIgJj0gXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVpbnQzMl90KX4oKHVpbnQzMl90KShJMkNfQ1IyX1NBREQgfCBJMkNfQ1IyX0hFQUQxMFIgfCBJMkNfQ1IyX05CWVRFUyB8IEkyQ19DUjJfUkVMT0FEIHwgSTJDX0NSMl9SRF9XUk4pKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1aW50MzJfdCl+KCh1aW50MzJfdCkoSTJDX0NSMl9TQUREICAgfCBJMkNfQ1IyX0hFQUQxMFIgfCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEkyQ19DUjJfTkJZVEVTIHwgSTJDX0NSMl9SRUxPQUQgIHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJMkNfQ1IyX1JEX1dSTikpKQogCi0jZGVmaW5lIEkyQ19HRVRfQUREUl9NQVRDSChfX0hBTkRMRV9fKSAgICAgICAgICAgICgodWludDE2X3QpKCgoX19IQU5ETEVfXyktPkluc3RhbmNlLT5JU1IgJiBJMkNfSVNSX0FERENPREUpID4+IDE2VSkpCi0jZGVmaW5lIEkyQ19HRVRfRElSKF9fSEFORExFX18pICAgICAgICAgICAgICAgICAgICgodWludDhfdCkoKChfX0hBTkRMRV9fKS0+SW5zdGFuY2UtPklTUiAmIEkyQ19JU1JfRElSKSA+PiAxNlUpKQorI2RlZmluZSBJMkNfR0VUX0FERFJfTUFUQ0goX19IQU5ETEVfXykgICAgICAgICAgICAoKHVpbnQxNl90KSgoKF9fSEFORExFX18pLT5JbnN0YW5jZS0+SVNSICYgSTJDX0lTUl9BRERDT0RFKSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID4+IDE2VSkpCisjZGVmaW5lIEkyQ19HRVRfRElSKF9fSEFORExFX18pICAgICAgICAgICAgICAgICAgICgodWludDhfdCkoKChfX0hBTkRMRV9fKS0+SW5zdGFuY2UtPklTUiAmIEkyQ19JU1JfRElSKSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPj4gMTZVKSkKICNkZWZpbmUgSTJDX0dFVF9TVE9QX01PREUoX19IQU5ETEVfXykgICAgICAgICAgICAgKChfX0hBTkRMRV9fKS0+SW5zdGFuY2UtPkNSMiAmIEkyQ19DUjJfQVVUT0VORCkKICNkZWZpbmUgSTJDX0dFVF9PV05fQUREUkVTUzEoX19IQU5ETEVfXykgICAgICAgICAgKCh1aW50MTZfdCkoKF9fSEFORExFX18pLT5JbnN0YW5jZS0+T0FSMSAmIEkyQ19PQVIxX09BMSkpCiAjZGVmaW5lIEkyQ19HRVRfT1dOX0FERFJFU1MyKF9fSEFORExFX18pICAgICAgICAgICgodWludDE2X3QpKChfX0hBTkRMRV9fKS0+SW5zdGFuY2UtPk9BUjIgJiBJMkNfT0FSMl9PQTIpKQpAQCAtNzcyLDEwICs3OTUsMTUgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodWludDE2X3QpKDB4RkYwMFUpKSkgPj4gOFUpKSkKICNkZWZpbmUgSTJDX01FTV9BRERfTFNCKF9fQUREUkVTU19fKSAgICAgICAgICAgICAgKCh1aW50OF90KSgodWludDE2X3QpKChfX0FERFJFU1NfXykgJiAodWludDE2X3QpKDB4MDBGRlUpKSkpCiAKLSNkZWZpbmUgSTJDX0dFTkVSQVRFX1NUQVJUKF9fQURETU9ERV9fLF9fQUREUkVTU19fKSAoKChfX0FERE1PREVfXykgPT0gSTJDX0FERFJFU1NJTkdNT0RFXzdCSVQpID8gKHVpbnQzMl90KSgoKCh1aW50MzJfdCkoX19BRERSRVNTX18pICYgKEkyQ19DUjJfU0FERCkpIHwgKEkyQ19DUjJfU1RBUlQpIHwgKEkyQ19DUjJfQVVUT0VORCkpICYgKH5JMkNfQ1IyX1JEX1dSTikpIDogXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodWludDMyX3QpKCgoKHVpbnQzMl90KShfX0FERFJFU1NfXykgJiAoSTJDX0NSMl9TQUREKSkgfCAoSTJDX0NSMl9BREQxMCkgfCAoSTJDX0NSMl9TVEFSVCkpICYgKH5JMkNfQ1IyX1JEX1dSTikpKQorI2RlZmluZSBJMkNfR0VORVJBVEVfU1RBUlQoX19BRERNT0RFX18sX19BRERSRVNTX18pICgoKF9fQURETU9ERV9fKSA9PSBJMkNfQUREUkVTU0lOR01PREVfN0JJVCkgPyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1aW50MzJfdCkoKCgodWludDMyX3QpKF9fQUREUkVTU19fKSAmIChJMkNfQ1IyX1NBREQpKSB8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEkyQ19DUjJfU1RBUlQpIHwgKEkyQ19DUjJfQVVUT0VORCkpICYgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh+STJDX0NSMl9SRF9XUk4pKSA6IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVpbnQzMl90KSgoKCh1aW50MzJfdCkoX19BRERSRVNTX18pICYgKEkyQ19DUjJfU0FERCkpIHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoSTJDX0NSMl9BREQxMCkgfCAoSTJDX0NSMl9TVEFSVCkpICYgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh+STJDX0NSMl9SRF9XUk4pKSkKIAotI2RlZmluZSBJMkNfQ0hFQ0tfRkxBRyhfX0lTUl9fLCBfX0ZMQUdfXykgICAgICAgICAoKCgoX19JU1JfXykgJiAgKChfX0ZMQUdfXykgJiBJMkNfRkxBR19NQVNLKSkgPT0gXAorI2RlZmluZSBJMkNfQ0hFQ0tfRkxBRyhfX0lTUl9fLCBfX0ZMQUdfXykgICAgICAgICAoKCgoX19JU1JfXykgJiAoKF9fRkxBR19fKSAmIEkyQ19GTEFHX01BU0spKSA9PSBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChfX0ZMQUdfXykgJiBJMkNfRkxBR19NQVNLKSkgPyBTRVQgOiBSRVNFVCkKICNkZWZpbmUgSTJDX0NIRUNLX0lUX1NPVVJDRShfX0NSMV9fLCBfX0lUX18pICAgICAgKCgoKF9fQ1IxX18pICYgKF9fSVRfXykpID09IChfX0lUX18pKSA/IFNFVCA6IFJFU0VUKQogLyoqCkBAIC04MDUsNSArODMzLDMgQEAKIAogCiAjZW5kaWYgLyogU1RNMzJGN3h4X0hBTF9JMkNfSCAqLwotCi0vKioqKioqKioqKioqKioqKioqKioqKioqIChDKSBDT1BZUklHSFQgU1RNaWNyb2VsZWN0cm9uaWNzICoqKioqRU5EIE9GIEZJTEUqKioqLwpkaWZmIC0tZ2l0IGEvSW5jL3N0bTMyZjd4eF9oYWxfaTJjX2V4LmggYi9JbmMvc3RtMzJmN3h4X2hhbF9pMmNfZXguaAppbmRleCA1ODBlNjdmLi5mMGM1NzJmIDEwMDY0NAotLS0gYS9JbmMvc3RtMzJmN3h4X2hhbF9pMmNfZXguaAorKysgYi9JbmMvc3RtMzJmN3h4X2hhbF9pMmNfZXguaApAQCAtNiwxMyArNiwxMiBAQAogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgKiBAYXR0ZW50aW9uCiAgICoKLSAgKiA8aDI+PGNlbnRlcj4mY29weTsgQ29weXJpZ2h0IChjKSAyMDE3IFNUTWljcm9lbGVjdHJvbmljcy4KLSAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLjwvY2VudGVyPjwvaDI+CisgICogQ29weXJpZ2h0IChjKSAyMDE3IFNUTWljcm9lbGVjdHJvbmljcy4KKyAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAqCi0gICogVGhpcyBzb2Z0d2FyZSBjb21wb25lbnQgaXMgbGljZW5zZWQgYnkgU1QgdW5kZXIgQlNEIDMtQ2xhdXNlIGxpY2Vuc2UsCi0gICogdGhlICJMaWNlbnNlIjsgWW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZQotICAqIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdDoKLSAgKiAgICAgICAgICAgICAgICAgICAgICAgIG9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0JTRC0zLUNsYXVzZQorICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgdW5kZXIgdGVybXMgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZQorICAqIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvZnR3YXJlIGNvbXBvbmVudC4KKyAgKiBJZiBubyBMSUNFTlNFIGZpbGUgY29tZXMgd2l0aCB0aGlzIHNvZnR3YXJlLCBpdCBpcyBwcm92aWRlZCBBUy1JUy4KICAgKgogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgKi8KQEAgLTYxLDM0ICs2MCwzNCBAQAogI2Vsc2UKICNkZWZpbmUgSTJDX0ZBU1RNT0RFUExVU19QQjYgICAgICAgICAgICAodWludDMyX3QpKDB4MDAwMDAwMDRVIHwgSTJDX0ZNUF9OT1RfU1VQUE9SVEVEKSAvKiE8IEZhc3QgTW9kZSBQbHVzIFBCNiBub3Qgc3VwcG9ydGVkICAgKi8KICNkZWZpbmUgSTJDX0ZBU1RNT0RFUExVU19QQjcgICAgICAgICAgICAodWludDMyX3QpKDB4MDAwMDAwMDhVIHwgSTJDX0ZNUF9OT1RfU1VQUE9SVEVEKSAvKiE8IEZhc3QgTW9kZSBQbHVzIFBCNyBub3Qgc3VwcG9ydGVkICAgKi8KLSNlbmRpZgorI2VuZGlmIC8qIFNZU0NGR19QTUNfSTJDX1BCNl9GTVAgKi8KICNpZiBkZWZpbmVkKFNZU0NGR19QTUNfSTJDX1BCOF9GTVApCiAjZGVmaW5lIEkyQ19GQVNUTU9ERVBMVVNfUEI4ICAgICAgICAgICAgU1lTQ0ZHX1BNQ19JMkNfUEI4X0ZNUCAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgRW5hYmxlIEZhc3QgTW9kZSBQbHVzIG9uIFBCOCAgICAgICAqLwogI2RlZmluZSBJMkNfRkFTVE1PREVQTFVTX1BCOSAgICAgICAgICAgIFNZU0NGR19QTUNfSTJDX1BCOV9GTVAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IEVuYWJsZSBGYXN0IE1vZGUgUGx1cyBvbiBQQjkgICAgICAgKi8KICNlbHNlCiAjZGVmaW5lIEkyQ19GQVNUTU9ERVBMVVNfUEI4ICAgICAgICAgICAgKHVpbnQzMl90KSgweDAwMDAwMDEwVSB8IEkyQ19GTVBfTk9UX1NVUFBPUlRFRCkgLyohPCBGYXN0IE1vZGUgUGx1cyBQQjggbm90IHN1cHBvcnRlZCAgICovCiAjZGVmaW5lIEkyQ19GQVNUTU9ERVBMVVNfUEI5ICAgICAgICAgICAgKHVpbnQzMl90KSgweDAwMDAwMDEyVSB8IEkyQ19GTVBfTk9UX1NVUFBPUlRFRCkgLyohPCBGYXN0IE1vZGUgUGx1cyBQQjkgbm90IHN1cHBvcnRlZCAgICovCi0jZW5kaWYKKyNlbmRpZiAvKiBTWVNDRkdfUE1DX0kyQ19QQjhfRk1QICovCiAjaWYgZGVmaW5lZChTWVNDRkdfUE1DX0kyQzFfRk1QKQogI2RlZmluZSBJMkNfRkFTVE1PREVQTFVTX0kyQzEgICAgICAgICAgIFNZU0NGR19QTUNfSTJDMV9GTVAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IEVuYWJsZSBGYXN0IE1vZGUgUGx1cyBvbiBJMkMxIHBpbnMgKi8KICNlbHNlCiAjZGVmaW5lIEkyQ19GQVNUTU9ERVBMVVNfSTJDMSAgICAgICAgICAgKHVpbnQzMl90KSgweDAwMDAwMTAwVSB8IEkyQ19GTVBfTk9UX1NVUFBPUlRFRCkgLyohPCBGYXN0IE1vZGUgUGx1cyBJMkMxIG5vdCBzdXBwb3J0ZWQgICovCi0jZW5kaWYKKyNlbmRpZiAvKiBTWVNDRkdfUE1DX0kyQzFfRk1QICovCiAjaWYgZGVmaW5lZChTWVNDRkdfUE1DX0kyQzJfRk1QKQogI2RlZmluZSBJMkNfRkFTVE1PREVQTFVTX0kyQzIgICAgICAgICAgIFNZU0NGR19QTUNfSTJDMl9GTVAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IEVuYWJsZSBGYXN0IE1vZGUgUGx1cyBvbiBJMkMyIHBpbnMgKi8KICNlbHNlCiAjZGVmaW5lIEkyQ19GQVNUTU9ERVBMVVNfSTJDMiAgICAgICAgICAgKHVpbnQzMl90KSgweDAwMDAwMjAwVSB8IEkyQ19GTVBfTk9UX1NVUFBPUlRFRCkgLyohPCBGYXN0IE1vZGUgUGx1cyBJMkMyIG5vdCBzdXBwb3J0ZWQgICovCi0jZW5kaWYKKyNlbmRpZiAvKiBTWVNDRkdfUE1DX0kyQzJfRk1QICovCiAjaWYgZGVmaW5lZChTWVNDRkdfUE1DX0kyQzNfRk1QKQogI2RlZmluZSBJMkNfRkFTVE1PREVQTFVTX0kyQzMgICAgICAgICAgIFNZU0NGR19QTUNfSTJDM19GTVAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IEVuYWJsZSBGYXN0IE1vZGUgUGx1cyBvbiBJMkMzIHBpbnMgKi8KICNlbHNlCiAjZGVmaW5lIEkyQ19GQVNUTU9ERVBMVVNfSTJDMyAgICAgICAgICAgKHVpbnQzMl90KSgweDAwMDAwNDAwVSB8IEkyQ19GTVBfTk9UX1NVUFBPUlRFRCkgLyohPCBGYXN0IE1vZGUgUGx1cyBJMkMzIG5vdCBzdXBwb3J0ZWQgICovCi0jZW5kaWYKKyNlbmRpZiAvKiBTWVNDRkdfUE1DX0kyQzNfRk1QICovCiAjaWYgZGVmaW5lZChTWVNDRkdfUE1DX0kyQzRfRk1QKQogI2RlZmluZSBJMkNfRkFTVE1PREVQTFVTX0kyQzQgICAgICAgICAgIFNZU0NGR19QTUNfSTJDNF9GTVAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IEVuYWJsZSBGYXN0IE1vZGUgUGx1cyBvbiBJMkM0IHBpbnMgKi8KICNlbHNlCiAjZGVmaW5lIEkyQ19GQVNUTU9ERVBMVVNfSTJDNCAgICAgICAgICAgKHVpbnQzMl90KSgweDAwMDAwODAwVSB8IEkyQ19GTVBfTk9UX1NVUFBPUlRFRCkgLyohPCBGYXN0IE1vZGUgUGx1cyBJMkM0IG5vdCBzdXBwb3J0ZWQgICovCi0jZW5kaWYKKyNlbmRpZiAvKiBTWVNDRkdfUE1DX0kyQzRfRk1QICovCiAvKioKICAgKiBAfQogICAqLwpAQCAtMTExLDcgKzExMCw3IEBACiAgICogQHsKICAgKi8KIAotLyoqIEBhZGR0b2dyb3VwIEkyQ0V4X0V4cG9ydGVkX0Z1bmN0aW9uc19Hcm91cDEgSTJDIEV4dGVuZGVkIEZpbHRlciBNb2RlIEZ1bmN0aW9ucworLyoqIEBhZGR0b2dyb3VwIEkyQ0V4X0V4cG9ydGVkX0Z1bmN0aW9uc19Hcm91cDEgRmlsdGVyIE1vZGUgRnVuY3Rpb25zCiAgICogQHsKICAgKi8KIC8qIFBlcmlwaGVyYWwgQ29udHJvbCBmdW5jdGlvbnMgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KQEAgLTEyMCwyNSArMTE5LDE3IEBACiAvKioKICAgKiBAfQogICAqLwotCi0vKiogQGFkZHRvZ3JvdXAgSTJDRXhfRXhwb3J0ZWRfRnVuY3Rpb25zX0dyb3VwMiBJMkMgRXh0ZW5kZWQgV2FrZVVwIE1vZGUgRnVuY3Rpb25zCi0gICogQHsKLSAgKi8KLS8qKgotICAqIEB9Ci0gICovCi0KLS8qKiBAYWRkdG9ncm91cCBJMkNFeF9FeHBvcnRlZF9GdW5jdGlvbnNfR3JvdXAzIEkyQyBFeHRlbmRlZCBGYXN0TW9kZVBsdXMgRnVuY3Rpb25zCi0gICogQHsKLSAgKi8KICNpZiAgKGRlZmluZWQoU1lTQ0ZHX1BNQ19JMkNfUEI2X0ZNUCkgfHwgZGVmaW5lZChTWVNDRkdfUE1DX0kyQ19QQjdfRk1QKSkgfHwgKGRlZmluZWQoU1lTQ0ZHX1BNQ19JMkNfUEI4X0ZNUCkgfHwgZGVmaW5lZChTWVNDRkdfUE1DX0kyQ19QQjlfRk1QKSkgfHwgKGRlZmluZWQoU1lTQ0ZHX1BNQ19JMkMxX0ZNUCkpIHx8IChkZWZpbmVkKFNZU0NGR19QTUNfSTJDMl9GTVApKSB8fCBkZWZpbmVkKFNZU0NGR19QTUNfSTJDM19GTVApIHx8IGRlZmluZWQoU1lTQ0ZHX1BNQ19JMkM0X0ZNUCkKKworLyoqIEBhZGR0b2dyb3VwIEkyQ0V4X0V4cG9ydGVkX0Z1bmN0aW9uc19Hcm91cDMgRmFzdCBNb2RlIFBsdXMgRnVuY3Rpb25zCisgICogQHsKKyAgKi8KIHZvaWQgSEFMX0kyQ0V4X0VuYWJsZUZhc3RNb2RlUGx1cyh1aW50MzJfdCBDb25maWdGYXN0TW9kZVBsdXMpOwogdm9pZCBIQUxfSTJDRXhfRGlzYWJsZUZhc3RNb2RlUGx1cyh1aW50MzJfdCBDb25maWdGYXN0TW9kZVBsdXMpOwotI2VuZGlmCiAvKioKICAgKiBAfQogICAqLwotCisjZW5kaWYgLyogRmFzdCBNb2RlIFBsdXMgQXZhaWxhYmlsaXR5ICovCiAKIC8qKgogICAqIEB9CkBAIC0xNjIsNyArMTUzLDcgQEAKIAogI2RlZmluZSBJU19JMkNfRElHSVRBTF9GSUxURVIoRklMVEVSKSAgICgoRklMVEVSKSA8PSAweDAwMDAwMDBGVSkKIAotI2lmIChkZWZpbmVkKFNZU0NGR19QTUNfSTJDMV9GTVApICYmIGRlZmluZWQoU1lTQ0ZHX1BNQ19JMkMyX0ZNUCkgJiYgZGVmaW5lZChTWVNDRkdfUE1DX0kyQzNfRk1QKSAmJiBkZWZpbmVkKFNZU0NGR19QTUNfSTJDNF9GTVApKQorI2lmIGRlZmluZWQoU1lTQ0ZHX1BNQ19JMkM0X0ZNUCkKICNkZWZpbmUgSVNfSTJDX0ZBU1RNT0RFUExVUyhfX0NPTkZJR19fKSAoKCgoX19DT05GSUdfXykgJiBJMkNfRkFTVE1PREVQTFVTX1BCNikgID09IEkyQ19GQVNUTU9ERVBMVVNfUEI2KSAgfHwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKChfX0NPTkZJR19fKSAmIEkyQ19GQVNUTU9ERVBMVVNfUEI3KSAgPT0gSTJDX0ZBU1RNT0RFUExVU19QQjcpICB8fCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoKF9fQ09ORklHX18pICYgSTJDX0ZBU1RNT0RFUExVU19QQjgpICA9PSBJMkNfRkFTVE1PREVQTFVTX1BCOCkgIHx8IFwKQEAgLTE3MSw3ICsxNjIsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKChfX0NPTkZJR19fKSAmIEkyQ19GQVNUTU9ERVBMVVNfSTJDMikgPT0gSTJDX0ZBU1RNT0RFUExVU19JMkMyKSB8fCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoKF9fQ09ORklHX18pICYgSTJDX0ZBU1RNT0RFUExVU19JMkMzKSA9PSBJMkNfRkFTVE1PREVQTFVTX0kyQzMpIHx8IFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCgoX19DT05GSUdfXykgJiBJMkNfRkFTVE1PREVQTFVTX0kyQzQpID09IEkyQ19GQVNUTU9ERVBMVVNfSTJDNCkpCi0jZWxpZiBkZWZpbmVkKFNZU0NGR19QTUNfSTJDMV9GTVApICYmIGRlZmluZWQoU1lTQ0ZHX1BNQ19JMkMyX0ZNUCkgJiYgZGVmaW5lZChTWVNDRkdfUE1DX0kyQzNfRk1QKQorI2VsaWYgZGVmaW5lZChTWVNDRkdfUE1DX0kyQzNfRk1QKQogI2RlZmluZSBJU19JMkNfRkFTVE1PREVQTFVTKF9fQ09ORklHX18pICgoKChfX0NPTkZJR19fKSAmIEkyQ19GQVNUTU9ERVBMVVNfUEI2KSAgPT0gSTJDX0ZBU1RNT0RFUExVU19QQjYpICB8fCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoKF9fQ09ORklHX18pICYgSTJDX0ZBU1RNT0RFUExVU19QQjcpICA9PSBJMkNfRkFTVE1PREVQTFVTX1BCNykgIHx8IFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCgoX19DT05GSUdfXykgJiBJMkNfRkFTVE1PREVQTFVTX1BCOCkgID09IEkyQ19GQVNUTU9ERVBMVVNfUEI4KSAgfHwgXApAQCAtMTc5LDcgKzE3MCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoKF9fQ09ORklHX18pICYgSTJDX0ZBU1RNT0RFUExVU19JMkMxKSA9PSBJMkNfRkFTVE1PREVQTFVTX0kyQzEpIHx8IFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCgoX19DT05GSUdfXykgJiBJMkNfRkFTVE1PREVQTFVTX0kyQzIpID09IEkyQ19GQVNUTU9ERVBMVVNfSTJDMikgfHwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKChfX0NPTkZJR19fKSAmIEkyQ19GQVNUTU9ERVBMVVNfSTJDMykgPT0gSTJDX0ZBU1RNT0RFUExVU19JMkMzKSkKLSNlbGlmIGRlZmluZWQoU1lTQ0ZHX1BNQ19JMkMxX0ZNUCkgJiYgZGVmaW5lZChTWVNDRkdfUE1DX0kyQzJfRk1QKQorI2VsaWYgZGVmaW5lZChTWVNDRkdfUE1DX0kyQzJfRk1QKQogI2RlZmluZSBJU19JMkNfRkFTVE1PREVQTFVTKF9fQ09ORklHX18pICgoKChfX0NPTkZJR19fKSAmIEkyQ19GQVNUTU9ERVBMVVNfUEI2KSAgPT0gSTJDX0ZBU1RNT0RFUExVU19QQjYpICB8fCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoKF9fQ09ORklHX18pICYgSTJDX0ZBU1RNT0RFUExVU19QQjcpICA9PSBJMkNfRkFTVE1PREVQTFVTX1BCNykgIHx8IFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCgoX19DT05GSUdfXykgJiBJMkNfRkFTVE1PREVQTFVTX1BCOCkgID09IEkyQ19GQVNUTU9ERVBMVVNfUEI4KSAgfHwgXApAQCAtMjE5LDUgKzIxMCwzIEBACiAjZW5kaWYKIAogI2VuZGlmIC8qIFNUTTMyRjd4eF9IQUxfSTJDX0VYX0ggKi8KLQotLyoqKioqKioqKioqKioqKioqKioqKioqKiAoQykgQ09QWVJJR0hUIFNUTWljcm9lbGVjdHJvbmljcyAqKioqKkVORCBPRiBGSUxFKioqKi8KZGlmZiAtLWdpdCBhL0luYy9zdG0zMmY3eHhfaGFsX2kycy5oIGIvSW5jL3N0bTMyZjd4eF9oYWxfaTJzLmgKaW5kZXggMTE2MzA2ZC4uN2JjMDQyNyAxMDA2NDQKLS0tIGEvSW5jL3N0bTMyZjd4eF9oYWxfaTJzLmgKKysrIGIvSW5jL3N0bTMyZjd4eF9oYWxfaTJzLmgKQEAgLTYsMTMgKzYsMTIgQEAKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgICogQGF0dGVudGlvbgogICAqCi0gICogPGgyPjxjZW50ZXI+JmNvcHk7IENvcHlyaWdodCAoYykgMjAxNyBTVE1pY3JvZWxlY3Ryb25pY3MuCi0gICogQWxsIHJpZ2h0cyByZXNlcnZlZC48L2NlbnRlcj48L2gyPgorICAqIENvcHlyaWdodCAoYykgMjAxNyBTVE1pY3JvZWxlY3Ryb25pY3MuCisgICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgKgotICAqIFRoaXMgc29mdHdhcmUgY29tcG9uZW50IGlzIGxpY2Vuc2VkIGJ5IFNUIHVuZGVyIEJTRCAzLUNsYXVzZSBsaWNlbnNlLAotICAqIHRoZSAiTGljZW5zZSI7IFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUKLSAgKiBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQ6Ci0gICogICAgICAgICAgICAgICAgICAgICAgICBvcGVuc291cmNlLm9yZy9saWNlbnNlcy9CU0QtMy1DbGF1c2UKKyAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIHVuZGVyIHRlcm1zIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUKKyAgKiBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb2Z0d2FyZSBjb21wb25lbnQuCisgICogSWYgbm8gTElDRU5TRSBmaWxlIGNvbWVzIHdpdGggdGhpcyBzb2Z0d2FyZSwgaXQgaXMgcHJvdmlkZWQgQVMtSVMuCiAgICoKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgICovCkBAIC01NjQsNCArNTYzLDMgQEAKIAogI2VuZGlmIC8qIFNUTTMyRjd4eF9IQUxfSTJTX0ggKi8KIAotLyoqKioqKioqKioqKioqKioqKioqKioqKiAoQykgQ09QWVJJR0hUIFNUTWljcm9lbGVjdHJvbmljcyAqKioqKkVORCBPRiBGSUxFKioqKi8KZGlmZiAtLWdpdCBhL0luYy9zdG0zMmY3eHhfaGFsX2lyZGEuaCBiL0luYy9zdG0zMmY3eHhfaGFsX2lyZGEuaAppbmRleCAzNzEyYjY5Li5mZTdiNTY1IDEwMDY0NAotLS0gYS9JbmMvc3RtMzJmN3h4X2hhbF9pcmRhLmgKKysrIGIvSW5jL3N0bTMyZjd4eF9oYWxfaXJkYS5oCkBAIC02LDEzICs2LDEyIEBACiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAqIEBhdHRlbnRpb24KICAgKgotICAqIDxoMj48Y2VudGVyPiZjb3B5OyBDb3B5cmlnaHQgKGMpIDIwMTcgU1RNaWNyb2VsZWN0cm9uaWNzLgotICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuPC9jZW50ZXI+PC9oMj4KKyAgKiBDb3B5cmlnaHQgKGMpIDIwMTcgU1RNaWNyb2VsZWN0cm9uaWNzLgorICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICoKLSAgKiBUaGlzIHNvZnR3YXJlIGNvbXBvbmVudCBpcyBsaWNlbnNlZCBieSBTVCB1bmRlciBCU0QgMy1DbGF1c2UgbGljZW5zZSwKLSAgKiB0aGUgIkxpY2Vuc2UiOyBZb3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlCi0gICogTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0OgotICAqICAgICAgICAgICAgICAgICAgICAgICAgb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvQlNELTMtQ2xhdXNlCisgICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCB1bmRlciB0ZXJtcyB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlCisgICogaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc29mdHdhcmUgY29tcG9uZW50LgorICAqIElmIG5vIExJQ0VOU0UgZmlsZSBjb21lcyB3aXRoIHRoaXMgc29mdHdhcmUsIGl0IGlzIHByb3ZpZGVkIEFTLUlTLgogICAqCiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAqLwpAQCAtMTQxLDcgKzE0MCw3IEBACiAKICAgSVJEQV9Jbml0VHlwZURlZiAgICAgICAgIEluaXQ7ICAgICAgICAgICAgIC8qITwgSVJEQSBjb21tdW5pY2F0aW9uIHBhcmFtZXRlcnMgICAgICAqLwogCi0gIHVpbnQ4X3QgICAgICAgICAgICAgICAgICAqcFR4QnVmZlB0cjsgICAgICAvKiE8IFBvaW50ZXIgdG8gSVJEQSBUeCB0cmFuc2ZlciBCdWZmZXIgKi8KKyAgY29uc3QgdWludDhfdCAgICAgICAgICAgICpwVHhCdWZmUHRyOyAgICAgIC8qITwgUG9pbnRlciB0byBJUkRBIFR4IHRyYW5zZmVyIEJ1ZmZlciAqLwogCiAgIHVpbnQxNl90ICAgICAgICAgICAgICAgICBUeFhmZXJTaXplOyAgICAgICAvKiE8IElSREEgVHggVHJhbnNmZXIgc2l6ZSAgICAgICAgICAgICAgKi8KIApAQCAtNzg3LDExICs3ODYsMTEgQEAKICAgKi8KIAogLyogSU8gb3BlcmF0aW9uIGZ1bmN0aW9ucyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLUhBTF9TdGF0dXNUeXBlRGVmIEhBTF9JUkRBX1RyYW5zbWl0KElSREFfSGFuZGxlVHlwZURlZiAqaGlyZGEsIHVpbnQ4X3QgKnBEYXRhLCB1aW50MTZfdCBTaXplLCB1aW50MzJfdCBUaW1lb3V0KTsKK0hBTF9TdGF0dXNUeXBlRGVmIEhBTF9JUkRBX1RyYW5zbWl0KElSREFfSGFuZGxlVHlwZURlZiAqaGlyZGEsIGNvbnN0IHVpbnQ4X3QgKnBEYXRhLCB1aW50MTZfdCBTaXplLCB1aW50MzJfdCBUaW1lb3V0KTsKIEhBTF9TdGF0dXNUeXBlRGVmIEhBTF9JUkRBX1JlY2VpdmUoSVJEQV9IYW5kbGVUeXBlRGVmICpoaXJkYSwgdWludDhfdCAqcERhdGEsIHVpbnQxNl90IFNpemUsIHVpbnQzMl90IFRpbWVvdXQpOwotSEFMX1N0YXR1c1R5cGVEZWYgSEFMX0lSREFfVHJhbnNtaXRfSVQoSVJEQV9IYW5kbGVUeXBlRGVmICpoaXJkYSwgdWludDhfdCAqcERhdGEsIHVpbnQxNl90IFNpemUpOworSEFMX1N0YXR1c1R5cGVEZWYgSEFMX0lSREFfVHJhbnNtaXRfSVQoSVJEQV9IYW5kbGVUeXBlRGVmICpoaXJkYSwgY29uc3QgdWludDhfdCAqcERhdGEsIHVpbnQxNl90IFNpemUpOwogSEFMX1N0YXR1c1R5cGVEZWYgSEFMX0lSREFfUmVjZWl2ZV9JVChJUkRBX0hhbmRsZVR5cGVEZWYgKmhpcmRhLCB1aW50OF90ICpwRGF0YSwgdWludDE2X3QgU2l6ZSk7Ci1IQUxfU3RhdHVzVHlwZURlZiBIQUxfSVJEQV9UcmFuc21pdF9ETUEoSVJEQV9IYW5kbGVUeXBlRGVmICpoaXJkYSwgdWludDhfdCAqcERhdGEsIHVpbnQxNl90IFNpemUpOworSEFMX1N0YXR1c1R5cGVEZWYgSEFMX0lSREFfVHJhbnNtaXRfRE1BKElSREFfSGFuZGxlVHlwZURlZiAqaGlyZGEsIGNvbnN0IHVpbnQ4X3QgKnBEYXRhLCB1aW50MTZfdCBTaXplKTsKIEhBTF9TdGF0dXNUeXBlRGVmIEhBTF9JUkRBX1JlY2VpdmVfRE1BKElSREFfSGFuZGxlVHlwZURlZiAqaGlyZGEsIHVpbnQ4X3QgKnBEYXRhLCB1aW50MTZfdCBTaXplKTsKIEhBTF9TdGF0dXNUeXBlRGVmIEhBTF9JUkRBX0RNQVBhdXNlKElSREFfSGFuZGxlVHlwZURlZiAqaGlyZGEpOwogSEFMX1N0YXR1c1R5cGVEZWYgSEFMX0lSREFfRE1BUmVzdW1lKElSREFfSGFuZGxlVHlwZURlZiAqaGlyZGEpOwpAQCAtODUwLDQgKzg0OSwzIEBACiAKICNlbmRpZiAvKiBTVE0zMkY3eHhfSEFMX0lSREFfSCAqLwogCi0vKioqKioqKioqKioqKioqKioqKioqKioqIChDKSBDT1BZUklHSFQgU1RNaWNyb2VsZWN0cm9uaWNzICoqKioqRU5EIE9GIEZJTEUqKioqLwpkaWZmIC0tZ2l0IGEvSW5jL3N0bTMyZjd4eF9oYWxfaXJkYV9leC5oIGIvSW5jL3N0bTMyZjd4eF9oYWxfaXJkYV9leC5oCmluZGV4IDdlOTVmZDYuLjdhMTY0MjYgMTAwNjQ0Ci0tLSBhL0luYy9zdG0zMmY3eHhfaGFsX2lyZGFfZXguaAorKysgYi9JbmMvc3RtMzJmN3h4X2hhbF9pcmRhX2V4LmgKQEAgLTYsMTMgKzYsMTIgQEAKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgICogQGF0dGVudGlvbgogICAqCi0gICogPGgyPjxjZW50ZXI+JmNvcHk7IENvcHlyaWdodCAoYykgMjAxNyBTVE1pY3JvZWxlY3Ryb25pY3MuCi0gICogQWxsIHJpZ2h0cyByZXNlcnZlZC48L2NlbnRlcj48L2gyPgorICAqIENvcHlyaWdodCAoYykgMjAxNyBTVE1pY3JvZWxlY3Ryb25pY3MuCisgICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgKgotICAqIFRoaXMgc29mdHdhcmUgY29tcG9uZW50IGlzIGxpY2Vuc2VkIGJ5IFNUIHVuZGVyIEJTRCAzLUNsYXVzZSBsaWNlbnNlLAotICAqIHRoZSAiTGljZW5zZSI7IFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUKLSAgKiBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQ6Ci0gICogICAgICAgICAgICAgICAgICAgICAgICBvcGVuc291cmNlLm9yZy9saWNlbnNlcy9CU0QtMy1DbGF1c2UKKyAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIHVuZGVyIHRlcm1zIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUKKyAgKiBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb2Z0d2FyZSBjb21wb25lbnQuCisgICogSWYgbm8gTElDRU5TRSBmaWxlIGNvbWVzIHdpdGggdGhpcyBzb2Z0d2FyZSwgaXQgaXMgcHJvdmlkZWQgQVMtSVMuCiAgICoKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgICovCkBAIC0zMTksNCArMzE4LDMgQEAKIAogI2VuZGlmIC8qIFNUTTMyRjd4eF9IQUxfSVJEQV9FWF9IICovCiAKLS8qKioqKioqKioqKioqKioqKioqKioqKiogKEMpIENPUFlSSUdIVCBTVE1pY3JvZWxlY3Ryb25pY3MgKioqKipFTkQgT0YgRklMRSoqKiovCmRpZmYgLS1naXQgYS9JbmMvc3RtMzJmN3h4X2hhbF9pd2RnLmggYi9JbmMvc3RtMzJmN3h4X2hhbF9pd2RnLmgKaW5kZXggZjQ2MDg1MC4uZjExNTIxYSAxMDA2NDQKLS0tIGEvSW5jL3N0bTMyZjd4eF9oYWxfaXdkZy5oCisrKyBiL0luYy9zdG0zMmY3eHhfaGFsX2l3ZGcuaApAQCAtNiwxMyArNiwxMiBAQAogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgKiBAYXR0ZW50aW9uCiAgICoKLSAgKiA8aDI+PGNlbnRlcj4mY29weTsgQ29weXJpZ2h0IChjKSAyMDE3IFNUTWljcm9lbGVjdHJvbmljcy4KLSAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLjwvY2VudGVyPjwvaDI+CisgICogQ29weXJpZ2h0IChjKSAyMDE3IFNUTWljcm9lbGVjdHJvbmljcy4KKyAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAqCi0gICogVGhpcyBzb2Z0d2FyZSBjb21wb25lbnQgaXMgbGljZW5zZWQgYnkgU1QgdW5kZXIgQlNEIDMtQ2xhdXNlIGxpY2Vuc2UsCi0gICogdGhlICJMaWNlbnNlIjsgWW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZQotICAqIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdDoKLSAgKiAgICAgICAgICAgICAgICAgICAgICAgIG9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0JTRC0zLUNsYXVzZQorICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgdW5kZXIgdGVybXMgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZQorICAqIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvZnR3YXJlIGNvbXBvbmVudC4KKyAgKiBJZiBubyBMSUNFTlNFIGZpbGUgY29tZXMgd2l0aCB0aGlzIHNvZnR3YXJlLCBpdCBpcyBwcm92aWRlZCBBUy1JUy4KICAgKgogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgKi8KQEAgLTIzNiw1ICsyMzUsMyBAQAogI2VuZGlmCiAKICNlbmRpZiAvKiBTVE0zMkY3eHhfSEFMX0lXREdfSCAqLwotCi0vKioqKioqKioqKioqKioqKioqKioqKioqIChDKSBDT1BZUklHSFQgU1RNaWNyb2VsZWN0cm9uaWNzICoqKioqRU5EIE9GIEZJTEUqKioqLwpkaWZmIC0tZ2l0IGEvSW5jL3N0bTMyZjd4eF9oYWxfanBlZy5oIGIvSW5jL3N0bTMyZjd4eF9oYWxfanBlZy5oCmluZGV4IDlhY2JhYmQuLjFjNTUxZDcgMTAwNjQ0Ci0tLSBhL0luYy9zdG0zMmY3eHhfaGFsX2pwZWcuaAorKysgYi9JbmMvc3RtMzJmN3h4X2hhbF9qcGVnLmgKQEAgLTYsMTMgKzYsMTIgQEAKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgICogQGF0dGVudGlvbgogICAqCi0gICogPGgyPjxjZW50ZXI+JmNvcHk7IENvcHlyaWdodCAoYykgMjAxNyBTVE1pY3JvZWxlY3Ryb25pY3MuCi0gICogQWxsIHJpZ2h0cyByZXNlcnZlZC48L2NlbnRlcj48L2gyPgorICAqIENvcHlyaWdodCAoYykgMjAxNyBTVE1pY3JvZWxlY3Ryb25pY3MuCisgICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgKgotICAqIFRoaXMgc29mdHdhcmUgY29tcG9uZW50IGlzIGxpY2Vuc2VkIGJ5IFNUIHVuZGVyIEJTRCAzLUNsYXVzZSBsaWNlbnNlLAotICAqIHRoZSAiTGljZW5zZSI7IFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUKLSAgKiBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQ6Ci0gICogICAgICAgICAgICAgICAgICAgICAgICBvcGVuc291cmNlLm9yZy9saWNlbnNlcy9CU0QtMy1DbGF1c2UKKyAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIHVuZGVyIHRlcm1zIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUKKyAgKiBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb2Z0d2FyZSBjb21wb25lbnQuCisgICogSWYgbm8gTElDRU5TRSBmaWxlIGNvbWVzIHdpdGggdGhpcyBzb2Z0d2FyZSwgaXQgaXMgcHJvdmlkZWQgQVMtSVMuCiAgICoKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgICovCkBAIC02NTIsNCArNjUxLDMgQEAKIAogI2VuZGlmIC8qIFNUTTMyRjd4eF9IQUxfSlBFR19IICovCiAKLS8qKioqKioqKioqKioqKioqKioqKioqKiogKEMpIENPUFlSSUdIVCBTVE1pY3JvZWxlY3Ryb25pY3MgKioqKipFTkQgT0YgRklMRSoqKiovCmRpZmYgLS1naXQgYS9JbmMvc3RtMzJmN3h4X2hhbF9scHRpbS5oIGIvSW5jL3N0bTMyZjd4eF9oYWxfbHB0aW0uaAppbmRleCAyNTk0ZjFjLi44NTc4ZGMzIDEwMDY0NAotLS0gYS9JbmMvc3RtMzJmN3h4X2hhbF9scHRpbS5oCisrKyBiL0luYy9zdG0zMmY3eHhfaGFsX2xwdGltLmgKQEAgLTYsMTMgKzYsMTIgQEAKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgICogQGF0dGVudGlvbgogICAqCi0gICogPGgyPjxjZW50ZXI+JmNvcHk7IENvcHlyaWdodCAoYykgMjAxNyBTVE1pY3JvZWxlY3Ryb25pY3MuCi0gICogQWxsIHJpZ2h0cyByZXNlcnZlZC48L2NlbnRlcj48L2gyPgorICAqIENvcHlyaWdodCAoYykgMjAxNyBTVE1pY3JvZWxlY3Ryb25pY3MuCisgICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgKgotICAqIFRoaXMgc29mdHdhcmUgY29tcG9uZW50IGlzIGxpY2Vuc2VkIGJ5IFNUIHVuZGVyIEJTRCAzLUNsYXVzZSBsaWNlbnNlLAotICAqIHRoZSAiTGljZW5zZSI7IFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUKLSAgKiBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQ6Ci0gICogICAgICAgICAgICAgICAgICAgICAgICBvcGVuc291cmNlLm9yZy9saWNlbnNlcy9CU0QtMy1DbGF1c2UKKyAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIHVuZGVyIHRlcm1zIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUKKyAgKiBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb2Z0d2FyZSBjb21wb25lbnQuCisgICogSWYgbm8gTElDRU5TRSBmaWxlIGNvbWVzIHdpdGggdGhpcyBzb2Z0d2FyZSwgaXQgaXMgcHJvdmlkZWQgQVMtSVMuCiAgICoKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgICovCkBAIC05NywyMiArOTYsMjIgQEAKICAgKi8KIHR5cGVkZWYgc3RydWN0CiB7Ci0gIExQVElNX0Nsb2NrQ29uZmlnVHlwZURlZiAgICAgQ2xvY2s7ICAgICAgICAgICAgICAgLyohPCBTcGVjaWZpZXMgdGhlIGNsb2NrIHBhcmFtZXRlcnMgKi8KKyAgTFBUSU1fQ2xvY2tDb25maWdUeXBlRGVmICAgICBDbG9jazsgICAgICAgICAgICAgLyohPCBTcGVjaWZpZXMgdGhlIGNsb2NrIHBhcmFtZXRlcnMgKi8KIAotICBMUFRJTV9VTFBDbG9ja0NvbmZpZ1R5cGVEZWYgIFVsdHJhTG93UG93ZXJDbG9jazsgIC8qITwgU3BlY2lmaWVzIHRoZSBVbHRyYSBMb3cgUG93ZXIgY2xvY2sgcGFyYW1ldGVycyAqLworICBMUFRJTV9VTFBDbG9ja0NvbmZpZ1R5cGVEZWYgIFVsdHJhTG93UG93ZXJDbG9jazsvKiE8IFNwZWNpZmllcyB0aGUgVWx0cmEgTG93IFBvd2VyIGNsb2NrIHBhcmFtZXRlcnMgKi8KIAotICBMUFRJTV9UcmlnZ2VyQ29uZmlnVHlwZURlZiAgIFRyaWdnZXI7ICAgICAgICAgICAgIC8qITwgU3BlY2lmaWVzIHRoZSBUcmlnZ2VyIHBhcmFtZXRlcnMgKi8KKyAgTFBUSU1fVHJpZ2dlckNvbmZpZ1R5cGVEZWYgICBUcmlnZ2VyOyAgICAgICAgICAgLyohPCBTcGVjaWZpZXMgdGhlIFRyaWdnZXIgcGFyYW1ldGVycyAqLwogCi0gIHVpbnQzMl90ICAgICAgICAgICAgICAgICAgICAgT3V0cHV0UG9sYXJpdHk7ICAgICAgLyohPCBTcGVjaWZpZXMgdGhlIE91dHB1dCBwb2xhcml0eS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYSB2YWx1ZSBvZiBAcmVmIExQVElNX091dHB1dF9Qb2xhcml0eSAqLworICB1aW50MzJfdCAgICAgICAgICAgICAgICAgICAgIE91dHB1dFBvbGFyaXR5OyAgICAvKiE8IFNwZWNpZmllcyB0aGUgT3V0cHV0IHBvbGFyaXR5LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYSB2YWx1ZSBvZiBAcmVmIExQVElNX091dHB1dF9Qb2xhcml0eSAqLwogCi0gIHVpbnQzMl90ICAgICAgICAgICAgICAgICAgICAgVXBkYXRlTW9kZTsgICAgICAgICAgLyohPCBTcGVjaWZpZXMgd2hldGhlciB0aGUgdXBkYXRlIG9mIHRoZSBhdXRvcmVsb2FkIGFuZCB0aGUgY29tcGFyZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlcyBpcyBkb25lIGltbWVkaWF0ZWx5IG9yIGFmdGVyIHRoZSBlbmQgb2YgY3VycmVudCBwZXJpb2QuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGEgdmFsdWUgb2YgQHJlZiBMUFRJTV9VcGRhdGluZ19Nb2RlICovCisgIHVpbnQzMl90ICAgICAgICAgICAgICAgICAgICAgVXBkYXRlTW9kZTsgICAgICAgIC8qITwgU3BlY2lmaWVzIHdoZXRoZXIgdGhlIHVwZGF0ZSBvZiB0aGUgYXV0b3JlbG9hZCBhbmQgdGhlIGNvbXBhcmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzIGlzIGRvbmUgaW1tZWRpYXRlbHkgb3IgYWZ0ZXIgdGhlIGVuZCBvZiBjdXJyZW50IHBlcmlvZC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGEgdmFsdWUgb2YgQHJlZiBMUFRJTV9VcGRhdGluZ19Nb2RlICovCiAKLSAgdWludDMyX3QgICAgICAgICAgICAgICAgICAgICBDb3VudGVyU291cmNlOyAgICAgICAvKiE8IFNwZWNpZmllcyB3aGV0aGVyIHRoZSBjb3VudGVyIGlzIGluY3JlbWVudGVkIGVhY2ggaW50ZXJuYWwgZXZlbnQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvciBlYWNoIGV4dGVybmFsIGV2ZW50LgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhIHZhbHVlIG9mIEByZWYgTFBUSU1fQ291bnRlcl9Tb3VyY2UgKi8KKyAgdWludDMyX3QgICAgICAgICAgICAgICAgICAgICBDb3VudGVyU291cmNlOyAgICAgLyohPCBTcGVjaWZpZXMgd2hldGhlciB0aGUgY291bnRlciBpcyBpbmNyZW1lbnRlZCBlYWNoIGludGVybmFsIGV2ZW50CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yIGVhY2ggZXh0ZXJuYWwgZXZlbnQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhIHZhbHVlIG9mIEByZWYgTFBUSU1fQ291bnRlcl9Tb3VyY2UgKi8KIH0gTFBUSU1fSW5pdFR5cGVEZWY7CiAKIC8qKgpAQCAtODI5LDUgKzgyOCwzIEBACiAjZW5kaWYKIAogI2VuZGlmIC8qIFNUTTMyRjd4eF9IQUxfTFBUSU1fSCAqLwotCi0vKioqKioqKioqKioqKioqKioqKioqKioqIChDKSBDT1BZUklHSFQgU1RNaWNyb2VsZWN0cm9uaWNzICoqKioqRU5EIE9GIEZJTEUqKioqLwpkaWZmIC0tZ2l0IGEvSW5jL3N0bTMyZjd4eF9oYWxfbHRkYy5oIGIvSW5jL3N0bTMyZjd4eF9oYWxfbHRkYy5oCmluZGV4IDBkNjhmMjEuLjBmMDNkMjkgMTAwNjQ0Ci0tLSBhL0luYy9zdG0zMmY3eHhfaGFsX2x0ZGMuaAorKysgYi9JbmMvc3RtMzJmN3h4X2hhbF9sdGRjLmgKQEAgLTYsMTMgKzYsMTIgQEAKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgICogQGF0dGVudGlvbgogICAqCi0gICogPGgyPjxjZW50ZXI+JmNvcHk7IENvcHlyaWdodCAoYykgMjAxNyBTVE1pY3JvZWxlY3Ryb25pY3MuCi0gICogQWxsIHJpZ2h0cyByZXNlcnZlZC48L2NlbnRlcj48L2gyPgorICAqIENvcHlyaWdodCAoYykgMjAxNyBTVE1pY3JvZWxlY3Ryb25pY3MuCisgICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgKgotICAqIFRoaXMgc29mdHdhcmUgY29tcG9uZW50IGlzIGxpY2Vuc2VkIGJ5IFNUIHVuZGVyIEJTRCAzLUNsYXVzZSBsaWNlbnNlLAotICAqIHRoZSAiTGljZW5zZSI7IFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUKLSAgKiBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQ6Ci0gICogICAgICAgICAgICAgICAgICAgICAgICBvcGVuc291cmNlLm9yZy9saWNlbnNlcy9CU0QtMy1DbGF1c2UKKyAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIHVuZGVyIHRlcm1zIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUKKyAgKiBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb2Z0d2FyZSBjb21wb25lbnQuCisgICogSWYgbm8gTElDRU5TRSBmaWxlIGNvbWVzIHdpdGggdGhpcyBzb2Z0d2FyZSwgaXQgaXMgcHJvdmlkZWQgQVMtSVMuCiAgICoKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgICovCkBAIC0yNSwxMSArMjQsMTAgQEAKIGV4dGVybiAiQyIgewogI2VuZGlmCiAKLSNpZiBkZWZpbmVkIChMVERDKQotCiAvKiBJbmNsdWRlcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogI2luY2x1ZGUgInN0bTMyZjd4eF9oYWxfZGVmLmgiCiAKKyNpZiBkZWZpbmVkIChMVERDKQogCiAvKiogQGFkZHRvZ3JvdXAgU1RNMzJGN3h4X0hBTF9Ecml2ZXIKICAgKiBAewpAQCAtNjg1LDUgKzY4MywzIEBACiAjZW5kaWYKIAogI2VuZGlmIC8qIFNUTTMyRjd4eF9IQUxfTFREQ19IICovCi0KLS8qKioqKioqKioqKioqKioqKioqKioqKiogKEMpIENPUFlSSUdIVCBTVE1pY3JvZWxlY3Ryb25pY3MgKioqKipFTkQgT0YgRklMRSoqKiovCmRpZmYgLS1naXQgYS9JbmMvc3RtMzJmN3h4X2hhbF9sdGRjX2V4LmggYi9JbmMvc3RtMzJmN3h4X2hhbF9sdGRjX2V4LmgKaW5kZXggZjEzNzEyZS4uNTgyMDc1ZCAxMDA2NDQKLS0tIGEvSW5jL3N0bTMyZjd4eF9oYWxfbHRkY19leC5oCisrKyBiL0luYy9zdG0zMmY3eHhfaGFsX2x0ZGNfZXguaApAQCAtNiwxMyArNiwxMiBAQAogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgKiBAYXR0ZW50aW9uCiAgICoKLSAgKiA8aDI+PGNlbnRlcj4mY29weTsgQ29weXJpZ2h0IChjKSAyMDE3IFNUTWljcm9lbGVjdHJvbmljcy4KLSAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLjwvY2VudGVyPjwvaDI+CisgICogQ29weXJpZ2h0IChjKSAyMDE3IFNUTWljcm9lbGVjdHJvbmljcy4KKyAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAqCi0gICogVGhpcyBzb2Z0d2FyZSBjb21wb25lbnQgaXMgbGljZW5zZWQgYnkgU1QgdW5kZXIgQlNEIDMtQ2xhdXNlIGxpY2Vuc2UsCi0gICogdGhlICJMaWNlbnNlIjsgWW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZQotICAqIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdDoKLSAgKiAgICAgICAgICAgICAgICAgICAgICAgIG9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0JTRC0zLUNsYXVzZQorICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgdW5kZXIgdGVybXMgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZQorICAqIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvZnR3YXJlIGNvbXBvbmVudC4KKyAgKiBJZiBubyBMSUNFTlNFIGZpbGUgY29tZXMgd2l0aCB0aGlzIHNvZnR3YXJlLCBpdCBpcyBwcm92aWRlZCBBUy1JUy4KICAgKgogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgKi8KQEAgLTI1LDEwICsyNCwxMSBAQAogZXh0ZXJuICJDIiB7CiAjZW5kaWYKIAotI2lmIGRlZmluZWQgKExUREMpICYmIGRlZmluZWQgKERTSSkKLQogLyogSW5jbHVkZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KICNpbmNsdWRlICJzdG0zMmY3eHhfaGFsX2RlZi5oIgorCisjaWYgZGVmaW5lZCAoTFREQykgJiYgZGVmaW5lZCAoRFNJKQorCiAjaW5jbHVkZSAic3RtMzJmN3h4X2hhbF9kc2kuaCIKIAogLyoqIEBhZGR0b2dyb3VwIFNUTTMyRjd4eF9IQUxfRHJpdmVyCkBAIC04MSw1ICs4MSwzIEBACiAjZW5kaWYKIAogI2VuZGlmIC8qIFNUTTMyRjd4eF9IQUxfTFREQ19FWF9IICovCi0KLS8qKioqKioqKioqKioqKioqKioqKioqKiogKEMpIENPUFlSSUdIVCBTVE1pY3JvZWxlY3Ryb25pY3MgKioqKipFTkQgT0YgRklMRSoqKiovCmRpZmYgLS1naXQgYS9JbmMvc3RtMzJmN3h4X2hhbF9tZGlvcy5oIGIvSW5jL3N0bTMyZjd4eF9oYWxfbWRpb3MuaAppbmRleCA1ZWY3NzZjLi4yZTMzMWUzIDEwMDY0NAotLS0gYS9JbmMvc3RtMzJmN3h4X2hhbF9tZGlvcy5oCisrKyBiL0luYy9zdG0zMmY3eHhfaGFsX21kaW9zLmgKQEAgLTUsMTQgKzUsMTMgQEAKICAgKiBAYnJpZWYgICBIZWFkZXIgZmlsZSBvZiBNRElPUyBIQUwgbW9kdWxlLgogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgKiBAYXR0ZW50aW9uCi0gICAqCi0gICogPGgyPjxjZW50ZXI+JmNvcHk7IENvcHlyaWdodCAoYykgMjAxNyBTVE1pY3JvZWxlY3Ryb25pY3MuCi0gICogQWxsIHJpZ2h0cyByZXNlcnZlZC48L2NlbnRlcj48L2gyPgogICAqCi0gICogVGhpcyBzb2Z0d2FyZSBjb21wb25lbnQgaXMgbGljZW5zZWQgYnkgU1QgdW5kZXIgQlNEIDMtQ2xhdXNlIGxpY2Vuc2UsCi0gICogdGhlICJMaWNlbnNlIjsgWW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZQotICAqIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdDoKLSAgKiAgICAgICAgICAgICAgICAgICAgICAgIG9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0JTRC0zLUNsYXVzZQorICAqIENvcHlyaWdodCAoYykgMjAxNyBTVE1pY3JvZWxlY3Ryb25pY3MuCisgICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAgKgorICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgdW5kZXIgdGVybXMgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZQorICAqIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvZnR3YXJlIGNvbXBvbmVudC4KKyAgKiBJZiBubyBMSUNFTlNFIGZpbGUgY29tZXMgd2l0aCB0aGlzIHNvZnR3YXJlLCBpdCBpcyBwcm92aWRlZCBBUy1JUy4KICAgKgogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgKi8KQEAgLTU2Niw0ICs1NjUsMyBAQAogCiAjZW5kaWYgLyogX19TVE0zMkY3eHhfSEFMX01ESU9TX0ggKi8KIAotLyoqKioqKioqKioqKioqKioqKioqKioqKiAoQykgQ09QWVJJR0hUIFNUTWljcm9lbGVjdHJvbmljcyAqKioqKkVORCBPRiBGSUxFKioqKi8KZGlmZiAtLWdpdCBhL0luYy9zdG0zMmY3eHhfaGFsX21tYy5oIGIvSW5jL3N0bTMyZjd4eF9oYWxfbW1jLmgKaW5kZXggMDYzNWZmZi4uZmM2MGI5ZSAxMDA2NDQKLS0tIGEvSW5jL3N0bTMyZjd4eF9oYWxfbW1jLmgKKysrIGIvSW5jL3N0bTMyZjd4eF9oYWxfbW1jLmgKQEAgLTYsMTMgKzYsMTIgQEAKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgICogQGF0dGVudGlvbgogICAqCi0gICogPGgyPjxjZW50ZXI+JmNvcHk7IENvcHlyaWdodCAoYykgMjAxNyBTVE1pY3JvZWxlY3Ryb25pY3MuCi0gICogQWxsIHJpZ2h0cyByZXNlcnZlZC48L2NlbnRlcj48L2gyPgorICAqIENvcHlyaWdodCAoYykgMjAxNyBTVE1pY3JvZWxlY3Ryb25pY3MuCisgICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgKgotICAqIFRoaXMgc29mdHdhcmUgY29tcG9uZW50IGlzIGxpY2Vuc2VkIGJ5IFNUIHVuZGVyIEJTRCAzLUNsYXVzZSBsaWNlbnNlLAotICAqIHRoZSAiTGljZW5zZSI7IFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUKLSAgKiBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQ6Ci0gICogICAgICAgICAgICAgICAgICAgICAgIG9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0JTRC0zLUNsYXVzZQorICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgdW5kZXIgdGVybXMgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZQorICAqIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvZnR3YXJlIGNvbXBvbmVudC4KKyAgKiBJZiBubyBMSUNFTlNFIGZpbGUgY29tZXMgd2l0aCB0aGlzIHNvZnR3YXJlLCBpdCBpcyBwcm92aWRlZCBBUy1JUy4KICAgKgogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgKi8gCkBAIC0xNDUsNiArMTQ0LDggQEAKICAgCiAgIHVpbnQzMl90ICAgICAgICAgICAgICAgICAgICAgQ0lEWzRVXTsgICAgICAgICAgLyohPCBNTUMgY2FyZCBpZGVudGlmaWNhdGlvbiBudW1iZXIgdGFibGUgKi8KICAgCisgIHVpbnQzMl90ICAgICAgICAgICAgICAgICAgICAgRXh0X0NTRFsxMjhdOworCiAjaWYgZGVmaW5lZCAoVVNFX0hBTF9NTUNfUkVHSVNURVJfQ0FMTEJBQ0tTKSAmJiAoVVNFX0hBTF9NTUNfUkVHSVNURVJfQ0FMTEJBQ0tTID09IDFVKQogICB2b2lkICgqIFR4Q3BsdENhbGxiYWNrKSAgICAgICAgICAgICAgICAgKHN0cnVjdCBfX01NQ19IYW5kbGVUeXBlRGVmICpobW1jKTsKICAgdm9pZCAoKiBSeENwbHRDYWxsYmFjaykgICAgICAgICAgICAgICAgIChzdHJ1Y3QgX19NTUNfSGFuZGxlVHlwZURlZiAqaG1tYyk7CkBAIC0zMzQsMTAgKzMzNSwxMiBAQAogLyoqIAogICAqIEBicmllZiAKICAgKi8KLSNkZWZpbmUgTU1DX0hJR0hfVk9MVEFHRV9SQU5HRSAgICAgICAgIDB4ODBGRjgwMDBVICAvKiE8IFZBTFVFIE9GIEFSR1VNRU5UICAgICAgICAgICAgKi8KLSNkZWZpbmUgTU1DX0RVQUxfVk9MVEFHRV9SQU5HRSAgICAgICAgIDB4ODBGRjgwODBVICAvKiE8IFZBTFVFIE9GIEFSR1VNRU5UICAgICAgICAgICAgKi8KLSNkZWZpbmUgZU1NQ19ISUdIX1ZPTFRBR0VfUkFOR0UgICAgICAgIDB4QzBGRjgwMDBVICAvKiE8IGZvciBlTU1DID4gMkdiIHNlY3RvciBtb2RlICAgKi8KLSNkZWZpbmUgZU1NQ19EVUFMX1ZPTFRBR0VfUkFOR0UgICAgICAgIDB4QzBGRjgwODBVICAvKiE8IGZvciBlTU1DID4gMkdiIHNlY3RvciBtb2RlICAgKi8KKyNkZWZpbmUgTU1DX0hJR0hfVk9MVEFHRV9SQU5HRSAgICAgICAgIDB4ODBGRjgwMDBVICAvKiE8IEhpZ2ggdm9sdGFnZSBpbiBieXRlIG1vZGUgICAgKi8KKyNkZWZpbmUgTU1DX0RVQUxfVk9MVEFHRV9SQU5HRSAgICAgICAgIDB4ODBGRjgwODBVICAvKiE8IER1YWwgdm9sdGFnZSBpbiBieXRlIG1vZGUgICAgKi8KKyNkZWZpbmUgTU1DX0xPV19WT0xUQUdFX1JBTkdFICAgICAgICAgIDB4ODAwMDAwODBVICAvKiE8IExvdyB2b2x0YWdlIGluIGJ5dGUgbW9kZSAgICAgKi8KKyNkZWZpbmUgRU1NQ19ISUdIX1ZPTFRBR0VfUkFOR0UgICAgICAgIDB4QzBGRjgwMDBVICAvKiE8IEhpZ2ggdm9sdGFnZSBpbiBzZWN0b3IgbW9kZSAgKi8KKyNkZWZpbmUgRU1NQ19EVUFMX1ZPTFRBR0VfUkFOR0UgICAgICAgIDB4QzBGRjgwODBVICAvKiE8IER1YWwgdm9sdGFnZSBpbiBzZWN0b3IgbW9kZSAgKi8KKyNkZWZpbmUgRU1NQ19MT1dfVk9MVEFHRV9SQU5HRSAgICAgICAgIDB4QzAwMDAwODBVICAvKiE8IExvdyB2b2x0YWdlIGluIHNlY3RvciBtb2RlICAgKi8KICNkZWZpbmUgTU1DX0lOVkFMSURfVk9MVEFHRV9SQU5HRSAgICAgIDB4MDAwMUZGMDFVIAogLyoqCiAgICogQH0KQEAgLTYzNiw2ICs2MzksNyBAQAogSEFMX1N0YXR1c1R5cGVEZWYgSEFMX01NQ19HZXRDYXJkQ0lEKE1NQ19IYW5kbGVUeXBlRGVmICpobW1jLCBIQUxfTU1DX0NhcmRDSURUeXBlRGVmICpwQ0lEKTsKIEhBTF9TdGF0dXNUeXBlRGVmIEhBTF9NTUNfR2V0Q2FyZENTRChNTUNfSGFuZGxlVHlwZURlZiAqaG1tYywgSEFMX01NQ19DYXJkQ1NEVHlwZURlZiAqcENTRCk7CiBIQUxfU3RhdHVzVHlwZURlZiBIQUxfTU1DX0dldENhcmRJbmZvKE1NQ19IYW5kbGVUeXBlRGVmICpobW1jLCBIQUxfTU1DX0NhcmRJbmZvVHlwZURlZiAqcENhcmRJbmZvKTsKK0hBTF9TdGF0dXNUeXBlRGVmIEhBTF9NTUNfR2V0Q2FyZEV4dENTRChNTUNfSGFuZGxlVHlwZURlZiAqaG1tYywgdWludDMyX3QgKnBFeHRDU0QsIHVpbnQzMl90IFRpbWVvdXQpOwogLyoqCiAgICogQH0KICAgKi8KQEAgLTY0OSw3ICs2NTMsNyBAQAogICAqIEB9CiAgICovCiAKLS8qKiBAZGVmZ3JvdXAgTU1DX0V4cG9ydGVkX0Z1bmN0aW9uc19Hcm91cDYgUGVyaW9oZXJhbCBBYm9ydCBtYW5hZ2VtZW50CisvKiogQGRlZmdyb3VwIE1NQ19FeHBvcnRlZF9GdW5jdGlvbnNfR3JvdXA2IFBlcmlwaGVyYWwgQWJvcnQgbWFuYWdlbWVudAogICAqIEB7CiAgICovCiBIQUxfU3RhdHVzVHlwZURlZiBIQUxfTU1DX0Fib3J0KE1NQ19IYW5kbGVUeXBlRGVmICpobW1jKTsKQEAgLTc0MSw1ICs3NDUsMyBAQAogI2VuZGlmIC8qIFNETU1DMSAqLwogCiAjZW5kaWYgLyogU1RNMzJGN3h4X0hBTF9NTUNfSCAqLyAKLQotLyoqKioqKioqKioqKioqKioqKioqKioqKiAoQykgQ09QWVJJR0hUIFNUTWljcm9lbGVjdHJvbmljcyAqKioqKkVORCBPRiBGSUxFKioqKi8KZGlmZiAtLWdpdCBhL0luYy9zdG0zMmY3eHhfaGFsX25hbmQuaCBiL0luYy9zdG0zMmY3eHhfaGFsX25hbmQuaAppbmRleCAxZDIyNWNmLi41N2UzNThjIDEwMDY0NAotLS0gYS9JbmMvc3RtMzJmN3h4X2hhbF9uYW5kLmgKKysrIGIvSW5jL3N0bTMyZjd4eF9oYWxfbmFuZC5oCkBAIC02LDI1ICs2LDI1IEBACiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAqIEBhdHRlbnRpb24KICAgKgotICAqIDxoMj48Y2VudGVyPiZjb3B5OyBDb3B5cmlnaHQgKGMpIDIwMTcgU1RNaWNyb2VsZWN0cm9uaWNzLgotICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuPC9jZW50ZXI+PC9oMj4KKyAgKiBDb3B5cmlnaHQgKGMpIDIwMTcgU1RNaWNyb2VsZWN0cm9uaWNzLgorICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICoKLSAgKiBUaGlzIHNvZnR3YXJlIGNvbXBvbmVudCBpcyBsaWNlbnNlZCBieSBTVCB1bmRlciBCU0QgMy1DbGF1c2UgbGljZW5zZSwKLSAgKiB0aGUgIkxpY2Vuc2UiOyBZb3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlCi0gICogTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0OgotICAqICAgICAgICAgICAgICAgICAgICAgICAgb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvQlNELTMtQ2xhdXNlCisgICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCB1bmRlciB0ZXJtcyB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlCisgICogaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc29mdHdhcmUgY29tcG9uZW50LgorICAqIElmIG5vIExJQ0VOU0UgZmlsZSBjb21lcyB3aXRoIHRoaXMgc29mdHdhcmUsIGl0IGlzIHByb3ZpZGVkIEFTLUlTLgogICAqCiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAqLwogCiAvKiBEZWZpbmUgdG8gcHJldmVudCByZWN1cnNpdmUgaW5jbHVzaW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwotI2lmbmRlZiBfX1NUTTMyRjd4eF9IQUxfTkFORF9ICi0jZGVmaW5lIF9fU1RNMzJGN3h4X0hBTF9OQU5EX0gKKyNpZm5kZWYgU1RNMzJGN3h4X0hBTF9OQU5EX0gKKyNkZWZpbmUgU1RNMzJGN3h4X0hBTF9OQU5EX0gKIAogI2lmZGVmIF9fY3BsdXNwbHVzCi0gZXh0ZXJuICJDIiB7CitleHRlcm4gIkMiIHsKICNlbmRpZgogCisKIC8qIEluY2x1ZGVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAjaW5jbHVkZSAic3RtMzJmN3h4X2xsX2ZtYy5oIgogCkBAIC0zNCw3ICszNCw3IEBACiAKIC8qKiBAYWRkdG9ncm91cCBOQU5ECiAgICogQHsKLSAgKi8gCisgICovCiAKIC8qIEV4cG9ydGVkIHR5cGVkZWYgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAvKiBFeHBvcnRlZCB0eXBlcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwpAQCAtNDIsNyArNDIsNyBAQAogICAqIEB7CiAgICovCiAKLS8qKiAKKy8qKgogICAqIEBicmllZiAgSEFMIE5BTkQgU3RhdGUgc3RydWN0dXJlcyBkZWZpbml0aW9uCiAgICovCiB0eXBlZGVmIGVudW0KQEAgLTUxLDI4ICs1MSwyOCBAQAogICBIQUxfTkFORF9TVEFURV9SRUFEWSAgICAgPSAweDAxVSwgIC8qITwgTkFORCBpbml0aWFsaXplZCBhbmQgcmVhZHkgZm9yIHVzZSAgICovCiAgIEhBTF9OQU5EX1NUQVRFX0JVU1kgICAgICA9IDB4MDJVLCAgLyohPCBOQU5EIGludGVybmFsIHByb2Nlc3MgaXMgb25nb2luZyAgICAgKi8KICAgSEFMX05BTkRfU1RBVEVfRVJST1IgICAgID0gMHgwM1UgICAvKiE8IE5BTkQgZXJyb3Igc3RhdGUgICAgICAgICAgICAgICAgICAgICAqLwotfUhBTF9OQU5EX1N0YXRlVHlwZURlZjsKLSAgIAotLyoqIAorfSBIQUxfTkFORF9TdGF0ZVR5cGVEZWY7CisKKy8qKgogICAqIEBicmllZiAgTkFORCBNZW1vcnkgZWxlY3Ryb25pYyBzaWduYXR1cmUgU3RydWN0dXJlIGRlZmluaXRpb24KICAgKi8KIHR5cGVkZWYgc3RydWN0CiB7CiAgIC8qPCEgTkFORCBtZW1vcnkgZWxlY3Ryb25pYyBzaWduYXR1cmUgbWFrZXIgYW5kIGRldmljZSBJRHMgKi8KIAotICB1aW50OF90IE1ha2VyX0lkOyAKKyAgdWludDhfdCBNYWtlcl9JZDsKIAogICB1aW50OF90IERldmljZV9JZDsKIAogICB1aW50OF90IFRoaXJkX0lkOwogCiAgIHVpbnQ4X3QgRm91cnRoX0lkOwotfU5BTkRfSURUeXBlRGVmOworfSBOQU5EX0lEVHlwZURlZjsKIAotLyoqIAorLyoqCiAgICogQGJyaWVmICBOQU5EIE1lbW9yeSBhZGRyZXNzIFN0cnVjdHVyZSBkZWZpbml0aW9uCiAgICovCi10eXBlZGVmIHN0cnVjdCAKK3R5cGVkZWYgc3RydWN0CiB7CiAgIHVpbnQxNl90IFBhZ2U7ICAgLyohPCBOQU5EIG1lbW9yeSBQYWdlIGFkZHJlc3MgICovCiAKQEAgLTgwLDM2ICs4MCwzNiBAQAogCiAgIHVpbnQxNl90IEJsb2NrOyAgLyohPCBOQU5EIG1lbW9yeSBCbG9jayBhZGRyZXNzICovCiAKLX1OQU5EX0FkZHJlc3NUeXBlRGVmOworfSBOQU5EX0FkZHJlc3NUeXBlRGVmOwogCi0vKiogCisvKioKICAgKiBAYnJpZWYgIE5BTkQgTWVtb3J5IGluZm8gU3RydWN0dXJlIGRlZmluaXRpb24KLSAgKi8gCisgICovCiB0eXBlZGVmIHN0cnVjdAogewotICB1aW50MzJfdCAgICAgICAgUGFnZVNpemU7ICAgICAgICAgICAgICAvKiE8IE5BTkQgbWVtb3J5IHBhZ2UgKHdpdGhvdXQgc3BhcmUgYXJlYSkgc2l6ZSBtZWFzdXJlZCBpbiBieXRlcyAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgOCBiaXRzIGFkZHJlc3Npbmcgb3Igd29yZHMgZm9yIDE2IGJpdHMgYWRkcmVzc2luZyAgICAgICAgICAgICovCisgIHVpbnQzMl90ICAgICAgICBQYWdlU2l6ZTsgICAgICAgICAgICAgIC8qITwgTkFORCBtZW1vcnkgcGFnZSAod2l0aG91dCBzcGFyZSBhcmVhKSBzaXplIG1lYXN1cmVkIGluIGJ5dGVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIDggYml0cyBhZGRyZXNzaW5nIG9yIHdvcmRzIGZvciAxNiBiaXRzIGFkZHJlc3NpbmcgICAgICAgICAgICAgKi8KIAotICB1aW50MzJfdCAgICAgICAgU3BhcmVBcmVhU2l6ZTsgICAgICAgICAvKiE8IE5BTkQgbWVtb3J5IHNwYXJlIGFyZWEgc2l6ZSBtZWFzdXJlZCBpbiBieXRlcyAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgOCBiaXRzIGFkZHJlc3Npbmcgb3Igd29yZHMgZm9yIDE2IGJpdHMgYWRkcmVzc2luZyAgICAgICAgICAgICovCi0gIAorICB1aW50MzJfdCAgICAgICAgU3BhcmVBcmVhU2l6ZTsgICAgICAgICAvKiE8IE5BTkQgbWVtb3J5IHNwYXJlIGFyZWEgc2l6ZSBtZWFzdXJlZCBpbiBieXRlcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciA4IGJpdHMgYWRkcmVzc2luZyBvciB3b3JkcyBmb3IgMTYgYml0cyBhZGRyZXNzaW5nICAgICAgICAgICAgICovCisKICAgdWludDMyX3QgICAgICAgIEJsb2NrU2l6ZTsgICAgICAgICAgICAgLyohPCBOQU5EIG1lbW9yeSBibG9jayBzaXplIG1lYXN1cmVkIGluIG51bWJlciBvZiBwYWdlcyAgICAgICAgICAgICAgICovCiAKICAgdWludDMyX3QgICAgICAgIEJsb2NrTmJyOyAgICAgICAgICAgICAgLyohPCBOQU5EIG1lbW9yeSBudW1iZXIgb2YgdG90YWwgYmxvY2tzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0gICAgIAorCiAgIHVpbnQzMl90ICAgICAgICBQbGFuZU5icjsgICAgICAgICAgICAgIC8qITwgTkFORCBtZW1vcnkgbnVtYmVyIG9mIHBsYW5lcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwogCiAgIHVpbnQzMl90ICAgICAgICBQbGFuZVNpemU7ICAgICAgICAgICAgIC8qITwgTkFORCBtZW1vcnkgem9uZSBzaXplIG1lYXN1cmVkIGluIG51bWJlciBvZiBibG9ja3MgICAgICAgICAgICAgICAqLwogCi0gIEZ1bmN0aW9uYWxTdGF0ZSBFeHRyYUNvbW1hbmRFbmFibGU7ICAgIC8qITwgTkFORCBleHRyYSBjb21tYW5kIG5lZWRlZCBmb3IgUGFnZSByZWFkaW5nIG1vZGUuIFRoaXMgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1ldGVyIGlzIG1hbmRhdG9yeSBmb3Igc29tZSBOQU5EIHBhcnRzIGFmdGVyIHRoZSByZWFkIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQgKE5BTkRfQ01EX0FSRUFfVFJVRTEpIGFuZCBiZWZvcmUgREFUQSByZWFkaW5nIHNlcXVlbmNlLiAKKyAgRnVuY3Rpb25hbFN0YXRlIEV4dHJhQ29tbWFuZEVuYWJsZTsgICAgLyohPCBOQU5EIGV4dHJhIGNvbW1hbmQgbmVlZGVkIGZvciBQYWdlIHJlYWRpbmcgbW9kZS4gVGhpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtZXRlciBpcyBtYW5kYXRvcnkgZm9yIHNvbWUgTkFORCBwYXJ0cyBhZnRlciB0aGUgcmVhZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQgKE5BTkRfQ01EX0FSRUFfVFJVRTEpIGFuZCBiZWZvcmUgREFUQSByZWFkaW5nIHNlcXVlbmNlLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEV4YW1wbGU6IFRvc2hpYmEgVEhUSDU4QllHM1MwSEJBSTYuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY291bGQgYmUgRU5BQkxFIG9yIERJU0FCTEUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQbGVhc2UgY2hlY2sgdGhlIFJlYWQgTW9kZSBzZXF1bmVjZSBpbiB0aGUgTkFORCBkZXZpY2UgZGF0YXNoZWV0ICovCi19TkFORF9EZXZpY2VDb25maWdUeXBlRGVmOyAKK30gTkFORF9EZXZpY2VDb25maWdUeXBlRGVmOwogCi0vKiogCisvKioKICAgKiBAYnJpZWYgIE5BTkQgaGFuZGxlIFN0cnVjdHVyZSBkZWZpbml0aW9uCiAgICovCiAjaWYgKFVTRV9IQUxfTkFORF9SRUdJU1RFUl9DQUxMQkFDS1MgPT0gMSkKQEAgLTExOSw3ICsxMTksNyBAQAogI2VuZGlmIC8qIFVTRV9IQUxfTkFORF9SRUdJU1RFUl9DQUxMQkFDS1MgICovCiB7CiAgIEZNQ19OQU5EX1R5cGVEZWYgICAgICAgICAgICAgICAqSW5zdGFuY2U7ICAvKiE8IFJlZ2lzdGVyIGJhc2UgYWRkcmVzcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0gIAorCiAgIEZNQ19OQU5EX0luaXRUeXBlRGVmICAgICAgICAgICBJbml0OyAgICAgICAvKiE8IE5BTkQgZGV2aWNlIGNvbnRyb2wgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzICAgICAgICAgICovCiAKICAgSEFMX0xvY2tUeXBlRGVmICAgICAgICAgICAgICAgIExvY2s7ICAgICAgIC8qITwgTkFORCBsb2NraW5nIG9iamVjdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KQEAgLTEyOSwxMCArMTI5LDEwIEBACiAgIE5BTkRfRGV2aWNlQ29uZmlnVHlwZURlZiAgICAgICBDb25maWc7ICAgICAvKiE8IE5BTkQgcGh1c2ljYWwgY2hhcmFjdGVyaXN0aWMgaW5mb3JtYXRpb24gc3RydWN0dXJlICAgICovCiAKICNpZiAoVVNFX0hBTF9OQU5EX1JFR0lTVEVSX0NBTExCQUNLUyA9PSAxKQotICB2b2lkICAoKiBNc3BJbml0Q2FsbGJhY2spICAgICAgICAoIHN0cnVjdCBfX05BTkRfSGFuZGxlVHlwZURlZiAqIGhuYW5kKTsgICAgLyohPCBOQU5EIE1zcCBJbml0IGNhbGxiYWNrICAgICAgICAgICAgICAqLwotICB2b2lkICAoKiBNc3BEZUluaXRDYWxsYmFjaykgICAgICAoIHN0cnVjdCBfX05BTkRfSGFuZGxlVHlwZURlZiAqIGhuYW5kKTsgICAgLyohPCBOQU5EIE1zcCBEZUluaXQgY2FsbGJhY2sgICAgICAgICAgICAqLwotICB2b2lkICAoKiBJdENhbGxiYWNrKSAgICAgICAgICAgICAoIHN0cnVjdCBfX05BTkRfSGFuZGxlVHlwZURlZiAqIGhuYW5kKTsgICAgLyohPCBOQU5EIElUIGNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAqLwotI2VuZGlmCisgIHZvaWQgKCogTXNwSW5pdENhbGxiYWNrKShzdHJ1Y3QgX19OQU5EX0hhbmRsZVR5cGVEZWYgKmhuYW5kKTsgICAgICAgICAgICAgICAvKiE8IE5BTkQgTXNwIEluaXQgY2FsbGJhY2sgICAgICAgICAgICAgICovCisgIHZvaWQgKCogTXNwRGVJbml0Q2FsbGJhY2spKHN0cnVjdCBfX05BTkRfSGFuZGxlVHlwZURlZiAqaG5hbmQpOyAgICAgICAgICAgICAvKiE8IE5BTkQgTXNwIERlSW5pdCBjYWxsYmFjayAgICAgICAgICAgICovCisgIHZvaWQgKCogSXRDYWxsYmFjaykoc3RydWN0IF9fTkFORF9IYW5kbGVUeXBlRGVmICpobmFuZCk7ICAgICAgICAgICAgICAgICAgICAvKiE8IE5BTkQgSVQgY2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICovCisjZW5kaWYgLyogVVNFX0hBTF9OQU5EX1JFR0lTVEVSX0NBTExCQUNLUyAqLwogfSBOQU5EX0hhbmRsZVR5cGVEZWY7CiAKICNpZiAoVVNFX0hBTF9OQU5EX1JFR0lTVEVSX0NBTExCQUNLUyA9PSAxKQpAQCAtMTQ0LDEzICsxNDQsMTMgQEAKICAgSEFMX05BTkRfTVNQX0lOSVRfQ0JfSUQgICAgICAgPSAweDAwVSwgIC8qITwgTkFORCBNc3BJbml0IENhbGxiYWNrIElEICAgICAgICAgICovCiAgIEhBTF9OQU5EX01TUF9ERUlOSVRfQ0JfSUQgICAgID0gMHgwMVUsICAvKiE8IE5BTkQgTXNwRGVJbml0IENhbGxiYWNrIElEICAgICAgICAqLwogICBIQUxfTkFORF9JVF9DQl9JRCAgICAgICAgICAgICA9IDB4MDJVICAgLyohPCBOQU5EIElUIENhbGxiYWNrIElEICAgICAgICAgICAgICAgKi8KLX1IQUxfTkFORF9DYWxsYmFja0lEVHlwZURlZjsKK30gSEFMX05BTkRfQ2FsbGJhY2tJRFR5cGVEZWY7CiAKIC8qKgogICAqIEBicmllZiAgSEFMIE5BTkQgQ2FsbGJhY2sgcG9pbnRlciBkZWZpbml0aW9uCiAgICovCiB0eXBlZGVmIHZvaWQgKCpwTkFORF9DYWxsYmFja1R5cGVEZWYpKE5BTkRfSGFuZGxlVHlwZURlZiAqaG5hbmQpOwotI2VuZGlmCisjZW5kaWYgLyogVVNFX0hBTF9OQU5EX1JFR0lTVEVSX0NBTExCQUNLUyAqLwogCiAvKioKICAgKiBAfQpAQCAtMTU5LDggKzE1OSw4IEBACiAvKiBFeHBvcnRlZCBjb25zdGFudHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogLyogRXhwb3J0ZWQgbWFjcm8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KIC8qKiBAZGVmZ3JvdXAgTkFORF9FeHBvcnRlZF9NYWNyb3MgTkFORCBFeHBvcnRlZCBNYWNyb3MKLSAqIEB7Ci0gKi8gCisgICogQHsKKyAgKi8KIAogLyoqIEBicmllZiBSZXNldCBOQU5EIGhhbmRsZSBzdGF0ZQogICAqIEBwYXJhbSAgX19IQU5ETEVfXyBzcGVjaWZpZXMgdGhlIE5BTkQgaGFuZGxlLgpAQCAtMTc0LDcgKzE3NCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSB3aGlsZSgwKQogI2Vsc2UKICNkZWZpbmUgX19IQUxfTkFORF9SRVNFVF9IQU5ETEVfU1RBVEUoX19IQU5ETEVfXykgKChfX0hBTkRMRV9fKS0+U3RhdGUgPSBIQUxfTkFORF9TVEFURV9SRVNFVCkKLSNlbmRpZgorI2VuZGlmIC8qIFVTRV9IQUxfTkFORF9SRUdJU1RFUl9DQUxMQkFDS1MgKi8KIAogLyoqCiAgICogQH0KQEAgLTE4NCwxMyArMTg0LDE0IEBACiAvKiogQGFkZHRvZ3JvdXAgTkFORF9FeHBvcnRlZF9GdW5jdGlvbnMgTkFORCBFeHBvcnRlZCBGdW5jdGlvbnMKICAgKiBAewogICAqLwotICAgIAotLyoqIEBhZGR0b2dyb3VwIE5BTkRfRXhwb3J0ZWRfRnVuY3Rpb25zX0dyb3VwMSBJbml0aWFsaXphdGlvbiBhbmQgZGUtaW5pdGlhbGl6YXRpb24gZnVuY3Rpb25zIAorCisvKiogQGFkZHRvZ3JvdXAgTkFORF9FeHBvcnRlZF9GdW5jdGlvbnNfR3JvdXAxIEluaXRpYWxpemF0aW9uIGFuZCBkZS1pbml0aWFsaXphdGlvbiBmdW5jdGlvbnMKICAgKiBAewogICAqLwogCiAvKiBJbml0aWFsaXphdGlvbi9kZS1pbml0aWFsaXphdGlvbiBmdW5jdGlvbnMgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotSEFMX1N0YXR1c1R5cGVEZWYgIEhBTF9OQU5EX0luaXQoTkFORF9IYW5kbGVUeXBlRGVmICpobmFuZCwgRk1DX05BTkRfUENDX1RpbWluZ1R5cGVEZWYgKkNvbVNwYWNlX1RpbWluZywgRk1DX05BTkRfUENDX1RpbWluZ1R5cGVEZWYgKkF0dFNwYWNlX1RpbWluZyk7CitIQUxfU3RhdHVzVHlwZURlZiAgSEFMX05BTkRfSW5pdChOQU5EX0hhbmRsZVR5cGVEZWYgKmhuYW5kLCBGTUNfTkFORF9QQ0NfVGltaW5nVHlwZURlZiAqQ29tU3BhY2VfVGltaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRk1DX05BTkRfUENDX1RpbWluZ1R5cGVEZWYgKkF0dFNwYWNlX1RpbWluZyk7CiBIQUxfU3RhdHVzVHlwZURlZiAgSEFMX05BTkRfRGVJbml0KE5BTkRfSGFuZGxlVHlwZURlZiAqaG5hbmQpOwogCiBIQUxfU3RhdHVzVHlwZURlZiAgSEFMX05BTkRfQ29uZmlnRGV2aWNlKE5BTkRfSGFuZGxlVHlwZURlZiAqaG5hbmQsIE5BTkRfRGV2aWNlQ29uZmlnVHlwZURlZiAqcERldmljZUNvbmZpZyk7CkBAIC0yMDUsMjQgKzIwNiwzMSBAQAogLyoqCiAgICogQH0KICAgKi8KLSAgCi0vKiogQGFkZHRvZ3JvdXAgTkFORF9FeHBvcnRlZF9GdW5jdGlvbnNfR3JvdXAyIElucHV0IGFuZCBPdXRwdXQgZnVuY3Rpb25zIAorCisvKiogQGFkZHRvZ3JvdXAgTkFORF9FeHBvcnRlZF9GdW5jdGlvbnNfR3JvdXAyIElucHV0IGFuZCBPdXRwdXQgZnVuY3Rpb25zCiAgICogQHsKICAgKi8KIAogLyogSU8gb3BlcmF0aW9uIGZ1bmN0aW9ucyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQogSEFMX1N0YXR1c1R5cGVEZWYgIEhBTF9OQU5EX1Jlc2V0KE5BTkRfSGFuZGxlVHlwZURlZiAqaG5hbmQpOwogCi1IQUxfU3RhdHVzVHlwZURlZiAgSEFMX05BTkRfUmVhZF9QYWdlXzhiKE5BTkRfSGFuZGxlVHlwZURlZiAqaG5hbmQsIE5BTkRfQWRkcmVzc1R5cGVEZWYgKnBBZGRyZXNzLCB1aW50OF90ICpwQnVmZmVyLCB1aW50MzJfdCBOdW1QYWdlVG9SZWFkKTsKLUhBTF9TdGF0dXNUeXBlRGVmICBIQUxfTkFORF9Xcml0ZV9QYWdlXzhiKE5BTkRfSGFuZGxlVHlwZURlZiAqaG5hbmQsIE5BTkRfQWRkcmVzc1R5cGVEZWYgKnBBZGRyZXNzLCB1aW50OF90ICpwQnVmZmVyLCB1aW50MzJfdCBOdW1QYWdlVG9Xcml0ZSk7Ci1IQUxfU3RhdHVzVHlwZURlZiAgSEFMX05BTkRfUmVhZF9TcGFyZUFyZWFfOGIoTkFORF9IYW5kbGVUeXBlRGVmICpobmFuZCwgTkFORF9BZGRyZXNzVHlwZURlZiAqcEFkZHJlc3MsIHVpbnQ4X3QgKnBCdWZmZXIsIHVpbnQzMl90IE51bVNwYXJlQXJlYVRvUmVhZCk7Ci1IQUxfU3RhdHVzVHlwZURlZiAgSEFMX05BTkRfV3JpdGVfU3BhcmVBcmVhXzhiKE5BTkRfSGFuZGxlVHlwZURlZiAqaG5hbmQsIE5BTkRfQWRkcmVzc1R5cGVEZWYgKnBBZGRyZXNzLCB1aW50OF90ICpwQnVmZmVyLCB1aW50MzJfdCBOdW1TcGFyZUFyZWFUb3dyaXRlKTsKK0hBTF9TdGF0dXNUeXBlRGVmICBIQUxfTkFORF9SZWFkX1BhZ2VfOGIoTkFORF9IYW5kbGVUeXBlRGVmICpobmFuZCwgTkFORF9BZGRyZXNzVHlwZURlZiAqcEFkZHJlc3MsIHVpbnQ4X3QgKnBCdWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IE51bVBhZ2VUb1JlYWQpOworSEFMX1N0YXR1c1R5cGVEZWYgIEhBTF9OQU5EX1dyaXRlX1BhZ2VfOGIoTkFORF9IYW5kbGVUeXBlRGVmICpobmFuZCwgTkFORF9BZGRyZXNzVHlwZURlZiAqcEFkZHJlc3MsIHVpbnQ4X3QgKnBCdWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBOdW1QYWdlVG9Xcml0ZSk7CitIQUxfU3RhdHVzVHlwZURlZiAgSEFMX05BTkRfUmVhZF9TcGFyZUFyZWFfOGIoTkFORF9IYW5kbGVUeXBlRGVmICpobmFuZCwgTkFORF9BZGRyZXNzVHlwZURlZiAqcEFkZHJlc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqcEJ1ZmZlciwgdWludDMyX3QgTnVtU3BhcmVBcmVhVG9SZWFkKTsKK0hBTF9TdGF0dXNUeXBlRGVmICBIQUxfTkFORF9Xcml0ZV9TcGFyZUFyZWFfOGIoTkFORF9IYW5kbGVUeXBlRGVmICpobmFuZCwgTkFORF9BZGRyZXNzVHlwZURlZiAqcEFkZHJlc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKnBCdWZmZXIsIHVpbnQzMl90IE51bVNwYXJlQXJlYVRvd3JpdGUpOwogCi1IQUxfU3RhdHVzVHlwZURlZiAgSEFMX05BTkRfUmVhZF9QYWdlXzE2YihOQU5EX0hhbmRsZVR5cGVEZWYgKmhuYW5kLCBOQU5EX0FkZHJlc3NUeXBlRGVmICpwQWRkcmVzcywgdWludDE2X3QgKnBCdWZmZXIsIHVpbnQzMl90IE51bVBhZ2VUb1JlYWQpOwotSEFMX1N0YXR1c1R5cGVEZWYgIEhBTF9OQU5EX1dyaXRlX1BhZ2VfMTZiKE5BTkRfSGFuZGxlVHlwZURlZiAqaG5hbmQsIE5BTkRfQWRkcmVzc1R5cGVEZWYgKnBBZGRyZXNzLCB1aW50MTZfdCAqcEJ1ZmZlciwgdWludDMyX3QgTnVtUGFnZVRvV3JpdGUpOwotSEFMX1N0YXR1c1R5cGVEZWYgIEhBTF9OQU5EX1JlYWRfU3BhcmVBcmVhXzE2YihOQU5EX0hhbmRsZVR5cGVEZWYgKmhuYW5kLCBOQU5EX0FkZHJlc3NUeXBlRGVmICpwQWRkcmVzcywgdWludDE2X3QgKnBCdWZmZXIsIHVpbnQzMl90IE51bVNwYXJlQXJlYVRvUmVhZCk7Ci1IQUxfU3RhdHVzVHlwZURlZiAgSEFMX05BTkRfV3JpdGVfU3BhcmVBcmVhXzE2YihOQU5EX0hhbmRsZVR5cGVEZWYgKmhuYW5kLCBOQU5EX0FkZHJlc3NUeXBlRGVmICpwQWRkcmVzcywgdWludDE2X3QgKnBCdWZmZXIsIHVpbnQzMl90IE51bVNwYXJlQXJlYVRvd3JpdGUpOworSEFMX1N0YXR1c1R5cGVEZWYgIEhBTF9OQU5EX1JlYWRfUGFnZV8xNmIoTkFORF9IYW5kbGVUeXBlRGVmICpobmFuZCwgTkFORF9BZGRyZXNzVHlwZURlZiAqcEFkZHJlc3MsIHVpbnQxNl90ICpwQnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgTnVtUGFnZVRvUmVhZCk7CitIQUxfU3RhdHVzVHlwZURlZiAgSEFMX05BTkRfV3JpdGVfUGFnZV8xNmIoTkFORF9IYW5kbGVUeXBlRGVmICpobmFuZCwgTkFORF9BZGRyZXNzVHlwZURlZiAqcEFkZHJlc3MsIHVpbnQxNl90ICpwQnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IE51bVBhZ2VUb1dyaXRlKTsKK0hBTF9TdGF0dXNUeXBlRGVmICBIQUxfTkFORF9SZWFkX1NwYXJlQXJlYV8xNmIoTkFORF9IYW5kbGVUeXBlRGVmICpobmFuZCwgTkFORF9BZGRyZXNzVHlwZURlZiAqcEFkZHJlc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQxNl90ICpwQnVmZmVyLCB1aW50MzJfdCBOdW1TcGFyZUFyZWFUb1JlYWQpOworSEFMX1N0YXR1c1R5cGVEZWYgIEhBTF9OQU5EX1dyaXRlX1NwYXJlQXJlYV8xNmIoTkFORF9IYW5kbGVUeXBlRGVmICpobmFuZCwgTkFORF9BZGRyZXNzVHlwZURlZiAqcEFkZHJlc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MTZfdCAqcEJ1ZmZlciwgdWludDMyX3QgTnVtU3BhcmVBcmVhVG93cml0ZSk7CiAKIEhBTF9TdGF0dXNUeXBlRGVmICBIQUxfTkFORF9FcmFzZV9CbG9jayhOQU5EX0hhbmRsZVR5cGVEZWYgKmhuYW5kLCBOQU5EX0FkZHJlc3NUeXBlRGVmICpwQWRkcmVzcyk7CiAKQEAgLTIzMCwxNSArMjM4LDE2IEBACiAKICNpZiAoVVNFX0hBTF9OQU5EX1JFR0lTVEVSX0NBTExCQUNLUyA9PSAxKQogLyogTkFORCBjYWxsYmFjayByZWdpc3RlcmluZy91bnJlZ2lzdGVyaW5nICovCi1IQUxfU3RhdHVzVHlwZURlZiAgSEFMX05BTkRfUmVnaXN0ZXJDYWxsYmFjayhOQU5EX0hhbmRsZVR5cGVEZWYgKmhuYW5kLCBIQUxfTkFORF9DYWxsYmFja0lEVHlwZURlZiBDYWxsYmFja0lkLCBwTkFORF9DYWxsYmFja1R5cGVEZWYgcENhbGxiYWNrKTsKK0hBTF9TdGF0dXNUeXBlRGVmICBIQUxfTkFORF9SZWdpc3RlckNhbGxiYWNrKE5BTkRfSGFuZGxlVHlwZURlZiAqaG5hbmQsIEhBTF9OQU5EX0NhbGxiYWNrSURUeXBlRGVmIENhbGxiYWNrSWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwTkFORF9DYWxsYmFja1R5cGVEZWYgcENhbGxiYWNrKTsKIEhBTF9TdGF0dXNUeXBlRGVmICBIQUxfTkFORF9VblJlZ2lzdGVyQ2FsbGJhY2soTkFORF9IYW5kbGVUeXBlRGVmICpobmFuZCwgSEFMX05BTkRfQ2FsbGJhY2tJRFR5cGVEZWYgQ2FsbGJhY2tJZCk7Ci0jZW5kaWYKKyNlbmRpZiAvKiBVU0VfSEFMX05BTkRfUkVHSVNURVJfQ0FMTEJBQ0tTICovCiAKIC8qKgogICAqIEB9CiAgICovCiAKLS8qKiBAYWRkdG9ncm91cCBOQU5EX0V4cG9ydGVkX0Z1bmN0aW9uc19Hcm91cDMgUGVyaXBoZXJhbCBDb250cm9sIGZ1bmN0aW9ucyAKKy8qKiBAYWRkdG9ncm91cCBOQU5EX0V4cG9ydGVkX0Z1bmN0aW9uc19Hcm91cDMgUGVyaXBoZXJhbCBDb250cm9sIGZ1bmN0aW9ucwogICAqIEB7CiAgICovCiAKQEAgLTI1MCw4ICsyNTksOCBAQAogLyoqCiAgICogQH0KICAgKi8KLSAgICAKLS8qKiBAYWRkdG9ncm91cCBOQU5EX0V4cG9ydGVkX0Z1bmN0aW9uc19Hcm91cDQgUGVyaXBoZXJhbCBTdGF0ZSBmdW5jdGlvbnMgCisKKy8qKiBAYWRkdG9ncm91cCBOQU5EX0V4cG9ydGVkX0Z1bmN0aW9uc19Hcm91cDQgUGVyaXBoZXJhbCBTdGF0ZSBmdW5jdGlvbnMKICAgKiBAewogICAqLwogLyogTkFORCBTdGF0ZSBmdW5jdGlvbnMgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KQEAgLTI2NCwzOSArMjczLDQwIEBACiAvKioKICAgKiBAfQogICAqLworCiAvKiBQcml2YXRlIHR5cGVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogLyogUHJpdmF0ZSB2YXJpYWJsZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KIC8qIFByaXZhdGUgY29uc3RhbnRzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAvKiogQGRlZmdyb3VwIE5BTkRfUHJpdmF0ZV9Db25zdGFudHMgTkFORCBQcml2YXRlIENvbnN0YW50cwogICAqIEB7CiAgICovCi0jZGVmaW5lIE5BTkRfREVWSUNFICAgICAgICAgICAgICAgICgodWludDMyX3QpMHg4MDAwMDAwMFUpIAotI2RlZmluZSBOQU5EX1dSSVRFX1RJTUVPVVQgICAgICAgICAoKHVpbnQzMl90KTB4MDEwMDAwMDBVKQorI2RlZmluZSBOQU5EX0RFVklDRSAgICAgICAgICAgICAgICAweDgwMDAwMDAwVUwKKyNkZWZpbmUgTkFORF9XUklURV9USU1FT1VUICAgICAgICAgMHgwMTAwMDAwMFVMCiAKLSNkZWZpbmUgQ01EX0FSRUEgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkoMTw8MTYpKSAgLyogQTE2ID0gQ0xFIGhpZ2ggKi8KLSNkZWZpbmUgQUREUl9BUkVBICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkoMTw8MTcpKSAgLyogQTE3ID0gQUxFIGhpZ2ggKi8KKyNkZWZpbmUgQ01EX0FSRUEgICAgICAgICAgICAgICAgICAgKDFVTDw8MTZVKSAgLyogQTE2ID0gQ0xFIGhpZ2ggKi8KKyNkZWZpbmUgQUREUl9BUkVBICAgICAgICAgICAgICAgICAgKDFVTDw8MTdVKSAgLyogQTE3ID0gQUxFIGhpZ2ggKi8KIAotI2RlZmluZSBOQU5EX0NNRF9BUkVBX0EgICAgICAgICAgICAoKHVpbnQ4X3QpMHgwMFUpCi0jZGVmaW5lIE5BTkRfQ01EX0FSRUFfQiAgICAgICAgICAgICgodWludDhfdCkweDAxVSkKLSNkZWZpbmUgTkFORF9DTURfQVJFQV9DICAgICAgICAgICAgKCh1aW50OF90KTB4NTBVKQotI2RlZmluZSBOQU5EX0NNRF9BUkVBX1RSVUUxICAgICAgICAoKHVpbnQ4X3QpMHgzMFUpCisjZGVmaW5lIE5BTkRfQ01EX0FSRUFfQSAgICAgICAgICAgICgodWludDhfdCkweDAwKQorI2RlZmluZSBOQU5EX0NNRF9BUkVBX0IgICAgICAgICAgICAoKHVpbnQ4X3QpMHgwMSkKKyNkZWZpbmUgTkFORF9DTURfQVJFQV9DICAgICAgICAgICAgKCh1aW50OF90KTB4NTApCisjZGVmaW5lIE5BTkRfQ01EX0FSRUFfVFJVRTEgICAgICAgICgodWludDhfdCkweDMwKQogCi0jZGVmaW5lIE5BTkRfQ01EX1dSSVRFMCAgICAgICAgICAgICgodWludDhfdCkweDgwVSkKLSNkZWZpbmUgTkFORF9DTURfV1JJVEVfVFJVRTEgICAgICAgKCh1aW50OF90KTB4MTBVKQotI2RlZmluZSBOQU5EX0NNRF9FUkFTRTAgICAgICAgICAgICAoKHVpbnQ4X3QpMHg2MFUpCi0jZGVmaW5lIE5BTkRfQ01EX0VSQVNFMSAgICAgICAgICAgICgodWludDhfdCkweEQwVSkKLSNkZWZpbmUgTkFORF9DTURfUkVBRElEICAgICAgICAgICAgKCh1aW50OF90KTB4OTBVKQotI2RlZmluZSBOQU5EX0NNRF9TVEFUVVMgICAgICAgICAgICAoKHVpbnQ4X3QpMHg3MFUpCi0jZGVmaW5lIE5BTkRfQ01EX0xPQ0tfU1RBVFVTICAgICAgICgodWludDhfdCkweDdBVSkKLSNkZWZpbmUgTkFORF9DTURfUkVTRVQgICAgICAgICAgICAgKCh1aW50OF90KTB4RkZVKQorI2RlZmluZSBOQU5EX0NNRF9XUklURTAgICAgICAgICAgICAoKHVpbnQ4X3QpMHg4MCkKKyNkZWZpbmUgTkFORF9DTURfV1JJVEVfVFJVRTEgICAgICAgKCh1aW50OF90KTB4MTApCisjZGVmaW5lIE5BTkRfQ01EX0VSQVNFMCAgICAgICAgICAgICgodWludDhfdCkweDYwKQorI2RlZmluZSBOQU5EX0NNRF9FUkFTRTEgICAgICAgICAgICAoKHVpbnQ4X3QpMHhEMCkKKyNkZWZpbmUgTkFORF9DTURfUkVBRElEICAgICAgICAgICAgKCh1aW50OF90KTB4OTApCisjZGVmaW5lIE5BTkRfQ01EX1NUQVRVUyAgICAgICAgICAgICgodWludDhfdCkweDcwKQorI2RlZmluZSBOQU5EX0NNRF9MT0NLX1NUQVRVUyAgICAgICAoKHVpbnQ4X3QpMHg3QSkKKyNkZWZpbmUgTkFORF9DTURfUkVTRVQgICAgICAgICAgICAgKCh1aW50OF90KTB4RkYpCiAKIC8qIE5BTkQgbWVtb3J5IHN0YXR1cyAqLwotI2RlZmluZSBOQU5EX1ZBTElEX0FERFJFU1MgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAxMDBVKQotI2RlZmluZSBOQU5EX0lOVkFMSURfQUREUkVTUyAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAyMDBVKQotI2RlZmluZSBOQU5EX1RJTUVPVVRfRVJST1IgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDA0MDBVKQotI2RlZmluZSBOQU5EX0JVU1kgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDBVKQotI2RlZmluZSBOQU5EX0VSUk9SICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDFVKQotI2RlZmluZSBOQU5EX1JFQURZICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwNDBVKQorI2RlZmluZSBOQU5EX1ZBTElEX0FERFJFU1MgICAgICAgICAweDAwMDAwMTAwVUwKKyNkZWZpbmUgTkFORF9JTlZBTElEX0FERFJFU1MgICAgICAgMHgwMDAwMDIwMFVMCisjZGVmaW5lIE5BTkRfVElNRU9VVF9FUlJPUiAgICAgICAgIDB4MDAwMDA0MDBVTAorI2RlZmluZSBOQU5EX0JVU1kgICAgICAgICAgICAgICAgICAweDAwMDAwMDAwVUwKKyNkZWZpbmUgTkFORF9FUlJPUiAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMVVMCisjZGVmaW5lIE5BTkRfUkVBRFkgICAgICAgICAgICAgICAgIDB4MDAwMDAwNDBVTAogLyoqCiAgICogQH0KICAgKi8KQEAgLTMxMyw4ICszMjMsMTYgQEAKICAgKiBAcmV0dmFsIE5BTkQgUmF3IGFkZHJlc3MgdmFsdWUKICAgKi8KICNkZWZpbmUgQVJSQVlfQUREUkVTUyhfX0FERFJFU1NfXyAsIF9fSEFORExFX18pICgoX19BRERSRVNTX18pLT5QYWdlICsgXAotICAgICAgICAgICAgICAgICAgICAgICAgICgoKF9fQUREUkVTU19fKS0+QmxvY2sgKyAoKChfX0FERFJFU1NfXyktPlBsYW5lKSAqICgoX19IQU5ETEVfXyktPkNvbmZpZy5QbGFuZVNpemUpKSkqICgoX19IQU5ETEVfXyktPkNvbmZpZy5CbG9ja1NpemUpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKChfX0FERFJFU1NfXyktPkJsb2NrICsgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCgoX19BRERSRVNTX18pLT5QbGFuZSkgKiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChfX0hBTkRMRV9fKS0+Q29uZmlnLlBsYW5lU2l6ZSkpKSAqIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChfX0hBTkRMRV9fKS0+Q29uZmlnLkJsb2NrU2l6ZSkpKQogCisvKioKKyAgKiBAYnJpZWYgIE5BTkQgbWVtb3J5IENvbHVtbiBhZGRyZXNzIGNvbXB1dGF0aW9uLgorICAqIEBwYXJhbSAgX19IQU5ETEVfXyBOQU5EIGhhbmRsZS4KKyAgKiBAcmV0dmFsIE5BTkQgUmF3IGFkZHJlc3MgdmFsdWUKKyAgKi8KICNkZWZpbmUgQ09MVU1OX0FERFJFU1MoIF9fSEFORExFX18pICgoX19IQU5ETEVfXyktPkNvbmZpZy5QYWdlU2l6ZSkKIAogLyoqCkBAIC0zMzIsMjggKzM1MCwyOCBAQAogICAqIEBwYXJhbSAgX19BRERSRVNTX18gTkFORCBtZW1vcnkgYWRkcmVzcy4KICAgKiBAcmV0dmFsIE5BTkQgQ29sdW1uIGFkZHJlc3MgY3ljbGluZyB2YWx1ZS4KICAgKi8KLSNkZWZpbmUgQ09MVU1OXzFTVF9DWUNMRShfX0FERFJFU1NfXykgICAgICAgKHVpbnQ4X3QpKF9fQUREUkVTU19fKSAgICAgICAgICAgICAgLyogMXN0IENvbHVtbiBhZGRyZXNzaW5nIGN5Y2xlICovCisjZGVmaW5lIENPTFVNTl8xU1RfQ1lDTEUoX19BRERSRVNTX18pICAgICAgICh1aW50OF90KSgoX19BRERSRVNTX18pICYgMHhGRlUpICAgIC8qIDFzdCBDb2x1bW4gYWRkcmVzc2luZyBjeWNsZSAqLwogI2RlZmluZSBDT0xVTU5fMk5EX0NZQ0xFKF9fQUREUkVTU19fKSAgICAgICAodWludDhfdCkoKF9fQUREUkVTU19fKSA+PiA4KSAgICAgICAvKiAybmQgQ29sdW1uIGFkZHJlc3NpbmcgY3ljbGUgKi8KIAogLyoqCiAgICogQH0KICAgKi8KLSAgICAKLS8qKgotICAqIEB9Ci0gICovCi0vKioKLSAgKiBAfQotICAqLyAKIAogLyoqCiAgICogQH0KLSAgKi8gCisgICovCisKKy8qKgorICAqIEB9CisgICovCisKKy8qKgorICAqIEB9CisgICovCisKIAogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYKIAotI2VuZGlmIC8qIF9fU1RNMzJGN3h4X0hBTF9OQU5EX0ggKi8KLQotLyoqKioqKioqKioqKioqKioqKioqKioqKiAoQykgQ09QWVJJR0hUIFNUTWljcm9lbGVjdHJvbmljcyAqKioqKkVORCBPRiBGSUxFKioqKi8KKyNlbmRpZiAvKiBTVE0zMkY3eHhfSEFMX05BTkRfSCAqLwpkaWZmIC0tZ2l0IGEvSW5jL3N0bTMyZjd4eF9oYWxfbm9yLmggYi9JbmMvc3RtMzJmN3h4X2hhbF9ub3IuaAppbmRleCBiZmQwZmU5Li5jNDQ1YjQzIDEwMDY0NAotLS0gYS9JbmMvc3RtMzJmN3h4X2hhbF9ub3IuaAorKysgYi9JbmMvc3RtMzJmN3h4X2hhbF9ub3IuaApAQCAtNiw1MyArNiw1MiBAQAogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgKiBAYXR0ZW50aW9uCiAgICoKLSAgKiA8aDI+PGNlbnRlcj4mY29weTsgQ29weXJpZ2h0IChjKSAyMDE3IFNUTWljcm9lbGVjdHJvbmljcy4KLSAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLjwvY2VudGVyPjwvaDI+CisgICogQ29weXJpZ2h0IChjKSAyMDE3IFNUTWljcm9lbGVjdHJvbmljcy4KKyAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAqCi0gICogVGhpcyBzb2Z0d2FyZSBjb21wb25lbnQgaXMgbGljZW5zZWQgYnkgU1QgdW5kZXIgQlNEIDMtQ2xhdXNlIGxpY2Vuc2UsCi0gICogdGhlICJMaWNlbnNlIjsgWW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZQotICAqIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdDoKLSAgKiAgICAgICAgICAgICAgICAgICAgICAgIG9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0JTRC0zLUNsYXVzZQorICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgdW5kZXIgdGVybXMgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZQorICAqIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvZnR3YXJlIGNvbXBvbmVudC4KKyAgKiBJZiBubyBMSUNFTlNFIGZpbGUgY29tZXMgd2l0aCB0aGlzIHNvZnR3YXJlLCBpdCBpcyBwcm92aWRlZCBBUy1JUy4KICAgKgogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAgKi8gCisgICovCiAKIC8qIERlZmluZSB0byBwcmV2ZW50IHJlY3Vyc2l2ZSBpbmNsdXNpb24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi0jaWZuZGVmIF9fU1RNMzJGN3h4X0hBTF9OT1JfSAotI2RlZmluZSBfX1NUTTMyRjd4eF9IQUxfTk9SX0gKKyNpZm5kZWYgU1RNMzJGN3h4X0hBTF9OT1JfSAorI2RlZmluZSBTVE0zMkY3eHhfSEFMX05PUl9ICiAKICNpZmRlZiBfX2NwbHVzcGx1cwotIGV4dGVybiAiQyIgeworZXh0ZXJuICJDIiB7CiAjZW5kaWYKIAorCiAvKiBJbmNsdWRlcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogI2luY2x1ZGUgInN0bTMyZjd4eF9sbF9mbWMuaCIKIAotCiAvKiogQGFkZHRvZ3JvdXAgU1RNMzJGN3h4X0hBTF9Ecml2ZXIKICAgKiBAewogICAqLwogCiAvKiogQGFkZHRvZ3JvdXAgTk9SCiAgICogQHsKLSAgKi8gCisgICovCiAKIC8qIEV4cG9ydGVkIHR5cGVkZWYgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAvKiogQGRlZmdyb3VwIE5PUl9FeHBvcnRlZF9UeXBlcyBOT1IgRXhwb3J0ZWQgVHlwZXMKICAgKiBAewogICAqLwogCi0vKiogCi0gICogQGJyaWVmICBIQUwgU1JBTSBTdGF0ZSBzdHJ1Y3R1cmVzIGRlZmluaXRpb24gIAotICAqLyAKKy8qKgorICAqIEBicmllZiAgSEFMIFNSQU0gU3RhdGUgc3RydWN0dXJlcyBkZWZpbml0aW9uCisgICovCiB0eXBlZGVmIGVudW0KLXsgIAorewogICBIQUxfTk9SX1NUQVRFX1JFU0VUICAgICAgICAgICAgID0gMHgwMFUsICAvKiE8IE5PUiBub3QgeWV0IGluaXRpYWxpemVkIG9yIGRpc2FibGVkICAqLwogICBIQUxfTk9SX1NUQVRFX1JFQURZICAgICAgICAgICAgID0gMHgwMVUsICAvKiE8IE5PUiBpbml0aWFsaXplZCBhbmQgcmVhZHkgZm9yIHVzZSAgICAqLwogICBIQUxfTk9SX1NUQVRFX0JVU1kgICAgICAgICAgICAgID0gMHgwMlUsICAvKiE8IE5PUiBpbnRlcm5hbCBwcm9jZXNzaW5nIGlzIG9uZ29pbmcgICAqLwogICBIQUxfTk9SX1NUQVRFX0VSUk9SICAgICAgICAgICAgID0gMHgwM1UsICAvKiE8IE5PUiBlcnJvciBzdGF0ZSAgICAgICAgICAgICAgICAgICAgICAqLwogICBIQUxfTk9SX1NUQVRFX1BST1RFQ1RFRCAgICAgICAgID0gMHgwNFUgICAvKiE8IE5PUiBOT1JTUkFNIGRldmljZSB3cml0ZSBwcm90ZWN0ZWQgICAqLwotfUhBTF9OT1JfU3RhdGVUeXBlRGVmOworfSBIQUxfTk9SX1N0YXRlVHlwZURlZjsKIAogLyoqCiAgICogQGJyaWVmICBGTUMgTk9SIFN0YXR1cyB0eXBlZGVmCkBAIC02Myw3ICs2Miw3IEBACiAgIEhBTF9OT1JfU1RBVFVTX09OR09JTkcsCiAgIEhBTF9OT1JfU1RBVFVTX0VSUk9SLAogICBIQUxfTk9SX1NUQVRVU19USU1FT1VUCi19SEFMX05PUl9TdGF0dXNUeXBlRGVmOworfSBIQUxfTk9SX1N0YXR1c1R5cGVEZWY7CiAKIC8qKgogICAqIEBicmllZiAgRk1DIE5PUiBJRCB0eXBlZGVmCkBAIC03NiwxMSArNzUsMTEgQEAKIAogICB1aW50MTZfdCBEZXZpY2VfQ29kZTI7CiAKLSAgdWludDE2X3QgRGV2aWNlX0NvZGUzOyAgICAgICAvKiE8IERlZmluZXMgdGhlIGRldmljZSdzIGNvZGVzIHVzZWQgdG8gaWRlbnRpZnkgdGhlIG1lbW9yeS4gCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGVzZSBjb2RlcyBjYW4gYmUgYWNjZXNzZWQgYnkgcGVyZm9ybWluZyByZWFkIG9wZXJhdGlvbnMgd2l0aCBzcGVjaWZpYyAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRyb2wgc2lnbmFscyBhbmQgYWRkcmVzc2VzIHNldC5UaGV5IGNhbiBhbHNvIGJlIGFjY2Vzc2VkIGJ5IGlzc3VpbmcgCisgIHVpbnQxNl90IERldmljZV9Db2RlMzsgICAgICAgLyohPCBEZWZpbmVzIHRoZSBkZXZpY2UncyBjb2RlcyB1c2VkIHRvIGlkZW50aWZ5IHRoZSBtZW1vcnkuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGVzZSBjb2RlcyBjYW4gYmUgYWNjZXNzZWQgYnkgcGVyZm9ybWluZyByZWFkIG9wZXJhdGlvbnMgd2l0aCBzcGVjaWZpYworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udHJvbCBzaWduYWxzIGFuZCBhZGRyZXNzZXMgc2V0LlRoZXkgY2FuIGFsc28gYmUgYWNjZXNzZWQgYnkgaXNzdWluZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW4gQXV0byBTZWxlY3QgY29tbWFuZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi19Tk9SX0lEVHlwZURlZjsKK30gTk9SX0lEVHlwZURlZjsKIAogLyoqCiAgICogQGJyaWVmICBGTUMgTk9SIENGSSB0eXBlZGVmCkBAIC04OCw3ICs4Nyw3IEBACiB0eXBlZGVmIHN0cnVjdAogewogICAvKiE8IERlZmluZXMgdGhlIGluZm9ybWF0aW9uIHN0b3JlZCBpbiB0aGUgbWVtb3J5J3MgQ29tbW9uIGZsYXNoIGludGVyZmFjZQotICAgICAgIHdoaWNoIGNvbnRhaW5zIGEgZGVzY3JpcHRpb24gb2YgdmFyaW91cyBlbGVjdHJpY2FsIGFuZCB0aW1pbmcgcGFyYW1ldGVycywgCisgICAgICAgd2hpY2ggY29udGFpbnMgYSBkZXNjcmlwdGlvbiBvZiB2YXJpb3VzIGVsZWN0cmljYWwgYW5kIHRpbWluZyBwYXJhbWV0ZXJzLAogICAgICAgIGRlbnNpdHkgaW5mb3JtYXRpb24gYW5kIGZ1bmN0aW9ucyBzdXBwb3J0ZWQgYnkgdGhlIG1lbW9yeSAgICAgICAgICAgICAgICAgICAqLwogCiAgIHVpbnQxNl90IENGSV8xOwpAQCAtOTgsOSArOTcsOSBAQAogICB1aW50MTZfdCBDRklfMzsKIAogICB1aW50MTZfdCBDRklfNDsKLX1OT1JfQ0ZJVHlwZURlZjsKK30gTk9SX0NGSVR5cGVEZWY7CiAKLS8qKiAKKy8qKgogICAqIEBicmllZiAgTk9SIGhhbmRsZSBTdHJ1Y3R1cmUgZGVmaW5pdGlvbgogICAqLwogI2lmIChVU0VfSEFMX05PUl9SRUdJU1RFUl9DQUxMQkFDS1MgPT0gMSkKQEAgLTEyMCwxMCArMTE5LDEyIEBACiAKICAgX19JTyBIQUxfTk9SX1N0YXRlVHlwZURlZiAgICAgU3RhdGU7ICAgICAgICAvKiE8IE5PUiBkZXZpY2UgYWNjZXNzIHN0YXRlICAgICAgICAgICAgICAgICAgICAgICovCiAKKyAgdWludDMyX3QgICAgICAgICAgICAgICAgICAgICAgQ29tbWFuZFNldDsgICAvKiE8IE5PUiBhbGdvcml0aG0gY29tbWFuZCBzZXQgYW5kIGNvbnRyb2wgICAgICAgICovCisKICNpZiAoVVNFX0hBTF9OT1JfUkVHSVNURVJfQ0FMTEJBQ0tTID09IDEpCi0gIHZvaWQgICgqIE1zcEluaXRDYWxsYmFjaykgICAgICAgICggc3RydWN0IF9fTk9SX0hhbmRsZVR5cGVEZWYgKiBobm9yKTsgICAgLyohPCBOT1IgTXNwIEluaXQgY2FsbGJhY2sgICAgICAgICAgICAgICovCi0gIHZvaWQgICgqIE1zcERlSW5pdENhbGxiYWNrKSAgICAgICggc3RydWN0IF9fTk9SX0hhbmRsZVR5cGVEZWYgKiBobm9yKTsgICAgLyohPCBOT1IgTXNwIERlSW5pdCBjYWxsYmFjayAgICAgICAgICAgICovCi0jZW5kaWYKKyAgdm9pZCAoKiBNc3BJbml0Q2FsbGJhY2spKHN0cnVjdCBfX05PUl9IYW5kbGVUeXBlRGVmICpobm9yKTsgICAgICAgICAgICAgICAvKiE8IE5PUiBNc3AgSW5pdCBjYWxsYmFjayAgICAgICAgICAgICAgKi8KKyAgdm9pZCAoKiBNc3BEZUluaXRDYWxsYmFjaykoc3RydWN0IF9fTk9SX0hhbmRsZVR5cGVEZWYgKmhub3IpOyAgICAgICAgICAgICAvKiE8IE5PUiBNc3AgRGVJbml0IGNhbGxiYWNrICAgICAgICAgICAgKi8KKyNlbmRpZiAvKiBVU0VfSEFMX05PUl9SRUdJU1RFUl9DQUxMQkFDS1MgKi8KIH0gTk9SX0hhbmRsZVR5cGVEZWY7CiAKICNpZiAoVVNFX0hBTF9OT1JfUkVHSVNURVJfQ0FMTEJBQ0tTID09IDEpCkBAIC0xMzQsMTcgKzEzNSwxNyBAQAogewogICBIQUxfTk9SX01TUF9JTklUX0NCX0lEICAgICAgID0gMHgwMFUsICAvKiE8IE5PUiBNc3BJbml0IENhbGxiYWNrIElEICAgICAgICAgICovCiAgIEhBTF9OT1JfTVNQX0RFSU5JVF9DQl9JRCAgICAgPSAweDAxVSAgIC8qITwgTk9SIE1zcERlSW5pdCBDYWxsYmFjayBJRCAgICAgICAgKi8KLX1IQUxfTk9SX0NhbGxiYWNrSURUeXBlRGVmOworfSBIQUxfTk9SX0NhbGxiYWNrSURUeXBlRGVmOwogCiAvKioKICAgKiBAYnJpZWYgIEhBTCBOT1IgQ2FsbGJhY2sgcG9pbnRlciBkZWZpbml0aW9uCiAgICovCiB0eXBlZGVmIHZvaWQgKCpwTk9SX0NhbGxiYWNrVHlwZURlZikoTk9SX0hhbmRsZVR5cGVEZWYgKmhub3IpOwotI2VuZGlmCisjZW5kaWYgLyogVVNFX0hBTF9OT1JfUkVHSVNURVJfQ0FMTEJBQ0tTICovCiAvKioKICAgKiBAfQogICAqLwotICAKKwogLyogRXhwb3J0ZWQgY29uc3RhbnRzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KIC8qIEV4cG9ydGVkIG1hY3JvIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAvKiogQGRlZmdyb3VwIE5PUl9FeHBvcnRlZF9NYWNyb3MgTk9SIEV4cG9ydGVkIE1hY3JvcwpAQCAtMTYyLDcgKzE2Myw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSB3aGlsZSgwKQogI2Vsc2UKICNkZWZpbmUgX19IQUxfTk9SX1JFU0VUX0hBTkRMRV9TVEFURShfX0hBTkRMRV9fKSAoKF9fSEFORExFX18pLT5TdGF0ZSA9IEhBTF9OT1JfU1RBVEVfUkVTRVQpCi0jZW5kaWYKKyNlbmRpZiAvKiBVU0VfSEFMX05PUl9SRUdJU1RFUl9DQUxMQkFDS1MgKi8KIC8qKgogICAqIEB9CiAgICovCkBAIC0xNzIsMTIgKzE3MywxMyBAQAogICAqIEB7CiAgICovCiAKLS8qKiBAYWRkdG9ncm91cCBOT1JfRXhwb3J0ZWRfRnVuY3Rpb25zX0dyb3VwMSBJbml0aWFsaXphdGlvbiBhbmQgZGUtaW5pdGlhbGl6YXRpb24gZnVuY3Rpb25zIAorLyoqIEBhZGR0b2dyb3VwIE5PUl9FeHBvcnRlZF9GdW5jdGlvbnNfR3JvdXAxIEluaXRpYWxpemF0aW9uIGFuZCBkZS1pbml0aWFsaXphdGlvbiBmdW5jdGlvbnMKICAgKiBAewogICAqLwogCiAvKiBJbml0aWFsaXphdGlvbi9kZS1pbml0aWFsaXphdGlvbiBmdW5jdGlvbnMgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotSEFMX1N0YXR1c1R5cGVEZWYgSEFMX05PUl9Jbml0KE5PUl9IYW5kbGVUeXBlRGVmICpobm9yLCBGTUNfTk9SU1JBTV9UaW1pbmdUeXBlRGVmICpUaW1pbmcsIEZNQ19OT1JTUkFNX1RpbWluZ1R5cGVEZWYgKkV4dFRpbWluZyk7CitIQUxfU3RhdHVzVHlwZURlZiBIQUxfTk9SX0luaXQoTk9SX0hhbmRsZVR5cGVEZWYgKmhub3IsIEZNQ19OT1JTUkFNX1RpbWluZ1R5cGVEZWYgKlRpbWluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGTUNfTk9SU1JBTV9UaW1pbmdUeXBlRGVmICpFeHRUaW1pbmcpOwogSEFMX1N0YXR1c1R5cGVEZWYgSEFMX05PUl9EZUluaXQoTk9SX0hhbmRsZVR5cGVEZWYgKmhub3IpOwogdm9pZCBIQUxfTk9SX01zcEluaXQoTk9SX0hhbmRsZVR5cGVEZWYgKmhub3IpOwogdm9pZCBIQUxfTk9SX01zcERlSW5pdChOT1JfSGFuZGxlVHlwZURlZiAqaG5vcik7CkBAIC0xODYsNyArMTg4LDcgQEAKICAgKiBAfQogICAqLwogCi0vKiogQGFkZHRvZ3JvdXAgTk9SX0V4cG9ydGVkX0Z1bmN0aW9uc19Hcm91cDIgSW5wdXQgYW5kIE91dHB1dCBmdW5jdGlvbnMgCisvKiogQGFkZHRvZ3JvdXAgTk9SX0V4cG9ydGVkX0Z1bmN0aW9uc19Hcm91cDIgSW5wdXQgYW5kIE91dHB1dCBmdW5jdGlvbnMKICAgKiBAewogICAqLwogCkBAIC0xOTYsOCArMTk4LDEwIEBACiBIQUxfU3RhdHVzVHlwZURlZiBIQUxfTk9SX1JlYWQoTk9SX0hhbmRsZVR5cGVEZWYgKmhub3IsIHVpbnQzMl90ICpwQWRkcmVzcywgdWludDE2X3QgKnBEYXRhKTsKIEhBTF9TdGF0dXNUeXBlRGVmIEhBTF9OT1JfUHJvZ3JhbShOT1JfSGFuZGxlVHlwZURlZiAqaG5vciwgdWludDMyX3QgKnBBZGRyZXNzLCB1aW50MTZfdCAqcERhdGEpOwogCi1IQUxfU3RhdHVzVHlwZURlZiBIQUxfTk9SX1JlYWRCdWZmZXIoTk9SX0hhbmRsZVR5cGVEZWYgKmhub3IsIHVpbnQzMl90IHV3QWRkcmVzcywgdWludDE2X3QgKnBEYXRhLCB1aW50MzJfdCB1d0J1ZmZlclNpemUpOwotSEFMX1N0YXR1c1R5cGVEZWYgSEFMX05PUl9Qcm9ncmFtQnVmZmVyKE5PUl9IYW5kbGVUeXBlRGVmICpobm9yLCB1aW50MzJfdCB1d0FkZHJlc3MsIHVpbnQxNl90ICpwRGF0YSwgdWludDMyX3QgdXdCdWZmZXJTaXplKTsKK0hBTF9TdGF0dXNUeXBlRGVmIEhBTF9OT1JfUmVhZEJ1ZmZlcihOT1JfSGFuZGxlVHlwZURlZiAqaG5vciwgdWludDMyX3QgdXdBZGRyZXNzLCB1aW50MTZfdCAqcERhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgdXdCdWZmZXJTaXplKTsKK0hBTF9TdGF0dXNUeXBlRGVmIEhBTF9OT1JfUHJvZ3JhbUJ1ZmZlcihOT1JfSGFuZGxlVHlwZURlZiAqaG5vciwgdWludDMyX3QgdXdBZGRyZXNzLCB1aW50MTZfdCAqcERhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgdXdCdWZmZXJTaXplKTsKIAogSEFMX1N0YXR1c1R5cGVEZWYgSEFMX05PUl9FcmFzZV9CbG9jayhOT1JfSGFuZGxlVHlwZURlZiAqaG5vciwgdWludDMyX3QgQmxvY2tBZGRyZXNzLCB1aW50MzJfdCBBZGRyZXNzKTsKIEhBTF9TdGF0dXNUeXBlRGVmIEhBTF9OT1JfRXJhc2VfQ2hpcChOT1JfSGFuZGxlVHlwZURlZiAqaG5vciwgdWludDMyX3QgQWRkcmVzcyk7CkBAIC0yMDUsMTQgKzIwOSwxNSBAQAogCiAjaWYgKFVTRV9IQUxfTk9SX1JFR0lTVEVSX0NBTExCQUNLUyA9PSAxKQogLyogTk9SIGNhbGxiYWNrIHJlZ2lzdGVyaW5nL3VucmVnaXN0ZXJpbmcgKi8KLUhBTF9TdGF0dXNUeXBlRGVmIEhBTF9OT1JfUmVnaXN0ZXJDYWxsYmFjayhOT1JfSGFuZGxlVHlwZURlZiAqaG5vciwgSEFMX05PUl9DYWxsYmFja0lEVHlwZURlZiBDYWxsYmFja0lkLCBwTk9SX0NhbGxiYWNrVHlwZURlZiBwQ2FsbGJhY2spOworSEFMX1N0YXR1c1R5cGVEZWYgSEFMX05PUl9SZWdpc3RlckNhbGxiYWNrKE5PUl9IYW5kbGVUeXBlRGVmICpobm9yLCBIQUxfTk9SX0NhbGxiYWNrSURUeXBlRGVmIENhbGxiYWNrSWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcE5PUl9DYWxsYmFja1R5cGVEZWYgcENhbGxiYWNrKTsKIEhBTF9TdGF0dXNUeXBlRGVmIEhBTF9OT1JfVW5SZWdpc3RlckNhbGxiYWNrKE5PUl9IYW5kbGVUeXBlRGVmICpobm9yLCBIQUxfTk9SX0NhbGxiYWNrSURUeXBlRGVmIENhbGxiYWNrSWQpOwotI2VuZGlmCisjZW5kaWYgLyogVVNFX0hBTF9OT1JfUkVHSVNURVJfQ0FMTEJBQ0tTICovCiAvKioKICAgKiBAfQogICAqLwotICAKLS8qKiBAYWRkdG9ncm91cCBOT1JfRXhwb3J0ZWRfRnVuY3Rpb25zX0dyb3VwMyBOT1IgQ29udHJvbCBmdW5jdGlvbnMgCisKKy8qKiBAYWRkdG9ncm91cCBOT1JfRXhwb3J0ZWRfRnVuY3Rpb25zX0dyb3VwMyBOT1IgQ29udHJvbCBmdW5jdGlvbnMKICAgKiBAewogICAqLwogCkBAIC0yMjIsOCArMjI3LDggQEAKIC8qKgogICAqIEB9CiAgICovCi0gIAotLyoqIEBhZGR0b2dyb3VwIE5PUl9FeHBvcnRlZF9GdW5jdGlvbnNfR3JvdXA0IE5PUiBTdGF0ZSBmdW5jdGlvbnMgCisKKy8qKiBAYWRkdG9ncm91cCBOT1JfRXhwb3J0ZWRfRnVuY3Rpb25zX0dyb3VwNCBOT1IgU3RhdGUgZnVuY3Rpb25zCiAgICogQHsKICAgKi8KIApAQCAtMjMzLDExICsyMzgsMTEgQEAKIC8qKgogICAqIEB9CiAgICovCi0gICAgCisKIC8qKgogICAqIEB9CiAgICovCi0gIAorCiAvKiBQcml2YXRlIHR5cGVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogLyogUHJpdmF0ZSB2YXJpYWJsZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KIC8qIFByaXZhdGUgY29uc3RhbnRzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCkBAIC0yNDUsMjkgKzI1MCwyOSBAQAogICAqIEB7CiAgICovCiAvKiBOT1IgZGV2aWNlIElEcyBhZGRyZXNzZXMgKi8KLSNkZWZpbmUgTUNfQUREUkVTUyAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDAwVSkKLSNkZWZpbmUgREVWSUNFX0NPREUxX0FERFIgICAgICAgICgodWludDE2X3QpMHgwMDAxVSkKLSNkZWZpbmUgREVWSUNFX0NPREUyX0FERFIgICAgICAgICgodWludDE2X3QpMHgwMDBFVSkKLSNkZWZpbmUgREVWSUNFX0NPREUzX0FERFIgICAgICAgICgodWludDE2X3QpMHgwMDBGVSkKKyNkZWZpbmUgTUNfQUREUkVTUyAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDAwKQorI2RlZmluZSBERVZJQ0VfQ09ERTFfQUREUiAgICAgICAgKCh1aW50MTZfdCkweDAwMDEpCisjZGVmaW5lIERFVklDRV9DT0RFMl9BRERSICAgICAgICAoKHVpbnQxNl90KTB4MDAwRSkKKyNkZWZpbmUgREVWSUNFX0NPREUzX0FERFIgICAgICAgICgodWludDE2X3QpMHgwMDBGKQogCiAvKiBOT1IgQ0ZJIElEcyBhZGRyZXNzZXMgKi8KLSNkZWZpbmUgQ0ZJMV9BRERSRVNTICAgICAgICAgICAgICgodWludDE2X3QpMHg2MVUpCi0jZGVmaW5lIENGSTJfQUREUkVTUyAgICAgICAgICAgICAoKHVpbnQxNl90KTB4NjJVKQotI2RlZmluZSBDRkkzX0FERFJFU1MgICAgICAgICAgICAgKCh1aW50MTZfdCkweDYzVSkKLSNkZWZpbmUgQ0ZJNF9BRERSRVNTICAgICAgICAgICAgICgodWludDE2X3QpMHg2NFUpCisjZGVmaW5lIENGSTFfQUREUkVTUyAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDA2MSkKKyNkZWZpbmUgQ0ZJMl9BRERSRVNTICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDYyKQorI2RlZmluZSBDRkkzX0FERFJFU1MgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwNjMpCisjZGVmaW5lIENGSTRfQUREUkVTUyAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDA2NCkKIAogLyogTk9SIG9wZXJhdGlvbiB3YWl0IHRpbWVvdXQgKi8KLSNkZWZpbmUgTk9SX1RNRU9VVCAgICAgICAgICAgICAgICgodWludDE2X3QpMHhGRkZGVSkKLSAgIAorI2RlZmluZSBOT1JfVE1FT1VUICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweEZGRkYpCisKIC8qIE5PUiBtZW1vcnkgZGF0YSB3aWR0aCAqLwotI2RlZmluZSBOT1JfTUVNT1JZXzhCICAgICAgICAgICAgKCh1aW50OF90KTB4MFUpCi0jZGVmaW5lIE5PUl9NRU1PUllfMTZCICAgICAgICAgICAoKHVpbnQ4X3QpMHgxVSkKKyNkZWZpbmUgTk9SX01FTU9SWV84QiAgICAgICAgICAgICgodWludDhfdCkweDAwKQorI2RlZmluZSBOT1JfTUVNT1JZXzE2QiAgICAgICAgICAgKCh1aW50OF90KTB4MDEpCiAKIC8qIE5PUiBtZW1vcnkgZGV2aWNlIHJlYWQvd3JpdGUgc3RhcnQgYWRkcmVzcyAqLwotI2RlZmluZSBOT1JfTUVNT1JZX0FEUkVTUzEgICAgICAgKCh1aW50MzJfdCkweDYwMDAwMDAwVSkKLSNkZWZpbmUgTk9SX01FTU9SWV9BRFJFU1MyICAgICAgICgodWludDMyX3QpMHg2NDAwMDAwMFUpCi0jZGVmaW5lIE5PUl9NRU1PUllfQURSRVNTMyAgICAgICAoKHVpbnQzMl90KTB4NjgwMDAwMDBVKQotI2RlZmluZSBOT1JfTUVNT1JZX0FEUkVTUzQgICAgICAgKCh1aW50MzJfdCkweDZDMDAwMDAwVSkKKyNkZWZpbmUgTk9SX01FTU9SWV9BRFJFU1MxICAgICAgICgweDYwMDAwMDAwVSkKKyNkZWZpbmUgTk9SX01FTU9SWV9BRFJFU1MyICAgICAgICgweDY0MDAwMDAwVSkKKyNkZWZpbmUgTk9SX01FTU9SWV9BRFJFU1MzICAgICAgICgweDY4MDAwMDAwVSkKKyNkZWZpbmUgTk9SX01FTU9SWV9BRFJFU1M0ICAgICAgICgweDZDMDAwMDAwVSkKIC8qKgogICAqIEB9CiAgICovCkBAIC0yNzgsMjYgKzI4MywyNiBAQAogICAqLwogLyoqCiAgICogQGJyaWVmICBOT1IgbWVtb3J5IGFkZHJlc3Mgc2hpZnRpbmcuCi0gICogQHBhcmFtICBfX05PUl9BRERSRVNTIE5PUiBiYXNlIGFkZHJlc3MgCisgICogQHBhcmFtICBfX05PUl9BRERSRVNTIE5PUiBiYXNlIGFkZHJlc3MKICAgKiBAcGFyYW0gIF9fTk9SX01FTU9SWV9XSURUSF8gTk9SIG1lbW9yeSB3aWR0aAotICAqIEBwYXJhbSAgX19BRERSRVNTX18gTk9SIG1lbW9yeSBhZGRyZXNzIAorICAqIEBwYXJhbSAgX19BRERSRVNTX18gTk9SIG1lbW9yeSBhZGRyZXNzCiAgICogQHJldHZhbCBOT1Igc2hpZnRlZCBhZGRyZXNzIHZhbHVlCiAgICovCi0jZGVmaW5lIE5PUl9BRERSX1NISUZUKF9fTk9SX0FERFJFU1MsIF9fTk9SX01FTU9SWV9XSURUSF8sIF9fQUREUkVTU19fKSAgICAgICBcCi0gICAgICAgICAgICAoKHVpbnQzMl90KSgoKF9fTk9SX01FTU9SWV9XSURUSF8pID09IE5PUl9NRU1PUllfMTZCKT8gICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgKCh1aW50MzJfdCkoKF9fTk9SX0FERFJFU1MpICsgKDIgKiAoX19BRERSRVNTX18pKSkpOiAgICAgICAgICAgICAgXAorI2RlZmluZSBOT1JfQUREUl9TSElGVChfX05PUl9BRERSRVNTLCBfX05PUl9NRU1PUllfV0lEVEhfLCBfX0FERFJFU1NfXykgICAgICAgICBcCisgICgodWludDMyX3QpKCgoX19OT1JfTUVNT1JZX1dJRFRIXykgPT0gTk9SX01FTU9SWV8xNkIpPyAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgKCh1aW50MzJfdCkoKF9fTk9SX0FERFJFU1MpICsgKDJVICogKF9fQUREUkVTU19fKSkpKTogICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgKCh1aW50MzJfdCkoKF9fTk9SX0FERFJFU1MpICsgKF9fQUREUkVTU19fKSkpKSkKLSAKKwogLyoqCiAgICogQGJyaWVmICBOT1IgbWVtb3J5IHdyaXRlIGRhdGEgdG8gc3BlY2lmaWVkIGFkZHJlc3MuCi0gICogQHBhcmFtICBfX0FERFJFU1NfXyBOT1IgbWVtb3J5IGFkZHJlc3MgCisgICogQHBhcmFtICBfX0FERFJFU1NfXyBOT1IgbWVtb3J5IGFkZHJlc3MKICAgKiBAcGFyYW0gIF9fREFUQV9fIERhdGEgdG8gd3JpdGUKICAgKiBAcmV0dmFsIE5vbmUKICAgKi8KICNkZWZpbmUgTk9SX1dSSVRFKF9fQUREUkVTU19fLCBfX0RBVEFfXykgICBkb3sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqKF9fSU8gdWludDE2X3QgKikoKHVpbnQzMl90KShfX0FERFJFU1NfXykpID0gKF9fREFUQV9fKSk7IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX0RTQigpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gd2hpbGUoMCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCooX19JTyB1aW50MTZfdCAqKSgodWludDMyX3QpKF9fQUREUkVTU19fKSkgPSAoX19EQVRBX18pKTsgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX0RTQigpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IHdoaWxlKDApCiAKIC8qKgogICAqIEB9CkBAIC0zMDUsMTYgKzMxMCwxNSBAQAogCiAvKioKICAgKiBAfQotICAqLyAKKyAgKi8KIAogLyoqCiAgICogQH0KICAgKi8KIAorCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KICNlbmRpZgogCi0jZW5kaWYgLyogX19TVE0zMkY3eHhfSEFMX05PUl9IICovCi0KLS8qKioqKioqKioqKioqKioqKioqKioqKiogKEMpIENPUFlSSUdIVCBTVE1pY3JvZWxlY3Ryb25pY3MgKioqKipFTkQgT0YgRklMRSoqKiovCisjZW5kaWYgLyogU1RNMzJGN3h4X0hBTF9OT1JfSCAqLwpkaWZmIC0tZ2l0IGEvSW5jL3N0bTMyZjd4eF9oYWxfcGNkLmggYi9JbmMvc3RtMzJmN3h4X2hhbF9wY2QuaAppbmRleCA4N2QwMmZkLi45NTcyZmUxIDEwMDY0NAotLS0gYS9JbmMvc3RtMzJmN3h4X2hhbF9wY2QuaAorKysgYi9JbmMvc3RtMzJmN3h4X2hhbF9wY2QuaApAQCAtNiwxMyArNiwxMiBAQAogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgKiBAYXR0ZW50aW9uCiAgICoKLSAgKiA8aDI+PGNlbnRlcj4mY29weTsgQ29weXJpZ2h0IChjKSAyMDE3IFNUTWljcm9lbGVjdHJvbmljcy4KLSAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLjwvY2VudGVyPjwvaDI+CisgICogQ29weXJpZ2h0IChjKSAyMDE3IFNUTWljcm9lbGVjdHJvbmljcy4KKyAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAqCi0gICogVGhpcyBzb2Z0d2FyZSBjb21wb25lbnQgaXMgbGljZW5zZWQgYnkgU1QgdW5kZXIgQlNEIDMtQ2xhdXNlIGxpY2Vuc2UsCi0gICogdGhlICJMaWNlbnNlIjsgWW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZQotICAqIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdDoKLSAgKiAgICAgICAgICAgICAgICAgICAgICAgIG9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0JTRC0zLUNsYXVzZQorICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgdW5kZXIgdGVybXMgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZQorICAqIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvZnR3YXJlIGNvbXBvbmVudC4KKyAgKiBJZiBubyBMSUNFTlNFIGZpbGUgY29tZXMgd2l0aCB0aGlzIHNvZnR3YXJlLCBpdCBpcyBwcm92aWRlZCBBUy1JUy4KICAgKgogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgKi8KQEAgLTE5MCwxNiArMTg5LDIwIEBACiAjZGVmaW5lIF9fSEFMX1BDRF9FTkFCTEUoX19IQU5ETEVfXykgICAgICAgICAgICAgICAgICAgICAgICh2b2lkKVVTQl9FbmFibGVHbG9iYWxJbnQgKChfX0hBTkRMRV9fKS0+SW5zdGFuY2UpCiAjZGVmaW5lIF9fSEFMX1BDRF9ESVNBQkxFKF9fSEFORExFX18pICAgICAgICAgICAgICAgICAgICAgICh2b2lkKVVTQl9EaXNhYmxlR2xvYmFsSW50ICgoX19IQU5ETEVfXyktPkluc3RhbmNlKQogCi0jZGVmaW5lIF9fSEFMX1BDRF9HRVRfRkxBRyhfX0hBTkRMRV9fLCBfX0lOVEVSUlVQVF9fKSAgICAgICgoVVNCX1JlYWRJbnRlcnJ1cHRzKChfX0hBTkRMRV9fKS0+SW5zdGFuY2UpICYgKF9fSU5URVJSVVBUX18pKSA9PSAoX19JTlRFUlJVUFRfXykpCisjZGVmaW5lIF9fSEFMX1BDRF9HRVRfRkxBRyhfX0hBTkRMRV9fLCBfX0lOVEVSUlVQVF9fKSBcCisgICgoVVNCX1JlYWRJbnRlcnJ1cHRzKChfX0hBTkRMRV9fKS0+SW5zdGFuY2UpICYgKF9fSU5URVJSVVBUX18pKSA9PSAoX19JTlRFUlJVUFRfXykpCisKICNkZWZpbmUgX19IQUxfUENEX0NMRUFSX0ZMQUcoX19IQU5ETEVfXywgX19JTlRFUlJVUFRfXykgICAgKCgoX19IQU5ETEVfXyktPkluc3RhbmNlLT5HSU5UU1RTKSAmPSAgKF9fSU5URVJSVVBUX18pKQogI2RlZmluZSBfX0hBTF9QQ0RfSVNfSU5WQUxJRF9JTlRFUlJVUFQoX19IQU5ETEVfXykgICAgICAgICAoVVNCX1JlYWRJbnRlcnJ1cHRzKChfX0hBTkRMRV9fKS0+SW5zdGFuY2UpID09IDBVKQogCisjZGVmaW5lIF9fSEFMX1BDRF9VTkdBVEVfUEhZQ0xPQ0soX19IQU5ETEVfXykgXAorICAqKF9fSU8gdWludDMyX3QgKikoKHVpbnQzMl90KSgoX19IQU5ETEVfXyktPkluc3RhbmNlKSArIFVTQl9PVEdfUENHQ0NUTF9CQVNFKSAmPSB+KFVTQl9PVEdfUENHQ0NUTF9TVE9QQ0xLKQogCi0jZGVmaW5lIF9fSEFMX1BDRF9VTkdBVEVfUEhZQ0xPQ0soX19IQU5ETEVfXykgICAgICAgKihfX0lPIHVpbnQzMl90ICopKCh1aW50MzJfdCkoKF9fSEFORExFX18pLT5JbnN0YW5jZSkgKyBVU0JfT1RHX1BDR0NDVExfQkFTRSkgJj0gfihVU0JfT1RHX1BDR0NDVExfU1RPUENMSykKKyNkZWZpbmUgX19IQUxfUENEX0dBVEVfUEhZQ0xPQ0soX19IQU5ETEVfXykgXAorICAqKF9fSU8gdWludDMyX3QgKikoKHVpbnQzMl90KSgoX19IQU5ETEVfXyktPkluc3RhbmNlKSArIFVTQl9PVEdfUENHQ0NUTF9CQVNFKSB8PSBVU0JfT1RHX1BDR0NDVExfU1RPUENMSwogCi0jZGVmaW5lIF9fSEFMX1BDRF9HQVRFX1BIWUNMT0NLKF9fSEFORExFX18pICAgICAgICAgKihfX0lPIHVpbnQzMl90ICopKCh1aW50MzJfdCkoKF9fSEFORExFX18pLT5JbnN0YW5jZSkgKyBVU0JfT1RHX1BDR0NDVExfQkFTRSkgfD0gVVNCX09UR19QQ0dDQ1RMX1NUT1BDTEsKLQotI2RlZmluZSBfX0hBTF9QQ0RfSVNfUEhZX1NVU1BFTkRFRChfX0hBTkRMRV9fKSAgICAgICgoKihfX0lPIHVpbnQzMl90ICopKCh1aW50MzJfdCkoKF9fSEFORExFX18pLT5JbnN0YW5jZSkgKyBVU0JfT1RHX1BDR0NDVExfQkFTRSkpICYgMHgxMFUpCisjZGVmaW5lIF9fSEFMX1BDRF9JU19QSFlfU1VTUEVOREVEKF9fSEFORExFX18pIFwKKyAgKCgqKF9fSU8gdWludDMyX3QgKikoKHVpbnQzMl90KSgoX19IQU5ETEVfXyktPkluc3RhbmNlKSArIFVTQl9PVEdfUENHQ0NUTF9CQVNFKSkgJiAweDEwVSkKIAogI2RlZmluZSBfX0hBTF9VU0JfT1RHX0hTX1dBS0VVUF9FWFRJX0VOQUJMRV9JVCgpICAgIEVYVEktPklNUiB8PSAoVVNCX09UR19IU19XQUtFVVBfRVhUSV9MSU5FKQogI2RlZmluZSBfX0hBTF9VU0JfT1RHX0hTX1dBS0VVUF9FWFRJX0RJU0FCTEVfSVQoKSAgIEVYVEktPklNUiAmPSB+KFVTQl9PVEdfSFNfV0FLRVVQX0VYVElfTElORSkKQEAgLTM2MCwxMiArMzYzLDEyIEBACiBIQUxfU3RhdHVzVHlwZURlZiBIQUxfUENEX0VQX1RyYW5zbWl0KFBDRF9IYW5kbGVUeXBlRGVmICpocGNkLCB1aW50OF90IGVwX2FkZHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKnBCdWYsIHVpbnQzMl90IGxlbik7CiAKLQogSEFMX1N0YXR1c1R5cGVEZWYgSEFMX1BDRF9FUF9TZXRTdGFsbChQQ0RfSGFuZGxlVHlwZURlZiAqaHBjZCwgdWludDhfdCBlcF9hZGRyKTsKIEhBTF9TdGF0dXNUeXBlRGVmIEhBTF9QQ0RfRVBfQ2xyU3RhbGwoUENEX0hhbmRsZVR5cGVEZWYgKmhwY2QsIHVpbnQ4X3QgZXBfYWRkcik7CiBIQUxfU3RhdHVzVHlwZURlZiBIQUxfUENEX0VQX0ZsdXNoKFBDRF9IYW5kbGVUeXBlRGVmICpocGNkLCB1aW50OF90IGVwX2FkZHIpOwogSEFMX1N0YXR1c1R5cGVEZWYgSEFMX1BDRF9BY3RpdmF0ZVJlbW90ZVdha2V1cChQQ0RfSGFuZGxlVHlwZURlZiAqaHBjZCk7CiBIQUxfU3RhdHVzVHlwZURlZiBIQUxfUENEX0RlQWN0aXZhdGVSZW1vdGVXYWtldXAoUENEX0hhbmRsZVR5cGVEZWYgKmhwY2QpOworSEFMX1N0YXR1c1R5cGVEZWYgSEFMX1BDRF9TZXRUZXN0TW9kZShQQ0RfSGFuZGxlVHlwZURlZiAqaHBjZCwgdWludDhfdCB0ZXN0bW9kZSk7CiAKIHVpbnQzMl90ICAgICAgICAgIEhBTF9QQ0RfRVBfR2V0UnhDb3VudChQQ0RfSGFuZGxlVHlwZURlZiAqaHBjZCwgdWludDhfdCBlcF9hZGRyKTsKIC8qKgpAQCAtNDA4LDI3ICs0MTEsMjcgQEAKICNpZiBkZWZpbmVkIChVU0JfT1RHX0ZTKSB8fCBkZWZpbmVkIChVU0JfT1RHX0hTKQogI2lmbmRlZiBVU0JfT1RHX0RPRVBJTlRfT1RFUFNQUgogI2RlZmluZSBVU0JfT1RHX0RPRVBJTlRfT1RFUFNQUiAgICAgICAgICAgICAgICAoMHgxVUwgPDwgNSkgICAgICAvKiE8IFN0YXR1cyBQaGFzZSBSZWNlaXZlZCBpbnRlcnJ1cHQgKi8KLSNlbmRpZgorI2VuZGlmIC8qIGRlZmluZWQgVVNCX09UR19ET0VQSU5UX09URVBTUFIgKi8KIAogI2lmbmRlZiBVU0JfT1RHX0RPRVBNU0tfT1RFUFNQUk0KICNkZWZpbmUgVVNCX09UR19ET0VQTVNLX09URVBTUFJNICAgICAgICAgICAgICAgKDB4MVVMIDw8IDUpICAgICAgLyohPCBTZXR1cCBQYWNrZXQgUmVjZWl2ZWQgaW50ZXJydXB0IG1hc2sgKi8KLSNlbmRpZgorI2VuZGlmIC8qIGRlZmluZWQgVVNCX09UR19ET0VQTVNLX09URVBTUFJNICovCiAKICNpZm5kZWYgVVNCX09UR19ET0VQSU5UX05BSwogI2RlZmluZSBVU0JfT1RHX0RPRVBJTlRfTkFLICAgICAgICAgICAgICAgICAgICAoMHgxVUwgPDwgMTMpICAgICAgLyohPCBOQUsgaW50ZXJydXB0ICovCi0jZW5kaWYKKyNlbmRpZiAvKiBkZWZpbmVkIFVTQl9PVEdfRE9FUElOVF9OQUsgKi8KIAogI2lmbmRlZiBVU0JfT1RHX0RPRVBNU0tfTkFLTQogI2RlZmluZSBVU0JfT1RHX0RPRVBNU0tfTkFLTSAgICAgICAgICAgICAgICAgICAoMHgxVUwgPDwgMTMpICAgICAgLyohPCBPVVQgUGFja2V0IE5BSyBpbnRlcnJ1cHQgbWFzayAqLwotI2VuZGlmCisjZW5kaWYgLyogZGVmaW5lZCBVU0JfT1RHX0RPRVBNU0tfTkFLTSAqLwogCiAjaWZuZGVmIFVTQl9PVEdfRE9FUElOVF9TVFBLVFJYCiAjZGVmaW5lIFVTQl9PVEdfRE9FUElOVF9TVFBLVFJYICAgICAgICAgICAgICAgICgweDFVTCA8PCAxNSkgICAgICAvKiE8IFNldHVwIFBhY2tldCBSZWNlaXZlZCBpbnRlcnJ1cHQgKi8KLSNlbmRpZgorI2VuZGlmIC8qIGRlZmluZWQgVVNCX09UR19ET0VQSU5UX1NUUEtUUlggKi8KIAogI2lmbmRlZiBVU0JfT1RHX0RPRVBNU0tfTllFVE0KICNkZWZpbmUgVVNCX09UR19ET0VQTVNLX05ZRVRNICAgICAgICAgICAgICAgICAgKDB4MVVMIDw8IDE0KSAgICAgIC8qITwgU2V0dXAgUGFja2V0IFJlY2VpdmVkIGludGVycnVwdCBtYXNrICovCi0jZW5kaWYKKyNlbmRpZiAvKiBkZWZpbmVkIFVTQl9PVEdfRE9FUE1TS19OWUVUTSAqLwogI2VuZGlmIC8qIGRlZmluZWQgKFVTQl9PVEdfRlMpIHx8IGRlZmluZWQgKFVTQl9PVEdfSFMpICovCiAKIC8qIFByaXZhdGUgbWFjcm9zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCkBAIC00NTQsNSArNDU3LDMgQEAKICNlbmRpZgogCiAjZW5kaWYgLyogU1RNMzJGN3h4X0hBTF9QQ0RfSCAqLwotCi0vKioqKioqKioqKioqKioqKioqKioqKioqIChDKSBDT1BZUklHSFQgU1RNaWNyb2VsZWN0cm9uaWNzICoqKioqRU5EIE9GIEZJTEUqKioqLwpkaWZmIC0tZ2l0IGEvSW5jL3N0bTMyZjd4eF9oYWxfcGNkX2V4LmggYi9JbmMvc3RtMzJmN3h4X2hhbF9wY2RfZXguaAppbmRleCA4ZjlkYTI4Li4yNGYzZDczIDEwMDY0NAotLS0gYS9JbmMvc3RtMzJmN3h4X2hhbF9wY2RfZXguaAorKysgYi9JbmMvc3RtMzJmN3h4X2hhbF9wY2RfZXguaApAQCAtNiwxMyArNiwxMiBAQAogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgKiBAYXR0ZW50aW9uCiAgICoKLSAgKiA8aDI+PGNlbnRlcj4mY29weTsgQ29weXJpZ2h0IChjKSAyMDE3IFNUTWljcm9lbGVjdHJvbmljcy4KLSAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLjwvY2VudGVyPjwvaDI+CisgICogQ29weXJpZ2h0IChjKSAyMDE3IFNUTWljcm9lbGVjdHJvbmljcy4KKyAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAqCi0gICogVGhpcyBzb2Z0d2FyZSBjb21wb25lbnQgaXMgbGljZW5zZWQgYnkgU1QgdW5kZXIgQlNEIDMtQ2xhdXNlIGxpY2Vuc2UsCi0gICogdGhlICJMaWNlbnNlIjsgWW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZQotICAqIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdDoKLSAgKiAgICAgICAgICAgICAgICAgICAgICAgIG9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0JTRC0zLUNsYXVzZQorICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgdW5kZXIgdGVybXMgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZQorICAqIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvZnR3YXJlIGNvbXBvbmVudC4KKyAgKiBJZiBubyBMSUNFTlNFIGZpbGUgY29tZXMgd2l0aCB0aGlzIHNvZnR3YXJlLCBpdCBpcyBwcm92aWRlZCBBUy1JUy4KICAgKgogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgKi8KQEAgLTIzLDcgKzIyLDcgQEAKIAogI2lmZGVmIF9fY3BsdXNwbHVzCiBleHRlcm4gIkMiIHsKLSNlbmRpZgorI2VuZGlmIC8qIF9fY3BsdXNwbHVzICovCiAKIC8qIEluY2x1ZGVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAjaW5jbHVkZSAic3RtMzJmN3h4X2hhbF9kZWYuaCIKQEAgLTc4LDkgKzc3LDcgQEAKIAogI2lmZGVmIF9fY3BsdXNwbHVzCiB9Ci0jZW5kaWYKKyNlbmRpZiAvKiBfX2NwbHVzcGx1cyAqLwogCiAKICNlbmRpZiAvKiBTVE0zMkY3eHhfSEFMX1BDRF9FWF9IICovCi0KLS8qKioqKioqKioqKioqKioqKioqKioqKiogKEMpIENPUFlSSUdIVCBTVE1pY3JvZWxlY3Ryb25pY3MgKioqKipFTkQgT0YgRklMRSoqKiovCmRpZmYgLS1naXQgYS9JbmMvc3RtMzJmN3h4X2hhbF9wd3IuaCBiL0luYy9zdG0zMmY3eHhfaGFsX3B3ci5oCmluZGV4IDc5Y2IwNDguLjdmMTk4MTAgMTAwNjQ0Ci0tLSBhL0luYy9zdG0zMmY3eHhfaGFsX3B3ci5oCisrKyBiL0luYy9zdG0zMmY3eHhfaGFsX3B3ci5oCkBAIC02LDE2ICs2LDE1IEBACiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAqIEBhdHRlbnRpb24KICAgKgotICAqIDxoMj48Y2VudGVyPiZjb3B5OyBDb3B5cmlnaHQgKGMpIDIwMTcgU1RNaWNyb2VsZWN0cm9uaWNzLgotICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuPC9jZW50ZXI+PC9oMj4KKyAgKiBDb3B5cmlnaHQgKGMpIDIwMTcgU1RNaWNyb2VsZWN0cm9uaWNzLgorICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICoKLSAgKiBUaGlzIHNvZnR3YXJlIGNvbXBvbmVudCBpcyBsaWNlbnNlZCBieSBTVCB1bmRlciBCU0QgMy1DbGF1c2UgbGljZW5zZSwKLSAgKiB0aGUgIkxpY2Vuc2UiOyBZb3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlCi0gICogTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0OgotICAqICAgICAgICAgICAgICAgICAgICAgICAgb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvQlNELTMtQ2xhdXNlCisgICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCB1bmRlciB0ZXJtcyB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlCisgICogaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc29mdHdhcmUgY29tcG9uZW50LgorICAqIElmIG5vIExJQ0VOU0UgZmlsZSBjb21lcyB3aXRoIHRoaXMgc29mdHdhcmUsIGl0IGlzIHByb3ZpZGVkIEFTLUlTLgogICAqCiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICAqLyAKKyAgKi8KIAogLyogRGVmaW5lIHRvIHByZXZlbnQgcmVjdXJzaXZlIGluY2x1c2lvbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KICNpZm5kZWYgX19TVE0zMkY3eHhfSEFMX1BXUl9ICkBAIC00MDEsNCArNDAwLDMgQEAKIAogI2VuZGlmIC8qIF9fU1RNMzJGN3h4X0hBTF9QV1JfSCAqLwogCi0vKioqKioqKioqKioqKioqKioqKioqKioqIChDKSBDT1BZUklHSFQgU1RNaWNyb2VsZWN0cm9uaWNzICoqKioqRU5EIE9GIEZJTEUqKioqLwpkaWZmIC0tZ2l0IGEvSW5jL3N0bTMyZjd4eF9oYWxfcHdyX2V4LmggYi9JbmMvc3RtMzJmN3h4X2hhbF9wd3JfZXguaAppbmRleCAwYzMzYmRmLi44MTc4MjMxIDEwMDY0NAotLS0gYS9JbmMvc3RtMzJmN3h4X2hhbF9wd3JfZXguaAorKysgYi9JbmMvc3RtMzJmN3h4X2hhbF9wd3JfZXguaApAQCAtNiwxNiArNiwxNSBAQAogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgKiBAYXR0ZW50aW9uCiAgICoKLSAgKiA8aDI+PGNlbnRlcj4mY29weTsgQ29weXJpZ2h0IChjKSAyMDE3IFNUTWljcm9lbGVjdHJvbmljcy4KLSAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLjwvY2VudGVyPjwvaDI+CisgICogQ29weXJpZ2h0IChjKSAyMDE3IFNUTWljcm9lbGVjdHJvbmljcy4KKyAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAqCi0gICogVGhpcyBzb2Z0d2FyZSBjb21wb25lbnQgaXMgbGljZW5zZWQgYnkgU1QgdW5kZXIgQlNEIDMtQ2xhdXNlIGxpY2Vuc2UsCi0gICogdGhlICJMaWNlbnNlIjsgWW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZQotICAqIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdDoKLSAgKiAgICAgICAgICAgICAgICAgICAgICAgIG9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0JTRC0zLUNsYXVzZQorICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgdW5kZXIgdGVybXMgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZQorICAqIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvZnR3YXJlIGNvbXBvbmVudC4KKyAgKiBJZiBubyBMSUNFTlNFIGZpbGUgY29tZXMgd2l0aCB0aGlzIHNvZnR3YXJlLCBpdCBpcyBwcm92aWRlZCBBUy1JUy4KICAgKgogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAgKi8gCisgICovCiAKIC8qIERlZmluZSB0byBwcmV2ZW50IHJlY3Vyc2l2ZSBpbmNsdXNpb24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAjaWZuZGVmIF9fU1RNMzJGN3h4X0hBTF9QV1JfRVhfSApAQCAtMjU5LDQgKzI1OCwzIEBACiAKICNlbmRpZiAvKiBfX1NUTTMyRjd4eF9IQUxfUFdSX0VYX0ggKi8KIAotLyoqKioqKioqKioqKioqKioqKioqKioqKiAoQykgQ09QWVJJR0hUIFNUTWljcm9lbGVjdHJvbmljcyAqKioqKkVORCBPRiBGSUxFKioqKi8KZGlmZiAtLWdpdCBhL0luYy9zdG0zMmY3eHhfaGFsX3FzcGkuaCBiL0luYy9zdG0zMmY3eHhfaGFsX3FzcGkuaAppbmRleCA4ZDdmNTIwLi5lMGRiZjljIDEwMDY0NAotLS0gYS9JbmMvc3RtMzJmN3h4X2hhbF9xc3BpLmgKKysrIGIvSW5jL3N0bTMyZjd4eF9oYWxfcXNwaS5oCkBAIC02LDEzICs2LDEyIEBACiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAqIEBhdHRlbnRpb24KICAgKgotICAqIDxoMj48Y2VudGVyPiZjb3B5OyBDb3B5cmlnaHQgKGMpIDIwMTcgU1RNaWNyb2VsZWN0cm9uaWNzLgotICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuPC9jZW50ZXI+PC9oMj4KKyAgKiBDb3B5cmlnaHQgKGMpIDIwMTcgU1RNaWNyb2VsZWN0cm9uaWNzLgorICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICoKLSAgKiBUaGlzIHNvZnR3YXJlIGNvbXBvbmVudCBpcyBsaWNlbnNlZCBieSBTVCB1bmRlciBCU0QgMy1DbGF1c2UgbGljZW5zZSwKLSAgKiB0aGUgIkxpY2Vuc2UiOyBZb3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlCi0gICogTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0OgotICAqICAgICAgICAgICAgICAgICAgICAgICBvcGVuc291cmNlLm9yZy9saWNlbnNlcy9CU0QtMy1DbGF1c2UKKyAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIHVuZGVyIHRlcm1zIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUKKyAgKiBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb2Z0d2FyZSBjb21wb25lbnQuCisgICogSWYgbm8gTElDRU5TRSBmaWxlIGNvbWVzIHdpdGggdGhpcyBzb2Z0d2FyZSwgaXQgaXMgcHJvdmlkZWQgQVMtSVMuCiAgICoKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgICovCkBAIC03NDIsMTIgKzc0MSwxMCBAQAogICAqIEB9CiAgICovCiAKLSNlbmRpZiAvKiBkZWZpbmVkKFFVQURTUEkpIHx8IGRlZmluZWQoUVVBRFNQSTEpIHx8IGRlZmluZWQoUVVBRFNQSTIpICovCisjZW5kaWYgLyogZGVmaW5lZChRVUFEU1BJKSAqLwogCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KICNlbmRpZgogCiAjZW5kaWYgLyogU1RNMzJGN3h4X0hBTF9RU1BJX0ggKi8KLQotLyoqKioqKioqKioqKioqKioqKioqKioqKiAoQykgQ09QWVJJR0hUIFNUTWljcm9lbGVjdHJvbmljcyAqKioqKkVORCBPRiBGSUxFKioqKi8KZGlmZiAtLWdpdCBhL0luYy9zdG0zMmY3eHhfaGFsX3JjYy5oIGIvSW5jL3N0bTMyZjd4eF9oYWxfcmNjLmgKaW5kZXggNGRiODIyMi4uMGMzOWIyOCAxMDA2NDQKLS0tIGEvSW5jL3N0bTMyZjd4eF9oYWxfcmNjLmgKKysrIGIvSW5jL3N0bTMyZjd4eF9oYWxfcmNjLmgKQEAgLTYsMTQgKzYsMTIgQEAKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgICogQGF0dGVudGlvbgogICAqCi0gICogPGgyPjxjZW50ZXI+JmNvcHk7IENvcHlyaWdodCAoYykgMjAxNyBTVE1pY3JvZWxlY3Ryb25pY3MuCi0gICogQWxsIHJpZ2h0cyByZXNlcnZlZC48L2NlbnRlcj48L2gyPgorICAqIENvcHlyaWdodCAoYykgMjAxNyBTVE1pY3JvZWxlY3Ryb25pY3MuCisgICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgKgotICAqIFRoaXMgc29mdHdhcmUgY29tcG9uZW50IGlzIGxpY2Vuc2VkIGJ5IFNUIHVuZGVyIEJTRCAzLUNsYXVzZSBsaWNlbnNlLAotICAqIHRoZSAiTGljZW5zZSI7IFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUKLSAgKiBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQ6Ci0gICogICAgICAgICAgICAgICAgICAgICAgICBvcGVuc291cmNlLm9yZy9saWNlbnNlcy9CU0QtMy1DbGF1c2UKLSAgKgorICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgdW5kZXIgdGVybXMgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbgorICAqIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvZnR3YXJlIGNvbXBvbmVudC4KKyAgKiBJZiBubyBMSUNFTlNFIGZpbGUgY29tZXMgd2l0aCB0aGlzIHNvZnR3YXJlLCBpdCBpcyBwcm92aWRlZCBBUy1JUy4KICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgICovCiAKQEAgLTEzMDcsNCArMTMwNSwzIEBACiAKICNlbmRpZiAvKiBfX1NUTTMyRjd4eF9IQUxfUkNDX0ggKi8KIAotLyoqKioqKioqKioqKioqKioqKioqKioqKiAoQykgQ09QWVJJR0hUIFNUTWljcm9lbGVjdHJvbmljcyAqKioqKkVORCBPRiBGSUxFKioqKi8KZGlmZiAtLWdpdCBhL0luYy9zdG0zMmY3eHhfaGFsX3JjY19leC5oIGIvSW5jL3N0bTMyZjd4eF9oYWxfcmNjX2V4LmgKaW5kZXggMGE3NTgwZC4uNjU4N2U5OSAxMDA2NDQKLS0tIGEvSW5jL3N0bTMyZjd4eF9oYWxfcmNjX2V4LmgKKysrIGIvSW5jL3N0bTMyZjd4eF9oYWxfcmNjX2V4LmgKQEAgLTYsMTQgKzYsMTIgQEAKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgICogQGF0dGVudGlvbgogICAqCi0gICogPGgyPjxjZW50ZXI+JmNvcHk7IENvcHlyaWdodCAoYykgMjAxNyBTVE1pY3JvZWxlY3Ryb25pY3MuCi0gICogQWxsIHJpZ2h0cyByZXNlcnZlZC48L2NlbnRlcj48L2gyPgorICAqIENvcHlyaWdodCAoYykgMjAxNyBTVE1pY3JvZWxlY3Ryb25pY3MuCisgICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgKgotICAqIFRoaXMgc29mdHdhcmUgY29tcG9uZW50IGlzIGxpY2Vuc2VkIGJ5IFNUIHVuZGVyIEJTRCAzLUNsYXVzZSBsaWNlbnNlLAotICAqIHRoZSAiTGljZW5zZSI7IFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUKLSAgKiBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQ6Ci0gICogICAgICAgICAgICAgICAgICAgICAgICBvcGVuc291cmNlLm9yZy9saWNlbnNlcy9CU0QtMy1DbGF1c2UKLSAgKgorICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgdW5kZXIgdGVybXMgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbgorICAqIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvZnR3YXJlIGNvbXBvbmVudC4KKyAgKiBJZiBubyBMSUNFTlNFIGZpbGUgY29tZXMgd2l0aCB0aGlzIHNvZnR3YXJlLCBpdCBpcyBwcm92aWRlZCBBUy1JUy4KICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgICovCiAKQEAgLTM1MjEsNCArMzUxOSwzIEBACiAKICNlbmRpZiAvKiBfX1NUTTMyRjd4eF9IQUxfUkNDX0VYX0ggKi8KIAotLyoqKioqKioqKioqKioqKioqKioqKioqKiAoQykgQ09QWVJJR0hUIFNUTWljcm9lbGVjdHJvbmljcyAqKioqKkVORCBPRiBGSUxFKioqKi8KZGlmZiAtLWdpdCBhL0luYy9zdG0zMmY3eHhfaGFsX3JuZy5oIGIvSW5jL3N0bTMyZjd4eF9oYWxfcm5nLmgKaW5kZXggMzI0NWFhNy4uZWM2NmZhNSAxMDA2NDQKLS0tIGEvSW5jL3N0bTMyZjd4eF9oYWxfcm5nLmgKKysrIGIvSW5jL3N0bTMyZjd4eF9oYWxfcm5nLmgKQEAgLTYsMTMgKzYsMTIgQEAKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgICogQGF0dGVudGlvbgogICAqCi0gICogPGgyPjxjZW50ZXI+JmNvcHk7IENvcHlyaWdodCAoYykgMjAxNyBTVE1pY3JvZWxlY3Ryb25pY3MuCi0gICogQWxsIHJpZ2h0cyByZXNlcnZlZC48L2NlbnRlcj48L2gyPgorICAqIENvcHlyaWdodCAoYykgMjAxNyBTVE1pY3JvZWxlY3Ryb25pY3MuCisgICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgKgotICAqIFRoaXMgc29mdHdhcmUgY29tcG9uZW50IGlzIGxpY2Vuc2VkIGJ5IFNUIHVuZGVyIEJTRCAzLUNsYXVzZSBsaWNlbnNlLAotICAqIHRoZSAiTGljZW5zZSI7IFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUKLSAgKiBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQ6Ci0gICogICAgICAgICAgICAgICAgICAgICAgICBvcGVuc291cmNlLm9yZy9saWNlbnNlcy9CU0QtMy1DbGF1c2UKKyAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIHVuZGVyIHRlcm1zIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUKKyAgKiBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb2Z0d2FyZSBjb21wb25lbnQuCisgICogSWYgbm8gTElDRU5TRSBmaWxlIGNvbWVzIHdpdGggdGhpcyBzb2Z0d2FyZSwgaXQgaXMgcHJvdmlkZWQgQVMtSVMuCiAgICoKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgICovCkBAIC0yMiw3ICsyMSw3IEBACiAjZGVmaW5lIFNUTTMyRjd4eF9IQUxfUk5HX0gKIAogI2lmZGVmIF9fY3BsdXNwbHVzCi0gZXh0ZXJuICJDIiB7CitleHRlcm4gIkMiIHsKICNlbmRpZgogCiAvKiBJbmNsdWRlcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwpAQCAtNzcsNyArNzYsNyBAQAogdHlwZWRlZiBzdHJ1Y3QgIF9fUk5HX0hhbmRsZVR5cGVEZWYKICNlbHNlCiB0eXBlZGVmIHN0cnVjdAotI2VuZGlmIC8qIChVU0VfSEFMX1JOR19SRUdJU1RFUl9DQUxMQkFDS1MpICovCisjZW5kaWYgLyogVVNFX0hBTF9STkdfUkVHSVNURVJfQ0FMTEJBQ0tTICovCiB7CiAgIFJOR19UeXBlRGVmICAgICAgICAgICAgICAgICAqSW5zdGFuY2U7ICAgIC8qITwgUmVnaXN0ZXIgYmFzZSBhZGRyZXNzICAgKi8KIApAQCAtODUsNyArODQsNyBAQAogCiAgIF9fSU8gSEFMX1JOR19TdGF0ZVR5cGVEZWYgICBTdGF0ZTsgICAgICAgIC8qITwgUk5HIGNvbW11bmljYXRpb24gc3RhdGUgKi8KIAotICBfX0lPICB1aW50MzJfdCAgICAgICAgICAgICAgRXJyb3JDb2RlOyAgICAgLyohPCBSTkcgRXJyb3IgY29kZSAgICAgICAgICAgICAgICovCisgIF9fSU8gIHVpbnQzMl90ICAgICAgICAgICAgICBFcnJvckNvZGU7ICAgIC8qITwgUk5HIEVycm9yIGNvZGUgICAgICAgICAgKi8KIAogICB1aW50MzJfdCAgICAgICAgICAgICAgICAgICAgUmFuZG9tTnVtYmVyOyAvKiE8IExhc3QgR2VuZXJhdGVkIFJORyBEYXRhICovCiAKQEAgLTE1NiwxNCArMTU1LDE0IEBACiAvKiogQGRlZmdyb3VwIFJOR19FcnJvcl9EZWZpbml0aW9uICAgUk5HIEVycm9yIERlZmluaXRpb24KICAgKiBAewogICAqLwotI2RlZmluZSAgSEFMX1JOR19FUlJPUl9OT05FICAgICAgICAgICAgIDB4MDAwMDAwMDBVICAgIC8qITwgTm8gZXJyb3IgICAgICAgICAgICAgKi8KKyNkZWZpbmUgIEhBTF9STkdfRVJST1JfTk9ORSAgICAgICAgICAgICAweDAwMDAwMDAwVSAgICAvKiE8IE5vIGVycm9yICAgICAgICAgICovCiAjaWYgKFVTRV9IQUxfUk5HX1JFR0lTVEVSX0NBTExCQUNLUyA9PSAxKQogI2RlZmluZSAgSEFMX1JOR19FUlJPUl9JTlZBTElEX0NBTExCQUNLIDB4MDAwMDAwMDFVICAgIC8qITwgSW52YWxpZCBDYWxsYmFjayBlcnJvciAgKi8KICNlbmRpZiAvKiBVU0VfSEFMX1JOR19SRUdJU1RFUl9DQUxMQkFDS1MgKi8KLSNkZWZpbmUgIEhBTF9STkdfRVJST1JfVElNRU9VVCAgICAgICAgICAweDAwMDAwMDAyVSAgICAvKiE8IFRpbWVvdXQgZXJyb3IgICAgICAgICovCisjZGVmaW5lICBIQUxfUk5HX0VSUk9SX1RJTUVPVVQgICAgICAgICAgMHgwMDAwMDAwMlUgICAgLyohPCBUaW1lb3V0IGVycm9yICAgICAqLwogI2RlZmluZSAgSEFMX1JOR19FUlJPUl9CVVNZICAgICAgICAgICAgIDB4MDAwMDAwMDRVICAgIC8qITwgQnVzeSBlcnJvciAgICAgICAgKi8KICNkZWZpbmUgIEhBTF9STkdfRVJST1JfU0VFRCAgICAgICAgICAgICAweDAwMDAwMDA4VSAgICAvKiE8IFNlZWQgZXJyb3IgICAgICAgICovCi0jZGVmaW5lICBIQUxfUk5HX0VSUk9SX0NMT0NLICAgICAgICAgICAgMHgwMDAwMDAxMFUgICAvKiE8IENsb2NrIGVycm9yICAgICAgICAqLworI2RlZmluZSAgSEFMX1JOR19FUlJPUl9DTE9DSyAgICAgICAgICAgIDB4MDAwMDAwMTBVICAgIC8qITwgQ2xvY2sgZXJyb3IgICAgICAgKi8KIC8qKgogICAqIEB9CiAgICovCkBAIC0xODksNyArMTg4LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IHdoaWxlKDBVKQogI2Vsc2UKICNkZWZpbmUgX19IQUxfUk5HX1JFU0VUX0hBTkRMRV9TVEFURShfX0hBTkRMRV9fKSAoKF9fSEFORExFX18pLT5TdGF0ZSA9IEhBTF9STkdfU1RBVEVfUkVTRVQpCi0jZW5kaWYgLypVU0VfSEFMX1JOR19SRUdJU1RFUl9DQUxMQkFDS1MgKi8KKyNlbmRpZiAvKiBVU0VfSEFMX1JOR19SRUdJU1RFUl9DQUxMQkFDS1MgKi8KIAogLyoqCiAgICogQGJyaWVmICBFbmFibGVzIHRoZSBSTkcgcGVyaXBoZXJhbC4KQEAgLTI4NCw3ICsyODMsOCBAQAogCiAvKiBDYWxsYmFja3MgUmVnaXN0ZXIvVW5SZWdpc3RlciBmdW5jdGlvbnMgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogI2lmIChVU0VfSEFMX1JOR19SRUdJU1RFUl9DQUxMQkFDS1MgPT0gMSkKLUhBTF9TdGF0dXNUeXBlRGVmIEhBTF9STkdfUmVnaXN0ZXJDYWxsYmFjayhSTkdfSGFuZGxlVHlwZURlZiAqaHJuZywgSEFMX1JOR19DYWxsYmFja0lEVHlwZURlZiBDYWxsYmFja0lELCBwUk5HX0NhbGxiYWNrVHlwZURlZiBwQ2FsbGJhY2spOworSEFMX1N0YXR1c1R5cGVEZWYgSEFMX1JOR19SZWdpc3RlckNhbGxiYWNrKFJOR19IYW5kbGVUeXBlRGVmICpocm5nLCBIQUxfUk5HX0NhbGxiYWNrSURUeXBlRGVmIENhbGxiYWNrSUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcFJOR19DYWxsYmFja1R5cGVEZWYgcENhbGxiYWNrKTsKIEhBTF9TdGF0dXNUeXBlRGVmIEhBTF9STkdfVW5SZWdpc3RlckNhbGxiYWNrKFJOR19IYW5kbGVUeXBlRGVmICpocm5nLCBIQUxfUk5HX0NhbGxiYWNrSURUeXBlRGVmIENhbGxiYWNrSUQpOwogCiBIQUxfU3RhdHVzVHlwZURlZiBIQUxfUk5HX1JlZ2lzdGVyUmVhZHlEYXRhQ2FsbGJhY2soUk5HX0hhbmRsZVR5cGVEZWYgKmhybmcsIHBSTkdfUmVhZHlEYXRhQ2FsbGJhY2tUeXBlRGVmIHBDYWxsYmFjayk7CkBAIC0yOTgsOCArMjk4LDEwIEBACiAvKiogQGRlZmdyb3VwIFJOR19FeHBvcnRlZF9GdW5jdGlvbnNfR3JvdXAyIFBlcmlwaGVyYWwgQ29udHJvbCBmdW5jdGlvbnMKICAgKiBAewogICAqLwotdWludDMyX3QgSEFMX1JOR19HZXRSYW5kb21OdW1iZXIoUk5HX0hhbmRsZVR5cGVEZWYgKmhybmcpOyAgICAvKiBPYnNvbGV0ZSwgdXNlIEhBTF9STkdfR2VuZXJhdGVSYW5kb21OdW1iZXIoKSBpbnN0ZWFkICAgICovCi11aW50MzJfdCBIQUxfUk5HX0dldFJhbmRvbU51bWJlcl9JVChSTkdfSGFuZGxlVHlwZURlZiAqaHJuZyk7IC8qIE9ic29sZXRlLCB1c2UgSEFMX1JOR19HZW5lcmF0ZVJhbmRvbU51bWJlcl9JVCgpIGluc3RlYWQgKi8KK3VpbnQzMl90IEhBTF9STkdfR2V0UmFuZG9tTnVtYmVyKFJOR19IYW5kbGVUeXBlRGVmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqaHJuZyk7ICAgIC8qIE9ic29sZXRlLCB1c2UgSEFMX1JOR19HZW5lcmF0ZVJhbmRvbU51bWJlcigpIGluc3RlYWQgICAgKi8KK3VpbnQzMl90IEhBTF9STkdfR2V0UmFuZG9tTnVtYmVyX0lUKFJOR19IYW5kbGVUeXBlRGVmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqaHJuZyk7IC8qIE9ic29sZXRlLCB1c2UgSEFMX1JOR19HZW5lcmF0ZVJhbmRvbU51bWJlcl9JVCgpIGluc3RlYWQgKi8KIEhBTF9TdGF0dXNUeXBlRGVmIEhBTF9STkdfR2VuZXJhdGVSYW5kb21OdW1iZXIoUk5HX0hhbmRsZVR5cGVEZWYgKmhybmcsIHVpbnQzMl90ICpyYW5kb20zMmJpdCk7CiBIQUxfU3RhdHVzVHlwZURlZiBIQUxfUk5HX0dlbmVyYXRlUmFuZG9tTnVtYmVyX0lUKFJOR19IYW5kbGVUeXBlRGVmICpocm5nKTsKIHVpbnQzMl90IEhBTF9STkdfUmVhZExhc3RSYW5kb21OdW1iZXIoUk5HX0hhbmRsZVR5cGVEZWYgKmhybmcpOwpAQCAtMzMzLDggKzMzNSw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICgoSVQpID09IFJOR19JVF9TRUkpKQogCiAjZGVmaW5lIElTX1JOR19GTEFHKEZMQUcpICgoKEZMQUcpID09IFJOR19GTEFHX0RSRFkpIHx8IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKEZMQUcpID09IFJOR19GTEFHX0NFQ1MpIHx8IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKEZMQUcpID09IFJOR19GTEFHX1NFQ1MpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgKChGTEFHKSA9PSBSTkdfRkxBR19DRUNTKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoKEZMQUcpID09IFJOR19GTEFHX1NFQ1MpKQogCiAvKioKICAgKiBAfQpAQCAtMzU3LDQgKzM1OSwzIEBACiAKICNlbmRpZiAvKiBTVE0zMkY3eHhfSEFMX1JOR19IICovCiAKLS8qKioqKioqKioqKioqKioqKioqKioqKiogKEMpIENPUFlSSUdIVCBTVE1pY3JvZWxlY3Ryb25pY3MgKioqKipFTkQgT0YgRklMRSoqKiovCmRpZmYgLS1naXQgYS9JbmMvc3RtMzJmN3h4X2hhbF9ydGMuaCBiL0luYy9zdG0zMmY3eHhfaGFsX3J0Yy5oCmluZGV4IDk2NTJiZWYuLjVjZDNkMTkgMTAwNjQ0Ci0tLSBhL0luYy9zdG0zMmY3eHhfaGFsX3J0Yy5oCisrKyBiL0luYy9zdG0zMmY3eHhfaGFsX3J0Yy5oCkBAIC02LDEzICs2LDEyIEBACiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAqIEBhdHRlbnRpb24KICAgKgotICAqIDxoMj48Y2VudGVyPiZjb3B5OyBDb3B5cmlnaHQgKGMpIDIwMTcgU1RNaWNyb2VsZWN0cm9uaWNzLgotICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuPC9jZW50ZXI+PC9oMj4KKyAgKiBDb3B5cmlnaHQgKGMpIDIwMTcgU1RNaWNyb2VsZWN0cm9uaWNzLgorICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICoKLSAgKiBUaGlzIHNvZnR3YXJlIGNvbXBvbmVudCBpcyBsaWNlbnNlZCBieSBTVCB1bmRlciBCU0QgMy1DbGF1c2UgbGljZW5zZSwKLSAgKiB0aGUgIkxpY2Vuc2UiOyBZb3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlCi0gICogTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0OgotICAqICAgICAgICAgICAgICAgICAgICAgICAgb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvQlNELTMtQ2xhdXNlCisgICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCB1bmRlciB0ZXJtcyB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlCisgICogaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc29mdHdhcmUgY29tcG9uZW50LgorICAqIElmIG5vIExJQ0VOU0UgZmlsZSBjb21lcyB3aXRoIHRoaXMgc29mdHdhcmUsIGl0IGlzIHByb3ZpZGVkIEFTLUlTLgogICAqCiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAqLwpAQCAtODU4LDQgKzg1NywzIEBACiAKICNlbmRpZiAvKiBfX1NUTTMyRjd4eF9IQUxfUlRDX0ggKi8KIAotLyoqKioqKioqKioqKioqKioqKioqKioqKiAoQykgQ09QWVJJR0hUIFNUTWljcm9lbGVjdHJvbmljcyAqKioqKkVORCBPRiBGSUxFKioqKi8KZGlmZiAtLWdpdCBhL0luYy9zdG0zMmY3eHhfaGFsX3J0Y19leC5oIGIvSW5jL3N0bTMyZjd4eF9oYWxfcnRjX2V4LmgKaW5kZXggMDczYTJmMC4uNzQxNWI5NSAxMDA2NDQKLS0tIGEvSW5jL3N0bTMyZjd4eF9oYWxfcnRjX2V4LmgKKysrIGIvSW5jL3N0bTMyZjd4eF9oYWxfcnRjX2V4LmgKQEAgLTYsMTMgKzYsMTIgQEAKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgICogQGF0dGVudGlvbgogICAqCi0gICogPGgyPjxjZW50ZXI+JmNvcHk7IENvcHlyaWdodCAoYykgMjAxNyBTVE1pY3JvZWxlY3Ryb25pY3MuCi0gICogQWxsIHJpZ2h0cyByZXNlcnZlZC48L2NlbnRlcj48L2gyPgorICAqIENvcHlyaWdodCAoYykgMjAxNyBTVE1pY3JvZWxlY3Ryb25pY3MuCisgICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgKgotICAqIFRoaXMgc29mdHdhcmUgY29tcG9uZW50IGlzIGxpY2Vuc2VkIGJ5IFNUIHVuZGVyIEJTRCAzLUNsYXVzZSBsaWNlbnNlLAotICAqIHRoZSAiTGljZW5zZSI7IFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUKLSAgKiBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQ6Ci0gICogICAgICAgICAgICAgICAgICAgICAgICBvcGVuc291cmNlLm9yZy9saWNlbnNlcy9CU0QtMy1DbGF1c2UKKyAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIHVuZGVyIHRlcm1zIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUKKyAgKiBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb2Z0d2FyZSBjb21wb25lbnQuCisgICogSWYgbm8gTElDRU5TRSBmaWxlIGNvbWVzIHdpdGggdGhpcyBzb2Z0d2FyZSwgaXQgaXMgcHJvdmlkZWQgQVMtSVMuCiAgICoKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgICovIApAQCAtMTAxNCw0ICsxMDEzLDMgQEAKIAogI2VuZGlmIC8qIF9fU1RNMzJGN3h4X0hBTF9SVENfRVhfSCAqLwogCi0vKioqKioqKioqKioqKioqKioqKioqKioqIChDKSBDT1BZUklHSFQgU1RNaWNyb2VsZWN0cm9uaWNzICoqKioqRU5EIE9GIEZJTEUqKioqLwpkaWZmIC0tZ2l0IGEvSW5jL3N0bTMyZjd4eF9oYWxfc2FpLmggYi9JbmMvc3RtMzJmN3h4X2hhbF9zYWkuaAppbmRleCBkNzgyMjY5Li40NzgxMzhiIDEwMDY0NAotLS0gYS9JbmMvc3RtMzJmN3h4X2hhbF9zYWkuaAorKysgYi9JbmMvc3RtMzJmN3h4X2hhbF9zYWkuaApAQCAtNiwxMyArNiwxMiBAQAogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgKiBAYXR0ZW50aW9uCiAgICoKLSAgKiA8aDI+PGNlbnRlcj4mY29weTsgQ29weXJpZ2h0IChjKSAyMDE3IFNUTWljcm9lbGVjdHJvbmljcy4KLSAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLjwvY2VudGVyPjwvaDI+CisgICogQ29weXJpZ2h0IChjKSAyMDE3IFNUTWljcm9lbGVjdHJvbmljcy4KKyAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAqCi0gICogVGhpcyBzb2Z0d2FyZSBjb21wb25lbnQgaXMgbGljZW5zZWQgYnkgU1QgdW5kZXIgQlNEIDMtQ2xhdXNlIGxpY2Vuc2UsCi0gICogdGhlICJMaWNlbnNlIjsgWW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZQotICAqIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdDoKLSAgKiAgICAgICAgICAgICAgICAgICAgICAgIG9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0JTRC0zLUNsYXVzZQorICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgdW5kZXIgdGVybXMgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZQorICAqIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvZnR3YXJlIGNvbXBvbmVudC4KKyAgKiBJZiBubyBMSUNFTlNFIGZpbGUgY29tZXMgd2l0aCB0aGlzIHNvZnR3YXJlLCBpdCBpcyBwcm92aWRlZCBBUy1JUy4KICAgKgogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgKi8KQEAgLTg3OCw0ICs4NzcsMyBAQAogCiAjZW5kaWYgLyogX19TVE0zMkY3eHhfSEFMX1NBSV9IICovCiAKLS8qKioqKioqKioqKioqKioqKioqKioqKiogKEMpIENPUFlSSUdIVCBTVE1pY3JvZWxlY3Ryb25pY3MgKioqKipFTkQgT0YgRklMRSoqKiovCmRpZmYgLS1naXQgYS9JbmMvc3RtMzJmN3h4X2hhbF9zYWlfZXguaCBiL0luYy9zdG0zMmY3eHhfaGFsX3NhaV9leC5oCmluZGV4IDFhNTIxY2IuLmUwY2NlYzIgMTAwNjQ0Ci0tLSBhL0luYy9zdG0zMmY3eHhfaGFsX3NhaV9leC5oCisrKyBiL0luYy9zdG0zMmY3eHhfaGFsX3NhaV9leC5oCkBAIC02LDEzICs2LDEyIEBACiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAqIEBhdHRlbnRpb24KICAgKgotICAqIDxoMj48Y2VudGVyPiZjb3B5OyBDb3B5cmlnaHQgKGMpIDIwMTcgU1RNaWNyb2VsZWN0cm9uaWNzLgotICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuPC9jZW50ZXI+PC9oMj4KKyAgKiBDb3B5cmlnaHQgKGMpIDIwMTcgU1RNaWNyb2VsZWN0cm9uaWNzLgorICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICoKLSAgKiBUaGlzIHNvZnR3YXJlIGNvbXBvbmVudCBpcyBsaWNlbnNlZCBieSBTVCB1bmRlciBCU0QgMy1DbGF1c2UgbGljZW5zZSwKLSAgKiB0aGUgIkxpY2Vuc2UiOyBZb3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlCi0gICogTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0OgotICAqICAgICAgICAgICAgICAgICAgICAgICAgb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvQlNELTMtQ2xhdXNlCisgICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCB1bmRlciB0ZXJtcyB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlCisgICogaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc29mdHdhcmUgY29tcG9uZW50LgorICAqIElmIG5vIExJQ0VOU0UgZmlsZSBjb21lcyB3aXRoIHRoaXMgc29mdHdhcmUsIGl0IGlzIHByb3ZpZGVkIEFTLUlTLgogICAqCiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAqLwpAQCAtMzUsNCArMzQsMyBAQAogCiAjZW5kaWYgLyogX19TVE0zMkY3eHhfSEFMX1NBSV9FWF9IICovCiAKLS8qKioqKioqKioqKioqKioqKioqKioqKiogKEMpIENPUFlSSUdIVCBTVE1pY3JvZWxlY3Ryb25pY3MgKioqKipFTkQgT0YgRklMRSoqKiovCmRpZmYgLS1naXQgYS9JbmMvc3RtMzJmN3h4X2hhbF9zZC5oIGIvSW5jL3N0bTMyZjd4eF9oYWxfc2QuaAppbmRleCAxNzZkYzEyLi4zMGRlODQ4IDEwMDY0NAotLS0gYS9JbmMvc3RtMzJmN3h4X2hhbF9zZC5oCisrKyBiL0luYy9zdG0zMmY3eHhfaGFsX3NkLmgKQEAgLTYsMTMgKzYsMTIgQEAKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgICogQGF0dGVudGlvbgogICAqCi0gICogPGgyPjxjZW50ZXI+JmNvcHk7IENvcHlyaWdodCAoYykgMjAxNyBTVE1pY3JvZWxlY3Ryb25pY3MuCi0gICogQWxsIHJpZ2h0cyByZXNlcnZlZC48L2NlbnRlcj48L2gyPgorICAqIENvcHlyaWdodCAoYykgMjAxNyBTVE1pY3JvZWxlY3Ryb25pY3MuCisgICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgKgotICAqIFRoaXMgc29mdHdhcmUgY29tcG9uZW50IGlzIGxpY2Vuc2VkIGJ5IFNUIHVuZGVyIEJTRCAzLUNsYXVzZSBsaWNlbnNlLAotICAqIHRoZSAiTGljZW5zZSI7IFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUKLSAgKiBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQ6Ci0gICogICAgICAgICAgICAgICAgICAgICAgIG9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0JTRC0zLUNsYXVzZQorICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgdW5kZXIgdGVybXMgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZQorICAqIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvZnR3YXJlIGNvbXBvbmVudC4KKyAgKiBJZiBubyBMSUNFTlNFIGZpbGUgY29tZXMgd2l0aCB0aGlzIHNvZnR3YXJlLCBpdCBpcyBwcm92aWRlZCBBUy1JUy4KICAgKgogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgKi8gCkBAIC03NTcsNSArNzU2LDMgQEAKIAogCiAjZW5kaWYgLyogU1RNMzJGN3h4X0hBTF9TRF9IICovIAotCi0vKioqKioqKioqKioqKioqKioqKioqKioqIChDKSBDT1BZUklHSFQgU1RNaWNyb2VsZWN0cm9uaWNzICoqKioqRU5EIE9GIEZJTEUqKioqLwpkaWZmIC0tZ2l0IGEvSW5jL3N0bTMyZjd4eF9oYWxfc2RyYW0uaCBiL0luYy9zdG0zMmY3eHhfaGFsX3NkcmFtLmgKaW5kZXggMzM0ZjMxNi4uZGQ1OTMwZiAxMDA2NDQKLS0tIGEvSW5jL3N0bTMyZjd4eF9oYWxfc2RyYW0uaAorKysgYi9JbmMvc3RtMzJmN3h4X2hhbF9zZHJhbS5oCkBAIC02LDI1ICs2LDI1IEBACiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAqIEBhdHRlbnRpb24KICAgKgotICAqIDxoMj48Y2VudGVyPiZjb3B5OyBDb3B5cmlnaHQgKGMpIDIwMTcgU1RNaWNyb2VsZWN0cm9uaWNzLgotICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuPC9jZW50ZXI+PC9oMj4KKyAgKiBDb3B5cmlnaHQgKGMpIDIwMTcgU1RNaWNyb2VsZWN0cm9uaWNzLgorICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICoKLSAgKiBUaGlzIHNvZnR3YXJlIGNvbXBvbmVudCBpcyBsaWNlbnNlZCBieSBTVCB1bmRlciBCU0QgMy1DbGF1c2UgbGljZW5zZSwKLSAgKiB0aGUgIkxpY2Vuc2UiOyBZb3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlCi0gICogTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0OgotICAqICAgICAgICAgICAgICAgICAgICAgICAgb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvQlNELTMtQ2xhdXNlCisgICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCB1bmRlciB0ZXJtcyB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlCisgICogaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc29mdHdhcmUgY29tcG9uZW50LgorICAqIElmIG5vIExJQ0VOU0UgZmlsZSBjb21lcyB3aXRoIHRoaXMgc29mdHdhcmUsIGl0IGlzIHByb3ZpZGVkIEFTLUlTLgogICAqCiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICAqLyAKKyAgKi8KIAogLyogRGVmaW5lIHRvIHByZXZlbnQgcmVjdXJzaXZlIGluY2x1c2lvbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLSNpZm5kZWYgX19TVE0zMkY3eHhfSEFMX1NEUkFNX0gKLSNkZWZpbmUgX19TVE0zMkY3eHhfSEFMX1NEUkFNX0gKKyNpZm5kZWYgU1RNMzJGN3h4X0hBTF9TRFJBTV9ICisjZGVmaW5lIFNUTTMyRjd4eF9IQUxfU0RSQU1fSAogCiAjaWZkZWYgX19jcGx1c3BsdXMKLSBleHRlcm4gIkMiIHsKK2V4dGVybiAiQyIgewogI2VuZGlmCiAKKwogLyogSW5jbHVkZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KICNpbmNsdWRlICJzdG0zMmY3eHhfbGxfZm1jLmgiCiAKQEAgLTM0LDE3ICszNCwxNyBAQAogCiAvKiogQGFkZHRvZ3JvdXAgU0RSQU0KICAgKiBAewotICAqLyAKKyAgKi8KIAotLyogRXhwb3J0ZWQgdHlwZWRlZiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gICAKKy8qIEV4cG9ydGVkIHR5cGVkZWYgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAKIC8qKiBAZGVmZ3JvdXAgU0RSQU1fRXhwb3J0ZWRfVHlwZXMgU0RSQU0gRXhwb3J0ZWQgVHlwZXMKICAgKiBAewogICAqLwotCSAKLS8qKiAKLSAgKiBAYnJpZWYgIEhBTCBTRFJBTSBTdGF0ZSBzdHJ1Y3R1cmUgZGVmaW5pdGlvbiAgCi0gICovIAorCisvKioKKyAgKiBAYnJpZWYgIEhBTCBTRFJBTSBTdGF0ZSBzdHJ1Y3R1cmUgZGVmaW5pdGlvbgorICAqLwogdHlwZWRlZiBlbnVtCiB7CiAgIEhBTF9TRFJBTV9TVEFURV9SRVNFVCAgICAgICAgICAgICA9IDB4MDBVLCAgLyohPCBTRFJBTSBub3QgeWV0IGluaXRpYWxpemVkIG9yIGRpc2FibGVkICovCkBAIC01Myw4ICs1Myw4IEBACiAgIEhBTF9TRFJBTV9TVEFURV9FUlJPUiAgICAgICAgICAgICA9IDB4MDNVLCAgLyohPCBTRFJBTSBlcnJvciBzdGF0ZSAgICAgICAgICAgICAgICAgICAgICovCiAgIEhBTF9TRFJBTV9TVEFURV9XUklURV9QUk9URUNURUQgICA9IDB4MDRVLCAgLyohPCBTRFJBTSBkZXZpY2Ugd3JpdGUgcHJvdGVjdGVkICAgICAgICAgICovCiAgIEhBTF9TRFJBTV9TVEFURV9QUkVDSEFSR0VEICAgICAgICA9IDB4MDVVICAgLyohPCBTRFJBTSBkZXZpY2UgcHJlY2hhcmdlZCAgICAgICAgICAgICAgICovCi0gIAotfUhBTF9TRFJBTV9TdGF0ZVR5cGVEZWY7CisKK30gSEFMX1NEUkFNX1N0YXRlVHlwZURlZjsKIAogLyoqCiAgICogQGJyaWVmICBTRFJBTSBoYW5kbGUgU3RydWN0dXJlIGRlZmluaXRpb24KQEAgLTY2LDIyICs2NiwyMiBAQAogI2VuZGlmIC8qIFVTRV9IQUxfU0RSQU1fUkVHSVNURVJfQ0FMTEJBQ0tTICAqLwogewogICBGTUNfU0RSQU1fVHlwZURlZiAgICAgICAgICAgICAqSW5zdGFuY2U7ICAvKiE8IFJlZ2lzdGVyIGJhc2UgYWRkcmVzcyAgICAgICAgICAgICAgICAgKi8KLSAgCisKICAgRk1DX1NEUkFNX0luaXRUeXBlRGVmICAgICAgICAgSW5pdDsgICAgICAgLyohPCBTRFJBTSBkZXZpY2UgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzICovCi0gIAorCiAgIF9fSU8gSEFMX1NEUkFNX1N0YXRlVHlwZURlZiAgIFN0YXRlOyAgICAgIC8qITwgU0RSQU0gYWNjZXNzIHN0YXRlICAgICAgICAgICAgICAgICAgICAqLwotICAKLSAgSEFMX0xvY2tUeXBlRGVmICAgICAgICAgICAgICAgTG9jazsgICAgICAgLyohPCBTRFJBTSBsb2NraW5nIG9iamVjdCAgICAgICAgICAgICAgICAgICovIAorCisgIEhBTF9Mb2NrVHlwZURlZiAgICAgICAgICAgICAgIExvY2s7ICAgICAgIC8qITwgU0RSQU0gbG9ja2luZyBvYmplY3QgICAgICAgICAgICAgICAgICAqLwogCiAgIERNQV9IYW5kbGVUeXBlRGVmICAgICAgICAgICAgICpoZG1hOyAgICAgIC8qITwgUG9pbnRlciBETUEgaGFuZGxlciAgICAgICAgICAgICAgICAgICAqLwogCiAjaWYgKFVTRV9IQUxfU0RSQU1fUkVHSVNURVJfQ0FMTEJBQ0tTID09IDEpCi0gIHZvaWQgICgqIE1zcEluaXRDYWxsYmFjaykgICAgICAgICggc3RydWN0IF9fU0RSQU1fSGFuZGxlVHlwZURlZiAqIGhzZHJhbSk7ICAgIC8qITwgU0RSQU0gTXNwIEluaXQgY2FsbGJhY2sgICAgICAgICAgICAgICovCi0gIHZvaWQgICgqIE1zcERlSW5pdENhbGxiYWNrKSAgICAgICggc3RydWN0IF9fU0RSQU1fSGFuZGxlVHlwZURlZiAqIGhzZHJhbSk7ICAgIC8qITwgU0RSQU0gTXNwIERlSW5pdCBjYWxsYmFjayAgICAgICAgICAgICovCi0gIHZvaWQgICgqIFJlZnJlc2hFcnJvckNhbGxiYWNrKSAgICggc3RydWN0IF9fU0RSQU1fSGFuZGxlVHlwZURlZiAqIGhzZHJhbSk7ICAgIC8qITwgU0RSQU0gUmVmcmVzaCBFcnJvciBjYWxsYmFjayAgICAgICAgICovCi0gIHZvaWQgICgqIERtYVhmZXJDcGx0Q2FsbGJhY2spICAgICggRE1BX0hhbmRsZVR5cGVEZWYgKiBoZG1hKTsgICAgICAgICAgICAgICAgIC8qITwgU0RSQU0gRE1BIFhmZXIgQ29tcGxldGUgY2FsbGJhY2sgICAgICovCi0gIHZvaWQgICgqIERtYVhmZXJFcnJvckNhbGxiYWNrKSAgICggRE1BX0hhbmRsZVR5cGVEZWYgKiBoZG1hKTsgICAgICAgICAgICAgICAgIC8qITwgU0RSQU0gRE1BIFhmZXIgRXJyb3IgY2FsbGJhY2sgICAgICAgICovCi0jZW5kaWYKKyAgdm9pZCAoKiBNc3BJbml0Q2FsbGJhY2spKHN0cnVjdCBfX1NEUkFNX0hhbmRsZVR5cGVEZWYgKmhzZHJhbSk7ICAgICAgICAgICAgICAgLyohPCBTRFJBTSBNc3AgSW5pdCBjYWxsYmFjayAgICAgICAgICAgICAgKi8KKyAgdm9pZCAoKiBNc3BEZUluaXRDYWxsYmFjaykoc3RydWN0IF9fU0RSQU1fSGFuZGxlVHlwZURlZiAqaHNkcmFtKTsgICAgICAgICAgICAgLyohPCBTRFJBTSBNc3AgRGVJbml0IGNhbGxiYWNrICAgICAgICAgICAgKi8KKyAgdm9pZCAoKiBSZWZyZXNoRXJyb3JDYWxsYmFjaykoc3RydWN0IF9fU0RSQU1fSGFuZGxlVHlwZURlZiAqaHNkcmFtKTsgICAgICAgICAgLyohPCBTRFJBTSBSZWZyZXNoIEVycm9yIGNhbGxiYWNrICAgICAgICAgKi8KKyAgdm9pZCAoKiBEbWFYZmVyQ3BsdENhbGxiYWNrKShETUFfSGFuZGxlVHlwZURlZiAqaGRtYSk7ICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBTRFJBTSBETUEgWGZlciBDb21wbGV0ZSBjYWxsYmFjayAgICAgKi8KKyAgdm9pZCAoKiBEbWFYZmVyRXJyb3JDYWxsYmFjaykoRE1BX0hhbmRsZVR5cGVEZWYgKmhkbWEpOyAgICAgICAgICAgICAgICAgICAgICAgLyohPCBTRFJBTSBETUEgWGZlciBFcnJvciBjYWxsYmFjayAgICAgICAgKi8KKyNlbmRpZiAvKiBVU0VfSEFMX1NEUkFNX1JFR0lTVEVSX0NBTExCQUNLUyAqLwogfSBTRFJBTV9IYW5kbGVUeXBlRGVmOwogCiAjaWYgKFVTRV9IQUxfU0RSQU1fUkVHSVNURVJfQ0FMTEJBQ0tTID09IDEpCkBAIC05NSwxNCArOTUsMTQgQEAKICAgSEFMX1NEUkFNX1JFRlJFU0hfRVJSX0NCX0lEICAgID0gMHgwMlUsICAvKiE8IFNEUkFNIFJlZnJlc2ggRXJyb3IgQ2FsbGJhY2sgSUQgICAgICovCiAgIEhBTF9TRFJBTV9ETUFfWEZFUl9DUExUX0NCX0lEICA9IDB4MDNVLCAgLyohPCBTRFJBTSBETUEgWGZlciBDb21wbGV0ZSBDYWxsYmFjayBJRCAqLwogICBIQUxfU0RSQU1fRE1BX1hGRVJfRVJSX0NCX0lEICAgPSAweDA0VSAgIC8qITwgU0RSQU0gRE1BIFhmZXIgRXJyb3IgQ2FsbGJhY2sgSUQgICAgKi8KLX1IQUxfU0RSQU1fQ2FsbGJhY2tJRFR5cGVEZWY7Cit9IEhBTF9TRFJBTV9DYWxsYmFja0lEVHlwZURlZjsKIAogLyoqCiAgICogQGJyaWVmICBIQUwgU0RSQU0gQ2FsbGJhY2sgcG9pbnRlciBkZWZpbml0aW9uCiAgICovCiB0eXBlZGVmIHZvaWQgKCpwU0RSQU1fQ2FsbGJhY2tUeXBlRGVmKShTRFJBTV9IYW5kbGVUeXBlRGVmICpoc2RyYW0pOwogdHlwZWRlZiB2b2lkICgqcFNEUkFNX0RtYUNhbGxiYWNrVHlwZURlZikoRE1BX0hhbmRsZVR5cGVEZWYgKmhkbWEpOwotI2VuZGlmCisjZW5kaWYgLyogVVNFX0hBTF9TRFJBTV9SRUdJU1RFUl9DQUxMQkFDS1MgKi8KIC8qKgogICAqIEB9CiAgICovCkBAIC0xMjYsNyArMTI2LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IHdoaWxlKDApCiAjZWxzZQogI2RlZmluZSBfX0hBTF9TRFJBTV9SRVNFVF9IQU5ETEVfU1RBVEUoX19IQU5ETEVfXykgKChfX0hBTkRMRV9fKS0+U3RhdGUgPSBIQUxfU0RSQU1fU1RBVEVfUkVTRVQpCi0jZW5kaWYKKyNlbmRpZiAvKiBVU0VfSEFMX1NEUkFNX1JFR0lTVEVSX0NBTExCQUNLUyAqLwogLyoqCiAgICogQH0KICAgKi8KQEAgLTEzNyw3ICsxMzcsNyBAQAogICAqIEB7CiAgICovCiAKLS8qKiBAYWRkdG9ncm91cCBTRFJBTV9FeHBvcnRlZF9GdW5jdGlvbnNfR3JvdXAxIAorLyoqIEBhZGR0b2dyb3VwIFNEUkFNX0V4cG9ydGVkX0Z1bmN0aW9uc19Hcm91cDEKICAgKiBAewogICAqLwogCkBAIC0xNTYsMzggKzE1Niw0OSBAQAogICAqIEB9CiAgICovCiAKLS8qKiBAYWRkdG9ncm91cCBTRFJBTV9FeHBvcnRlZF9GdW5jdGlvbnNfR3JvdXAyIAorLyoqIEBhZGR0b2dyb3VwIFNEUkFNX0V4cG9ydGVkX0Z1bmN0aW9uc19Hcm91cDIKICAgKiBAewogICAqLwogLyogSS9PIG9wZXJhdGlvbiBmdW5jdGlvbnMgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLUhBTF9TdGF0dXNUeXBlRGVmIEhBTF9TRFJBTV9SZWFkXzhiKFNEUkFNX0hhbmRsZVR5cGVEZWYgKmhzZHJhbSwgdWludDMyX3QgKnBBZGRyZXNzLCB1aW50OF90ICpwRHN0QnVmZmVyLCB1aW50MzJfdCBCdWZmZXJTaXplKTsKLUhBTF9TdGF0dXNUeXBlRGVmIEhBTF9TRFJBTV9Xcml0ZV84YihTRFJBTV9IYW5kbGVUeXBlRGVmICpoc2RyYW0sIHVpbnQzMl90ICpwQWRkcmVzcywgdWludDhfdCAqcFNyY0J1ZmZlciwgdWludDMyX3QgQnVmZmVyU2l6ZSk7Ci1IQUxfU3RhdHVzVHlwZURlZiBIQUxfU0RSQU1fUmVhZF8xNmIoU0RSQU1fSGFuZGxlVHlwZURlZiAqaHNkcmFtLCB1aW50MzJfdCAqcEFkZHJlc3MsIHVpbnQxNl90ICpwRHN0QnVmZmVyLCB1aW50MzJfdCBCdWZmZXJTaXplKTsKLUhBTF9TdGF0dXNUeXBlRGVmIEhBTF9TRFJBTV9Xcml0ZV8xNmIoU0RSQU1fSGFuZGxlVHlwZURlZiAqaHNkcmFtLCB1aW50MzJfdCAqcEFkZHJlc3MsIHVpbnQxNl90ICpwU3JjQnVmZmVyLCB1aW50MzJfdCBCdWZmZXJTaXplKTsKLUhBTF9TdGF0dXNUeXBlRGVmIEhBTF9TRFJBTV9SZWFkXzMyYihTRFJBTV9IYW5kbGVUeXBlRGVmICpoc2RyYW0sIHVpbnQzMl90ICpwQWRkcmVzcywgdWludDMyX3QgKnBEc3RCdWZmZXIsIHVpbnQzMl90IEJ1ZmZlclNpemUpOwotSEFMX1N0YXR1c1R5cGVEZWYgSEFMX1NEUkFNX1dyaXRlXzMyYihTRFJBTV9IYW5kbGVUeXBlRGVmICpoc2RyYW0sIHVpbnQzMl90ICpwQWRkcmVzcywgdWludDMyX3QgKnBTcmNCdWZmZXIsIHVpbnQzMl90IEJ1ZmZlclNpemUpOworSEFMX1N0YXR1c1R5cGVEZWYgSEFMX1NEUkFNX1JlYWRfOGIoU0RSQU1fSGFuZGxlVHlwZURlZiAqaHNkcmFtLCB1aW50MzJfdCAqcEFkZHJlc3MsIHVpbnQ4X3QgKnBEc3RCdWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBCdWZmZXJTaXplKTsKK0hBTF9TdGF0dXNUeXBlRGVmIEhBTF9TRFJBTV9Xcml0ZV84YihTRFJBTV9IYW5kbGVUeXBlRGVmICpoc2RyYW0sIHVpbnQzMl90ICpwQWRkcmVzcywgdWludDhfdCAqcFNyY0J1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBCdWZmZXJTaXplKTsKK0hBTF9TdGF0dXNUeXBlRGVmIEhBTF9TRFJBTV9SZWFkXzE2YihTRFJBTV9IYW5kbGVUeXBlRGVmICpoc2RyYW0sIHVpbnQzMl90ICpwQWRkcmVzcywgdWludDE2X3QgKnBEc3RCdWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgQnVmZmVyU2l6ZSk7CitIQUxfU3RhdHVzVHlwZURlZiBIQUxfU0RSQU1fV3JpdGVfMTZiKFNEUkFNX0hhbmRsZVR5cGVEZWYgKmhzZHJhbSwgdWludDMyX3QgKnBBZGRyZXNzLCB1aW50MTZfdCAqcFNyY0J1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgQnVmZmVyU2l6ZSk7CitIQUxfU3RhdHVzVHlwZURlZiBIQUxfU0RSQU1fUmVhZF8zMmIoU0RSQU1fSGFuZGxlVHlwZURlZiAqaHNkcmFtLCB1aW50MzJfdCAqcEFkZHJlc3MsIHVpbnQzMl90ICpwRHN0QnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IEJ1ZmZlclNpemUpOworSEFMX1N0YXR1c1R5cGVEZWYgSEFMX1NEUkFNX1dyaXRlXzMyYihTRFJBTV9IYW5kbGVUeXBlRGVmICpoc2RyYW0sIHVpbnQzMl90ICpwQWRkcmVzcywgdWludDMyX3QgKnBTcmNCdWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IEJ1ZmZlclNpemUpOwogCi1IQUxfU3RhdHVzVHlwZURlZiBIQUxfU0RSQU1fUmVhZF9ETUEoU0RSQU1fSGFuZGxlVHlwZURlZiAqaHNkcmFtLCB1aW50MzJfdCAqIHBBZGRyZXNzLCB1aW50MzJfdCAqcERzdEJ1ZmZlciwgdWludDMyX3QgQnVmZmVyU2l6ZSk7Ci1IQUxfU3RhdHVzVHlwZURlZiBIQUxfU0RSQU1fV3JpdGVfRE1BKFNEUkFNX0hhbmRsZVR5cGVEZWYgKmhzZHJhbSwgdWludDMyX3QgKnBBZGRyZXNzLCB1aW50MzJfdCAqcFNyY0J1ZmZlciwgdWludDMyX3QgQnVmZmVyU2l6ZSk7CitIQUxfU3RhdHVzVHlwZURlZiBIQUxfU0RSQU1fUmVhZF9ETUEoU0RSQU1fSGFuZGxlVHlwZURlZiAqaHNkcmFtLCB1aW50MzJfdCAqcEFkZHJlc3MsIHVpbnQzMl90ICpwRHN0QnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IEJ1ZmZlclNpemUpOworSEFMX1N0YXR1c1R5cGVEZWYgSEFMX1NEUkFNX1dyaXRlX0RNQShTRFJBTV9IYW5kbGVUeXBlRGVmICpoc2RyYW0sIHVpbnQzMl90ICpwQWRkcmVzcywgdWludDMyX3QgKnBTcmNCdWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IEJ1ZmZlclNpemUpOwogCiAjaWYgKFVTRV9IQUxfU0RSQU1fUkVHSVNURVJfQ0FMTEJBQ0tTID09IDEpCiAvKiBTRFJBTSBjYWxsYmFjayByZWdpc3RlcmluZy91bnJlZ2lzdGVyaW5nICovCi1IQUxfU3RhdHVzVHlwZURlZiBIQUxfU0RSQU1fUmVnaXN0ZXJDYWxsYmFjayhTRFJBTV9IYW5kbGVUeXBlRGVmICpoc2RyYW0sIEhBTF9TRFJBTV9DYWxsYmFja0lEVHlwZURlZiBDYWxsYmFja0lkLCBwU0RSQU1fQ2FsbGJhY2tUeXBlRGVmIHBDYWxsYmFjayk7CitIQUxfU3RhdHVzVHlwZURlZiBIQUxfU0RSQU1fUmVnaXN0ZXJDYWxsYmFjayhTRFJBTV9IYW5kbGVUeXBlRGVmICpoc2RyYW0sIEhBTF9TRFJBTV9DYWxsYmFja0lEVHlwZURlZiBDYWxsYmFja0lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcFNEUkFNX0NhbGxiYWNrVHlwZURlZiBwQ2FsbGJhY2spOwogSEFMX1N0YXR1c1R5cGVEZWYgSEFMX1NEUkFNX1VuUmVnaXN0ZXJDYWxsYmFjayhTRFJBTV9IYW5kbGVUeXBlRGVmICpoc2RyYW0sIEhBTF9TRFJBTV9DYWxsYmFja0lEVHlwZURlZiBDYWxsYmFja0lkKTsKLUhBTF9TdGF0dXNUeXBlRGVmIEhBTF9TRFJBTV9SZWdpc3RlckRtYUNhbGxiYWNrKFNEUkFNX0hhbmRsZVR5cGVEZWYgKmhzZHJhbSwgSEFMX1NEUkFNX0NhbGxiYWNrSURUeXBlRGVmIENhbGxiYWNrSWQsIHBTRFJBTV9EbWFDYWxsYmFja1R5cGVEZWYgcENhbGxiYWNrKTsKLSNlbmRpZgorSEFMX1N0YXR1c1R5cGVEZWYgSEFMX1NEUkFNX1JlZ2lzdGVyRG1hQ2FsbGJhY2soU0RSQU1fSGFuZGxlVHlwZURlZiAqaHNkcmFtLCBIQUxfU0RSQU1fQ2FsbGJhY2tJRFR5cGVEZWYgQ2FsbGJhY2tJZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBTRFJBTV9EbWFDYWxsYmFja1R5cGVEZWYgcENhbGxiYWNrKTsKKyNlbmRpZiAvKiBVU0VfSEFMX1NEUkFNX1JFR0lTVEVSX0NBTExCQUNLUyAqLwogCiAvKioKICAgKiBAfQogICAqLwotICAKLS8qKiBAYWRkdG9ncm91cCBTRFJBTV9FeHBvcnRlZF9GdW5jdGlvbnNfR3JvdXAzIAorCisvKiogQGFkZHRvZ3JvdXAgU0RSQU1fRXhwb3J0ZWRfRnVuY3Rpb25zX0dyb3VwMwogICAqIEB7CiAgICovCiAvKiBTRFJBTSBDb250cm9sIGZ1bmN0aW9ucyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiBIQUxfU3RhdHVzVHlwZURlZiBIQUxfU0RSQU1fV3JpdGVQcm90ZWN0aW9uX0VuYWJsZShTRFJBTV9IYW5kbGVUeXBlRGVmICpoc2RyYW0pOwogSEFMX1N0YXR1c1R5cGVEZWYgSEFMX1NEUkFNX1dyaXRlUHJvdGVjdGlvbl9EaXNhYmxlKFNEUkFNX0hhbmRsZVR5cGVEZWYgKmhzZHJhbSk7Ci1IQUxfU3RhdHVzVHlwZURlZiBIQUxfU0RSQU1fU2VuZENvbW1hbmQoU0RSQU1fSGFuZGxlVHlwZURlZiAqaHNkcmFtLCBGTUNfU0RSQU1fQ29tbWFuZFR5cGVEZWYgKkNvbW1hbmQsIHVpbnQzMl90IFRpbWVvdXQpOworSEFMX1N0YXR1c1R5cGVEZWYgSEFMX1NEUkFNX1NlbmRDb21tYW5kKFNEUkFNX0hhbmRsZVR5cGVEZWYgKmhzZHJhbSwgRk1DX1NEUkFNX0NvbW1hbmRUeXBlRGVmICpDb21tYW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IFRpbWVvdXQpOwogSEFMX1N0YXR1c1R5cGVEZWYgSEFMX1NEUkFNX1Byb2dyYW1SZWZyZXNoUmF0ZShTRFJBTV9IYW5kbGVUeXBlRGVmICpoc2RyYW0sIHVpbnQzMl90IFJlZnJlc2hSYXRlKTsKIEhBTF9TdGF0dXNUeXBlRGVmIEhBTF9TRFJBTV9TZXRBdXRvUmVmcmVzaE51bWJlcihTRFJBTV9IYW5kbGVUeXBlRGVmICpoc2RyYW0sIHVpbnQzMl90IEF1dG9SZWZyZXNoTnVtYmVyKTsKIHVpbnQzMl90ICAgICAgICAgIEhBTF9TRFJBTV9HZXRNb2RlU3RhdHVzKFNEUkFNX0hhbmRsZVR5cGVEZWYgKmhzZHJhbSk7CkBAIC0xOTYsNyArMjA3LDcgQEAKICAgKiBAfQogICAqLwogCi0vKiogQGFkZHRvZ3JvdXAgU0RSQU1fRXhwb3J0ZWRfRnVuY3Rpb25zX0dyb3VwNCAKKy8qKiBAYWRkdG9ncm91cCBTRFJBTV9FeHBvcnRlZF9GdW5jdGlvbnNfR3JvdXA0CiAgICogQHsKICAgKi8KIC8qIFNEUkFNIFN0YXRlIGZ1bmN0aW9ucyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KQEAgLTIxMSwxNiArMjIyLDE1IEBACiAKIC8qKgogICAqIEB9Ci0gICovIAorICAqLwogCiAvKioKICAgKiBAfQogICAqLwogCisKICNpZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlmCiAKLSNlbmRpZiAvKiBfX1NUTTMyRjd4eF9IQUxfU0RSQU1fSCAqLwotCi0vKioqKioqKioqKioqKioqKioqKioqKioqIChDKSBDT1BZUklHSFQgU1RNaWNyb2VsZWN0cm9uaWNzICoqKioqRU5EIE9GIEZJTEUqKioqLworI2VuZGlmIC8qIFNUTTMyRjd4eF9IQUxfU0RSQU1fSCAqLwpkaWZmIC0tZ2l0IGEvSW5jL3N0bTMyZjd4eF9oYWxfc21hcnRjYXJkLmggYi9JbmMvc3RtMzJmN3h4X2hhbF9zbWFydGNhcmQuaAppbmRleCBiNWUxOWI1Li40ZmFhODEyIDEwMDY0NAotLS0gYS9JbmMvc3RtMzJmN3h4X2hhbF9zbWFydGNhcmQuaAorKysgYi9JbmMvc3RtMzJmN3h4X2hhbF9zbWFydGNhcmQuaApAQCAtNiwxMyArNiwxMiBAQAogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgKiBAYXR0ZW50aW9uCiAgICoKLSAgKiA8aDI+PGNlbnRlcj4mY29weTsgQ29weXJpZ2h0IChjKSAyMDE3IFNUTWljcm9lbGVjdHJvbmljcy4KLSAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLjwvY2VudGVyPjwvaDI+CisgICogQ29weXJpZ2h0IChjKSAyMDE3IFNUTWljcm9lbGVjdHJvbmljcy4KKyAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAqCi0gICogVGhpcyBzb2Z0d2FyZSBjb21wb25lbnQgaXMgbGljZW5zZWQgYnkgU1QgdW5kZXIgQlNEIDMtQ2xhdXNlIGxpY2Vuc2UsCi0gICogdGhlICJMaWNlbnNlIjsgWW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZQotICAqIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdDoKLSAgKiAgICAgICAgICAgICAgICAgICAgICAgIG9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0JTRC0zLUNsYXVzZQorICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgdW5kZXIgdGVybXMgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZQorICAqIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvZnR3YXJlIGNvbXBvbmVudC4KKyAgKiBJZiBubyBMSUNFTlNFIGZpbGUgY29tZXMgd2l0aCB0aGlzIHNvZnR3YXJlLCBpdCBpcyBwcm92aWRlZCBBUy1JUy4KICAgKgogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgKi8KQEAgLTE5OSw3ICsxOTgsNyBAQAogCiAgIFNNQVJUQ0FSRF9BZHZGZWF0dXJlSW5pdFR5cGVEZWYgICBBZHZhbmNlZEluaXQ7ICAgICAgICAgIC8qITwgU21hcnRDYXJkIGFkdmFuY2VkIGZlYXR1cmVzIGluaXRpYWxpemF0aW9uIHBhcmFtZXRlcnMgKi8KIAotICB1aW50OF90ICAgICAgICAgICAgICAgICAgICAgICAgICAgKnBUeEJ1ZmZQdHI7ICAgICAgICAgICAvKiE8IFBvaW50ZXIgdG8gU21hcnRDYXJkIFR4IHRyYW5zZmVyIEJ1ZmZlciAgICAgICAgICAgICAgICovCisgIGNvbnN0IHVpbnQ4X3QgICAgICAgICAgICAgICAgICAgICAqcFR4QnVmZlB0cjsgICAgICAgICAgIC8qITwgUG9pbnRlciB0byBTbWFydENhcmQgVHggdHJhbnNmZXIgQnVmZmVyICAgICAgICAgICAgICAgKi8KIAogICB1aW50MTZfdCAgICAgICAgICAgICAgICAgICAgICAgICAgVHhYZmVyU2l6ZTsgICAgICAgICAgICAvKiE8IFNtYXJ0Q2FyZCBUeCBUcmFuc2ZlciBzaXplICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCiAKQEAgLTEwODksMTMgKzEwODgsMTMgQEAKICAgKiBAewogICAqLwogCi1IQUxfU3RhdHVzVHlwZURlZiBIQUxfU01BUlRDQVJEX1RyYW5zbWl0KFNNQVJUQ0FSRF9IYW5kbGVUeXBlRGVmICpoc21hcnRjYXJkLCB1aW50OF90ICpwRGF0YSwgdWludDE2X3QgU2l6ZSwKK0hBTF9TdGF0dXNUeXBlRGVmIEhBTF9TTUFSVENBUkRfVHJhbnNtaXQoU01BUlRDQVJEX0hhbmRsZVR5cGVEZWYgKmhzbWFydGNhcmQsIGNvbnN0IHVpbnQ4X3QgKnBEYXRhLCB1aW50MTZfdCBTaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBUaW1lb3V0KTsKIEhBTF9TdGF0dXNUeXBlRGVmIEhBTF9TTUFSVENBUkRfUmVjZWl2ZShTTUFSVENBUkRfSGFuZGxlVHlwZURlZiAqaHNtYXJ0Y2FyZCwgdWludDhfdCAqcERhdGEsIHVpbnQxNl90IFNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgVGltZW91dCk7Ci1IQUxfU3RhdHVzVHlwZURlZiBIQUxfU01BUlRDQVJEX1RyYW5zbWl0X0lUKFNNQVJUQ0FSRF9IYW5kbGVUeXBlRGVmICpoc21hcnRjYXJkLCB1aW50OF90ICpwRGF0YSwgdWludDE2X3QgU2l6ZSk7CitIQUxfU3RhdHVzVHlwZURlZiBIQUxfU01BUlRDQVJEX1RyYW5zbWl0X0lUKFNNQVJUQ0FSRF9IYW5kbGVUeXBlRGVmICpoc21hcnRjYXJkLCBjb25zdCB1aW50OF90ICpwRGF0YSwgdWludDE2X3QgU2l6ZSk7CiBIQUxfU3RhdHVzVHlwZURlZiBIQUxfU01BUlRDQVJEX1JlY2VpdmVfSVQoU01BUlRDQVJEX0hhbmRsZVR5cGVEZWYgKmhzbWFydGNhcmQsIHVpbnQ4X3QgKnBEYXRhLCB1aW50MTZfdCBTaXplKTsKLUhBTF9TdGF0dXNUeXBlRGVmIEhBTF9TTUFSVENBUkRfVHJhbnNtaXRfRE1BKFNNQVJUQ0FSRF9IYW5kbGVUeXBlRGVmICpoc21hcnRjYXJkLCB1aW50OF90ICpwRGF0YSwgdWludDE2X3QgU2l6ZSk7CitIQUxfU3RhdHVzVHlwZURlZiBIQUxfU01BUlRDQVJEX1RyYW5zbWl0X0RNQShTTUFSVENBUkRfSGFuZGxlVHlwZURlZiAqaHNtYXJ0Y2FyZCwgY29uc3QgdWludDhfdCAqcERhdGEsIHVpbnQxNl90IFNpemUpOwogSEFMX1N0YXR1c1R5cGVEZWYgSEFMX1NNQVJUQ0FSRF9SZWNlaXZlX0RNQShTTUFSVENBUkRfSGFuZGxlVHlwZURlZiAqaHNtYXJ0Y2FyZCwgdWludDhfdCAqcERhdGEsIHVpbnQxNl90IFNpemUpOwogLyogVHJhbnNmZXIgQWJvcnQgZnVuY3Rpb25zICovCiBIQUxfU3RhdHVzVHlwZURlZiBIQUxfU01BUlRDQVJEX0Fib3J0KFNNQVJUQ0FSRF9IYW5kbGVUeXBlRGVmICpoc21hcnRjYXJkKTsKQEAgLTExNDcsNCArMTE0NiwzIEBACiAKICNlbmRpZiAvKiBTVE0zMkY3eHhfSEFMX1NNQVJUQ0FSRF9IICovCiAKLS8qKioqKioqKioqKioqKioqKioqKioqKiogKEMpIENPUFlSSUdIVCBTVE1pY3JvZWxlY3Ryb25pY3MgKioqKipFTkQgT0YgRklMRSoqKiovCmRpZmYgLS1naXQgYS9JbmMvc3RtMzJmN3h4X2hhbF9zbWFydGNhcmRfZXguaCBiL0luYy9zdG0zMmY3eHhfaGFsX3NtYXJ0Y2FyZF9leC5oCmluZGV4IGRkYWUxYjYuLmViMDViMWMgMTAwNjQ0Ci0tLSBhL0luYy9zdG0zMmY3eHhfaGFsX3NtYXJ0Y2FyZF9leC5oCisrKyBiL0luYy9zdG0zMmY3eHhfaGFsX3NtYXJ0Y2FyZF9leC5oCkBAIC02LDEzICs2LDEyIEBACiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAqIEBhdHRlbnRpb24KICAgKgotICAqIDxoMj48Y2VudGVyPiZjb3B5OyBDb3B5cmlnaHQgKGMpIDIwMTcgU1RNaWNyb2VsZWN0cm9uaWNzLgotICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuPC9jZW50ZXI+PC9oMj4KKyAgKiBDb3B5cmlnaHQgKGMpIDIwMTcgU1RNaWNyb2VsZWN0cm9uaWNzLgorICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICoKLSAgKiBUaGlzIHNvZnR3YXJlIGNvbXBvbmVudCBpcyBsaWNlbnNlZCBieSBTVCB1bmRlciBCU0QgMy1DbGF1c2UgbGljZW5zZSwKLSAgKiB0aGUgIkxpY2Vuc2UiOyBZb3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlCi0gICogTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0OgotICAqICAgICAgICAgICAgICAgICAgICAgICAgb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvQlNELTMtQ2xhdXNlCisgICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCB1bmRlciB0ZXJtcyB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlCisgICogaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc29mdHdhcmUgY29tcG9uZW50LgorICAqIElmIG5vIExJQ0VOU0UgZmlsZSBjb21lcyB3aXRoIHRoaXMgc29mdHdhcmUsIGl0IGlzIHByb3ZpZGVkIEFTLUlTLgogICAqCiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAqLwpAQCAtMjY0LDQgKzI2MywzIEBACiAKICNlbmRpZiAvKiBTVE0zMkY3eHhfSEFMX1NNQVJUQ0FSRF9FWF9IICovCiAKLS8qKioqKioqKioqKioqKioqKioqKioqKiogKEMpIENPUFlSSUdIVCBTVE1pY3JvZWxlY3Ryb25pY3MgKioqKipFTkQgT0YgRklMRSoqKiovCmRpZmYgLS1naXQgYS9JbmMvc3RtMzJmN3h4X2hhbF9zbWJ1cy5oIGIvSW5jL3N0bTMyZjd4eF9oYWxfc21idXMuaAppbmRleCA3MDQ3MzVlLi44MDhmMjdjIDEwMDY0NAotLS0gYS9JbmMvc3RtMzJmN3h4X2hhbF9zbWJ1cy5oCisrKyBiL0luYy9zdG0zMmY3eHhfaGFsX3NtYnVzLmgKQEAgLTYsMTMgKzYsMTIgQEAKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgICogQGF0dGVudGlvbgogICAqCi0gICogPGgyPjxjZW50ZXI+JmNvcHk7IENvcHlyaWdodCAoYykgMjAxNyBTVE1pY3JvZWxlY3Ryb25pY3MuCi0gICogQWxsIHJpZ2h0cyByZXNlcnZlZC48L2NlbnRlcj48L2gyPgorICAqIENvcHlyaWdodCAoYykgMjAxNyBTVE1pY3JvZWxlY3Ryb25pY3MuCisgICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgKgotICAqIFRoaXMgc29mdHdhcmUgY29tcG9uZW50IGlzIGxpY2Vuc2VkIGJ5IFNUIHVuZGVyIEJTRCAzLUNsYXVzZSBsaWNlbnNlLAotICAqIHRoZSAiTGljZW5zZSI7IFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUKLSAgKiBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQ6Ci0gICogICAgICAgICAgICAgICAgICAgICAgICBvcGVuc291cmNlLm9yZy9saWNlbnNlcy9CU0QtMy1DbGF1c2UKKyAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIHVuZGVyIHRlcm1zIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUKKyAgKiBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb2Z0d2FyZSBjb21wb25lbnQuCisgICogSWYgbm8gTElDRU5TRSBmaWxlIGNvbWVzIHdpdGggdGhpcyBzb2Z0d2FyZSwgaXQgaXMgcHJvdmlkZWQgQVMtSVMuCiAgICoKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgICovCkBAIC00OCw0MiArNDcsNDMgQEAKIHR5cGVkZWYgc3RydWN0CiB7CiAgIHVpbnQzMl90IFRpbWluZzsgICAgICAgICAgICAgICAgIC8qITwgU3BlY2lmaWVzIHRoZSBTTUJVU19USU1JTkdSX3JlZ2lzdGVyIHZhbHVlLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbGN1bGF0ZWQgYnkgcmVmZXJyaW5nIHRvIFNNQlVTIGluaXRpYWxpemF0aW9uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gUmVmZXJlbmNlIG1hbnVhbCAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbGN1bGF0ZWQgYnkgcmVmZXJyaW5nIHRvIFNNQlVTIGluaXRpYWxpemF0aW9uIHNlY3Rpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBSZWZlcmVuY2UgbWFudWFsICovCiAgIHVpbnQzMl90IEFuYWxvZ0ZpbHRlcjsgICAgICAgICAgIC8qITwgU3BlY2lmaWVzIGlmIEFuYWxvZyBGaWx0ZXIgaXMgZW5hYmxlIG9yIG5vdC4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYSB2YWx1ZSBvZiBAcmVmIFNNQlVTX0FuYWxvZ19GaWx0ZXIgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYSB2YWx1ZSBvZiBAcmVmIFNNQlVTX0FuYWxvZ19GaWx0ZXIgKi8KIAogICB1aW50MzJfdCBPd25BZGRyZXNzMTsgICAgICAgICAgICAvKiE8IFNwZWNpZmllcyB0aGUgZmlyc3QgZGV2aWNlIG93biBhZGRyZXNzLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhIDctYml0IG9yIDEwLWJpdCBhZGRyZXNzLiAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhIDctYml0IG9yIDEwLWJpdCBhZGRyZXNzLiAqLwogCiAgIHVpbnQzMl90IEFkZHJlc3NpbmdNb2RlOyAgICAgICAgIC8qITwgU3BlY2lmaWVzIGlmIDctYml0IG9yIDEwLWJpdCBhZGRyZXNzaW5nIG1vZGUgZm9yIG1hc3RlciBpcyBzZWxlY3RlZC4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYSB2YWx1ZSBvZiBAcmVmIFNNQlVTX2FkZHJlc3NpbmdfbW9kZSAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhIHZhbHVlIG9mIEByZWYgU01CVVNfYWRkcmVzc2luZ19tb2RlICovCiAKICAgdWludDMyX3QgRHVhbEFkZHJlc3NNb2RlOyAgICAgICAgLyohPCBTcGVjaWZpZXMgaWYgZHVhbCBhZGRyZXNzaW5nIG1vZGUgaXMgc2VsZWN0ZWQuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGEgdmFsdWUgb2YgQHJlZiBTTUJVU19kdWFsX2FkZHJlc3NpbmdfbW9kZSAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhIHZhbHVlIG9mIEByZWYgU01CVVNfZHVhbF9hZGRyZXNzaW5nX21vZGUgKi8KIAogICB1aW50MzJfdCBPd25BZGRyZXNzMjsgICAgICAgICAgICAvKiE8IFNwZWNpZmllcyB0aGUgc2Vjb25kIGRldmljZSBvd24gYWRkcmVzcyBpZiBkdWFsIGFkZHJlc3NpbmcgbW9kZSBpcyBzZWxlY3RlZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhIDctYml0IGFkZHJlc3MuICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGEgNy1iaXQgYWRkcmVzcy4gKi8KIAotICB1aW50MzJfdCBPd25BZGRyZXNzMk1hc2tzOyAgICAgICAvKiE8IFNwZWNpZmllcyB0aGUgYWNrbm93bGVkZ2UgbWFzayBhZGRyZXNzIHNlY29uZCBkZXZpY2Ugb3duIGFkZHJlc3MgaWYgZHVhbCBhZGRyZXNzaW5nIG1vZGUgaXMgc2VsZWN0ZWQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYSB2YWx1ZSBvZiBAcmVmIFNNQlVTX293bl9hZGRyZXNzMl9tYXNrcy4gKi8KKyAgdWludDMyX3QgT3duQWRkcmVzczJNYXNrczsgICAgICAgLyohPCBTcGVjaWZpZXMgdGhlIGFja25vd2xlZGdlIG1hc2sgYWRkcmVzcyBzZWNvbmQgZGV2aWNlIG93biBhZGRyZXNzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgZHVhbCBhZGRyZXNzaW5nIG1vZGUgaXMgc2VsZWN0ZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYSB2YWx1ZSBvZiBAcmVmIFNNQlVTX293bl9hZGRyZXNzMl9tYXNrcy4gKi8KIAogICB1aW50MzJfdCBHZW5lcmFsQ2FsbE1vZGU7ICAgICAgICAvKiE8IFNwZWNpZmllcyBpZiBnZW5lcmFsIGNhbGwgbW9kZSBpcyBzZWxlY3RlZC4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYSB2YWx1ZSBvZiBAcmVmIFNNQlVTX2dlbmVyYWxfY2FsbF9hZGRyZXNzaW5nX21vZGUuICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGEgdmFsdWUgb2YgQHJlZiBTTUJVU19nZW5lcmFsX2NhbGxfYWRkcmVzc2luZ19tb2RlLiAqLwogCiAgIHVpbnQzMl90IE5vU3RyZXRjaE1vZGU7ICAgICAgICAgIC8qITwgU3BlY2lmaWVzIGlmIG5vc3RyZXRjaCBtb2RlIGlzIHNlbGVjdGVkLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhIHZhbHVlIG9mIEByZWYgU01CVVNfbm9zdHJldGNoX21vZGUgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYSB2YWx1ZSBvZiBAcmVmIFNNQlVTX25vc3RyZXRjaF9tb2RlICovCiAKICAgdWludDMyX3QgUGFja2V0RXJyb3JDaGVja01vZGU7ICAgLyohPCBTcGVjaWZpZXMgaWYgUGFja2V0IEVycm9yIENoZWNrIG1vZGUgaXMgc2VsZWN0ZWQuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGEgdmFsdWUgb2YgQHJlZiBTTUJVU19wYWNrZXRfZXJyb3JfY2hlY2tfbW9kZSAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhIHZhbHVlIG9mIEByZWYgU01CVVNfcGFja2V0X2Vycm9yX2NoZWNrX21vZGUgKi8KIAogICB1aW50MzJfdCBQZXJpcGhlcmFsTW9kZTsgICAgICAgICAvKiE8IFNwZWNpZmllcyB3aGljaCBtb2RlIG9mIFBlcmlwaGFsIGlzIHNlbGVjdGVkLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhIHZhbHVlIG9mIEByZWYgU01CVVNfcGVyaXBoZXJhbF9tb2RlICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGEgdmFsdWUgb2YgQHJlZiBTTUJVU19wZXJpcGhlcmFsX21vZGUgKi8KIAogICB1aW50MzJfdCBTTUJ1c1RpbWVvdXQ7ICAgICAgICAgICAvKiE8IFNwZWNpZmllcyB0aGUgY29udGVudCBvZiB0aGUgMzIgQml0cyBTTUJVU19USU1FT1VUX3JlZ2lzdGVyIHZhbHVlLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoRW5hYmxlIGJpdHMgYW5kIGRpZmZlcmVudCB0aW1lb3V0IHZhbHVlcykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYWxjdWxhdGVkIGJ5IHJlZmVycmluZyB0byBTTUJVUyBpbml0aWFsaXphdGlvbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIFJlZmVyZW5jZSBtYW51YWwgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoRW5hYmxlIGJpdHMgYW5kIGRpZmZlcmVudCB0aW1lb3V0IHZhbHVlcykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYWxjdWxhdGVkIGJ5IHJlZmVycmluZyB0byBTTUJVUyBpbml0aWFsaXphdGlvbiBzZWN0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gUmVmZXJlbmNlIG1hbnVhbCAqLwogfSBTTUJVU19Jbml0VHlwZURlZjsKIC8qKgogICAqIEB9CkBAIC0xMDIsNyArMTAyLDcgQEAKICNkZWZpbmUgSEFMX1NNQlVTX1NUQVRFX1NMQVZFX0JVU1lfUlggICAoMHgwMDAwMDA0MlUpICAvKiE8IFNsYXZlIERhdGEgUmVjZXB0aW9uIHByb2Nlc3MgaXMgb25nb2luZyAgICAgICAqLwogI2RlZmluZSBIQUxfU01CVVNfU1RBVEVfVElNRU9VVCAgICAgICAgICgweDAwMDAwMDAzVSkgIC8qITwgVGltZW91dCBzdGF0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCiAjZGVmaW5lIEhBTF9TTUJVU19TVEFURV9FUlJPUiAgICAgICAgICAgKDB4MDAwMDAwMDRVKSAgLyohPCBSZWNlcHRpb24gcHJvY2VzcyBpcyBvbmdvaW5nICAgICAgICAgICAgICAgICAgKi8KLSNkZWZpbmUgSEFMX1NNQlVTX1NUQVRFX0xJU1RFTiAgICAgICAgICAoMHgwMDAwMDAwOFUpICAgLyohPCBBZGRyZXNzIExpc3RlbiBNb2RlIGlzIG9uZ29pbmcgICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgSEFMX1NNQlVTX1NUQVRFX0xJU1RFTiAgICAgICAgICAoMHgwMDAwMDAwOFUpICAvKiE8IEFkZHJlc3MgTGlzdGVuIE1vZGUgaXMgb25nb2luZyAgICAgICAgICAgICAgICAqLwogLyoqCiAgICogQH0KICAgKi8KQEAgLTEyMSw3ICsxMjEsNyBAQAogI2RlZmluZSBIQUxfU01CVVNfRVJST1JfQUxFUlQgICAgICAgICAgICgweDAwMDAwMDQwVSkgICAgLyohPCBBbGVydCBlcnJvciAgICAgICAgICAqLwogI2RlZmluZSBIQUxfU01CVVNfRVJST1JfUEVDRVJSICAgICAgICAgICgweDAwMDAwMDgwVSkgICAgLyohPCBQRUMgZXJyb3IgICAgICAgICAgICAqLwogI2lmIChVU0VfSEFMX1NNQlVTX1JFR0lTVEVSX0NBTExCQUNLUyA9PSAxKQotI2RlZmluZSBIQUxfU01CVVNfRVJST1JfSU5WQUxJRF9DQUxMQkFDSyAgKDB4MDAwMDAxMDBVKSAgICAvKiE8IEludmFsaWQgQ2FsbGJhY2sgZXJyb3IgKi8KKyNkZWZpbmUgSEFMX1NNQlVTX0VSUk9SX0lOVkFMSURfQ0FMTEJBQ0sgICgweDAwMDAwMTAwVSkgIC8qITwgSW52YWxpZCBDYWxsYmFjayBlcnJvciAgICovCiAjZW5kaWYgLyogVVNFX0hBTF9TTUJVU19SRUdJU1RFUl9DQUxMQkFDS1MgKi8KICNkZWZpbmUgSEFMX1NNQlVTX0VSUk9SX0lOVkFMSURfUEFSQU0gICAgKDB4MDAwMDAyMDBVKSAgIC8qITwgSW52YWxpZCBQYXJhbWV0ZXJzIGVycm9yICovCiAvKioKQEAgLTE1OSwxNyArMTU5LDI2IEBACiAgIF9fSU8gdWludDMyX3QgICAgICAgICAgICAgICAgRXJyb3JDb2RlOyAgICAgICAvKiE8IFNNQlVTIEVycm9yIGNvZGUgICAgICAgICAgICAgICAgICAgKi8KIAogI2lmIChVU0VfSEFMX1NNQlVTX1JFR0lTVEVSX0NBTExCQUNLUyA9PSAxKQotICB2b2lkICgqIE1hc3RlclR4Q3BsdENhbGxiYWNrKShzdHJ1Y3QgX19TTUJVU19IYW5kbGVUeXBlRGVmICpoc21idXMpOyAgICAgICAgICAgLyohPCBTTUJVUyBNYXN0ZXIgVHggVHJhbnNmZXIgY29tcGxldGVkIGNhbGxiYWNrICovCi0gIHZvaWQgKCogTWFzdGVyUnhDcGx0Q2FsbGJhY2spKHN0cnVjdCBfX1NNQlVTX0hhbmRsZVR5cGVEZWYgKmhzbWJ1cyk7ICAgICAgICAgICAvKiE8IFNNQlVTIE1hc3RlciBSeCBUcmFuc2ZlciBjb21wbGV0ZWQgY2FsbGJhY2sgKi8KLSAgdm9pZCAoKiBTbGF2ZVR4Q3BsdENhbGxiYWNrKShzdHJ1Y3QgX19TTUJVU19IYW5kbGVUeXBlRGVmICpoc21idXMpOyAgICAgICAgICAgIC8qITwgU01CVVMgU2xhdmUgVHggVHJhbnNmZXIgY29tcGxldGVkIGNhbGxiYWNrICAqLwotICB2b2lkICgqIFNsYXZlUnhDcGx0Q2FsbGJhY2spKHN0cnVjdCBfX1NNQlVTX0hhbmRsZVR5cGVEZWYgKmhzbWJ1cyk7ICAgICAgICAgICAgLyohPCBTTUJVUyBTbGF2ZSBSeCBUcmFuc2ZlciBjb21wbGV0ZWQgY2FsbGJhY2sgICovCi0gIHZvaWQgKCogTGlzdGVuQ3BsdENhbGxiYWNrKShzdHJ1Y3QgX19TTUJVU19IYW5kbGVUeXBlRGVmICpoc21idXMpOyAgICAgICAgICAgICAvKiE8IFNNQlVTIExpc3RlbiBDb21wbGV0ZSBjYWxsYmFjayAgICAgICAgICAgICAgKi8KLSAgdm9pZCAoKiBFcnJvckNhbGxiYWNrKShzdHJ1Y3QgX19TTUJVU19IYW5kbGVUeXBlRGVmICpoc21idXMpOyAgICAgICAgICAgICAgICAgIC8qITwgU01CVVMgRXJyb3IgY2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAqLworICB2b2lkICgqIE1hc3RlclR4Q3BsdENhbGxiYWNrKShzdHJ1Y3QgX19TTUJVU19IYW5kbGVUeXBlRGVmICpoc21idXMpOworICAvKiE8IFNNQlVTIE1hc3RlciBUeCBUcmFuc2ZlciBjb21wbGV0ZWQgY2FsbGJhY2sgKi8KKyAgdm9pZCAoKiBNYXN0ZXJSeENwbHRDYWxsYmFjaykoc3RydWN0IF9fU01CVVNfSGFuZGxlVHlwZURlZiAqaHNtYnVzKTsKKyAgLyohPCBTTUJVUyBNYXN0ZXIgUnggVHJhbnNmZXIgY29tcGxldGVkIGNhbGxiYWNrICovCisgIHZvaWQgKCogU2xhdmVUeENwbHRDYWxsYmFjaykoc3RydWN0IF9fU01CVVNfSGFuZGxlVHlwZURlZiAqaHNtYnVzKTsKKyAgLyohPCBTTUJVUyBTbGF2ZSBUeCBUcmFuc2ZlciBjb21wbGV0ZWQgY2FsbGJhY2sgICovCisgIHZvaWQgKCogU2xhdmVSeENwbHRDYWxsYmFjaykoc3RydWN0IF9fU01CVVNfSGFuZGxlVHlwZURlZiAqaHNtYnVzKTsKKyAgLyohPCBTTUJVUyBTbGF2ZSBSeCBUcmFuc2ZlciBjb21wbGV0ZWQgY2FsbGJhY2sgICovCisgIHZvaWQgKCogTGlzdGVuQ3BsdENhbGxiYWNrKShzdHJ1Y3QgX19TTUJVU19IYW5kbGVUeXBlRGVmICpoc21idXMpOworICAvKiE8IFNNQlVTIExpc3RlbiBDb21wbGV0ZSBjYWxsYmFjayAgICAgICAgICAgICAgKi8KKyAgdm9pZCAoKiBFcnJvckNhbGxiYWNrKShzdHJ1Y3QgX19TTUJVU19IYW5kbGVUeXBlRGVmICpoc21idXMpOworICAvKiE8IFNNQlVTIEVycm9yIGNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgKi8KIAotICB2b2lkICgqIEFkZHJDYWxsYmFjaykoc3RydWN0IF9fU01CVVNfSGFuZGxlVHlwZURlZiAqaHNtYnVzLCB1aW50OF90IFRyYW5zZmVyRGlyZWN0aW9uLCB1aW50MTZfdCBBZGRyTWF0Y2hDb2RlKTsgIC8qITwgU01CVVMgU2xhdmUgQWRkcmVzcyBNYXRjaCBjYWxsYmFjayAqLworICB2b2lkICgqIEFkZHJDYWxsYmFjaykoc3RydWN0IF9fU01CVVNfSGFuZGxlVHlwZURlZiAqaHNtYnVzLCB1aW50OF90IFRyYW5zZmVyRGlyZWN0aW9uLCB1aW50MTZfdCBBZGRyTWF0Y2hDb2RlKTsKKyAgLyohPCBTTUJVUyBTbGF2ZSBBZGRyZXNzIE1hdGNoIGNhbGxiYWNrICovCiAKLSAgdm9pZCAoKiBNc3BJbml0Q2FsbGJhY2spKHN0cnVjdCBfX1NNQlVTX0hhbmRsZVR5cGVEZWYgKmhzbWJ1cyk7ICAgICAgICAgICAgICAgIC8qITwgU01CVVMgTXNwIEluaXQgY2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAqLwotICB2b2lkICgqIE1zcERlSW5pdENhbGxiYWNrKShzdHJ1Y3QgX19TTUJVU19IYW5kbGVUeXBlRGVmICpoc21idXMpOyAgICAgICAgICAgICAgLyohPCBTTUJVUyBNc3AgRGVJbml0IGNhbGxiYWNrICAgICAgICAgICAgICAgICAgICovCisgIHZvaWQgKCogTXNwSW5pdENhbGxiYWNrKShzdHJ1Y3QgX19TTUJVU19IYW5kbGVUeXBlRGVmICpoc21idXMpOworICAvKiE8IFNNQlVTIE1zcCBJbml0IGNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgKi8KKyAgdm9pZCAoKiBNc3BEZUluaXRDYWxsYmFjaykoc3RydWN0IF9fU01CVVNfSGFuZGxlVHlwZURlZiAqaHNtYnVzKTsKKyAgLyohPCBTTUJVUyBNc3AgRGVJbml0IGNhbGxiYWNrICAgICAgICAgICAgICAgICAgICovCiAKICNlbmRpZiAgLyogVVNFX0hBTF9TTUJVU19SRUdJU1RFUl9DQUxMQkFDS1MgKi8KIH0gU01CVVNfSGFuZGxlVHlwZURlZjsKQEAgLTE5NSw4ICsyMDQsMTEgQEAKIC8qKgogICAqIEBicmllZiAgSEFMIFNNQlVTIENhbGxiYWNrIHBvaW50ZXIgZGVmaW5pdGlvbgogICAqLwotdHlwZWRlZiAgdm9pZCAoKnBTTUJVU19DYWxsYmFja1R5cGVEZWYpKFNNQlVTX0hhbmRsZVR5cGVEZWYgKmhzbWJ1cyk7IC8qITwgcG9pbnRlciB0byBhbiBTTUJVUyBjYWxsYmFjayBmdW5jdGlvbiAqLwotdHlwZWRlZiAgdm9pZCAoKnBTTUJVU19BZGRyQ2FsbGJhY2tUeXBlRGVmKShTTUJVU19IYW5kbGVUeXBlRGVmICpoc21idXMsIHVpbnQ4X3QgVHJhbnNmZXJEaXJlY3Rpb24sIHVpbnQxNl90IEFkZHJNYXRjaENvZGUpOyAvKiE8IHBvaW50ZXIgdG8gYW4gU01CVVMgQWRkcmVzcyBNYXRjaCBjYWxsYmFjayBmdW5jdGlvbiAqLwordHlwZWRlZiAgdm9pZCAoKnBTTUJVU19DYWxsYmFja1R5cGVEZWYpKFNNQlVTX0hhbmRsZVR5cGVEZWYgKmhzbWJ1cyk7CisvKiE8IHBvaW50ZXIgdG8gYW4gU01CVVMgY2FsbGJhY2sgZnVuY3Rpb24gKi8KK3R5cGVkZWYgIHZvaWQgKCpwU01CVVNfQWRkckNhbGxiYWNrVHlwZURlZikoU01CVVNfSGFuZGxlVHlwZURlZiAqaHNtYnVzLCB1aW50OF90IFRyYW5zZmVyRGlyZWN0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MTZfdCBBZGRyTWF0Y2hDb2RlKTsKKy8qITwgcG9pbnRlciB0byBhbiBTTUJVUyBBZGRyZXNzIE1hdGNoIGNhbGxiYWNrIGZ1bmN0aW9uICovCiAKICNlbmRpZiAvKiBVU0VfSEFMX1NNQlVTX1JFR0lTVEVSX0NBTExCQUNLUyAqLwogLyoqCkBAIC0zNTgsOSArMzcwLDEwIEBACiAjZGVmaW5lIFNNQlVTX0lUX0FERFJJICAgICAgICAgICAgICAgICAgICAgICAgICBJMkNfQ1IxX0FERFJJRQogI2RlZmluZSBTTUJVU19JVF9SWEkgICAgICAgICAgICAgICAgICAgICAgICAgICAgSTJDX0NSMV9SWElFCiAjZGVmaW5lIFNNQlVTX0lUX1RYSSAgICAgICAgICAgICAgICAgICAgICAgICAgICBJMkNfQ1IxX1RYSUUKLSNkZWZpbmUgU01CVVNfSVRfVFggICAgICAgICAgICAgICAgICAgICAgICAgICAgIChTTUJVU19JVF9FUlJJIHwgU01CVVNfSVRfVENJIHwgU01CVVNfSVRfU1RPUEkgfCBTTUJVU19JVF9OQUNLSSB8IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTTUJVU19JVF9UWEkpCi0jZGVmaW5lIFNNQlVTX0lUX1JYICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoU01CVVNfSVRfRVJSSSB8IFNNQlVTX0lUX1RDSSB8IFNNQlVTX0lUX05BQ0tJIHwgU01CVVNfSVRfUlhJKQorI2RlZmluZSBTTUJVU19JVF9UWCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFNNQlVTX0lUX0VSUkkgfCBTTUJVU19JVF9UQ0kgfCBTTUJVU19JVF9TVE9QSSB8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTTUJVU19JVF9OQUNLSSB8IFNNQlVTX0lUX1RYSSkKKyNkZWZpbmUgU01CVVNfSVRfUlggICAgICAgICAgICAgICAgICAgICAgICAgICAgIChTTUJVU19JVF9FUlJJIHwgU01CVVNfSVRfVENJIHwgU01CVVNfSVRfTkFDS0kgfCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU01CVVNfSVRfUlhJKQogI2RlZmluZSBTTUJVU19JVF9BTEVSVCAgICAgICAgICAgICAgICAgICAgICAgICAgKFNNQlVTX0lUX0VSUkkpCiAjZGVmaW5lIFNNQlVTX0lUX0FERFIgICAgICAgICAgICAgICAgICAgICAgICAgICAoU01CVVNfSVRfQUREUkkgfCBTTUJVU19JVF9TVE9QSSB8IFNNQlVTX0lUX05BQ0tJKQogLyoqCkBAIC00MDgsMTQgKzQyMSwxNCBAQAogICAqIEByZXR2YWwgTm9uZQogICAqLwogI2lmIChVU0VfSEFMX1NNQlVTX1JFR0lTVEVSX0NBTExCQUNLUyA9PSAxKQotI2RlZmluZSBfX0hBTF9TTUJVU19SRVNFVF9IQU5ETEVfU1RBVEUoX19IQU5ETEVfXykgICAgICAgICAgIGRveyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fSEFORExFX18pLT5TdGF0ZSA9IEhBTF9TTUJVU19TVEFURV9SRVNFVDsgICAgICAgXAorI2RlZmluZSBfX0hBTF9TTUJVU19SRVNFVF9IQU5ETEVfU1RBVEUoX19IQU5ETEVfXykgICAgICAgICAgIGRveyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19IQU5ETEVfXyktPlN0YXRlID0gSEFMX1NNQlVTX1NUQVRFX1JFU0VUOyAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19IQU5ETEVfXyktPk1zcEluaXRDYWxsYmFjayA9IE5VTEw7ICAgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19IQU5ETEVfXyktPk1zcERlSW5pdENhbGxiYWNrID0gTlVMTDsgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSB3aGlsZSgwKQogI2Vsc2UKICNkZWZpbmUgX19IQUxfU01CVVNfUkVTRVRfSEFORExFX1NUQVRFKF9fSEFORExFX18pICAgICAgICAgKChfX0hBTkRMRV9fKS0+U3RhdGUgPSBIQUxfU01CVVNfU1RBVEVfUkVTRVQpCi0jZW5kaWYKKyNlbmRpZiAvKiBVU0VfSEFMX1NNQlVTX1JFR0lTVEVSX0NBTExCQUNLUyAqLwogCiAvKiogQGJyaWVmICBFbmFibGUgdGhlIHNwZWNpZmllZCBTTUJVUyBpbnRlcnJ1cHRzLgogICAqIEBwYXJhbSAgX19IQU5ETEVfXyBzcGVjaWZpZXMgdGhlIFNNQlVTIEhhbmRsZS4KQEAgLTQ5MSwxMiArNTA0LDE0IEBACiAgICovCiAjZGVmaW5lIFNNQlVTX0ZMQUdfTUFTSyAgKDB4MDAwMUZGRkZVKQogI2RlZmluZSBfX0hBTF9TTUJVU19HRVRfRkxBRyhfX0hBTkRMRV9fLCBfX0ZMQUdfXykgXAotICAoKCgoKF9fSEFORExFX18pLT5JbnN0YW5jZS0+SVNSKSAmICgoX19GTEFHX18pICYgU01CVVNfRkxBR19NQVNLKSkgPT0gKChfX0ZMQUdfXykgJiBTTUJVU19GTEFHX01BU0spKSA/IFNFVCA6IFJFU0VUKQorICAoKCgoKF9fSEFORExFX18pLT5JbnN0YW5jZS0+SVNSKSAmICgoX19GTEFHX18pICYgU01CVVNfRkxBR19NQVNLKSkgPT0gXAorICAgICgoX19GTEFHX18pICYgU01CVVNfRkxBR19NQVNLKSkgPyBTRVQgOiBSRVNFVCkKIAogLyoqIEBicmllZiAgQ2xlYXIgdGhlIFNNQlVTIHBlbmRpbmcgZmxhZ3Mgd2hpY2ggYXJlIGNsZWFyZWQgYnkgd3JpdGluZyAxIGluIGEgc3BlY2lmaWMgYml0LgogICAqIEBwYXJhbSAgX19IQU5ETEVfXyBzcGVjaWZpZXMgdGhlIFNNQlVTIEhhbmRsZS4KICAgKiBAcGFyYW0gIF9fRkxBR19fIHNwZWNpZmllcyB0aGUgZmxhZyB0byBjbGVhci4KICAgKiAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYW55IGNvbWJpbmF0aW9uIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOgorICAqICAgICAgICAgICAgQGFyZyBAcmVmIFNNQlVTX0ZMQUdfVFhFICAgICBUcmFuc21pdCBkYXRhIHJlZ2lzdGVyIGVtcHR5CiAgICogICAgICAgICAgICBAYXJnIEByZWYgU01CVVNfRkxBR19BRERSICAgIEFkZHJlc3MgbWF0Y2hlZCAoc2xhdmUgbW9kZSkKICAgKiAgICAgICAgICAgIEBhcmcgQHJlZiBTTUJVU19GTEFHX0FGICAgICAgTkFDSyByZWNlaXZlZCBmbGFnCiAgICogICAgICAgICAgICBAYXJnIEByZWYgU01CVVNfRkxBR19TVE9QRiAgIFNUT1AgZGV0ZWN0aW9uIGZsYWcKQEAgLTUwOSw3ICs1MjQsOSBAQAogICAqCiAgICogQHJldHZhbCBOb25lCiAgICovCi0jZGVmaW5lIF9fSEFMX1NNQlVTX0NMRUFSX0ZMQUcoX19IQU5ETEVfXywgX19GTEFHX18pICgoX19IQU5ETEVfXyktPkluc3RhbmNlLT5JQ1IgPSAoX19GTEFHX18pKQorI2RlZmluZSBfX0hBTF9TTUJVU19DTEVBUl9GTEFHKF9fSEFORExFX18sIF9fRkxBR19fKSAgKCgoX19GTEFHX18pID09IFNNQlVTX0ZMQUdfVFhFKSA/IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKF9fSEFORExFX18pLT5JbnN0YW5jZS0+SVNSIHw9IChfX0ZMQUdfXykpIDogXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoX19IQU5ETEVfXyktPkluc3RhbmNlLT5JQ1IgPSAoX19GTEFHX18pKSkKIAogLyoqIEBicmllZiAgRW5hYmxlIHRoZSBzcGVjaWZpZWQgU01CVVMgcGVyaXBoZXJhbC4KICAgKiBAcGFyYW0gIF9fSEFORExFX18gc3BlY2lmaWVzIHRoZSBTTUJVUyBIYW5kbGUuCkBAIC01NzQsNDMgKzU5MSw1MiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChNT0RFKSA9PSBTTUJVU19QRVJJUEhFUkFMX01PREVfU01CVVNfU0xBVkUpICB8fCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKE1PREUpID09IFNNQlVTX1BFUklQSEVSQUxfTU9ERV9TTUJVU19TTEFWRV9BUlApKQogCi0jZGVmaW5lIElTX1NNQlVTX1RSQU5TRkVSX01PREUoTU9ERSkgICAgICAgICAgICAgICAgICAgICgoKE1PREUpID09IFNNQlVTX1JFTE9BRF9NT0RFKSAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChNT0RFKSA9PSBTTUJVU19BVVRPRU5EX01PREUpICAgICAgICAgICAgICAgICAgICAgICAgIHx8IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoTU9ERSkgPT0gU01CVVNfU09GVEVORF9NT0RFKSAgICAgICAgICAgICAgICAgICAgICAgICB8fCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKE1PREUpID09IFNNQlVTX1NFTkRQRUNfTU9ERSkgICAgICAgICAgICAgICAgICAgICAgICAgfHwgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChNT0RFKSA9PSAoU01CVVNfUkVMT0FEX01PREUgfCBTTUJVU19TRU5EUEVDX01PREUpKSAgIHx8IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoTU9ERSkgPT0gKFNNQlVTX0FVVE9FTkRfTU9ERSB8IFNNQlVTX1NFTkRQRUNfTU9ERSkpICB8fCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKE1PREUpID09IChTTUJVU19BVVRPRU5EX01PREUgfCBTTUJVU19SRUxPQURfTU9ERSkpICAgfHwgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChNT0RFKSA9PSAoU01CVVNfQVVUT0VORF9NT0RFIHwgU01CVVNfU0VORFBFQ19NT0RFIHwgU01CVVNfUkVMT0FEX01PREUgKSkpCisjZGVmaW5lIElTX1NNQlVTX1RSQU5TRkVSX01PREUoTU9ERSkgICAgICAgICAgICAgICAgICgoKE1PREUpID09IFNNQlVTX1JFTE9BRF9NT0RFKSAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChNT0RFKSA9PSBTTUJVU19BVVRPRU5EX01PREUpICAgICAgICAgICAgICAgICAgICAgICAgIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoTU9ERSkgPT0gU01CVVNfU09GVEVORF9NT0RFKSAgICAgICAgICAgICAgICAgICAgICAgICB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKE1PREUpID09IFNNQlVTX1NFTkRQRUNfTU9ERSkgICAgICAgICAgICAgICAgICAgICAgICAgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChNT0RFKSA9PSAoU01CVVNfUkVMT0FEX01PREUgfCBTTUJVU19TRU5EUEVDX01PREUpKSAgIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoTU9ERSkgPT0gKFNNQlVTX0FVVE9FTkRfTU9ERSB8IFNNQlVTX1NFTkRQRUNfTU9ERSkpICB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKE1PREUpID09IChTTUJVU19BVVRPRU5EX01PREUgfCBTTUJVU19SRUxPQURfTU9ERSkpICAgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChNT0RFKSA9PSAoU01CVVNfQVVUT0VORF9NT0RFIHwgU01CVVNfU0VORFBFQ19NT0RFIHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU01CVVNfUkVMT0FEX01PREUgKSkpCiAKIAogI2RlZmluZSBJU19TTUJVU19UUkFOU0ZFUl9SRVFVRVNUKFJFUVVFU1QpICAgICAgICAgICAgICAoKChSRVFVRVNUKSA9PSBTTUJVU19HRU5FUkFURV9TVE9QKSAgICAgICAgICAgICAgfHwgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChSRVFVRVNUKSA9PSBTTUJVU19HRU5FUkFURV9TVEFSVF9SRUFEKSAgICAgICB8fCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFJFUVVFU1QpID09IFNNQlVTX0dFTkVSQVRFX1NUQVJUX1dSSVRFKSAgICAgIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoUkVRVUVTVCkgPT0gU01CVVNfR0VORVJBVEVfU1RBUlRfUkVBRCkgICAgICAgIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoUkVRVUVTVCkgPT0gU01CVVNfR0VORVJBVEVfU1RBUlRfV1JJVEUpICAgICAgIHx8IFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoUkVRVUVTVCkgPT0gU01CVVNfTk9fU1RBUlRTVE9QKSkKIAogCi0jZGVmaW5lIElTX1NNQlVTX1RSQU5TRkVSX09QVElPTlNfUkVRVUVTVChSRVFVRVNUKSAgICAgIChJU19TTUJVU19UUkFOU0ZFUl9PVEhFUl9PUFRJT05TX1JFUVVFU1QoUkVRVUVTVCkgICAgICAgfHwgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChSRVFVRVNUKSA9PSBTTUJVU19GSVJTVF9GUkFNRSkgICAgICAgICAgICAgICAgICAgICAgIHx8IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoUkVRVUVTVCkgPT0gU01CVVNfTkVYVF9GUkFNRSkgICAgICAgICAgICAgICAgICAgICAgICB8fCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFJFUVVFU1QpID09IFNNQlVTX0ZJUlNUX0FORF9MQVNUX0ZSQU1FX05PX1BFQykgICAgICAgfHwgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChSRVFVRVNUKSA9PSBTTUJVU19MQVNUX0ZSQU1FX05PX1BFQykgICAgICAgICAgICAgICAgIHx8IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoUkVRVUVTVCkgPT0gU01CVVNfRklSU1RfRlJBTUVfV0lUSF9QRUMpICAgICAgICAgICAgICB8fCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFJFUVVFU1QpID09IFNNQlVTX0ZJUlNUX0FORF9MQVNUX0ZSQU1FX1dJVEhfUEVDKSAgICAgfHwgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChSRVFVRVNUKSA9PSBTTUJVU19MQVNUX0ZSQU1FX1dJVEhfUEVDKSkKKyNkZWZpbmUgSVNfU01CVVNfVFJBTlNGRVJfT1BUSU9OU19SRVFVRVNUKFJFUVVFU1QpICAgKElTX1NNQlVTX1RSQU5TRkVSX09USEVSX09QVElPTlNfUkVRVUVTVChSRVFVRVNUKSAgICAgICB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFJFUVVFU1QpID09IFNNQlVTX0ZJUlNUX0ZSQU1FKSAgICAgICAgICAgICAgICAgICAgICAgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChSRVFVRVNUKSA9PSBTTUJVU19ORVhUX0ZSQU1FKSAgICAgICAgICAgICAgICAgICAgICAgIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoUkVRVUVTVCkgPT0gU01CVVNfRklSU1RfQU5EX0xBU1RfRlJBTUVfTk9fUEVDKSAgICAgICB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFJFUVVFU1QpID09IFNNQlVTX0xBU1RfRlJBTUVfTk9fUEVDKSAgICAgICAgICAgICAgICAgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChSRVFVRVNUKSA9PSBTTUJVU19GSVJTVF9GUkFNRV9XSVRIX1BFQykgICAgICAgICAgICAgIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoUkVRVUVTVCkgPT0gU01CVVNfRklSU1RfQU5EX0xBU1RfRlJBTUVfV0lUSF9QRUMpICAgICB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFJFUVVFU1QpID09IFNNQlVTX0xBU1RfRlJBTUVfV0lUSF9QRUMpKQogCi0jZGVmaW5lIElTX1NNQlVTX1RSQU5TRkVSX09USEVSX09QVElPTlNfUkVRVUVTVChSRVFVRVNUKSAoKChSRVFVRVNUKSA9PSBTTUJVU19PVEhFUl9GUkFNRV9OT19QRUMpICAgICAgICAgICAgICAgIHx8IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFJFUVVFU1QpID09IFNNQlVTX09USEVSX0FORF9MQVNUX0ZSQU1FX05PX1BFQykgICAgICAgfHwgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoUkVRVUVTVCkgPT0gU01CVVNfT1RIRVJfRlJBTUVfV0lUSF9QRUMpICAgICAgICAgICAgICB8fCBcCisjZGVmaW5lIElTX1NNQlVTX1RSQU5TRkVSX09USEVSX09QVElPTlNfUkVRVUVTVChSRVFVRVNUKSAoKChSRVFVRVNUKSA9PSBTTUJVU19PVEhFUl9GUkFNRV9OT19QRUMpICAgICAgICAgICAgIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFJFUVVFU1QpID09IFNNQlVTX09USEVSX0FORF9MQVNUX0ZSQU1FX05PX1BFQykgICAgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoUkVRVUVTVCkgPT0gU01CVVNfT1RIRVJfRlJBTUVfV0lUSF9QRUMpICAgICAgICAgICB8fCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChSRVFVRVNUKSA9PSBTTUJVU19PVEhFUl9BTkRfTEFTVF9GUkFNRV9XSVRIX1BFQykpCiAKLSNkZWZpbmUgU01CVVNfUkVTRVRfQ1IxKF9fSEFORExFX18pICAgICAgICAgICAgICAgICAgICAgICAoKF9fSEFORExFX18pLT5JbnN0YW5jZS0+Q1IxICY9IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVpbnQzMl90KX4oKHVpbnQzMl90KShJMkNfQ1IxX1NNQkhFTiB8IEkyQ19DUjFfU01CREVOIHwgSTJDX0NSMV9QRUNFTikpKQotI2RlZmluZSBTTUJVU19SRVNFVF9DUjIoX19IQU5ETEVfXykgICAgICAgICAgICAgICAgICAgICAgICgoX19IQU5ETEVfXyktPkluc3RhbmNlLT5DUjIgJj0gXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodWludDMyX3QpfigodWludDMyX3QpKEkyQ19DUjJfU0FERCB8IEkyQ19DUjJfSEVBRDEwUiB8IEkyQ19DUjJfTkJZVEVTIHwgSTJDX0NSMl9SRUxPQUQgfCBJMkNfQ1IyX1JEX1dSTikpKQorI2RlZmluZSBTTUJVU19SRVNFVF9DUjEoX19IQU5ETEVfXykgICAgICAgICAgICAgICAgICAgICgoX19IQU5ETEVfXyktPkluc3RhbmNlLT5DUjEgJj0gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodWludDMyX3QpfigodWludDMyX3QpKEkyQ19DUjFfU01CSEVOIHwgSTJDX0NSMV9TTUJERU4gfCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSTJDX0NSMV9QRUNFTikpKQorI2RlZmluZSBTTUJVU19SRVNFVF9DUjIoX19IQU5ETEVfXykgICAgICAgICAgICAgICAgICAgICgoX19IQU5ETEVfXyktPkluc3RhbmNlLT5DUjIgJj0gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodWludDMyX3QpfigodWludDMyX3QpKEkyQ19DUjJfU0FERCB8IEkyQ19DUjJfSEVBRDEwUiB8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJMkNfQ1IyX05CWVRFUyB8IEkyQ19DUjJfUkVMT0FEIHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEkyQ19DUjJfUkRfV1JOKSkpCiAKLSNkZWZpbmUgU01CVVNfR0VORVJBVEVfU1RBUlQoX19BRERNT0RFX18sX19BRERSRVNTX18pICAgICAoKChfX0FERE1PREVfXykgPT0gU01CVVNfQUREUkVTU0lOR01PREVfN0JJVCkgPyAodWludDMyX3QpKCgoKHVpbnQzMl90KShfX0FERFJFU1NfXykgJiAoSTJDX0NSMl9TQUREKSkgfCAoSTJDX0NSMl9TVEFSVCkgfCAoSTJDX0NSMl9BVVRPRU5EKSkgJiAofkkyQ19DUjJfUkRfV1JOKSkgOiBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1aW50MzJfdCkoKCgodWludDMyX3QpKF9fQUREUkVTU19fKSAmIChJMkNfQ1IyX1NBREQpKSB8IChJMkNfQ1IyX0FERDEwKSB8IChJMkNfQ1IyX1NUQVJUKSkgJiAofkkyQ19DUjJfUkRfV1JOKSkpCisjZGVmaW5lIFNNQlVTX0dFTkVSQVRFX1NUQVJUKF9fQURETU9ERV9fLF9fQUREUkVTU19fKSAgICAgKCgoX19BRERNT0RFX18pID09IFNNQlVTX0FERFJFU1NJTkdNT0RFXzdCSVQpID8gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodWludDMyX3QpKCgoKHVpbnQzMl90KShfX0FERFJFU1NfXykgJiAoSTJDX0NSMl9TQUREKSkgfCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChJMkNfQ1IyX1NUQVJUKSB8IChJMkNfQ1IyX0FVVE9FTkQpKSAmIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAofkkyQ19DUjJfUkRfV1JOKSkgOiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1aW50MzJfdCkoKCgodWludDMyX3QpKF9fQUREUkVTU19fKSAmIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChJMkNfQ1IyX1NBREQpKSB8IChJMkNfQ1IyX0FERDEwKSB8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEkyQ19DUjJfU1RBUlQpKSAmICh+STJDX0NSMl9SRF9XUk4pKSkKIAogI2RlZmluZSBTTUJVU19HRVRfQUREUl9NQVRDSChfX0hBTkRMRV9fKSAgICAgICAgICAgICAgICAgICgoKF9fSEFORExFX18pLT5JbnN0YW5jZS0+SVNSICYgSTJDX0lTUl9BRERDT0RFKSA+PiAxN1UpCiAjZGVmaW5lIFNNQlVTX0dFVF9ESVIoX19IQU5ETEVfXykgICAgICAgICAgICAgICAgICAgICAgICAgKCgoX19IQU5ETEVfXyktPkluc3RhbmNlLT5JU1IgJiBJMkNfSVNSX0RJUikgPj4gMTZVKQpAQCAtNjI5LDYgKzY1NSw3IEBACiAgICogQH0KICAgKi8KIAorCiAvKiBFeHBvcnRlZCBmdW5jdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogLyoqIEBhZGR0b2dyb3VwIFNNQlVTX0V4cG9ydGVkX0Z1bmN0aW9ucyBTTUJVUyBFeHBvcnRlZCBGdW5jdGlvbnMKICAgKiBAewpAQCAtNjQ4LDExICs2NzUsMTQgQEAKIAogLyogQ2FsbGJhY2tzIFJlZ2lzdGVyL1VuUmVnaXN0ZXIgZnVuY3Rpb25zICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KICNpZiAoVVNFX0hBTF9TTUJVU19SRUdJU1RFUl9DQUxMQkFDS1MgPT0gMSkKLUhBTF9TdGF0dXNUeXBlRGVmIEhBTF9TTUJVU19SZWdpc3RlckNhbGxiYWNrKFNNQlVTX0hhbmRsZVR5cGVEZWYgKmhzbWJ1cywgSEFMX1NNQlVTX0NhbGxiYWNrSURUeXBlRGVmIENhbGxiYWNrSUQsCitIQUxfU3RhdHVzVHlwZURlZiBIQUxfU01CVVNfUmVnaXN0ZXJDYWxsYmFjayhTTUJVU19IYW5kbGVUeXBlRGVmICpoc21idXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQUxfU01CVVNfQ2FsbGJhY2tJRFR5cGVEZWYgQ2FsbGJhY2tJRCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBTTUJVU19DYWxsYmFja1R5cGVEZWYgcENhbGxiYWNrKTsKLUhBTF9TdGF0dXNUeXBlRGVmIEhBTF9TTUJVU19VblJlZ2lzdGVyQ2FsbGJhY2soU01CVVNfSGFuZGxlVHlwZURlZiAqaHNtYnVzLCBIQUxfU01CVVNfQ2FsbGJhY2tJRFR5cGVEZWYgQ2FsbGJhY2tJRCk7CitIQUxfU3RhdHVzVHlwZURlZiBIQUxfU01CVVNfVW5SZWdpc3RlckNhbGxiYWNrKFNNQlVTX0hhbmRsZVR5cGVEZWYgKmhzbWJ1cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFMX1NNQlVTX0NhbGxiYWNrSURUeXBlRGVmIENhbGxiYWNrSUQpOwogCi1IQUxfU3RhdHVzVHlwZURlZiBIQUxfU01CVVNfUmVnaXN0ZXJBZGRyQ2FsbGJhY2soU01CVVNfSGFuZGxlVHlwZURlZiAqaHNtYnVzLCBwU01CVVNfQWRkckNhbGxiYWNrVHlwZURlZiBwQ2FsbGJhY2spOworSEFMX1N0YXR1c1R5cGVEZWYgSEFMX1NNQlVTX1JlZ2lzdGVyQWRkckNhbGxiYWNrKFNNQlVTX0hhbmRsZVR5cGVEZWYgKmhzbWJ1cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwU01CVVNfQWRkckNhbGxiYWNrVHlwZURlZiBwQ2FsbGJhY2spOwogSEFMX1N0YXR1c1R5cGVEZWYgSEFMX1NNQlVTX1VuUmVnaXN0ZXJBZGRyQ2FsbGJhY2soU01CVVNfSGFuZGxlVHlwZURlZiAqaHNtYnVzKTsKICNlbmRpZiAvKiBVU0VfSEFMX1NNQlVTX1JFR0lTVEVSX0NBTExCQUNLUyAqLwogLyoqCkBAIC02NzgsMTAgKzcwOCwxMCBAQAogICAqIEB7CiAgICovCiAvKioqKioqKiBOb24tQmxvY2tpbmcgbW9kZTogSW50ZXJydXB0ICovCi1IQUxfU3RhdHVzVHlwZURlZiBIQUxfU01CVVNfTWFzdGVyX1RyYW5zbWl0X0lUKFNNQlVTX0hhbmRsZVR5cGVEZWYgKmhzbWJ1cywgdWludDE2X3QgRGV2QWRkcmVzcywgdWludDhfdCAqcERhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQxNl90IFNpemUsIHVpbnQzMl90IFhmZXJPcHRpb25zKTsKLUhBTF9TdGF0dXNUeXBlRGVmIEhBTF9TTUJVU19NYXN0ZXJfUmVjZWl2ZV9JVChTTUJVU19IYW5kbGVUeXBlRGVmICpoc21idXMsIHVpbnQxNl90IERldkFkZHJlc3MsIHVpbnQ4X3QgKnBEYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQxNl90IFNpemUsIHVpbnQzMl90IFhmZXJPcHRpb25zKTsKK0hBTF9TdGF0dXNUeXBlRGVmIEhBTF9TTUJVU19NYXN0ZXJfVHJhbnNtaXRfSVQoU01CVVNfSGFuZGxlVHlwZURlZiAqaHNtYnVzLCB1aW50MTZfdCBEZXZBZGRyZXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90ICpwRGF0YSwgdWludDE2X3QgU2l6ZSwgdWludDMyX3QgWGZlck9wdGlvbnMpOworSEFMX1N0YXR1c1R5cGVEZWYgSEFMX1NNQlVTX01hc3Rlcl9SZWNlaXZlX0lUKFNNQlVTX0hhbmRsZVR5cGVEZWYgKmhzbWJ1cywgdWludDE2X3QgRGV2QWRkcmVzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90ICpwRGF0YSwgdWludDE2X3QgU2l6ZSwgdWludDMyX3QgWGZlck9wdGlvbnMpOwogSEFMX1N0YXR1c1R5cGVEZWYgSEFMX1NNQlVTX01hc3Rlcl9BYm9ydF9JVChTTUJVU19IYW5kbGVUeXBlRGVmICpoc21idXMsIHVpbnQxNl90IERldkFkZHJlc3MpOwogSEFMX1N0YXR1c1R5cGVEZWYgSEFMX1NNQlVTX1NsYXZlX1RyYW5zbWl0X0lUKFNNQlVTX0hhbmRsZVR5cGVEZWYgKmhzbWJ1cywgdWludDhfdCAqcERhdGEsIHVpbnQxNl90IFNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgWGZlck9wdGlvbnMpOwpAQCAtNzU3LDUgKzc4NywzIEBACiAKIAogI2VuZGlmIC8qIFNUTTMyRjd4eF9IQUxfU01CVVNfSCAqLwotCi0vKioqKioqKioqKioqKioqKioqKioqKioqIChDKSBDT1BZUklHSFQgU1RNaWNyb2VsZWN0cm9uaWNzICoqKioqRU5EIE9GIEZJTEUqKioqLwpkaWZmIC0tZ2l0IGEvSW5jL3N0bTMyZjd4eF9oYWxfc3BkaWZyeC5oIGIvSW5jL3N0bTMyZjd4eF9oYWxfc3BkaWZyeC5oCmluZGV4IDk5NDIwYmYuLjRkNzU5M2QgMTAwNjQ0Ci0tLSBhL0luYy9zdG0zMmY3eHhfaGFsX3NwZGlmcnguaAorKysgYi9JbmMvc3RtMzJmN3h4X2hhbF9zcGRpZnJ4LmgKQEAgLTYsMTMgKzYsMTIgQEAKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgICogQGF0dGVudGlvbgogICAqCi0gICogPGgyPjxjZW50ZXI+JmNvcHk7IENvcHlyaWdodCAoYykgMjAxNyBTVE1pY3JvZWxlY3Ryb25pY3MuCi0gICogQWxsIHJpZ2h0cyByZXNlcnZlZC48L2NlbnRlcj48L2gyPgorICAqIENvcHlyaWdodCAoYykgMjAxNyBTVE1pY3JvZWxlY3Ryb25pY3MuCisgICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgKgotICAqIFRoaXMgc29mdHdhcmUgY29tcG9uZW50IGlzIGxpY2Vuc2VkIGJ5IFNUIHVuZGVyIEJTRCAzLUNsYXVzZSBsaWNlbnNlLAotICAqIHRoZSAiTGljZW5zZSI7IFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUKLSAgKiBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQ6Ci0gICogICAgICAgICAgICAgICAgICAgICAgICBvcGVuc291cmNlLm9yZy9saWNlbnNlcy9CU0QtMy1DbGF1c2UKKyAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIHVuZGVyIHRlcm1zIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUKKyAgKiBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb2Z0d2FyZSBjb21wb25lbnQuCisgICogSWYgbm8gTElDRU5TRSBmaWxlIGNvbWVzIHdpdGggdGhpcyBzb2Z0d2FyZSwgaXQgaXMgcHJvdmlkZWQgQVMtSVMuCiAgICoKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgICovCkBAIC01OTYsNSArNTk1LDMgQEAKIAogCiAjZW5kaWYgLyogX19TVE0zMkY3eHhfSEFMX1NQRElGUlhfSCAqLwotCi0vKioqKioqKioqKioqKioqKioqKioqKioqIChDKSBDT1BZUklHSFQgU1RNaWNyb2VsZWN0cm9uaWNzICoqKioqRU5EIE9GIEZJTEUqKioqLwpkaWZmIC0tZ2l0IGEvSW5jL3N0bTMyZjd4eF9oYWxfc3BpLmggYi9JbmMvc3RtMzJmN3h4X2hhbF9zcGkuaAppbmRleCAyOTY0ODFhLi5jOTc4NTZmIDEwMDY0NAotLS0gYS9JbmMvc3RtMzJmN3h4X2hhbF9zcGkuaAorKysgYi9JbmMvc3RtMzJmN3h4X2hhbF9zcGkuaApAQCAtNiwxMyArNiwxMiBAQAogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgKiBAYXR0ZW50aW9uCiAgICoKLSAgKiA8aDI+PGNlbnRlcj4mY29weTsgQ29weXJpZ2h0IChjKSAyMDE3IFNUTWljcm9lbGVjdHJvbmljcy4KLSAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLjwvY2VudGVyPjwvaDI+CisgICogQ29weXJpZ2h0IChjKSAyMDE3IFNUTWljcm9lbGVjdHJvbmljcy4KKyAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAqCi0gICogVGhpcyBzb2Z0d2FyZSBjb21wb25lbnQgaXMgbGljZW5zZWQgYnkgU1QgdW5kZXIgQlNEIDMtQ2xhdXNlIGxpY2Vuc2UsCi0gICogdGhlICJMaWNlbnNlIjsgWW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZQotICAqIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdDoKLSAgKiAgICAgICAgICAgICAgICAgICAgICAgIG9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0JTRC0zLUNsYXVzZQorICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgdW5kZXIgdGVybXMgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZQorICAqIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvZnR3YXJlIGNvbXBvbmVudC4KKyAgKiBJZiBubyBMSUNFTlNFIGZpbGUgY29tZXMgd2l0aCB0aGlzIHNvZnR3YXJlLCBpdCBpcyBwcm92aWRlZCBBUy1JUy4KICAgKgogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgKi8KQEAgLTc3OCw3ICs3NzcsOCBAQAogCiAvKiBDYWxsYmFja3MgUmVnaXN0ZXIvVW5SZWdpc3RlciBmdW5jdGlvbnMgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogI2lmIChVU0VfSEFMX1NQSV9SRUdJU1RFUl9DQUxMQkFDS1MgPT0gMVUpCi1IQUxfU3RhdHVzVHlwZURlZiBIQUxfU1BJX1JlZ2lzdGVyQ2FsbGJhY2soU1BJX0hhbmRsZVR5cGVEZWYgKmhzcGksIEhBTF9TUElfQ2FsbGJhY2tJRFR5cGVEZWYgQ2FsbGJhY2tJRCwgcFNQSV9DYWxsYmFja1R5cGVEZWYgcENhbGxiYWNrKTsKK0hBTF9TdGF0dXNUeXBlRGVmIEhBTF9TUElfUmVnaXN0ZXJDYWxsYmFjayhTUElfSGFuZGxlVHlwZURlZiAqaHNwaSwgSEFMX1NQSV9DYWxsYmFja0lEVHlwZURlZiBDYWxsYmFja0lELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBTUElfQ2FsbGJhY2tUeXBlRGVmIHBDYWxsYmFjayk7CiBIQUxfU3RhdHVzVHlwZURlZiBIQUxfU1BJX1VuUmVnaXN0ZXJDYWxsYmFjayhTUElfSGFuZGxlVHlwZURlZiAqaHNwaSwgSEFMX1NQSV9DYWxsYmFja0lEVHlwZURlZiBDYWxsYmFja0lEKTsKICNlbmRpZiAvKiBVU0VfSEFMX1NQSV9SRUdJU1RFUl9DQUxMQkFDS1MgKi8KIC8qKgpAQCAtODQ5LDQgKzg0OSwzIEBACiAKICNlbmRpZiAvKiBTVE0zMkY3eHhfSEFMX1NQSV9IICovCiAKLS8qKioqKioqKioqKioqKioqKioqKioqKiogKEMpIENPUFlSSUdIVCBTVE1pY3JvZWxlY3Ryb25pY3MgKioqKipFTkQgT0YgRklMRSoqKiovCmRpZmYgLS1naXQgYS9JbmMvc3RtMzJmN3h4X2hhbF9zcGlfZXguaCBiL0luYy9zdG0zMmY3eHhfaGFsX3NwaV9leC5oCmluZGV4IDYzYTAxNTMuLjNmNGJmOWIgMTAwNjQ0Ci0tLSBhL0luYy9zdG0zMmY3eHhfaGFsX3NwaV9leC5oCisrKyBiL0luYy9zdG0zMmY3eHhfaGFsX3NwaV9leC5oCkBAIC02LDEzICs2LDEyIEBACiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAqIEBhdHRlbnRpb24KICAgKgotICAqIDxoMj48Y2VudGVyPiZjb3B5OyBDb3B5cmlnaHQgKGMpIDIwMTcgU1RNaWNyb2VsZWN0cm9uaWNzLgotICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuPC9jZW50ZXI+PC9oMj4KKyAgKiBDb3B5cmlnaHQgKGMpIDIwMTcgU1RNaWNyb2VsZWN0cm9uaWNzLgorICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICoKLSAgKiBUaGlzIHNvZnR3YXJlIGNvbXBvbmVudCBpcyBsaWNlbnNlZCBieSBTVCB1bmRlciBCU0QgMy1DbGF1c2UgbGljZW5zZSwKLSAgKiB0aGUgIkxpY2Vuc2UiOyBZb3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlCi0gICogTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0OgotICAqICAgICAgICAgICAgICAgICAgICAgICAgb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvQlNELTMtQ2xhdXNlCisgICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCB1bmRlciB0ZXJtcyB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlCisgICogaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc29mdHdhcmUgY29tcG9uZW50LgorICAqIElmIG5vIExJQ0VOU0UgZmlsZSBjb21lcyB3aXRoIHRoaXMgc29mdHdhcmUsIGl0IGlzIHByb3ZpZGVkIEFTLUlTLgogICAqCiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAqLwpAQCAtNzIsNCArNzEsMyBAQAogCiAjZW5kaWYgLyogU1RNMzJGN3h4X0hBTF9TUElfRVhfSCAqLwogCi0vKioqKioqKioqKioqKioqKioqKioqKioqIChDKSBDT1BZUklHSFQgU1RNaWNyb2VsZWN0cm9uaWNzICoqKioqRU5EIE9GIEZJTEUqKioqLwpkaWZmIC0tZ2l0IGEvSW5jL3N0bTMyZjd4eF9oYWxfc3JhbS5oIGIvSW5jL3N0bTMyZjd4eF9oYWxfc3JhbS5oCmluZGV4IGJjZWZmMzguLjkyOTcyZDggMTAwNjQ0Ci0tLSBhL0luYy9zdG0zMmY3eHhfaGFsX3NyYW0uaAorKysgYi9JbmMvc3RtMzJmN3h4X2hhbF9zcmFtLmgKQEAgLTYsMjUgKzYsMjUgQEAKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgICogQGF0dGVudGlvbgogICAqCi0gICogPGgyPjxjZW50ZXI+JmNvcHk7IENvcHlyaWdodCAoYykgMjAxNyBTVE1pY3JvZWxlY3Ryb25pY3MuCi0gICogQWxsIHJpZ2h0cyByZXNlcnZlZC48L2NlbnRlcj48L2gyPgorICAqIENvcHlyaWdodCAoYykgMjAxNyBTVE1pY3JvZWxlY3Ryb25pY3MuCisgICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgKgotICAqIFRoaXMgc29mdHdhcmUgY29tcG9uZW50IGlzIGxpY2Vuc2VkIGJ5IFNUIHVuZGVyIEJTRCAzLUNsYXVzZSBsaWNlbnNlLAotICAqIHRoZSAiTGljZW5zZSI7IFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUKLSAgKiBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQ6Ci0gICogICAgICAgICAgICAgICAgICAgICAgICBvcGVuc291cmNlLm9yZy9saWNlbnNlcy9CU0QtMy1DbGF1c2UKKyAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIHVuZGVyIHRlcm1zIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUKKyAgKiBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb2Z0d2FyZSBjb21wb25lbnQuCisgICogSWYgbm8gTElDRU5TRSBmaWxlIGNvbWVzIHdpdGggdGhpcyBzb2Z0d2FyZSwgaXQgaXMgcHJvdmlkZWQgQVMtSVMuCiAgICoKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gICovIAorICAqLwogCiAvKiBEZWZpbmUgdG8gcHJldmVudCByZWN1cnNpdmUgaW5jbHVzaW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwotI2lmbmRlZiBfX1NUTTMyRjd4eF9IQUxfU1JBTV9ICi0jZGVmaW5lIF9fU1RNMzJGN3h4X0hBTF9TUkFNX0gKKyNpZm5kZWYgU1RNMzJGN3h4X0hBTF9TUkFNX0gKKyNkZWZpbmUgU1RNMzJGN3h4X0hBTF9TUkFNX0gKIAogI2lmZGVmIF9fY3BsdXNwbHVzCi0gZXh0ZXJuICJDIiB7CitleHRlcm4gIkMiIHsKICNlbmRpZgogCisKIC8qIEluY2x1ZGVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAjaW5jbHVkZSAic3RtMzJmN3h4X2xsX2ZtYy5oIgogCkBAIC0zMywxNiArMzMsMTYgQEAKICAgKi8KIC8qKiBAYWRkdG9ncm91cCBTUkFNCiAgICogQHsKLSAgKi8gCisgICovCiAKIC8qIEV4cG9ydGVkIHR5cGVkZWYgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAKIC8qKiBAZGVmZ3JvdXAgU1JBTV9FeHBvcnRlZF9UeXBlcyBTUkFNIEV4cG9ydGVkIFR5cGVzCiAgICogQHsKICAgKi8KLS8qKiAKLSAgKiBAYnJpZWYgIEhBTCBTUkFNIFN0YXRlIHN0cnVjdHVyZXMgZGVmaW5pdGlvbiAgCi0gICovIAorLyoqCisgICogQGJyaWVmICBIQUwgU1JBTSBTdGF0ZSBzdHJ1Y3R1cmVzIGRlZmluaXRpb24KKyAgKi8KIHR5cGVkZWYgZW51bQogewogICBIQUxfU1JBTV9TVEFURV9SRVNFVCAgICAgPSAweDAwVSwgIC8qITwgU1JBTSBub3QgeWV0IGluaXRpYWxpemVkIG9yIGRpc2FibGVkICAgICAgICAgICAqLwpAQCAtNjAsMjYgKzYwLDI2IEBACiB0eXBlZGVmIHN0cnVjdCBfX1NSQU1fSGFuZGxlVHlwZURlZgogI2Vsc2UKIHR5cGVkZWYgc3RydWN0Ci0jZW5kaWYgLyogVVNFX0hBTF9TUkFNX1JFR0lTVEVSX0NBTExCQUNLUyAgKi8JCisjZW5kaWYgLyogVVNFX0hBTF9TUkFNX1JFR0lTVEVSX0NBTExCQUNLUyAgKi8KIHsKLSAgRk1DX05PUlNSQU1fVHlwZURlZiAgICAgICAgICAgKkluc3RhbmNlOyAgLyohPCBSZWdpc3RlciBiYXNlIGFkZHJlc3MgICAgICAgICAgICAgICAgICAgICAgICAqLyAKLSAgCisgIEZNQ19OT1JTUkFNX1R5cGVEZWYgICAgICAgICAgICpJbnN0YW5jZTsgIC8qITwgUmVnaXN0ZXIgYmFzZSBhZGRyZXNzICAgICAgICAgICAgICAgICAgICAgICAgKi8KKwogICBGTUNfTk9SU1JBTV9FWFRFTkRFRF9UeXBlRGVmICAqRXh0ZW5kZWQ7ICAvKiE8IEV4dGVuZGVkIG1vZGUgcmVnaXN0ZXIgYmFzZSBhZGRyZXNzICAgICAgICAgICovCi0gIAorCiAgIEZNQ19OT1JTUkFNX0luaXRUeXBlRGVmICAgICAgIEluaXQ7ICAgICAgIC8qITwgU1JBTSBkZXZpY2UgY29udHJvbCBjb25maWd1cmF0aW9uIHBhcmFtZXRlcnMgKi8KIAotICBIQUxfTG9ja1R5cGVEZWYgICAgICAgICAgICAgICBMb2NrOyAgICAgICAvKiE8IFNSQU0gbG9ja2luZyBvYmplY3QgICAgICAgICAgICAgICAgICAgICAgICAgICovIAotICAKKyAgSEFMX0xvY2tUeXBlRGVmICAgICAgICAgICAgICAgTG9jazsgICAgICAgLyohPCBTUkFNIGxvY2tpbmcgb2JqZWN0ICAgICAgICAgICAgICAgICAgICAgICAgICAqLworCiAgIF9fSU8gSEFMX1NSQU1fU3RhdGVUeXBlRGVmICAgIFN0YXRlOyAgICAgIC8qITwgU1JBTSBkZXZpY2UgYWNjZXNzIHN0YXRlICAgICAgICAgICAgICAgICAgICAgKi8KLSAgCisKICAgRE1BX0hhbmRsZVR5cGVEZWYgICAgICAgICAgICAgKmhkbWE7ICAgICAgLyohPCBQb2ludGVyIERNQSBoYW5kbGVyICAgICAgICAgICAgICAgICAgICAgICAgICAqLwogCiAjaWYgKFVTRV9IQUxfU1JBTV9SRUdJU1RFUl9DQUxMQkFDS1MgPT0gMSkKLSAgdm9pZCAgKCogTXNwSW5pdENhbGxiYWNrKSAgICAgICAgKCBzdHJ1Y3QgX19TUkFNX0hhbmRsZVR5cGVEZWYgKiBoc3JhbSk7ICAgIC8qITwgU1JBTSBNc3AgSW5pdCBjYWxsYmFjayAgICAgICAgICAgICAgKi8KLSAgdm9pZCAgKCogTXNwRGVJbml0Q2FsbGJhY2spICAgICAgKCBzdHJ1Y3QgX19TUkFNX0hhbmRsZVR5cGVEZWYgKiBoc3JhbSk7ICAgIC8qITwgU1JBTSBNc3AgRGVJbml0IGNhbGxiYWNrICAgICAgICAgICAgKi8KLSAgdm9pZCAgKCogRG1hWGZlckNwbHRDYWxsYmFjaykgICAgKCBETUFfSGFuZGxlVHlwZURlZiAqIGhkbWEpOyAgICAgICAgICAgICAgIC8qITwgU1JBTSBETUEgWGZlciBDb21wbGV0ZSBjYWxsYmFjayAgICAgKi8KLSAgdm9pZCAgKCogRG1hWGZlckVycm9yQ2FsbGJhY2spICAgKCBETUFfSGFuZGxlVHlwZURlZiAqIGhkbWEpOyAgICAgICAgICAgICAgIC8qITwgU1JBTSBETUEgWGZlciBFcnJvciBjYWxsYmFjayAgICAgICAgKi8KLSNlbmRpZgorICB2b2lkICgqIE1zcEluaXRDYWxsYmFjaykoc3RydWN0IF9fU1JBTV9IYW5kbGVUeXBlRGVmICpoc3JhbSk7ICAgICAgICAgICAgICAgLyohPCBTUkFNIE1zcCBJbml0IGNhbGxiYWNrICAgICAgICAgICAgICAqLworICB2b2lkICgqIE1zcERlSW5pdENhbGxiYWNrKShzdHJ1Y3QgX19TUkFNX0hhbmRsZVR5cGVEZWYgKmhzcmFtKTsgICAgICAgICAgICAgLyohPCBTUkFNIE1zcCBEZUluaXQgY2FsbGJhY2sgICAgICAgICAgICAqLworICB2b2lkICgqIERtYVhmZXJDcGx0Q2FsbGJhY2spKERNQV9IYW5kbGVUeXBlRGVmICpoZG1hKTsgICAgICAgICAgICAgICAgICAgICAgLyohPCBTUkFNIERNQSBYZmVyIENvbXBsZXRlIGNhbGxiYWNrICAgICAqLworICB2b2lkICgqIERtYVhmZXJFcnJvckNhbGxiYWNrKShETUFfSGFuZGxlVHlwZURlZiAqaGRtYSk7ICAgICAgICAgICAgICAgICAgICAgLyohPCBTUkFNIERNQSBYZmVyIEVycm9yIGNhbGxiYWNrICAgICAgICAqLworI2VuZGlmIC8qIFVTRV9IQUxfU1JBTV9SRUdJU1RFUl9DQUxMQkFDS1MgICovCiB9IFNSQU1fSGFuZGxlVHlwZURlZjsKIAogI2lmIChVU0VfSEFMX1NSQU1fUkVHSVNURVJfQ0FMTEJBQ0tTID09IDEpCkBAIC05MiwxNCArOTIsMTQgQEAKICAgSEFMX1NSQU1fTVNQX0RFSU5JVF9DQl9JRCAgICAgPSAweDAxVSwgIC8qITwgU1JBTSBNc3BEZUluaXQgQ2FsbGJhY2sgSUQgICAgICAgICAqLwogICBIQUxfU1JBTV9ETUFfWEZFUl9DUExUX0NCX0lEICA9IDB4MDJVLCAgLyohPCBTUkFNIERNQSBYZmVyIENvbXBsZXRlIENhbGxiYWNrIElEICovCiAgIEhBTF9TUkFNX0RNQV9YRkVSX0VSUl9DQl9JRCAgID0gMHgwM1UgICAvKiE8IFNSQU0gRE1BIFhmZXIgQ29tcGxldGUgQ2FsbGJhY2sgSUQgKi8KLX1IQUxfU1JBTV9DYWxsYmFja0lEVHlwZURlZjsKK30gSEFMX1NSQU1fQ2FsbGJhY2tJRFR5cGVEZWY7CiAKIC8qKgogICAqIEBicmllZiAgSEFMIFNSQU0gQ2FsbGJhY2sgcG9pbnRlciBkZWZpbml0aW9uCiAgICovCiB0eXBlZGVmIHZvaWQgKCpwU1JBTV9DYWxsYmFja1R5cGVEZWYpKFNSQU1fSGFuZGxlVHlwZURlZiAqaHNyYW0pOwogdHlwZWRlZiB2b2lkICgqcFNSQU1fRG1hQ2FsbGJhY2tUeXBlRGVmKShETUFfSGFuZGxlVHlwZURlZiAqaGRtYSk7Ci0jZW5kaWYKKyNlbmRpZiAvKiBVU0VfSEFMX1NSQU1fUkVHSVNURVJfQ0FMTEJBQ0tTICAqLwogLyoqCiAgICogQH0KICAgKi8KQEAgLTEwOCw4ICsxMDgsOCBAQAogLyogRXhwb3J0ZWQgbWFjcm8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KIAogLyoqIEBkZWZncm91cCBTUkFNX0V4cG9ydGVkX01hY3JvcyBTUkFNIEV4cG9ydGVkIE1hY3JvcwotICogQHsKLSAqLworICAqIEB7CisgICovCiAKIC8qKiBAYnJpZWYgUmVzZXQgU1JBTSBoYW5kbGUgc3RhdGUKICAgKiBAcGFyYW0gIF9fSEFORExFX18gU1JBTSBoYW5kbGUKQEAgLTEyMyw3ICsxMjMsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gd2hpbGUoMCkKICNlbHNlCiAjZGVmaW5lIF9fSEFMX1NSQU1fUkVTRVRfSEFORExFX1NUQVRFKF9fSEFORExFX18pICgoX19IQU5ETEVfXyktPlN0YXRlID0gSEFMX1NSQU1fU1RBVEVfUkVTRVQpCi0jZW5kaWYKKyNlbmRpZiAvKiBVU0VfSEFMX1NSQU1fUkVHSVNURVJfQ0FMTEJBQ0tTICAqLwogCiAvKioKICAgKiBAfQpAQCAtMTM1LDExICsxMzUsMTIgQEAKICAgKi8KIAogLyoqIEBhZGR0b2dyb3VwIFNSQU1fRXhwb3J0ZWRfRnVuY3Rpb25zX0dyb3VwMSBJbml0aWFsaXphdGlvbiBhbmQgZGUtaW5pdGlhbGl6YXRpb24gZnVuY3Rpb25zCi0gKiBAewotICovCisgICogQHsKKyAgKi8KIAogLyogSW5pdGlhbGl6YXRpb24vZGUtaW5pdGlhbGl6YXRpb24gZnVuY3Rpb25zICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLUhBTF9TdGF0dXNUeXBlRGVmIEhBTF9TUkFNX0luaXQoU1JBTV9IYW5kbGVUeXBlRGVmICpoc3JhbSwgRk1DX05PUlNSQU1fVGltaW5nVHlwZURlZiAqVGltaW5nLCBGTUNfTk9SU1JBTV9UaW1pbmdUeXBlRGVmICpFeHRUaW1pbmcpOworSEFMX1N0YXR1c1R5cGVEZWYgSEFMX1NSQU1fSW5pdChTUkFNX0hhbmRsZVR5cGVEZWYgKmhzcmFtLCBGTUNfTk9SU1JBTV9UaW1pbmdUeXBlRGVmICpUaW1pbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZNQ19OT1JTUkFNX1RpbWluZ1R5cGVEZWYgKkV4dFRpbWluZyk7CiBIQUxfU3RhdHVzVHlwZURlZiBIQUxfU1JBTV9EZUluaXQoU1JBTV9IYW5kbGVUeXBlRGVmICpoc3JhbSk7CiB2b2lkIEhBTF9TUkFNX01zcEluaXQoU1JBTV9IYW5kbGVUeXBlRGVmICpoc3JhbSk7CiB2b2lkIEhBTF9TUkFNX01zcERlSW5pdChTUkFNX0hhbmRsZVR5cGVEZWYgKmhzcmFtKTsKQEAgLTE0OSwzNiArMTUwLDQ2IEBACiAgICovCiAKIC8qKiBAYWRkdG9ncm91cCBTUkFNX0V4cG9ydGVkX0Z1bmN0aW9uc19Hcm91cDIgSW5wdXQgT3V0cHV0IGFuZCBtZW1vcnkgY29udHJvbCBmdW5jdGlvbnMKLSAqIEB7Ci0gKi8KKyAgKiBAeworICAqLwogCiAvKiBJL08gb3BlcmF0aW9uIGZ1bmN0aW9ucyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotSEFMX1N0YXR1c1R5cGVEZWYgSEFMX1NSQU1fUmVhZF84YihTUkFNX0hhbmRsZVR5cGVEZWYgKmhzcmFtLCB1aW50MzJfdCAqcEFkZHJlc3MsIHVpbnQ4X3QgKnBEc3RCdWZmZXIsIHVpbnQzMl90IEJ1ZmZlclNpemUpOwotSEFMX1N0YXR1c1R5cGVEZWYgSEFMX1NSQU1fV3JpdGVfOGIoU1JBTV9IYW5kbGVUeXBlRGVmICpoc3JhbSwgdWludDMyX3QgKnBBZGRyZXNzLCB1aW50OF90ICpwU3JjQnVmZmVyLCB1aW50MzJfdCBCdWZmZXJTaXplKTsKLUhBTF9TdGF0dXNUeXBlRGVmIEhBTF9TUkFNX1JlYWRfMTZiKFNSQU1fSGFuZGxlVHlwZURlZiAqaHNyYW0sIHVpbnQzMl90ICpwQWRkcmVzcywgdWludDE2X3QgKnBEc3RCdWZmZXIsIHVpbnQzMl90IEJ1ZmZlclNpemUpOwotSEFMX1N0YXR1c1R5cGVEZWYgSEFMX1NSQU1fV3JpdGVfMTZiKFNSQU1fSGFuZGxlVHlwZURlZiAqaHNyYW0sIHVpbnQzMl90ICpwQWRkcmVzcywgdWludDE2X3QgKnBTcmNCdWZmZXIsIHVpbnQzMl90IEJ1ZmZlclNpemUpOwotSEFMX1N0YXR1c1R5cGVEZWYgSEFMX1NSQU1fUmVhZF8zMmIoU1JBTV9IYW5kbGVUeXBlRGVmICpoc3JhbSwgdWludDMyX3QgKnBBZGRyZXNzLCB1aW50MzJfdCAqcERzdEJ1ZmZlciwgdWludDMyX3QgQnVmZmVyU2l6ZSk7Ci1IQUxfU3RhdHVzVHlwZURlZiBIQUxfU1JBTV9Xcml0ZV8zMmIoU1JBTV9IYW5kbGVUeXBlRGVmICpoc3JhbSwgdWludDMyX3QgKnBBZGRyZXNzLCB1aW50MzJfdCAqcFNyY0J1ZmZlciwgdWludDMyX3QgQnVmZmVyU2l6ZSk7Ci1IQUxfU3RhdHVzVHlwZURlZiBIQUxfU1JBTV9SZWFkX0RNQShTUkFNX0hhbmRsZVR5cGVEZWYgKmhzcmFtLCB1aW50MzJfdCAqcEFkZHJlc3MsIHVpbnQzMl90ICpwRHN0QnVmZmVyLCB1aW50MzJfdCBCdWZmZXJTaXplKTsKLUhBTF9TdGF0dXNUeXBlRGVmIEhBTF9TUkFNX1dyaXRlX0RNQShTUkFNX0hhbmRsZVR5cGVEZWYgKmhzcmFtLCB1aW50MzJfdCAqcEFkZHJlc3MsIHVpbnQzMl90ICpwU3JjQnVmZmVyLCB1aW50MzJfdCBCdWZmZXJTaXplKTsKK0hBTF9TdGF0dXNUeXBlRGVmIEhBTF9TUkFNX1JlYWRfOGIoU1JBTV9IYW5kbGVUeXBlRGVmICpoc3JhbSwgdWludDMyX3QgKnBBZGRyZXNzLCB1aW50OF90ICpwRHN0QnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBCdWZmZXJTaXplKTsKK0hBTF9TdGF0dXNUeXBlRGVmIEhBTF9TUkFNX1dyaXRlXzhiKFNSQU1fSGFuZGxlVHlwZURlZiAqaHNyYW0sIHVpbnQzMl90ICpwQWRkcmVzcywgdWludDhfdCAqcFNyY0J1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IEJ1ZmZlclNpemUpOworSEFMX1N0YXR1c1R5cGVEZWYgSEFMX1NSQU1fUmVhZF8xNmIoU1JBTV9IYW5kbGVUeXBlRGVmICpoc3JhbSwgdWludDMyX3QgKnBBZGRyZXNzLCB1aW50MTZfdCAqcERzdEJ1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IEJ1ZmZlclNpemUpOworSEFMX1N0YXR1c1R5cGVEZWYgSEFMX1NSQU1fV3JpdGVfMTZiKFNSQU1fSGFuZGxlVHlwZURlZiAqaHNyYW0sIHVpbnQzMl90ICpwQWRkcmVzcywgdWludDE2X3QgKnBTcmNCdWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgQnVmZmVyU2l6ZSk7CitIQUxfU3RhdHVzVHlwZURlZiBIQUxfU1JBTV9SZWFkXzMyYihTUkFNX0hhbmRsZVR5cGVEZWYgKmhzcmFtLCB1aW50MzJfdCAqcEFkZHJlc3MsIHVpbnQzMl90ICpwRHN0QnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgQnVmZmVyU2l6ZSk7CitIQUxfU3RhdHVzVHlwZURlZiBIQUxfU1JBTV9Xcml0ZV8zMmIoU1JBTV9IYW5kbGVUeXBlRGVmICpoc3JhbSwgdWludDMyX3QgKnBBZGRyZXNzLCB1aW50MzJfdCAqcFNyY0J1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBCdWZmZXJTaXplKTsKK0hBTF9TdGF0dXNUeXBlRGVmIEhBTF9TUkFNX1JlYWRfRE1BKFNSQU1fSGFuZGxlVHlwZURlZiAqaHNyYW0sIHVpbnQzMl90ICpwQWRkcmVzcywgdWludDMyX3QgKnBEc3RCdWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBCdWZmZXJTaXplKTsKK0hBTF9TdGF0dXNUeXBlRGVmIEhBTF9TUkFNX1dyaXRlX0RNQShTUkFNX0hhbmRsZVR5cGVEZWYgKmhzcmFtLCB1aW50MzJfdCAqcEFkZHJlc3MsIHVpbnQzMl90ICpwU3JjQnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IEJ1ZmZlclNpemUpOwogCiB2b2lkIEhBTF9TUkFNX0RNQV9YZmVyQ3BsdENhbGxiYWNrKERNQV9IYW5kbGVUeXBlRGVmICpoZG1hKTsKIHZvaWQgSEFMX1NSQU1fRE1BX1hmZXJFcnJvckNhbGxiYWNrKERNQV9IYW5kbGVUeXBlRGVmICpoZG1hKTsKIAogI2lmIChVU0VfSEFMX1NSQU1fUkVHSVNURVJfQ0FMTEJBQ0tTID09IDEpCiAvKiBTUkFNIGNhbGxiYWNrIHJlZ2lzdGVyaW5nL3VucmVnaXN0ZXJpbmcgKi8KLUhBTF9TdGF0dXNUeXBlRGVmIEhBTF9TUkFNX1JlZ2lzdGVyQ2FsbGJhY2soU1JBTV9IYW5kbGVUeXBlRGVmICpoc3JhbSwgSEFMX1NSQU1fQ2FsbGJhY2tJRFR5cGVEZWYgQ2FsbGJhY2tJZCwgcFNSQU1fQ2FsbGJhY2tUeXBlRGVmIHBDYWxsYmFjayk7CitIQUxfU3RhdHVzVHlwZURlZiBIQUxfU1JBTV9SZWdpc3RlckNhbGxiYWNrKFNSQU1fSGFuZGxlVHlwZURlZiAqaHNyYW0sIEhBTF9TUkFNX0NhbGxiYWNrSURUeXBlRGVmIENhbGxiYWNrSWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBTUkFNX0NhbGxiYWNrVHlwZURlZiBwQ2FsbGJhY2spOwogSEFMX1N0YXR1c1R5cGVEZWYgSEFMX1NSQU1fVW5SZWdpc3RlckNhbGxiYWNrKFNSQU1fSGFuZGxlVHlwZURlZiAqaHNyYW0sIEhBTF9TUkFNX0NhbGxiYWNrSURUeXBlRGVmIENhbGxiYWNrSWQpOwotSEFMX1N0YXR1c1R5cGVEZWYgSEFMX1NSQU1fUmVnaXN0ZXJEbWFDYWxsYmFjayhTUkFNX0hhbmRsZVR5cGVEZWYgKmhzcmFtLCBIQUxfU1JBTV9DYWxsYmFja0lEVHlwZURlZiBDYWxsYmFja0lkLCBwU1JBTV9EbWFDYWxsYmFja1R5cGVEZWYgcENhbGxiYWNrKTsKLSNlbmRpZgorSEFMX1N0YXR1c1R5cGVEZWYgSEFMX1NSQU1fUmVnaXN0ZXJEbWFDYWxsYmFjayhTUkFNX0hhbmRsZVR5cGVEZWYgKmhzcmFtLCBIQUxfU1JBTV9DYWxsYmFja0lEVHlwZURlZiBDYWxsYmFja0lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwU1JBTV9EbWFDYWxsYmFja1R5cGVEZWYgcENhbGxiYWNrKTsKKyNlbmRpZiAvKiBVU0VfSEFMX1NSQU1fUkVHSVNURVJfQ0FMTEJBQ0tTICAqLwogCiAvKioKICAgKiBAfQogICAqLwotICAKKwogLyoqIEBhZGR0b2dyb3VwIFNSQU1fRXhwb3J0ZWRfRnVuY3Rpb25zX0dyb3VwMyBDb250cm9sIGZ1bmN0aW9ucwotICogQHsKLSAqLworICAqIEB7CisgICovCiAKIC8qIFNSQU0gQ29udHJvbCBmdW5jdGlvbnMgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiBIQUxfU3RhdHVzVHlwZURlZiBIQUxfU1JBTV9Xcml0ZU9wZXJhdGlvbl9FbmFibGUoU1JBTV9IYW5kbGVUeXBlRGVmICpoc3JhbSk7CkBAIC0xODksMzIgKzIwMCwzMSBAQAogICAqLwogCiAvKiogQGFkZHRvZ3JvdXAgU1JBTV9FeHBvcnRlZF9GdW5jdGlvbnNfR3JvdXA0IFBlcmlwaGVyYWwgU3RhdGUgZnVuY3Rpb25zCi0gKiBAewotICovCisgICogQHsKKyAgKi8KIAogLyogU1JBTSAgU3RhdGUgZnVuY3Rpb25zICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIEhBTF9TUkFNX1N0YXRlVHlwZURlZiBIQUxfU1JBTV9HZXRTdGF0ZShTUkFNX0hhbmRsZVR5cGVEZWYgKmhzcmFtKTsKIAogLyoqCiAgICogQH0KLSAgKi8gCisgICovCiAKIC8qKgogICAqIEB9CiAgICovCi0gIAotLyoqCi0gICogQH0KLSAgKi8gCiAKIC8qKgogICAqIEB9CiAgICovCi0gIAorCisvKioKKyAgKiBAfQorICAqLworCisKICNpZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlmCiAKLSNlbmRpZiAvKiBfX1NUTTMyRjd4eF9IQUxfU1JBTV9IICovCi0KLS8qKioqKioqKioqKioqKioqKioqKioqKiogKEMpIENPUFlSSUdIVCBTVE1pY3JvZWxlY3Ryb25pY3MgKioqKipFTkQgT0YgRklMRSoqKiovCisjZW5kaWYgLyogU1RNMzJGN3h4X0hBTF9TUkFNX0ggKi8KZGlmZiAtLWdpdCBhL0luYy9zdG0zMmY3eHhfaGFsX3RpbS5oIGIvSW5jL3N0bTMyZjd4eF9oYWxfdGltLmgKaW5kZXggNDkzNGU2Mi4uMmM3NDE2ZiAxMDA2NDQKLS0tIGEvSW5jL3N0bTMyZjd4eF9oYWxfdGltLmgKKysrIGIvSW5jL3N0bTMyZjd4eF9oYWxfdGltLmgKQEAgLTYsMTMgKzYsMTIgQEAKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgICogQGF0dGVudGlvbgogICAqCi0gICogPGgyPjxjZW50ZXI+JmNvcHk7IENvcHlyaWdodCAoYykgMjAxNyBTVE1pY3JvZWxlY3Ryb25pY3MuCi0gICogQWxsIHJpZ2h0cyByZXNlcnZlZC48L2NlbnRlcj48L2gyPgorICAqIENvcHlyaWdodCAoYykgMjAxNyBTVE1pY3JvZWxlY3Ryb25pY3MuCisgICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgKgotICAqIFRoaXMgc29mdHdhcmUgY29tcG9uZW50IGlzIGxpY2Vuc2VkIGJ5IFNUIHVuZGVyIEJTRCAzLUNsYXVzZSBsaWNlbnNlLAotICAqIHRoZSAiTGljZW5zZSI7IFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUKLSAgKiBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQ6Ci0gICogICAgICAgICAgICAgICAgICAgICAgICBvcGVuc291cmNlLm9yZy9saWNlbnNlcy9CU0QtMy1DbGF1c2UKKyAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIHVuZGVyIHRlcm1zIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUKKyAgKiBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb2Z0d2FyZSBjb21wb25lbnQuCisgICogSWYgbm8gTElDRU5TRSBmaWxlIGNvbWVzIHdpdGggdGhpcyBzb2Z0d2FyZSwgaXQgaXMgcHJvdmlkZWQgQVMtSVMuCiAgICoKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgICovCkBAIC02NSw4ICs2NCwxMCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBtZWFucyBpbiBQV00gbW9kZSB0aGF0IChOKzEpIGNvcnJlc3BvbmRzIHRvOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gdGhlIG51bWJlciBvZiBQV00gcGVyaW9kcyBpbiBlZGdlLWFsaWduZWQgbW9kZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gdGhlIG51bWJlciBvZiBoYWxmIFBXTSBwZXJpb2QgaW4gY2VudGVyLWFsaWduZWQgbW9kZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdQIHRpbWVyczogdGhpcyBwYXJhbWV0ZXIgbXVzdCBiZSBhIG51bWJlciBiZXR3ZWVuIE1pbl9EYXRhID0gMHgwMCBhbmQgTWF4X0RhdGEgPSAweEZGLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFkdmFuY2VkIHRpbWVyczogdGhpcyBwYXJhbWV0ZXIgbXVzdCBiZSBhIG51bWJlciBiZXR3ZWVuIE1pbl9EYXRhID0gMHgwMDAwIGFuZCBNYXhfRGF0YSA9IDB4RkZGRi4gKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHUCB0aW1lcnM6IHRoaXMgcGFyYW1ldGVyIG11c3QgYmUgYSBudW1iZXIgYmV0d2VlbiBNaW5fRGF0YSA9IDB4MDAgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWF4X0RhdGEgPSAweEZGLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFkdmFuY2VkIHRpbWVyczogdGhpcyBwYXJhbWV0ZXIgbXVzdCBiZSBhIG51bWJlciBiZXR3ZWVuIE1pbl9EYXRhID0gMHgwMDAwIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1heF9EYXRhID0gMHhGRkZGLiAqLwogCiAgIHVpbnQzMl90IEF1dG9SZWxvYWRQcmVsb2FkOyAgLyohPCBTcGVjaWZpZXMgdGhlIGF1dG8tcmVsb2FkIHByZWxvYWQuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhIHZhbHVlIG9mIEByZWYgVElNX0F1dG9SZWxvYWRQcmVsb2FkICovCkBAIC0yMTgsNyArMjE5LDggQEAKICAgdWludDMyX3QgQ2xlYXJJbnB1dFBvbGFyaXR5OyAgIC8qITwgVElNIENsZWFyIElucHV0IHBvbGFyaXR5CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhIHZhbHVlIG9mIEByZWYgVElNX0NsZWFySW5wdXRfUG9sYXJpdHkgKi8KICAgdWludDMyX3QgQ2xlYXJJbnB1dFByZXNjYWxlcjsgIC8qITwgVElNIENsZWFyIElucHV0IHByZXNjYWxlcgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBtdXN0IGJlIDA6IFdoZW4gT0NSZWYgY2xlYXIgZmVhdHVyZSBpcyB1c2VkIHdpdGggRVRSIHNvdXJjZSwgRVRSIHByZXNjYWxlciBtdXN0IGJlIG9mZiAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBtdXN0IGJlIDA6IFdoZW4gT0NSZWYgY2xlYXIgZmVhdHVyZSBpcyB1c2VkIHdpdGggRVRSIHNvdXJjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRVRSIHByZXNjYWxlciBtdXN0IGJlIG9mZiAqLwogICB1aW50MzJfdCBDbGVhcklucHV0RmlsdGVyOyAgICAgLyohPCBUSU0gQ2xlYXIgSW5wdXQgZmlsdGVyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhIG51bWJlciBiZXR3ZWVuIE1pbl9EYXRhID0gMHgwIGFuZCBNYXhfRGF0YSA9IDB4RiAqLwogfSBUSU1fQ2xlYXJJbnB1dENvbmZpZ1R5cGVEZWY7CkBAIC0yNjgsMjggKzI3MCwyOCBAQAogICAqLwogdHlwZWRlZiBzdHJ1Y3QKIHsKLSAgdWludDMyX3QgT2ZmU3RhdGVSdW5Nb2RlOyAgICAgIC8qITwgVElNIG9mZiBzdGF0ZSBpbiBydW4gbW9kZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYSB2YWx1ZSBvZiBAcmVmIFRJTV9PU1NSX09mZl9TdGF0ZV9TZWxlY3Rpb25fZm9yX1J1bl9tb2RlX3N0YXRlICovCi0gIHVpbnQzMl90IE9mZlN0YXRlSURMRU1vZGU7ICAgICAvKiE8IFRJTSBvZmYgc3RhdGUgaW4gSURMRSBtb2RlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhIHZhbHVlIG9mIEByZWYgVElNX09TU0lfT2ZmX1N0YXRlX1NlbGVjdGlvbl9mb3JfSWRsZV9tb2RlX3N0YXRlICovCi0gIHVpbnQzMl90IExvY2tMZXZlbDsgICAgICAgICAgICAvKiE8IFRJTSBMb2NrIGxldmVsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhIHZhbHVlIG9mIEByZWYgVElNX0xvY2tfbGV2ZWwgKi8KLSAgdWludDMyX3QgRGVhZFRpbWU7ICAgICAgICAgICAgIC8qITwgVElNIGRlYWQgVGltZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYSBudW1iZXIgYmV0d2VlbiBNaW5fRGF0YSA9IDB4MDAgYW5kIE1heF9EYXRhID0gMHhGRiAqLwotICB1aW50MzJfdCBCcmVha1N0YXRlOyAgICAgICAgICAgLyohPCBUSU0gQnJlYWsgU3RhdGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGEgdmFsdWUgb2YgQHJlZiBUSU1fQnJlYWtfSW5wdXRfZW5hYmxlX2Rpc2FibGUgKi8KLSAgdWludDMyX3QgQnJlYWtQb2xhcml0eTsgICAgICAgIC8qITwgVElNIEJyZWFrIGlucHV0IHBvbGFyaXR5Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhIHZhbHVlIG9mIEByZWYgVElNX0JyZWFrX1BvbGFyaXR5ICovCi0gIHVpbnQzMl90IEJyZWFrRmlsdGVyOyAgICAgICAgICAvKiE8IFNwZWNpZmllcyB0aGUgYnJlYWsgaW5wdXQgZmlsdGVyLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYSBudW1iZXIgYmV0d2VlbiBNaW5fRGF0YSA9IDB4MCBhbmQgTWF4X0RhdGEgPSAweEYgKi8KLSAgdWludDMyX3QgQnJlYWsyU3RhdGU7ICAgICAgICAgIC8qITwgVElNIEJyZWFrMiBTdGF0ZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYSB2YWx1ZSBvZiBAcmVmIFRJTV9CcmVhazJfSW5wdXRfZW5hYmxlX2Rpc2FibGUgKi8KLSAgdWludDMyX3QgQnJlYWsyUG9sYXJpdHk7ICAgICAgIC8qITwgVElNIEJyZWFrMiBpbnB1dCBwb2xhcml0eQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYSB2YWx1ZSBvZiBAcmVmIFRJTV9CcmVhazJfUG9sYXJpdHkgKi8KLSAgdWludDMyX3QgQnJlYWsyRmlsdGVyOyAgICAgICAgIC8qITwgVElNIGJyZWFrMiBpbnB1dCBmaWx0ZXIuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhIG51bWJlciBiZXR3ZWVuIE1pbl9EYXRhID0gMHgwIGFuZCBNYXhfRGF0YSA9IDB4RiAqLwotICB1aW50MzJfdCBBdXRvbWF0aWNPdXRwdXQ7ICAgICAgLyohPCBUSU0gQXV0b21hdGljIE91dHB1dCBFbmFibGUgc3RhdGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGEgdmFsdWUgb2YgQHJlZiBUSU1fQU9FX0JpdF9TZXRfUmVzZXQgKi8KKyAgdWludDMyX3QgT2ZmU3RhdGVSdW5Nb2RlOyAgICAgIC8qITwgVElNIG9mZiBzdGF0ZSBpbiBydW4gbW9kZSwgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGEgdmFsdWUgb2YgQHJlZiBUSU1fT1NTUl9PZmZfU3RhdGVfU2VsZWN0aW9uX2Zvcl9SdW5fbW9kZV9zdGF0ZSAqLworCisgIHVpbnQzMl90IE9mZlN0YXRlSURMRU1vZGU7ICAgICAvKiE8IFRJTSBvZmYgc3RhdGUgaW4gSURMRSBtb2RlLCBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYSB2YWx1ZSBvZiBAcmVmIFRJTV9PU1NJX09mZl9TdGF0ZV9TZWxlY3Rpb25fZm9yX0lkbGVfbW9kZV9zdGF0ZSAqLworCisgIHVpbnQzMl90IExvY2tMZXZlbDsgICAgICAgICAgICAvKiE8IFRJTSBMb2NrIGxldmVsLCBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYSB2YWx1ZSBvZiBAcmVmIFRJTV9Mb2NrX2xldmVsICovCisKKyAgdWludDMyX3QgRGVhZFRpbWU7ICAgICAgICAgICAgIC8qITwgVElNIGRlYWQgVGltZSwgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGEgbnVtYmVyIGJldHdlZW4gTWluX0RhdGEgPSAweDAwIGFuZCBNYXhfRGF0YSA9IDB4RkYgKi8KKworICB1aW50MzJfdCBCcmVha1N0YXRlOyAgICAgICAgICAgLyohPCBUSU0gQnJlYWsgU3RhdGUsIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhIHZhbHVlIG9mIEByZWYgVElNX0JyZWFrX0lucHV0X2VuYWJsZV9kaXNhYmxlICovCisKKyAgdWludDMyX3QgQnJlYWtQb2xhcml0eTsgICAgICAgIC8qITwgVElNIEJyZWFrIGlucHV0IHBvbGFyaXR5LCBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYSB2YWx1ZSBvZiBAcmVmIFRJTV9CcmVha19Qb2xhcml0eSAqLworCisgIHVpbnQzMl90IEJyZWFrRmlsdGVyOyAgICAgICAgICAvKiE8IFNwZWNpZmllcyB0aGUgYnJlYWsgaW5wdXQgZmlsdGVyLlRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhIG51bWJlciBiZXR3ZWVuIE1pbl9EYXRhID0gMHgwIGFuZCBNYXhfRGF0YSA9IDB4RiAqLworCisgIHVpbnQzMl90IEJyZWFrMlN0YXRlOyAgICAgICAgICAvKiE8IFRJTSBCcmVhazIgU3RhdGUsIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhIHZhbHVlIG9mIEByZWYgVElNX0JyZWFrMl9JbnB1dF9lbmFibGVfZGlzYWJsZSAqLworCisgIHVpbnQzMl90IEJyZWFrMlBvbGFyaXR5OyAgICAgICAvKiE8IFRJTSBCcmVhazIgaW5wdXQgcG9sYXJpdHksIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhIHZhbHVlIG9mIEByZWYgVElNX0JyZWFrMl9Qb2xhcml0eSAqLworCisgIHVpbnQzMl90IEJyZWFrMkZpbHRlcjsgICAgICAgICAvKiE8IFRJTSBicmVhazIgaW5wdXQgZmlsdGVyLlRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhIG51bWJlciBiZXR3ZWVuIE1pbl9EYXRhID0gMHgwIGFuZCBNYXhfRGF0YSA9IDB4RiAqLworCisgIHVpbnQzMl90IEF1dG9tYXRpY091dHB1dDsgICAgICAvKiE8IFRJTSBBdXRvbWF0aWMgT3V0cHV0IEVuYWJsZSBzdGF0ZSwgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGEgdmFsdWUgb2YgQHJlZiBUSU1fQU9FX0JpdF9TZXRfUmVzZXQgKi8KKwogfSBUSU1fQnJlYWtEZWFkVGltZUNvbmZpZ1R5cGVEZWY7CiAKIC8qKgpAQCAtNjYwLDEwICs2NjIsOCBAQAogLyoqIEBkZWZncm91cCBUSU1fSW5wdXRfQ2FwdHVyZV9TZWxlY3Rpb24gVElNIElucHV0IENhcHR1cmUgU2VsZWN0aW9uCiAgICogQHsKICAgKi8KLSNkZWZpbmUgVElNX0lDU0VMRUNUSU9OX0RJUkVDVFRJICAgICAgICAgICBUSU1fQ0NNUjFfQ0MxU18wICAgICAgICAgICAgICAgICAgICAgLyohPCBUSU0gSW5wdXQgMSwgMiwgMyBvciA0IGlzIHNlbGVjdGVkIHRvIGJlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29ubmVjdGVkIHRvIElDMSwgSUMyLCBJQzMgb3IgSUM0LCByZXNwZWN0aXZlbHkgKi8KLSNkZWZpbmUgVElNX0lDU0VMRUNUSU9OX0lORElSRUNUVEkgICAgICAgICBUSU1fQ0NNUjFfQ0MxU18xICAgICAgICAgICAgICAgICAgICAgLyohPCBUSU0gSW5wdXQgMSwgMiwgMyBvciA0IGlzIHNlbGVjdGVkIHRvIGJlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29ubmVjdGVkIHRvIElDMiwgSUMxLCBJQzQgb3IgSUMzLCByZXNwZWN0aXZlbHkgKi8KKyNkZWZpbmUgVElNX0lDU0VMRUNUSU9OX0RJUkVDVFRJICAgICAgICAgICBUSU1fQ0NNUjFfQ0MxU18wICAgICAgICAgICAgICAgICAgICAgLyohPCBUSU0gSW5wdXQgMSwgMiwgMyBvciA0IGlzIHNlbGVjdGVkIHRvIGJlIGNvbm5lY3RlZCB0byBJQzEsIElDMiwgSUMzIG9yIElDNCwgcmVzcGVjdGl2ZWx5ICovCisjZGVmaW5lIFRJTV9JQ1NFTEVDVElPTl9JTkRJUkVDVFRJICAgICAgICAgVElNX0NDTVIxX0NDMVNfMSAgICAgICAgICAgICAgICAgICAgIC8qITwgVElNIElucHV0IDEsIDIsIDMgb3IgNCBpcyBzZWxlY3RlZCB0byBiZSBjb25uZWN0ZWQgdG8gSUMyLCBJQzEsIElDNCBvciBJQzMsIHJlc3BlY3RpdmVseSAqLwogI2RlZmluZSBUSU1fSUNTRUxFQ1RJT05fVFJDICAgICAgICAgICAgICAgIFRJTV9DQ01SMV9DQzFTICAgICAgICAgICAgICAgICAgICAgICAvKiE8IFRJTSBJbnB1dCAxLCAyLCAzIG9yIDQgaXMgc2VsZWN0ZWQgdG8gYmUgY29ubmVjdGVkIHRvIFRSQyAqLwogLyoqCiAgICogQH0KQEAgLTkwMiwxOSArOTAyLDE4IEBACiAgICogQHsKICAgKi8KICNkZWZpbmUgVElNX0FVVE9NQVRJQ09VVFBVVF9ESVNBQkxFICAgICAgICAweDAwMDAwMDAwVSAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBNT0UgY2FuIGJlIHNldCBvbmx5IGJ5IHNvZnR3YXJlICovCi0jZGVmaW5lIFRJTV9BVVRPTUFUSUNPVVRQVVRfRU5BQkxFICAgICAgICAgVElNX0JEVFJfQU9FICAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgTU9FIGNhbiBiZSBzZXQgYnkgc29mdHdhcmUgb3IgYXV0b21hdGljYWxseSBhdCB0aGUgbmV4dCB1cGRhdGUgZXZlbnQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpZiBub25lIG9mIHRoZSBicmVhayBpbnB1dHMgQlJLIGFuZCBCUksyIGlzIGFjdGl2ZSkgKi8KKyNkZWZpbmUgVElNX0FVVE9NQVRJQ09VVFBVVF9FTkFCTEUgICAgICAgICBUSU1fQkRUUl9BT0UgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBNT0UgY2FuIGJlIHNldCBieSBzb2Z0d2FyZSBvciBhdXRvbWF0aWNhbGx5IGF0IHRoZSBuZXh0IHVwZGF0ZSBldmVudCAoaWYgbm9uZSBvZiB0aGUgYnJlYWsgaW5wdXRzIEJSSyBhbmQgQlJLMiBpcyBhY3RpdmUpICovCiAvKioKICAgKiBAfQogICAqLwogCi0vKiogQGRlZmdyb3VwIFRJTV9Hcm91cF9DaGFubmVsNSBHcm91cCBDaGFubmVsIDUgYW5kIENoYW5uZWwgMSwgMiBvciAzCisvKiogQGRlZmdyb3VwIFRJTV9Hcm91cF9DaGFubmVsNSBUSU0gR3JvdXAgQ2hhbm5lbCA1IGFuZCBDaGFubmVsIDEsIDIgb3IgMwogICAqIEB7CiAgICovCi0jZGVmaW5lIFRJTV9HUk9VUENINV9OT05FICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMFUgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICE8IE5vIGVmZmVjdCBvZiBPQzVSRUYgb24gT0MxUkVGQywgT0MyUkVGQyBhbmQgT0MzUkVGQyAqLwotI2RlZmluZSBUSU1fR1JPVVBDSDVfT0MxUkVGQyAgICAgICAgICAgICAgIFRJTV9DQ1I1X0dDNUMxICAgICAgICAgICAgICAgICAgICAgICAvKiAhPCBPQzFSRUZDIGlzIHRoZSBsb2dpY2FsIEFORCBvZiBPQzFSRUZDIGFuZCBPQzVSRUYgICAgKi8KLSNkZWZpbmUgVElNX0dST1VQQ0g1X09DMlJFRkMgICAgICAgICAgICAgICBUSU1fQ0NSNV9HQzVDMiAgICAgICAgICAgICAgICAgICAgICAgLyogITwgT0MyUkVGQyBpcyB0aGUgbG9naWNhbCBBTkQgb2YgT0MyUkVGQyBhbmQgT0M1UkVGICAgICovCi0jZGVmaW5lIFRJTV9HUk9VUENINV9PQzNSRUZDICAgICAgICAgICAgICAgVElNX0NDUjVfR0M1QzMgICAgICAgICAgICAgICAgICAgICAgIC8qICE8IE9DM1JFRkMgaXMgdGhlIGxvZ2ljYWwgQU5EIG9mIE9DM1JFRkMgYW5kIE9DNVJFRiAgICAqLworI2RlZmluZSBUSU1fR1JPVVBDSDVfTk9ORSAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDBVICAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IE5vIGVmZmVjdCBvZiBPQzVSRUYgb24gT0MxUkVGQywgT0MyUkVGQyBhbmQgT0MzUkVGQyAqLworI2RlZmluZSBUSU1fR1JPVVBDSDVfT0MxUkVGQyAgICAgICAgICAgICAgIFRJTV9DQ1I1X0dDNUMxICAgICAgICAgICAgICAgICAgICAgICAvKiE8IE9DMVJFRkMgaXMgdGhlIGxvZ2ljYWwgQU5EIG9mIE9DMVJFRkMgYW5kIE9DNVJFRiAgICAqLworI2RlZmluZSBUSU1fR1JPVVBDSDVfT0MyUkVGQyAgICAgICAgICAgICAgIFRJTV9DQ1I1X0dDNUMyICAgICAgICAgICAgICAgICAgICAgICAvKiE8IE9DMlJFRkMgaXMgdGhlIGxvZ2ljYWwgQU5EIG9mIE9DMlJFRkMgYW5kIE9DNVJFRiAgICAqLworI2RlZmluZSBUSU1fR1JPVVBDSDVfT0MzUkVGQyAgICAgICAgICAgICAgIFRJTV9DQ1I1X0dDNUMzICAgICAgICAgICAgICAgICAgICAgICAvKiE8IE9DM1JFRkMgaXMgdGhlIGxvZ2ljYWwgQU5EIG9mIE9DM1JFRkMgYW5kIE9DNVJFRiAgICAqLwogLyoqCiAgICogQH0KICAgKi8KQEAgLTEyMDMsNyArMTIwMiw4IEBACiAgICogQGJyaWVmICBEaXNhYmxlIHRoZSBUSU0gbWFpbiBPdXRwdXQuCiAgICogQHBhcmFtICBfX0hBTkRMRV9fIFRJTSBoYW5kbGUKICAgKiBAcmV0dmFsIE5vbmUKLSAgKiBAbm90ZSBUaGUgTWFpbiBPdXRwdXQgRW5hYmxlIG9mIGEgdGltZXIgaW5zdGFuY2UgaXMgZGlzYWJsZWQgb25seSBpZiBhbGwgdGhlIENDeCBhbmQgQ0N4TiBjaGFubmVscyBoYXZlIGJlZW4gZGlzYWJsZWQKKyAgKiBAbm90ZSBUaGUgTWFpbiBPdXRwdXQgRW5hYmxlIG9mIGEgdGltZXIgaW5zdGFuY2UgaXMgZGlzYWJsZWQgb25seSBpZiBhbGwgdGhlIENDeCBhbmQgQ0N4TiBjaGFubmVscyBoYXZlIGJlZW4KKyAgKiAgICAgICBkaXNhYmxlZAogICAqLwogI2RlZmluZSBfX0hBTF9USU1fTU9FX0RJU0FCTEUoX19IQU5ETEVfXykgXAogICBkbyB7IFwKQEAgLTEzNzAsNyArMTM3MCw4IEBACiAKIC8qKgogICAqIEBicmllZiAgRm9yY2UgYSBjb250aW51b3VzIGNvcHkgb2YgdGhlIHVwZGF0ZSBpbnRlcnJ1cHQgZmxhZyAoVUlGKSBpbnRvIHRoZSB0aW1lciBjb3VudGVyIHJlZ2lzdGVyIChiaXQgMzEpLgotICAqIEBub3RlIFRoaXMgYWxsb3dzIGJvdGggdGhlIGNvdW50ZXIgdmFsdWUgYW5kIGEgcG90ZW50aWFsIHJvbGwtb3ZlciBjb25kaXRpb24gc2lnbmFsbGVkIGJ5IHRoZSBVSUZDUFkgZmxhZyB0byBiZSByZWFkIGluIGFuIGF0b21pYyB3YXkuCisgICogQG5vdGUgVGhpcyBhbGxvd3MgYm90aCB0aGUgY291bnRlciB2YWx1ZSBhbmQgYSBwb3RlbnRpYWwgcm9sbC1vdmVyIGNvbmRpdGlvbiBzaWduYWxsZWQgYnkgdGhlIFVJRkNQWSBmbGFnIHRvIGJlIHJlYWQKKyAgKiAgICAgICBpbiBhbiBhdG9taWMgd2F5LgogICAqIEBwYXJhbSAgX19IQU5ETEVfXyBUSU0gaGFuZGxlLgogICAqIEByZXR2YWwgTm9uZQogbW9kZS4KQEAgLTEzOTcsOCArMTM5OCw4IEBACiAgICogQGJyaWVmICBJbmRpY2F0ZXMgd2hldGhlciBvciBub3QgdGhlIFRJTSBDb3VudGVyIGlzIHVzZWQgYXMgZG93bmNvdW50ZXIuCiAgICogQHBhcmFtICBfX0hBTkRMRV9fIFRJTSBoYW5kbGUuCiAgICogQHJldHZhbCBGYWxzZSAoQ291bnRlciB1c2VkIGFzIHVwY291bnRlcikgb3IgVHJ1ZSAoQ291bnRlciB1c2VkIGFzIGRvd25jb3VudGVyKQotICAqIEBub3RlIFRoaXMgbWFjcm8gaXMgcGFydGljdWxhcmx5IHVzZWZ1bCB0byBnZXQgdGhlIGNvdW50aW5nIG1vZGUgd2hlbiB0aGUgdGltZXIgb3BlcmF0ZXMgaW4gQ2VudGVyLWFsaWduZWQgbW9kZSBvciBFbmNvZGVyCi1tb2RlLgorICAqIEBub3RlIFRoaXMgbWFjcm8gaXMgcGFydGljdWxhcmx5IHVzZWZ1bCB0byBnZXQgdGhlIGNvdW50aW5nIG1vZGUgd2hlbiB0aGUgdGltZXIgb3BlcmF0ZXMgaW4gQ2VudGVyLWFsaWduZWQgbW9kZQorICAqICAgICAgIG9yIEVuY29kZXIgbW9kZS4KICAgKi8KICNkZWZpbmUgX19IQUxfVElNX0lTX1RJTV9DT1VOVElOR19ET1dOKF9fSEFORExFX18pICAgICgoKF9fSEFORExFX18pLT5JbnN0YW5jZS0+Q1IxICYoVElNX0NSMV9ESVIpKSA9PSAoVElNX0NSMV9ESVIpKQogCkBAIC0xNDEyLDcgKzE0MTMsOCBAQAogCiAvKioKICAgKiBAYnJpZWYgIFNldCB0aGUgVElNIENvdW50ZXIgUmVnaXN0ZXIgdmFsdWUgb24gcnVudGltZS4KLSAgKiBOb3RlIFBsZWFzZSBjaGVjayBpZiB0aGUgYml0IDMxIG9mIENOVCByZWdpc3RlciBpcyB1c2VkIGFzIFVJRiBjb3B5IG9yIG5vdCwgdGhpcyBtYXkgYWZmZWN0IHRoZSBjb3VudGVyIHJhbmdlIGluIGNhc2Ugb2YgMzIgYml0cyBjb3VudGVyIFRJTSBpbnN0YW5jZS4KKyAgKiBOb3RlIFBsZWFzZSBjaGVjayBpZiB0aGUgYml0IDMxIG9mIENOVCByZWdpc3RlciBpcyB1c2VkIGFzIFVJRiBjb3B5IG9yIG5vdCwgdGhpcyBtYXkgYWZmZWN0IHRoZSBjb3VudGVyIHJhbmdlIGluCisgICogICAgICBjYXNlIG9mIDMyIGJpdHMgY291bnRlciBUSU0gaW5zdGFuY2UuCiAgICogICAgICBCaXQgMzEgb2YgQ05UIGNhbiBiZSBlbmFibGVkL2Rpc2FibGVkIHVzaW5nIF9fSEFMX1RJTV9VSUZSRU1BUF9FTkFCTEUoKS9fX0hBTF9USU1fVUlGUkVNQVBfRElTQUJMRSgpIG1hY3Jvcy4KICAgKiBAcGFyYW0gIF9fSEFORExFX18gVElNIGhhbmRsZS4KICAgKiBAcGFyYW0gIF9fQ09VTlRFUl9fIHNwZWNpZmllcyB0aGUgQ291bnRlciByZWdpc3RlciBuZXcgdmFsdWUuCkBAIC0xNDc0LDcgKzE0NzYsOCBAQAogI2RlZmluZSBfX0hBTF9USU1fR0VUX0NMT0NLRElWSVNJT04oX19IQU5ETEVfXykgICgoX19IQU5ETEVfXyktPkluc3RhbmNlLT5DUjEgJiBUSU1fQ1IxX0NLRCkKIAogLyoqCi0gICogQGJyaWVmICBTZXQgdGhlIFRJTSBJbnB1dCBDYXB0dXJlIHByZXNjYWxlciBvbiBydW50aW1lIHdpdGhvdXQgY2FsbGluZyBhbm90aGVyIHRpbWUgSEFMX1RJTV9JQ19Db25maWdDaGFubmVsKCkgZnVuY3Rpb24uCisgICogQGJyaWVmICBTZXQgdGhlIFRJTSBJbnB1dCBDYXB0dXJlIHByZXNjYWxlciBvbiBydW50aW1lIHdpdGhvdXQgY2FsbGluZyBhbm90aGVyIHRpbWUgSEFMX1RJTV9JQ19Db25maWdDaGFubmVsKCkKKyAgKiAgICAgICAgIGZ1bmN0aW9uLgogICAqIEBwYXJhbSAgX19IQU5ETEVfXyBUSU0gaGFuZGxlLgogICAqIEBwYXJhbSAgX19DSEFOTkVMX18gVElNIENoYW5uZWxzIHRvIGJlIGNvbmZpZ3VyZWQuCiAgICogICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoKQEAgLTIwNjcsMTMgKzIwNzAsMTkgQEAKICAgICgoX19IQU5ETEVfXyktPkNoYW5uZWxTdGF0ZVs1XSA9IChfX0NIQU5ORUxfU1RBVEVfXykpKQogCiAjZGVmaW5lIFRJTV9DSEFOTkVMX1NUQVRFX1NFVF9BTEwoX19IQU5ETEVfXywgIF9fQ0hBTk5FTF9TVEFURV9fKSBkbyB7IFwKLSAgKF9fSEFORExFX18pLT5DaGFubmVsU3RhdGVbMF0gID0gKF9fQ0hBTk5FTF9TVEFURV9fKTsgIFwKLSAgKF9fSEFORExFX18pLT5DaGFubmVsU3RhdGVbMV0gID0gKF9fQ0hBTk5FTF9TVEFURV9fKTsgIFwKLSAgKF9fSEFORExFX18pLT5DaGFubmVsU3RhdGVbMl0gID0gKF9fQ0hBTk5FTF9TVEFURV9fKTsgIFwKLSAgKF9fSEFORExFX18pLT5DaGFubmVsU3RhdGVbM10gID0gKF9fQ0hBTk5FTF9TVEFURV9fKTsgIFwKLSAgKF9fSEFORExFX18pLT5DaGFubmVsU3RhdGVbNF0gID0gKF9fQ0hBTk5FTF9TVEFURV9fKTsgIFwKLSAgKF9fSEFORExFX18pLT5DaGFubmVsU3RhdGVbNV0gID0gKF9fQ0hBTk5FTF9TVEFURV9fKTsgIFwKLSB9IHdoaWxlKDApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX0hBTkRMRV9fKS0+Q2hhbm5lbFN0YXRlWzBdICA9IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fQ0hBTk5FTF9TVEFURV9fKTsgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fSEFORExFX18pLT5DaGFubmVsU3RhdGVbMV0gID0gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19DSEFOTkVMX1NUQVRFX18pOyAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19IQU5ETEVfXyktPkNoYW5uZWxTdGF0ZVsyXSAgPSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX0NIQU5ORUxfU1RBVEVfXyk7ICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX0hBTkRMRV9fKS0+Q2hhbm5lbFN0YXRlWzNdICA9IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fQ0hBTk5FTF9TVEFURV9fKTsgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fSEFORExFX18pLT5DaGFubmVsU3RhdGVbNF0gID0gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19DSEFOTkVMX1NUQVRFX18pOyAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19IQU5ETEVfXyktPkNoYW5uZWxTdGF0ZVs1XSAgPSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX0NIQU5ORUxfU1RBVEVfXyk7ICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IHdoaWxlKDApCiAKICNkZWZpbmUgVElNX0NIQU5ORUxfTl9TVEFURV9HRVQoX19IQU5ETEVfXywgX19DSEFOTkVMX18pXAogICAoKChfX0NIQU5ORUxfXykgPT0gVElNX0NIQU5ORUxfMSkgPyAoX19IQU5ETEVfXyktPkNoYW5uZWxOU3RhdGVbMF0gOlwKQEAgLTIwODgsMTEgKzIwOTcsMTUgQEAKICAgICgoX19IQU5ETEVfXyktPkNoYW5uZWxOU3RhdGVbM10gPSAoX19DSEFOTkVMX1NUQVRFX18pKSkKIAogI2RlZmluZSBUSU1fQ0hBTk5FTF9OX1NUQVRFX1NFVF9BTEwoX19IQU5ETEVfXywgIF9fQ0hBTk5FTF9TVEFURV9fKSBkbyB7IFwKLSAgKF9fSEFORExFX18pLT5DaGFubmVsTlN0YXRlWzBdID0gKF9fQ0hBTk5FTF9TVEFURV9fKTsgIFwKLSAgKF9fSEFORExFX18pLT5DaGFubmVsTlN0YXRlWzFdID0gKF9fQ0hBTk5FTF9TVEFURV9fKTsgIFwKLSAgKF9fSEFORExFX18pLT5DaGFubmVsTlN0YXRlWzJdID0gKF9fQ0hBTk5FTF9TVEFURV9fKTsgIFwKLSAgKF9fSEFORExFX18pLT5DaGFubmVsTlN0YXRlWzNdID0gKF9fQ0hBTk5FTF9TVEFURV9fKTsgIFwKLSB9IHdoaWxlKDApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fSEFORExFX18pLT5DaGFubmVsTlN0YXRlWzBdID0gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX0NIQU5ORUxfU1RBVEVfXyk7ICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fSEFORExFX18pLT5DaGFubmVsTlN0YXRlWzFdID0gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX0NIQU5ORUxfU1RBVEVfXyk7ICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fSEFORExFX18pLT5DaGFubmVsTlN0YXRlWzJdID0gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX0NIQU5ORUxfU1RBVEVfXyk7ICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fSEFORExFX18pLT5DaGFubmVsTlN0YXRlWzNdID0gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX0NIQU5ORUxfU1RBVEVfXyk7ICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gd2hpbGUoMCkKIAogLyoqCiAgICogQH0KQEAgLTIyNjYsMTQgKzIyNzksMTQgQEAKIEhBTF9TdGF0dXNUeXBlRGVmIEhBTF9USU1fRE1BQnVyc3RfV3JpdGVTdGFydChUSU1fSGFuZGxlVHlwZURlZiAqaHRpbSwgdWludDMyX3QgQnVyc3RCYXNlQWRkcmVzcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBCdXJzdFJlcXVlc3RTcmMsIHVpbnQzMl90ICAqQnVyc3RCdWZmZXIsIHVpbnQzMl90ICBCdXJzdExlbmd0aCk7CiBIQUxfU3RhdHVzVHlwZURlZiBIQUxfVElNX0RNQUJ1cnN0X011bHRpV3JpdGVTdGFydChUSU1fSGFuZGxlVHlwZURlZiAqaHRpbSwgdWludDMyX3QgQnVyc3RCYXNlQWRkcmVzcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IEJ1cnN0UmVxdWVzdFNyYywgdWludDMyX3QgKkJ1cnN0QnVmZmVyLCB1aW50MzJfdCBCdXJzdExlbmd0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IERhdGFMZW5ndGgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgQnVyc3RSZXF1ZXN0U3JjLCB1aW50MzJfdCAqQnVyc3RCdWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBCdXJzdExlbmd0aCwgIHVpbnQzMl90IERhdGFMZW5ndGgpOwogSEFMX1N0YXR1c1R5cGVEZWYgSEFMX1RJTV9ETUFCdXJzdF9Xcml0ZVN0b3AoVElNX0hhbmRsZVR5cGVEZWYgKmh0aW0sIHVpbnQzMl90IEJ1cnN0UmVxdWVzdFNyYyk7CiBIQUxfU3RhdHVzVHlwZURlZiBIQUxfVElNX0RNQUJ1cnN0X1JlYWRTdGFydChUSU1fSGFuZGxlVHlwZURlZiAqaHRpbSwgdWludDMyX3QgQnVyc3RCYXNlQWRkcmVzcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IEJ1cnN0UmVxdWVzdFNyYywgdWludDMyX3QgICpCdXJzdEJ1ZmZlciwgdWludDMyX3QgIEJ1cnN0TGVuZ3RoKTsKIEhBTF9TdGF0dXNUeXBlRGVmIEhBTF9USU1fRE1BQnVyc3RfTXVsdGlSZWFkU3RhcnQoVElNX0hhbmRsZVR5cGVEZWYgKmh0aW0sIHVpbnQzMl90IEJ1cnN0QmFzZUFkZHJlc3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IEJ1cnN0UmVxdWVzdFNyYywgdWludDMyX3QgICpCdXJzdEJ1ZmZlciwgdWludDMyX3QgIEJ1cnN0TGVuZ3RoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCAgRGF0YUxlbmd0aCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IEJ1cnN0UmVxdWVzdFNyYywgdWludDMyX3QgICpCdXJzdEJ1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgIEJ1cnN0TGVuZ3RoLCB1aW50MzJfdCAgRGF0YUxlbmd0aCk7CiBIQUxfU3RhdHVzVHlwZURlZiBIQUxfVElNX0RNQUJ1cnN0X1JlYWRTdG9wKFRJTV9IYW5kbGVUeXBlRGVmICpodGltLCB1aW50MzJfdCBCdXJzdFJlcXVlc3RTcmMpOwogSEFMX1N0YXR1c1R5cGVEZWYgSEFMX1RJTV9HZW5lcmF0ZUV2ZW50KFRJTV9IYW5kbGVUeXBlRGVmICpodGltLCB1aW50MzJfdCBFdmVudFNvdXJjZSk7CiB1aW50MzJfdCBIQUxfVElNX1JlYWRDYXB0dXJlZFZhbHVlKFRJTV9IYW5kbGVUeXBlRGVmICpodGltLCB1aW50MzJfdCBDaGFubmVsKTsKQEAgLTIzNzEsNSArMjM4NCwzIEBACiAjZW5kaWYKIAogI2VuZGlmIC8qIFNUTTMyRjd4eF9IQUxfVElNX0ggKi8KLQotLyoqKioqKioqKioqKioqKioqKioqKioqKiAoQykgQ09QWVJJR0hUIFNUTWljcm9lbGVjdHJvbmljcyAqKioqKkVORCBPRiBGSUxFKioqKi8KZGlmZiAtLWdpdCBhL0luYy9zdG0zMmY3eHhfaGFsX3RpbV9leC5oIGIvSW5jL3N0bTMyZjd4eF9oYWxfdGltX2V4LmgKaW5kZXggZjA5NDRhYi4uMjA3OTkyMSAxMDA2NDQKLS0tIGEvSW5jL3N0bTMyZjd4eF9oYWxfdGltX2V4LmgKKysrIGIvSW5jL3N0bTMyZjd4eF9oYWxfdGltX2V4LmgKQEAgLTYsMTMgKzYsMTIgQEAKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgICogQGF0dGVudGlvbgogICAqCi0gICogPGgyPjxjZW50ZXI+JmNvcHk7IENvcHlyaWdodCAoYykgMjAxNyBTVE1pY3JvZWxlY3Ryb25pY3MuCi0gICogQWxsIHJpZ2h0cyByZXNlcnZlZC48L2NlbnRlcj48L2gyPgorICAqIENvcHlyaWdodCAoYykgMjAxNyBTVE1pY3JvZWxlY3Ryb25pY3MuCisgICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgKgotICAqIFRoaXMgc29mdHdhcmUgY29tcG9uZW50IGlzIGxpY2Vuc2VkIGJ5IFNUIHVuZGVyIEJTRCAzLUNsYXVzZSBsaWNlbnNlLAotICAqIHRoZSAiTGljZW5zZSI7IFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUKLSAgKiBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQ6Ci0gICogICAgICAgICAgICAgICAgICAgICAgICBvcGVuc291cmNlLm9yZy9saWNlbnNlcy9CU0QtMy1DbGF1c2UKKyAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIHVuZGVyIHRlcm1zIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUKKyAgKiBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb2Z0d2FyZSBjb21wb25lbnQuCisgICogSWYgbm8gTElDRU5TRSBmaWxlIGNvbWVzIHdpdGggdGhpcyBzb2Z0d2FyZSwgaXQgaXMgcHJvdmlkZWQgQVMtSVMuCiAgICoKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgICovCkBAIC03Myw4ICs3Miw3IEBACiAgIHVpbnQzMl90IFBvbGFyaXR5OyAgICAgICAvKiE8IFNwZWNpZmllcyB0aGUgYnJlYWsgaW5wdXQgc291cmNlIHBvbGFyaXR5LgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYSB2YWx1ZSBvZiBAcmVmIFRJTUV4X0JyZWFrX0lucHV0X1NvdXJjZV9Qb2xhcml0eQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOb3QgcmVsZXZhbnQgd2hlbiBhbmFsb2cgd2F0Y2hkb2cgb3V0cHV0IG9mIHRoZSBERlNETTEgdXNlZCBhcyBicmVhayBpbnB1dCBzb3VyY2UgKi8KLX0KLVRJTUV4X0JyZWFrSW5wdXRDb25maWdUeXBlRGVmOworfSBUSU1FeF9CcmVha0lucHV0Q29uZmlnVHlwZURlZjsKIAogI2VuZGlmIC8qIFRJTV9CUkVBS19JTlBVVF9TVVBQT1JUICovCiAvKioKQEAgLTExMCw4ICsxMDgsOCBAQAogLyoqIEBkZWZncm91cCBUSU1FeF9CcmVha19JbnB1dCBUSU0gRXh0ZW5kZWQgQnJlYWsgaW5wdXQKICAgKiBAewogICAqLwotI2RlZmluZSBUSU1fQlJFQUtJTlBVVF9CUksgICAgIDB4MDAwMDAwMDFVICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAhPCBUaW1lciBicmVhayBpbnB1dCAgKi8KLSNkZWZpbmUgVElNX0JSRUFLSU5QVVRfQlJLMiAgICAweDAwMDAwMDAyVSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogITwgVGltZXIgYnJlYWsyIGlucHV0ICovCisjZGVmaW5lIFRJTV9CUkVBS0lOUFVUX0JSSyAgICAgMHgwMDAwMDAwMVUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgVGltZXIgYnJlYWsgaW5wdXQgICovCisjZGVmaW5lIFRJTV9CUkVBS0lOUFVUX0JSSzIgICAgMHgwMDAwMDAwMlUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgVGltZXIgYnJlYWsyIGlucHV0ICovCiAvKioKICAgKiBAfQogICAqLwpAQCAtMTI4LDggKzEyNiw4IEBACiAvKiogQGRlZmdyb3VwIFRJTUV4X0JyZWFrX0lucHV0X1NvdXJjZV9FbmFibGUgVElNIEV4dGVuZGVkIEJyZWFrIGlucHV0IHNvdXJjZSBlbmFibGluZwogICAqIEB7CiAgICovCi0jZGVmaW5lIFRJTV9CUkVBS0lOUFVUU09VUkNFX0RJU0FCTEUgICAgIDB4MDAwMDAwMDBVICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICE8IEJyZWFrIGlucHV0IHNvdXJjZSBpcyBkaXNhYmxlZCAqLwotI2RlZmluZSBUSU1fQlJFQUtJTlBVVFNPVVJDRV9FTkFCTEUgICAgICAweDAwMDAwMDAxVSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAhPCBCcmVhayBpbnB1dCBzb3VyY2UgaXMgZW5hYmxlZCAqLworI2RlZmluZSBUSU1fQlJFQUtJTlBVVFNPVVJDRV9ESVNBQkxFICAgICAweDAwMDAwMDAwVSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IEJyZWFrIGlucHV0IHNvdXJjZSBpcyBkaXNhYmxlZCAqLworI2RlZmluZSBUSU1fQlJFQUtJTlBVVFNPVVJDRV9FTkFCTEUgICAgICAweDAwMDAwMDAxVSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IEJyZWFrIGlucHV0IHNvdXJjZSBpcyBlbmFibGVkICovCiAvKioKICAgKiBAfQogICAqLwpAQCAtMTM3LDggKzEzNSw4IEBACiAvKiogQGRlZmdyb3VwIFRJTUV4X0JyZWFrX0lucHV0X1NvdXJjZV9Qb2xhcml0eSBUSU0gRXh0ZW5kZWQgQnJlYWsgaW5wdXQgcG9sYXJpdHkKICAgKiBAewogICAqLwotI2RlZmluZSBUSU1fQlJFQUtJTlBVVFNPVVJDRV9QT0xBUklUWV9MT1cgICAgIDB4MDAwMDAwMDFVICAgICAgICAgICAgICAgICAgICAgICAvKiAhPCBCcmVhayBpbnB1dCBzb3VyY2UgaXMgYWN0aXZlIGxvdyAqLwotI2RlZmluZSBUSU1fQlJFQUtJTlBVVFNPVVJDRV9QT0xBUklUWV9ISUdIICAgIDB4MDAwMDAwMDBVICAgICAgICAgICAgICAgICAgICAgICAvKiAhPCBCcmVhayBpbnB1dCBzb3VyY2UgaXMgYWN0aXZlX2hpZ2ggKi8KKyNkZWZpbmUgVElNX0JSRUFLSU5QVVRTT1VSQ0VfUE9MQVJJVFlfTE9XICAgICAweDAwMDAwMDAxVSAgICAgICAgICAgICAgICAgICAgICAgLyohPCBCcmVhayBpbnB1dCBzb3VyY2UgaXMgYWN0aXZlIGxvdyAqLworI2RlZmluZSBUSU1fQlJFQUtJTlBVVFNPVVJDRV9QT0xBUklUWV9ISUdIICAgIDB4MDAwMDAwMDBVICAgICAgICAgICAgICAgICAgICAgICAvKiE8IEJyZWFrIGlucHV0IHNvdXJjZSBpcyBhY3RpdmVfaGlnaCAqLwogLyoqCiAgICogQH0KICAgKi8KQEAgLTMzNCw3ICszMzIsNyBAQAogLyogRW5kIG9mIGV4cG9ydGVkIGZ1bmN0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KIAogLyogUHJpdmF0ZSBmdW5jdGlvbnMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLS8qKiBAYWRkdG9ncm91cCBUSU1FeF9Qcml2YXRlX0Z1bmN0aW9ucyBUSU1FeCBQcml2YXRlIEZ1bmN0aW9ucworLyoqIEBhZGR0b2dyb3VwIFRJTUV4X1ByaXZhdGVfRnVuY3Rpb25zIFRJTSBFeHRlbmRlZCBQcml2YXRlIEZ1bmN0aW9ucwogICAqIEB7CiAgICovCiB2b2lkIFRJTUV4X0RNQUNvbW11dGF0aW9uQ3BsdChETUFfSGFuZGxlVHlwZURlZiAqaGRtYSk7CkBAIC0zNTgsNSArMzU2LDMgQEAKIAogCiAjZW5kaWYgLyogU1RNMzJGN3h4X0hBTF9USU1fRVhfSCAqLwotCi0vKioqKioqKioqKioqKioqKioqKioqKioqIChDKSBDT1BZUklHSFQgU1RNaWNyb2VsZWN0cm9uaWNzICoqKioqRU5EIE9GIEZJTEUqKioqLwpkaWZmIC0tZ2l0IGEvSW5jL3N0bTMyZjd4eF9oYWxfdWFydC5oIGIvSW5jL3N0bTMyZjd4eF9oYWxfdWFydC5oCmluZGV4IDYzNDFkMzIuLjY1MGVkZDQgMTAwNjQ0Ci0tLSBhL0luYy9zdG0zMmY3eHhfaGFsX3VhcnQuaAorKysgYi9JbmMvc3RtMzJmN3h4X2hhbF91YXJ0LmgKQEAgLTYsMTMgKzYsMTIgQEAKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgICogQGF0dGVudGlvbgogICAqCi0gICogPGgyPjxjZW50ZXI+JmNvcHk7IENvcHlyaWdodCAoYykgMjAxNyBTVE1pY3JvZWxlY3Ryb25pY3MuCi0gICogQWxsIHJpZ2h0cyByZXNlcnZlZC48L2NlbnRlcj48L2gyPgorICAqIENvcHlyaWdodCAoYykgMjAxNyBTVE1pY3JvZWxlY3Ryb25pY3MuCisgICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgKgotICAqIFRoaXMgc29mdHdhcmUgY29tcG9uZW50IGlzIGxpY2Vuc2VkIGJ5IFNUIHVuZGVyIEJTRCAzLUNsYXVzZSBsaWNlbnNlLAotICAqIHRoZSAiTGljZW5zZSI7IFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUKLSAgKiBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQ6Ci0gICogICAgICAgICAgICAgICAgICAgICAgICBvcGVuc291cmNlLm9yZy9saWNlbnNlcy9CU0QtMy1DbGF1c2UKKyAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIHVuZGVyIHRlcm1zIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUKKyAgKiBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb2Z0d2FyZSBjb21wb25lbnQuCisgICogSWYgbm8gTElDRU5TRSBmaWxlIGNvbWVzIHdpdGggdGhpcyBzb2Z0d2FyZSwgaXQgaXMgcHJvdmlkZWQgQVMtSVMuCiAgICoKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgICovCkBAIC0yMDYsNyArMjA1LDcgQEAKIAogICBVQVJUX0FkdkZlYXR1cmVJbml0VHlwZURlZiBBZHZhbmNlZEluaXQ7ICAgICAgICAgICAvKiE8IFVBUlQgQWR2YW5jZWQgRmVhdHVyZXMgaW5pdGlhbGl6YXRpb24gcGFyYW1ldGVycyAqLwogCi0gIHVpbnQ4X3QgICAgICAgICAgICAgICAgICAqcFR4QnVmZlB0cjsgICAgICAgICAgICAgIC8qITwgUG9pbnRlciB0byBVQVJUIFR4IHRyYW5zZmVyIEJ1ZmZlciAqLworICBjb25zdCB1aW50OF90ICAgICAgICAgICAgKnBUeEJ1ZmZQdHI7ICAgICAgICAgICAgICAvKiE8IFBvaW50ZXIgdG8gVUFSVCBUeCB0cmFuc2ZlciBCdWZmZXIgKi8KIAogICB1aW50MTZfdCAgICAgICAgICAgICAgICAgVHhYZmVyU2l6ZTsgICAgICAgICAgICAgICAvKiE8IFVBUlQgVHggVHJhbnNmZXIgc2l6ZSAgICAgICAgICAgICAgKi8KIApAQCAtMTEwOCwxMCArMTEwNywxMCBAQAogICAqIEBwYXJhbSAgX19IQU5ETEVfXyBzcGVjaWZpZXMgdGhlIFVBUlQgSGFuZGxlLgogICAqIEByZXR2YWwgTm9uZQogICAqLwotI2RlZmluZSBfX0hBTF9VQVJUX0hXQ09OVFJPTF9DVFNfRU5BQkxFKF9fSEFORExFX18pICAgICAgICBcCi0gIGRveyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBTRVRfQklUKChfX0hBTkRMRV9fKS0+SW5zdGFuY2UtPkNSMywgVVNBUlRfQ1IzX0NUU0UpOyAgXAotICAgIChfX0hBTkRMRV9fKS0+SW5pdC5Id0Zsb3dDdGwgfD0gVVNBUlRfQ1IzX0NUU0U7ICAgICAgICBcCisjZGVmaW5lIF9fSEFMX1VBUlRfSFdDT05UUk9MX0NUU19FTkFCTEUoX19IQU5ETEVfXykgICAgICAgICAgICAgICBcCisgIGRveyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgQVRPTUlDX1NFVF9CSVQoKF9fSEFORExFX18pLT5JbnN0YW5jZS0+Q1IzLCBVU0FSVF9DUjNfQ1RTRSk7ICBcCisgICAgKF9fSEFORExFX18pLT5Jbml0Lkh3Rmxvd0N0bCB8PSBVU0FSVF9DUjNfQ1RTRTsgICAgICAgICAgICAgICBcCiAgIH0gd2hpbGUoMFUpCiAKIC8qKiBAYnJpZWYgIERpc2FibGUgQ1RTIGZsb3cgY29udHJvbC4KQEAgLTExMjcsMTAgKzExMjYsMTAgQEAKICAgKiBAcGFyYW0gIF9fSEFORExFX18gc3BlY2lmaWVzIHRoZSBVQVJUIEhhbmRsZS4KICAgKiBAcmV0dmFsIE5vbmUKICAgKi8KLSNkZWZpbmUgX19IQUxfVUFSVF9IV0NPTlRST0xfQ1RTX0RJU0FCTEUoX19IQU5ETEVfXykgICAgICAgIFwKLSAgZG97ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBDTEVBUl9CSVQoKF9fSEFORExFX18pLT5JbnN0YW5jZS0+Q1IzLCBVU0FSVF9DUjNfQ1RTRSk7IFwKLSAgICAoX19IQU5ETEVfXyktPkluaXQuSHdGbG93Q3RsICY9IH4oVVNBUlRfQ1IzX0NUU0UpOyAgICAgIFwKKyNkZWZpbmUgX19IQUxfVUFSVF9IV0NPTlRST0xfQ1RTX0RJU0FCTEUoX19IQU5ETEVfXykgICAgICAgICAgICAgICBcCisgIGRveyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIEFUT01JQ19DTEVBUl9CSVQoKF9fSEFORExFX18pLT5JbnN0YW5jZS0+Q1IzLCBVU0FSVF9DUjNfQ1RTRSk7IFwKKyAgICAoX19IQU5ETEVfXyktPkluaXQuSHdGbG93Q3RsICY9IH4oVVNBUlRfQ1IzX0NUU0UpOyAgICAgICAgICAgICBcCiAgIH0gd2hpbGUoMFUpCiAKIC8qKiBAYnJpZWYgIEVuYWJsZSBSVFMgZmxvdyBjb250cm9sLgpAQCAtMTE0NiwxMCArMTE0NSwxMCBAQAogICAqIEBwYXJhbSAgX19IQU5ETEVfXyBzcGVjaWZpZXMgdGhlIFVBUlQgSGFuZGxlLgogICAqIEByZXR2YWwgTm9uZQogICAqLwotI2RlZmluZSBfX0hBTF9VQVJUX0hXQ09OVFJPTF9SVFNfRU5BQkxFKF9fSEFORExFX18pICAgICAgIFwKLSAgZG97ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgU0VUX0JJVCgoX19IQU5ETEVfXyktPkluc3RhbmNlLT5DUjMsIFVTQVJUX0NSM19SVFNFKTsgXAotICAgIChfX0hBTkRMRV9fKS0+SW5pdC5Id0Zsb3dDdGwgfD0gVVNBUlRfQ1IzX1JUU0U7ICAgICAgIFwKKyNkZWZpbmUgX19IQUxfVUFSVF9IV0NPTlRST0xfUlRTX0VOQUJMRShfX0hBTkRMRV9fKSAgICAgICAgICAgICAgXAorICBkb3sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgQVRPTUlDX1NFVF9CSVQoKF9fSEFORExFX18pLT5JbnN0YW5jZS0+Q1IzLCBVU0FSVF9DUjNfUlRTRSk7IFwKKyAgICAoX19IQU5ETEVfXyktPkluaXQuSHdGbG93Q3RsIHw9IFVTQVJUX0NSM19SVFNFOyAgICAgICAgICAgICAgXAogICB9IHdoaWxlKDBVKQogCiAvKiogQGJyaWVmICBEaXNhYmxlIFJUUyBmbG93IGNvbnRyb2wuCkBAIC0xMTY1LDEwICsxMTY0LDEwIEBACiAgICogQHBhcmFtICBfX0hBTkRMRV9fIHNwZWNpZmllcyB0aGUgVUFSVCBIYW5kbGUuCiAgICogQHJldHZhbCBOb25lCiAgICovCi0jZGVmaW5lIF9fSEFMX1VBUlRfSFdDT05UUk9MX1JUU19ESVNBQkxFKF9fSEFORExFX18pICAgICAgIFwKLSAgZG97ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIENMRUFSX0JJVCgoX19IQU5ETEVfXyktPkluc3RhbmNlLT5DUjMsIFVTQVJUX0NSM19SVFNFKTtcCi0gICAgKF9fSEFORExFX18pLT5Jbml0Lkh3Rmxvd0N0bCAmPSB+KFVTQVJUX0NSM19SVFNFKTsgICAgIFwKKyNkZWZpbmUgX19IQUxfVUFSVF9IV0NPTlRST0xfUlRTX0RJU0FCTEUoX19IQU5ETEVfXykgICAgICAgICAgICAgIFwKKyAgZG97ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBBVE9NSUNfQ0xFQVJfQklUKChfX0hBTkRMRV9fKS0+SW5zdGFuY2UtPkNSMywgVVNBUlRfQ1IzX1JUU0UpO1wKKyAgICAoX19IQU5ETEVfXyktPkluaXQuSHdGbG93Q3RsICY9IH4oVVNBUlRfQ1IzX1JUU0UpOyAgICAgICAgICAgIFwKICAgfSB3aGlsZSgwVSkKIC8qKgogICAqIEB9CkBAIC0xNTI4LDExICsxNTI3LDExIEBACiAgICovCiAKIC8qIElPIG9wZXJhdGlvbiBmdW5jdGlvbnMgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1IQUxfU3RhdHVzVHlwZURlZiBIQUxfVUFSVF9UcmFuc21pdChVQVJUX0hhbmRsZVR5cGVEZWYgKmh1YXJ0LCB1aW50OF90ICpwRGF0YSwgdWludDE2X3QgU2l6ZSwgdWludDMyX3QgVGltZW91dCk7CitIQUxfU3RhdHVzVHlwZURlZiBIQUxfVUFSVF9UcmFuc21pdChVQVJUX0hhbmRsZVR5cGVEZWYgKmh1YXJ0LCBjb25zdCB1aW50OF90ICpwRGF0YSwgdWludDE2X3QgU2l6ZSwgdWludDMyX3QgVGltZW91dCk7CiBIQUxfU3RhdHVzVHlwZURlZiBIQUxfVUFSVF9SZWNlaXZlKFVBUlRfSGFuZGxlVHlwZURlZiAqaHVhcnQsIHVpbnQ4X3QgKnBEYXRhLCB1aW50MTZfdCBTaXplLCB1aW50MzJfdCBUaW1lb3V0KTsKLUhBTF9TdGF0dXNUeXBlRGVmIEhBTF9VQVJUX1RyYW5zbWl0X0lUKFVBUlRfSGFuZGxlVHlwZURlZiAqaHVhcnQsIHVpbnQ4X3QgKnBEYXRhLCB1aW50MTZfdCBTaXplKTsKK0hBTF9TdGF0dXNUeXBlRGVmIEhBTF9VQVJUX1RyYW5zbWl0X0lUKFVBUlRfSGFuZGxlVHlwZURlZiAqaHVhcnQsIGNvbnN0IHVpbnQ4X3QgKnBEYXRhLCB1aW50MTZfdCBTaXplKTsKIEhBTF9TdGF0dXNUeXBlRGVmIEhBTF9VQVJUX1JlY2VpdmVfSVQoVUFSVF9IYW5kbGVUeXBlRGVmICpodWFydCwgdWludDhfdCAqcERhdGEsIHVpbnQxNl90IFNpemUpOwotSEFMX1N0YXR1c1R5cGVEZWYgSEFMX1VBUlRfVHJhbnNtaXRfRE1BKFVBUlRfSGFuZGxlVHlwZURlZiAqaHVhcnQsIHVpbnQ4X3QgKnBEYXRhLCB1aW50MTZfdCBTaXplKTsKK0hBTF9TdGF0dXNUeXBlRGVmIEhBTF9VQVJUX1RyYW5zbWl0X0RNQShVQVJUX0hhbmRsZVR5cGVEZWYgKmh1YXJ0LCBjb25zdCB1aW50OF90ICpwRGF0YSwgdWludDE2X3QgU2l6ZSk7CiBIQUxfU3RhdHVzVHlwZURlZiBIQUxfVUFSVF9SZWNlaXZlX0RNQShVQVJUX0hhbmRsZVR5cGVEZWYgKmh1YXJ0LCB1aW50OF90ICpwRGF0YSwgdWludDE2X3QgU2l6ZSk7CiBIQUxfU3RhdHVzVHlwZURlZiBIQUxfVUFSVF9ETUFQYXVzZShVQVJUX0hhbmRsZVR5cGVEZWYgKmh1YXJ0KTsKIEhBTF9TdGF0dXNUeXBlRGVmIEhBTF9VQVJUX0RNQVJlc3VtZShVQVJUX0hhbmRsZVR5cGVEZWYgKmh1YXJ0KTsKQEAgLTE2MTYsNiArMTYxNSw3IEBACiAgICogQH0KICAgKi8KIAorLyogUHJpdmF0ZSB2YXJpYWJsZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogLyoqCiAgICogQH0KICAgKi8KQEAgLTE2MzAsNCArMTYzMCwzIEBACiAKICNlbmRpZiAvKiBTVE0zMkY3eHhfSEFMX1VBUlRfSCAqLwogCi0vKioqKioqKioqKioqKioqKioqKioqKioqIChDKSBDT1BZUklHSFQgU1RNaWNyb2VsZWN0cm9uaWNzICoqKioqRU5EIE9GIEZJTEUqKioqLwpkaWZmIC0tZ2l0IGEvSW5jL3N0bTMyZjd4eF9oYWxfdWFydF9leC5oIGIvSW5jL3N0bTMyZjd4eF9oYWxfdWFydF9leC5oCmluZGV4IDZlNmIwOTAuLmU4MzFlNmIgMTAwNjQ0Ci0tLSBhL0luYy9zdG0zMmY3eHhfaGFsX3VhcnRfZXguaAorKysgYi9JbmMvc3RtMzJmN3h4X2hhbF91YXJ0X2V4LmgKQEAgLTYsMTMgKzYsMTIgQEAKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgICogQGF0dGVudGlvbgogICAqCi0gICogPGgyPjxjZW50ZXI+JmNvcHk7IENvcHlyaWdodCAoYykgMjAxNyBTVE1pY3JvZWxlY3Ryb25pY3MuCi0gICogQWxsIHJpZ2h0cyByZXNlcnZlZC48L2NlbnRlcj48L2gyPgorICAqIENvcHlyaWdodCAoYykgMjAxNyBTVE1pY3JvZWxlY3Ryb25pY3MuCisgICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgKgotICAqIFRoaXMgc29mdHdhcmUgY29tcG9uZW50IGlzIGxpY2Vuc2VkIGJ5IFNUIHVuZGVyIEJTRCAzLUNsYXVzZSBsaWNlbnNlLAotICAqIHRoZSAiTGljZW5zZSI7IFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUKLSAgKiBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQ6Ci0gICogICAgICAgICAgICAgICAgICAgICAgICBvcGVuc291cmNlLm9yZy9saWNlbnNlcy9CU0QtMy1DbGF1c2UKKyAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIHVuZGVyIHRlcm1zIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUKKyAgKiBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb2Z0d2FyZSBjb21wb25lbnQuCisgICogSWYgbm8gTElDRU5TRSBmaWxlIGNvbWVzIHdpdGggdGhpcyBzb2Z0d2FyZSwgaXQgaXMgcHJvdmlkZWQgQVMtSVMuCiAgICoKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgICovCkBAIC00MjcsNCArNDI2LDMgQEAKIAogI2VuZGlmIC8qIFNUTTMyRjd4eF9IQUxfVUFSVF9FWF9IICovCiAKLS8qKioqKioqKioqKioqKioqKioqKioqKiogKEMpIENPUFlSSUdIVCBTVE1pY3JvZWxlY3Ryb25pY3MgKioqKipFTkQgT0YgRklMRSoqKiovCmRpZmYgLS1naXQgYS9JbmMvc3RtMzJmN3h4X2hhbF91c2FydC5oIGIvSW5jL3N0bTMyZjd4eF9oYWxfdXNhcnQuaAppbmRleCA5ZTkwZmVlLi43YWY1YzUyIDEwMDY0NAotLS0gYS9JbmMvc3RtMzJmN3h4X2hhbF91c2FydC5oCisrKyBiL0luYy9zdG0zMmY3eHhfaGFsX3VzYXJ0LmgKQEAgLTYsMTMgKzYsMTIgQEAKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgICogQGF0dGVudGlvbgogICAqCi0gICogPGgyPjxjZW50ZXI+JmNvcHk7IENvcHlyaWdodCAoYykgMjAxNyBTVE1pY3JvZWxlY3Ryb25pY3MuCi0gICogQWxsIHJpZ2h0cyByZXNlcnZlZC48L2NlbnRlcj48L2gyPgorICAqIENvcHlyaWdodCAoYykgMjAxNyBTVE1pY3JvZWxlY3Ryb25pY3MuCisgICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgKgotICAqIFRoaXMgc29mdHdhcmUgY29tcG9uZW50IGlzIGxpY2Vuc2VkIGJ5IFNUIHVuZGVyIEJTRCAzLUNsYXVzZSBsaWNlbnNlLAotICAqIHRoZSAiTGljZW5zZSI7IFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUKLSAgKiBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQ6Ci0gICogICAgICAgICAgICAgICAgICAgICAgICBvcGVuc291cmNlLm9yZy9saWNlbnNlcy9CU0QtMy1DbGF1c2UKKyAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIHVuZGVyIHRlcm1zIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUKKyAgKiBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb2Z0d2FyZSBjb21wb25lbnQuCisgICogSWYgbm8gTElDRU5TRSBmaWxlIGNvbWVzIHdpdGggdGhpcyBzb2Z0d2FyZSwgaXQgaXMgcHJvdmlkZWQgQVMtSVMuCiAgICoKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgICovCkBAIC0xMjIsNyArMTIxLDcgQEAKIAogICBVU0FSVF9Jbml0VHlwZURlZiAgICAgICAgICAgICBJbml0OyAgICAgICAgICAgICAgICAgICAgLyohPCBVU0FSVCBjb21tdW5pY2F0aW9uIHBhcmFtZXRlcnMgICAgICAqLwogCi0gIHVpbnQ4X3QgICAgICAgICAgICAgICAgICAgICAgICpwVHhCdWZmUHRyOyAgICAgICAgICAgICAvKiE8IFBvaW50ZXIgdG8gVVNBUlQgVHggdHJhbnNmZXIgQnVmZmVyICovCisgIGNvbnN0IHVpbnQ4X3QgICAgICAgICAgICAgICAgICpwVHhCdWZmUHRyOyAgICAgICAgICAgICAvKiE8IFBvaW50ZXIgdG8gVVNBUlQgVHggdHJhbnNmZXIgQnVmZmVyICovCiAKICAgdWludDE2X3QgICAgICAgICAgICAgICAgICAgICAgVHhYZmVyU2l6ZTsgICAgICAgICAgICAgIC8qITwgVVNBUlQgVHggVHJhbnNmZXIgc2l6ZSAgICAgICAgICAgICAgKi8KIApAQCAtNTEwLDcgKzUwOSw3IEBACiAgICovCiAjZGVmaW5lIF9fSEFMX1VTQVJUX0dFVF9JVChfX0hBTkRMRV9fLCBfX0lOVEVSUlVQVF9fKSAoKCgoX19IQU5ETEVfXyktPkluc3RhbmNlLT5JU1JcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmICgweDAxVSA8PCAoKChfX0lOVEVSUlVQVF9fKSAmIFVTQVJUX0lTUl9NQVNLKT4+XAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVU0FSVF9JU1JfUE9TKSkpICE9IDBVKSA/IFNFVCA6IFJFU0VUKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVTQVJUX0lTUl9QT1MpKSkgIT0gMFUpID8gU0VUIDogUkVTRVQpCiAKIC8qKiBAYnJpZWYgIENoZWNrIHdoZXRoZXIgdGhlIHNwZWNpZmllZCBVU0FSVCBpbnRlcnJ1cHQgc291cmNlIGlzIGVuYWJsZWQgb3Igbm90LgogICAqIEBwYXJhbSAgX19IQU5ETEVfXyBzcGVjaWZpZXMgdGhlIFVTQVJUIEhhbmRsZS4KQEAgLTgwNywxNyArODA2LDE3IEBACiAgICovCiAKIC8qIElPIG9wZXJhdGlvbiBmdW5jdGlvbnMgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1IQUxfU3RhdHVzVHlwZURlZiBIQUxfVVNBUlRfVHJhbnNtaXQoVVNBUlRfSGFuZGxlVHlwZURlZiAqaHVzYXJ0LCB1aW50OF90ICpwVHhEYXRhLCB1aW50MTZfdCBTaXplLCB1aW50MzJfdCBUaW1lb3V0KTsKK0hBTF9TdGF0dXNUeXBlRGVmIEhBTF9VU0FSVF9UcmFuc21pdChVU0FSVF9IYW5kbGVUeXBlRGVmICpodXNhcnQsIGNvbnN0IHVpbnQ4X3QgKnBUeERhdGEsIHVpbnQxNl90IFNpemUsIHVpbnQzMl90IFRpbWVvdXQpOwogSEFMX1N0YXR1c1R5cGVEZWYgSEFMX1VTQVJUX1JlY2VpdmUoVVNBUlRfSGFuZGxlVHlwZURlZiAqaHVzYXJ0LCB1aW50OF90ICpwUnhEYXRhLCB1aW50MTZfdCBTaXplLCB1aW50MzJfdCBUaW1lb3V0KTsKLUhBTF9TdGF0dXNUeXBlRGVmIEhBTF9VU0FSVF9UcmFuc21pdFJlY2VpdmUoVVNBUlRfSGFuZGxlVHlwZURlZiAqaHVzYXJ0LCB1aW50OF90ICpwVHhEYXRhLCB1aW50OF90ICpwUnhEYXRhLAorSEFMX1N0YXR1c1R5cGVEZWYgSEFMX1VTQVJUX1RyYW5zbWl0UmVjZWl2ZShVU0FSVF9IYW5kbGVUeXBlRGVmICpodXNhcnQsIGNvbnN0IHVpbnQ4X3QgKnBUeERhdGEsIHVpbnQ4X3QgKnBSeERhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQxNl90IFNpemUsIHVpbnQzMl90IFRpbWVvdXQpOwotSEFMX1N0YXR1c1R5cGVEZWYgSEFMX1VTQVJUX1RyYW5zbWl0X0lUKFVTQVJUX0hhbmRsZVR5cGVEZWYgKmh1c2FydCwgdWludDhfdCAqcFR4RGF0YSwgdWludDE2X3QgU2l6ZSk7CitIQUxfU3RhdHVzVHlwZURlZiBIQUxfVVNBUlRfVHJhbnNtaXRfSVQoVVNBUlRfSGFuZGxlVHlwZURlZiAqaHVzYXJ0LCBjb25zdCB1aW50OF90ICpwVHhEYXRhLCB1aW50MTZfdCBTaXplKTsKIEhBTF9TdGF0dXNUeXBlRGVmIEhBTF9VU0FSVF9SZWNlaXZlX0lUKFVTQVJUX0hhbmRsZVR5cGVEZWYgKmh1c2FydCwgdWludDhfdCAqcFJ4RGF0YSwgdWludDE2X3QgU2l6ZSk7Ci1IQUxfU3RhdHVzVHlwZURlZiBIQUxfVVNBUlRfVHJhbnNtaXRSZWNlaXZlX0lUKFVTQVJUX0hhbmRsZVR5cGVEZWYgKmh1c2FydCwgdWludDhfdCAqcFR4RGF0YSwgdWludDhfdCAqcFJ4RGF0YSwKK0hBTF9TdGF0dXNUeXBlRGVmIEhBTF9VU0FSVF9UcmFuc21pdFJlY2VpdmVfSVQoVVNBUlRfSGFuZGxlVHlwZURlZiAqaHVzYXJ0LCBjb25zdCB1aW50OF90ICpwVHhEYXRhLCB1aW50OF90ICpwUnhEYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MTZfdCBTaXplKTsKLUhBTF9TdGF0dXNUeXBlRGVmIEhBTF9VU0FSVF9UcmFuc21pdF9ETUEoVVNBUlRfSGFuZGxlVHlwZURlZiAqaHVzYXJ0LCB1aW50OF90ICpwVHhEYXRhLCB1aW50MTZfdCBTaXplKTsKK0hBTF9TdGF0dXNUeXBlRGVmIEhBTF9VU0FSVF9UcmFuc21pdF9ETUEoVVNBUlRfSGFuZGxlVHlwZURlZiAqaHVzYXJ0LCBjb25zdCB1aW50OF90ICpwVHhEYXRhLCB1aW50MTZfdCBTaXplKTsKIEhBTF9TdGF0dXNUeXBlRGVmIEhBTF9VU0FSVF9SZWNlaXZlX0RNQShVU0FSVF9IYW5kbGVUeXBlRGVmICpodXNhcnQsIHVpbnQ4X3QgKnBSeERhdGEsIHVpbnQxNl90IFNpemUpOwotSEFMX1N0YXR1c1R5cGVEZWYgSEFMX1VTQVJUX1RyYW5zbWl0UmVjZWl2ZV9ETUEoVVNBUlRfSGFuZGxlVHlwZURlZiAqaHVzYXJ0LCB1aW50OF90ICpwVHhEYXRhLCB1aW50OF90ICpwUnhEYXRhLAorSEFMX1N0YXR1c1R5cGVEZWYgSEFMX1VTQVJUX1RyYW5zbWl0UmVjZWl2ZV9ETUEoVVNBUlRfSGFuZGxlVHlwZURlZiAqaHVzYXJ0LCBjb25zdCB1aW50OF90ICpwVHhEYXRhLCB1aW50OF90ICpwUnhEYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDE2X3QgU2l6ZSk7CiBIQUxfU3RhdHVzVHlwZURlZiBIQUxfVVNBUlRfRE1BUGF1c2UoVVNBUlRfSGFuZGxlVHlwZURlZiAqaHVzYXJ0KTsKIEhBTF9TdGF0dXNUeXBlRGVmIEhBTF9VU0FSVF9ETUFSZXN1bWUoVVNBUlRfSGFuZGxlVHlwZURlZiAqaHVzYXJ0KTsKQEAgLTg2OSw0ICs4NjgsMyBAQAogCiAjZW5kaWYgLyogU1RNMzJGN3h4X0hBTF9VU0FSVF9IICovCiAKLS8qKioqKioqKioqKioqKioqKioqKioqKiogKEMpIENPUFlSSUdIVCBTVE1pY3JvZWxlY3Ryb25pY3MgKioqKipFTkQgT0YgRklMRSoqKiovCmRpZmYgLS1naXQgYS9JbmMvc3RtMzJmN3h4X2hhbF91c2FydF9leC5oIGIvSW5jL3N0bTMyZjd4eF9oYWxfdXNhcnRfZXguaAppbmRleCBkMWVlYjg1Li44ZGZkYmVlIDEwMDY0NAotLS0gYS9JbmMvc3RtMzJmN3h4X2hhbF91c2FydF9leC5oCisrKyBiL0luYy9zdG0zMmY3eHhfaGFsX3VzYXJ0X2V4LmgKQEAgLTYsMTMgKzYsMTIgQEAKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgICogQGF0dGVudGlvbgogICAqCi0gICogPGgyPjxjZW50ZXI+JmNvcHk7IENvcHlyaWdodCAoYykgMjAxNyBTVE1pY3JvZWxlY3Ryb25pY3MuCi0gICogQWxsIHJpZ2h0cyByZXNlcnZlZC48L2NlbnRlcj48L2gyPgorICAqIENvcHlyaWdodCAoYykgMjAxNyBTVE1pY3JvZWxlY3Ryb25pY3MuCisgICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgKgotICAqIFRoaXMgc29mdHdhcmUgY29tcG9uZW50IGlzIGxpY2Vuc2VkIGJ5IFNUIHVuZGVyIEJTRCAzLUNsYXVzZSBsaWNlbnNlLAotICAqIHRoZSAiTGljZW5zZSI7IFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUKLSAgKiBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQ6Ci0gICogICAgICAgICAgICAgICAgICAgICAgICBvcGVuc291cmNlLm9yZy9saWNlbnNlcy9CU0QtMy1DbGF1c2UKKyAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIHVuZGVyIHRlcm1zIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUKKyAgKiBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb2Z0d2FyZSBjb21wb25lbnQuCisgICogSWYgbm8gTElDRU5TRSBmaWxlIGNvbWVzIHdpdGggdGhpcyBzb2Z0d2FyZSwgaXQgaXMgcHJvdmlkZWQgQVMtSVMuCiAgICoKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgICovCkBAIC0xNjksNCArMTY4LDMgQEAKIAogI2VuZGlmIC8qIFNUTTMyRjd4eF9IQUxfVVNBUlRfRVhfSCAqLwogCi0vKioqKioqKioqKioqKioqKioqKioqKioqIChDKSBDT1BZUklHSFQgU1RNaWNyb2VsZWN0cm9uaWNzICoqKioqRU5EIE9GIEZJTEUqKioqLwpkaWZmIC0tZ2l0IGEvSW5jL3N0bTMyZjd4eF9oYWxfd3dkZy5oIGIvSW5jL3N0bTMyZjd4eF9oYWxfd3dkZy5oCmluZGV4IGQzOTNlYTYuLjZjNWI0MDggMTAwNjQ0Ci0tLSBhL0luYy9zdG0zMmY3eHhfaGFsX3d3ZGcuaAorKysgYi9JbmMvc3RtMzJmN3h4X2hhbF93d2RnLmgKQEAgLTYsMTMgKzYsMTIgQEAKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgICogQGF0dGVudGlvbgogICAqCi0gICogPGgyPjxjZW50ZXI+JmNvcHk7IENvcHlyaWdodCAoYykgMjAxNyBTVE1pY3JvZWxlY3Ryb25pY3MuCi0gICogQWxsIHJpZ2h0cyByZXNlcnZlZC48L2NlbnRlcj48L2gyPgorICAqIENvcHlyaWdodCAoYykgMjAxNyBTVE1pY3JvZWxlY3Ryb25pY3MuCisgICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgKgotICAqIFRoaXMgc29mdHdhcmUgY29tcG9uZW50IGlzIGxpY2Vuc2VkIGJ5IFNUIHVuZGVyIEJTRCAzLUNsYXVzZSBsaWNlbnNlLAotICAqIHRoZSAiTGljZW5zZSI7IFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUKLSAgKiBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQ6Ci0gICogICAgICAgICAgICAgICAgICAgICAgICBvcGVuc291cmNlLm9yZy9saWNlbnNlcy9CU0QtMy1DbGF1c2UKKyAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIHVuZGVyIHRlcm1zIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUKKyAgKiBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb2Z0d2FyZSBjb21wb25lbnQuCisgICogSWYgbm8gTElDRU5TRSBmaWxlIGNvbWVzIHdpdGggdGhpcyBzb2Z0d2FyZSwgaXQgaXMgcHJvdmlkZWQgQVMtSVMuCiAgICoKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgICovCkBAIC0xODQsNyArMTgzLDcgQEAKIAogLyoqCiAgICogQGJyaWVmICBFbmFibGUgdGhlIFdXREcgZWFybHkgd2FrZXVwIGludGVycnVwdC4KLSAgKiBAcGFyYW0gIF9fSEFORExFX186IFdXREcgaGFuZGxlCisgICogQHBhcmFtICBfX0hBTkRMRV9fICAgICBXV0RHIGhhbmRsZQogICAqIEBwYXJhbSAgX19JTlRFUlJVUFRfXyAgc3BlY2lmaWVzIHRoZSBpbnRlcnJ1cHQgdG8gZW5hYmxlLgogICAqICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoKICAgKiAgICAgICAgICAgIEBhcmcgV1dER19JVF9FV0k6IEVhcmx5IHdha2V1cCBpbnRlcnJ1cHQKQEAgLTI5Nyw1ICsyOTYsMyBAQAogI2VuZGlmCiAKICNlbmRpZiAvKiBTVE0zMkY3eHhfSEFMX1dXREdfSCAqLwotCi0vKioqKioqKioqKioqKioqKioqKioqKioqIChDKSBDT1BZUklHSFQgU1RNaWNyb2VsZWN0cm9uaWNzICoqKioqRU5EIE9GIEZJTEUqKioqLwpkaWZmIC0tZ2l0IGEvSW5jL3N0bTMyZjd4eF9sbF9hZGMuaCBiL0luYy9zdG0zMmY3eHhfbGxfYWRjLmgKaW5kZXggMmRhYjlhYi4uMjc2ZDEyOCAxMDA2NDQKLS0tIGEvSW5jL3N0bTMyZjd4eF9sbF9hZGMuaAorKysgYi9JbmMvc3RtMzJmN3h4X2xsX2FkYy5oCkBAIC02LDEzICs2LDEyIEBACiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAqIEBhdHRlbnRpb24KICAgKgotICAqIDxoMj48Y2VudGVyPiZjb3B5OyBDb3B5cmlnaHQgKGMpIDIwMTcgU1RNaWNyb2VsZWN0cm9uaWNzLgotICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuPC9jZW50ZXI+PC9oMj4KKyAgKiBDb3B5cmlnaHQgKGMpIDIwMTcgU1RNaWNyb2VsZWN0cm9uaWNzLgorICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICoKLSAgKiBUaGlzIHNvZnR3YXJlIGNvbXBvbmVudCBpcyBsaWNlbnNlZCBieSBTVCB1bmRlciBCU0QgMy1DbGF1c2UgbGljZW5zZSwKLSAgKiB0aGUgIkxpY2Vuc2UiOyBZb3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlCi0gICogTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0OgotICAqICAgICAgICAgICAgICAgICAgICAgICAgb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvQlNELTMtQ2xhdXNlCisgICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCB1bmRlciB0ZXJtcyB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlCisgICogaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc29mdHdhcmUgY29tcG9uZW50LgorICAqIElmIG5vIExJQ0VOU0UgZmlsZSBjb21lcyB3aXRoIHRoaXMgc29mdHdhcmUsIGl0IGlzIHByb3ZpZGVkIEFTLUlTLgogICAqCiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAqLwpAQCAtNDcyOSw0ICs0NzI4LDMgQEAKIAogI2VuZGlmIC8qIF9fU1RNMzJGN3h4X0xMX0FEQ19IICovCiAKLS8qKioqKioqKioqKioqKioqKioqKioqKiogKEMpIENPUFlSSUdIVCBTVE1pY3JvZWxlY3Ryb25pY3MgKioqKipFTkQgT0YgRklMRSoqKiovCmRpZmYgLS1naXQgYS9JbmMvc3RtMzJmN3h4X2xsX2J1cy5oIGIvSW5jL3N0bTMyZjd4eF9sbF9idXMuaAppbmRleCBjNTQyMGZlLi43M2Q2NDA0IDEwMDY0NAotLS0gYS9JbmMvc3RtMzJmN3h4X2xsX2J1cy5oCisrKyBiL0luYy9zdG0zMmY3eHhfbGxfYnVzLmgKQEAgLTIzLDE0ICsyMywxMiBAQAogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgKiBAYXR0ZW50aW9uCiAgICoKLSAgKiA8aDI+PGNlbnRlcj4mY29weTsgQ29weXJpZ2h0IChjKSAyMDE3IFNUTWljcm9lbGVjdHJvbmljcy4KLSAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLjwvY2VudGVyPjwvaDI+CisgICogQ29weXJpZ2h0IChjKSAyMDE3IFNUTWljcm9lbGVjdHJvbmljcy4KKyAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAqCi0gICogVGhpcyBzb2Z0d2FyZSBjb21wb25lbnQgaXMgbGljZW5zZWQgYnkgU1QgdW5kZXIgQlNEIDMtQ2xhdXNlIGxpY2Vuc2UsCi0gICogdGhlICJMaWNlbnNlIjsgWW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZQotICAqIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdDoKLSAgKiAgICAgICAgICAgICAgICAgICAgICAgIG9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0JTRC0zLUNsYXVzZQotICAqCisgICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCB1bmRlciB0ZXJtcyB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluCisgICogdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc29mdHdhcmUgY29tcG9uZW50LgorICAqIElmIG5vIExJQ0VOU0UgZmlsZSBjb21lcyB3aXRoIHRoaXMgc29mdHdhcmUsIGl0IGlzIHByb3ZpZGVkIEFTLUlTLgogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgKi8KIApAQCAtMTk3Myw0ICsxOTcxLDMgQEAKIAogI2VuZGlmIC8qIF9fU1RNMzJGN3h4X0xMX0JVU19IICovCiAKLS8qKioqKioqKioqKioqKioqKioqKioqKiogKEMpIENPUFlSSUdIVCBTVE1pY3JvZWxlY3Ryb25pY3MgKioqKipFTkQgT0YgRklMRSoqKiovCmRpZmYgLS1naXQgYS9JbmMvc3RtMzJmN3h4X2xsX2NvcnRleC5oIGIvSW5jL3N0bTMyZjd4eF9sbF9jb3J0ZXguaAppbmRleCA5YThkMjEwLi44ZTIxODRmIDEwMDY0NAotLS0gYS9JbmMvc3RtMzJmN3h4X2xsX2NvcnRleC5oCisrKyBiL0luYy9zdG0zMmY3eHhfbGxfY29ydGV4LmgKQEAgLTEwLDcgKzEwLDcgQEAKICAgICBbLi5dCiAgICAgVGhlIExMIENPUlRFWCBkcml2ZXIgY29udGFpbnMgYSBzZXQgb2YgZ2VuZXJpYyBBUElzIHRoYXQgY2FuIGJlCiAgICAgdXNlZCBieSB1c2VyOgotICAgICAgKCspIFNZU1RJQ0sgY29uZmlndXJhdGlvbiB1c2VkIGJ5IEByZWYgTExfbURlbGF5IGFuZCBAcmVmIExMX0luaXQxbXNUaWNrCisgICAgICAoKykgU1lTVElDSyBjb25maWd1cmF0aW9uIHVzZWQgYnkgTExfbURlbGF5IGFuZCBMTF9Jbml0MW1zVGljawogICAgICAgICAgIGZ1bmN0aW9ucwogICAgICAgKCspIExvdyBwb3dlciBtb2RlIGNvbmZpZ3VyYXRpb24gKFNDQiByZWdpc3RlciBvZiBDb3J0ZXgtTUNVKQogICAgICAgKCspIE1QVSBBUEkgdG8gY29uZmlndXJlIGFuZCBlbmFibGUgcmVnaW9ucwpAQCAtMjEsMTMgKzIxLDEyIEBACiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAqIEBhdHRlbnRpb24KICAgKgotICAqIDxoMj48Y2VudGVyPiZjb3B5OyBDb3B5cmlnaHQgKGMpIDIwMTcgU1RNaWNyb2VsZWN0cm9uaWNzLgotICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuPC9jZW50ZXI+PC9oMj4KKyAgKiBDb3B5cmlnaHQgKGMpIDIwMTcgU1RNaWNyb2VsZWN0cm9uaWNzLgorICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICoKLSAgKiBUaGlzIHNvZnR3YXJlIGNvbXBvbmVudCBpcyBsaWNlbnNlZCBieSBTVCB1bmRlciBCU0QgMy1DbGF1c2UgbGljZW5zZSwKLSAgKiB0aGUgIkxpY2Vuc2UiOyBZb3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlCi0gICogTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0OgotICAqICAgICAgICAgICAgICAgICAgICAgICAgb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvQlNELTMtQ2xhdXNlCisgICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCB1bmRlciB0ZXJtcyB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluCisgICogdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc29mdHdhcmUgY29tcG9uZW50LgorICAqIElmIG5vIExJQ0VOU0UgZmlsZSBjb21lcyB3aXRoIHRoaXMgc29mdHdhcmUsIGl0IGlzIHByb3ZpZGVkIEFTLUlTLgogICAqCiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAqLwpAQCAtNjM2LDQgKzYzNSwzIEBACiAKICNlbmRpZiAvKiBfX1NUTTMyRjd4eF9MTF9DT1JURVhfSCAqLwogCi0vKioqKioqKioqKioqKioqKioqKioqKioqIChDKSBDT1BZUklHSFQgU1RNaWNyb2VsZWN0cm9uaWNzICoqKioqRU5EIE9GIEZJTEUqKioqLwpkaWZmIC0tZ2l0IGEvSW5jL3N0bTMyZjd4eF9sbF9jcmMuaCBiL0luYy9zdG0zMmY3eHhfbGxfY3JjLmgKaW5kZXggZmJiMTA3MS4uNGQzZTUzZCAxMDA2NDQKLS0tIGEvSW5jL3N0bTMyZjd4eF9sbF9jcmMuaAorKysgYi9JbmMvc3RtMzJmN3h4X2xsX2NyYy5oCkBAIC02LDEzICs2LDEyIEBACiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAqIEBhdHRlbnRpb24KICAgKgotICAqIDxoMj48Y2VudGVyPiZjb3B5OyBDb3B5cmlnaHQgKGMpIDIwMTcgU1RNaWNyb2VsZWN0cm9uaWNzLgotICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuPC9jZW50ZXI+PC9oMj4KKyAgKiBDb3B5cmlnaHQgKGMpIDIwMTcgU1RNaWNyb2VsZWN0cm9uaWNzLgorICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICoKLSAgKiBUaGlzIHNvZnR3YXJlIGNvbXBvbmVudCBpcyBsaWNlbnNlZCBieSBTVCB1bmRlciBCU0QgMy1DbGF1c2UgbGljZW5zZSwKLSAgKiB0aGUgIkxpY2Vuc2UiOyBZb3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlCi0gICogTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0OgotICAqICAgICAgICAgICAgICAgICAgICAgICAgb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvQlNELTMtQ2xhdXNlCisgICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCB1bmRlciB0ZXJtcyB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlCisgICogaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc29mdHdhcmUgY29tcG9uZW50LgorICAqIElmIG5vIExJQ0VOU0UgZmlsZSBjb21lcyB3aXRoIHRoaXMgc29mdHdhcmUsIGl0IGlzIHByb3ZpZGVkIEFTLUlTLgogICAqCiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAqLwpAQCAtMjM2LDcgKzIzNSw3IEBACiB9CiAKIC8qKgotICAqIEBicmllZiAgQ29uZmlndXJlIHRoZSByZXZlcnNhbCBvZiB0aGUgYml0IG9yZGVyIG9mIHRoZSBPdXRwdXQgZGF0YQorICAqIEBicmllZiAgUmV0dXJuIHR5cGUgb2YgcmV2ZXJzYWwgb2YgdGhlIGJpdCBvcmRlciBvZiB0aGUgT3V0cHV0IGRhdGEKICAgKiBAcm10b2xsIENSICAgICAgICAgICBSRVZfT1VUICAgICAgIExMX0NSQ19HZXRPdXRwdXREYXRhUmV2ZXJzZU1vZGUKICAgKiBAcGFyYW0gIENSQ3ggQ1JDIEluc3RhbmNlCiAgICogQHJldHZhbCBSZXR1cm5lZCB2YWx1ZSBjYW4gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOgpAQCAtNDYwLDUgKzQ1OSwzIEBACiAjZW5kaWYKIAogI2VuZGlmIC8qIFNUTTMyRjd4eF9MTF9DUkNfSCAqLwotCi0vKioqKioqKioqKioqKioqKioqKioqKioqIChDKSBDT1BZUklHSFQgU1RNaWNyb2VsZWN0cm9uaWNzICoqKioqRU5EIE9GIEZJTEUqKioqLwpkaWZmIC0tZ2l0IGEvSW5jL3N0bTMyZjd4eF9sbF9kYWMuaCBiL0luYy9zdG0zMmY3eHhfbGxfZGFjLmgKaW5kZXggOTg4NjMxNy4uM2EwY2NhMiAxMDA2NDQKLS0tIGEvSW5jL3N0bTMyZjd4eF9sbF9kYWMuaAorKysgYi9JbmMvc3RtMzJmN3h4X2xsX2RhYy5oCkBAIC02LDEzICs2LDEyIEBACiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAqIEBhdHRlbnRpb24KICAgKgotICAqIDxoMj48Y2VudGVyPiZjb3B5OyBDb3B5cmlnaHQgKGMpIDIwMTcgU1RNaWNyb2VsZWN0cm9uaWNzLgotICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuPC9jZW50ZXI+PC9oMj4KKyAgKiBDb3B5cmlnaHQgKGMpIDIwMTcgU1RNaWNyb2VsZWN0cm9uaWNzLgorICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICoKLSAgKiBUaGlzIHNvZnR3YXJlIGNvbXBvbmVudCBpcyBsaWNlbnNlZCBieSBTVCB1bmRlciBCU0QgMy1DbGF1c2UgbGljZW5zZSwKLSAgKiB0aGUgIkxpY2Vuc2UiOyBZb3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlCi0gICogTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0OgotICAqICAgICAgICAgICAgICAgICAgICAgICAgb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvQlNELTMtQ2xhdXNlCisgICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCB1bmRlciB0ZXJtcyB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlCisgICogaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc29mdHdhcmUgY29tcG9uZW50LgorICAqIElmIG5vIExJQ0VOU0UgZmlsZSBjb21lcyB3aXRoIHRoaXMgc29mdHdhcmUsIGl0IGlzIHByb3ZpZGVkIEFTLUlTLgogICAqCiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAqLwpAQCAtMTE3MCw3ICsxMTY5LDYgQEAKICAgKiBAewogICAqLwogCi0KIC8qKgogICAqIEBicmllZiAgR2V0IERBQyB1bmRlcnJ1biBmbGFnIGZvciBEQUMgY2hhbm5lbCAxCiAgICogQHJtdG9sbCBTUiAgICAgICBETUFVRFIxICAgICAgICBMTF9EQUNfSXNBY3RpdmVGbGFnX0RNQVVEUjEKQEAgLTEzMzcsNCArMTMzNSwzIEBACiAKICNlbmRpZiAvKiBTVE0zMkY3eHhfTExfREFDX0ggKi8KIAotLyoqKioqKioqKioqKioqKioqKioqKioqKiAoQykgQ09QWVJJR0hUIFNUTWljcm9lbGVjdHJvbmljcyAqKioqKkVORCBPRiBGSUxFKioqKi8KZGlmZiAtLWdpdCBhL0luYy9zdG0zMmY3eHhfbGxfZG1hLmggYi9JbmMvc3RtMzJmN3h4X2xsX2RtYS5oCmluZGV4IDM3ZDQ4YjUuLmJmOThlZDggMTAwNjQ0Ci0tLSBhL0luYy9zdG0zMmY3eHhfbGxfZG1hLmgKKysrIGIvSW5jL3N0bTMyZjd4eF9sbF9kbWEuaApAQCAtNiwxMyArNiwxMiBAQAogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgKiBAYXR0ZW50aW9uCiAgICoKLSAgKiA8aDI+PGNlbnRlcj4mY29weTsgQ29weXJpZ2h0IChjKSAyMDE3IFNUTWljcm9lbGVjdHJvbmljcy4KLSAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLjwvY2VudGVyPjwvaDI+CisgICogQ29weXJpZ2h0IChjKSAyMDE3IFNUTWljcm9lbGVjdHJvbmljcy4KKyAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAqCi0gICogVGhpcyBzb2Z0d2FyZSBjb21wb25lbnQgaXMgbGljZW5zZWQgYnkgU1QgdW5kZXIgQlNEIDMtQ2xhdXNlIGxpY2Vuc2UsCi0gICogdGhlICJMaWNlbnNlIjsgWW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZQotICAqIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdDoKLSAgKiAgICAgICAgICAgICAgICAgICAgICAgIG9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0JTRC0zLUNsYXVzZQorICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgdW5kZXIgdGVybXMgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbgorICAqIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvZnR3YXJlIGNvbXBvbmVudC4KKyAgKiBJZiBubyBMSUNFTlNFIGZpbGUgY29tZXMgd2l0aCB0aGlzIHNvZnR3YXJlLCBpdCBpcyBwcm92aWRlZCBBUy1JUy4KICAgKgogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgKi8KQEAgLTI4OTAsNCArMjg4OSwzIEBACiAKICNlbmRpZiAvKiBfX1NUTTMyRjd4eF9MTF9ETUFfSCAqLwogCi0vKioqKioqKioqKioqKioqKioqKioqKioqIChDKSBDT1BZUklHSFQgU1RNaWNyb2VsZWN0cm9uaWNzICoqKioqRU5EIE9GIEZJTEUqKioqLwpkaWZmIC0tZ2l0IGEvSW5jL3N0bTMyZjd4eF9sbF9kbWEyZC5oIGIvSW5jL3N0bTMyZjd4eF9sbF9kbWEyZC5oCmluZGV4IGY5ZDFkMjMuLmFhNzA5ODAgMTAwNjQ0Ci0tLSBhL0luYy9zdG0zMmY3eHhfbGxfZG1hMmQuaAorKysgYi9JbmMvc3RtMzJmN3h4X2xsX2RtYTJkLmgKQEAgLTYsMTMgKzYsMTIgQEAKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgICogQGF0dGVudGlvbgogICAqCi0gICogPGgyPjxjZW50ZXI+JmNvcHk7IENvcHlyaWdodCAoYykgMjAxNyBTVE1pY3JvZWxlY3Ryb25pY3MuCi0gICogQWxsIHJpZ2h0cyByZXNlcnZlZC48L2NlbnRlcj48L2gyPgorICAqIENvcHlyaWdodCAoYykgMjAxNyBTVE1pY3JvZWxlY3Ryb25pY3MuCisgICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgKgotICAqIFRoaXMgc29mdHdhcmUgY29tcG9uZW50IGlzIGxpY2Vuc2VkIGJ5IFNUIHVuZGVyIEJTRCAzLUNsYXVzZSBsaWNlbnNlLAotICAqIHRoZSAiTGljZW5zZSI7IFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUKLSAgKiBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQ6Ci0gICogICAgICAgICAgICAgICAgICAgICAgICBvcGVuc291cmNlLm9yZy9saWNlbnNlcy9CU0QtMy1DbGF1c2UKKyAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIHVuZGVyIHRlcm1zIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUKKyAgKiBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb2Z0d2FyZSBjb21wb25lbnQuCisgICogSWYgbm8gTElDRU5TRSBmaWxlIGNvbWVzIHdpdGggdGhpcyBzb2Z0d2FyZSwgaXQgaXMgcHJvdmlkZWQgQVMtSVMuCiAgICoKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgICovCkBAIC0yMTE2LDUgKzIxMTUsMyBAQAogI2VuZGlmCiAKICNlbmRpZiAvKiBTVE0zMkY3eHhfTExfRE1BMkRfSCAqLwotCi0vKioqKioqKioqKioqKioqKioqKioqKioqIChDKSBDT1BZUklHSFQgU1RNaWNyb2VsZWN0cm9uaWNzICoqKioqRU5EIE9GIEZJTEUqKioqLwpkaWZmIC0tZ2l0IGEvSW5jL3N0bTMyZjd4eF9sbF9leHRpLmggYi9JbmMvc3RtMzJmN3h4X2xsX2V4dGkuaAppbmRleCAyM2ZmY2VmLi44YjMzMmU1IDEwMDY0NAotLS0gYS9JbmMvc3RtMzJmN3h4X2xsX2V4dGkuaAorKysgYi9JbmMvc3RtMzJmN3h4X2xsX2V4dGkuaApAQCAtNiwxMyArNiwxMiBAQAogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgKiBAYXR0ZW50aW9uCiAgICoKLSAgKiA8aDI+PGNlbnRlcj4mY29weTsgQ29weXJpZ2h0IChjKSAyMDE3IFNUTWljcm9lbGVjdHJvbmljcy4KLSAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLjwvY2VudGVyPjwvaDI+CisgICogQ29weXJpZ2h0IChjKSAyMDE3IFNUTWljcm9lbGVjdHJvbmljcy4KKyAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAqCi0gICogVGhpcyBzb2Z0d2FyZSBjb21wb25lbnQgaXMgbGljZW5zZWQgYnkgU1QgdW5kZXIgQlNEIDMtQ2xhdXNlIGxpY2Vuc2UsCi0gICogdGhlICJMaWNlbnNlIjsgWW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZQotICAqIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdDoKLSAgKiAgICAgICAgICAgICAgICAgICAgICAgIG9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0JTRC0zLUNsYXVzZQorICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgdW5kZXIgdGVybXMgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZQorICAqIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvZnR3YXJlIGNvbXBvbmVudC4KKyAgKiBJZiBubyBMSUNFTlNFIGZpbGUgY29tZXMgd2l0aCB0aGlzIHNvZnR3YXJlLCBpdCBpcyBwcm92aWRlZCBBUy1JUy4KICAgKgogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgKi8KQEAgLTk0Nyw0ICs5NDYsMyBAQAogCiAjZW5kaWYgLyogX19TVE0zMkY3eHhfTExfRVhUSV9IICovCiAKLS8qKioqKioqKioqKioqKioqKioqKioqKiogKEMpIENPUFlSSUdIVCBTVE1pY3JvZWxlY3Ryb25pY3MgKioqKipFTkQgT0YgRklMRSoqKiovCmRpZmYgLS1naXQgYS9JbmMvc3RtMzJmN3h4X2xsX2ZtYy5oIGIvSW5jL3N0bTMyZjd4eF9sbF9mbWMuaAppbmRleCAxMWJmOWIxLi40ZjcwNGFiIDEwMDY0NAotLS0gYS9JbmMvc3RtMzJmN3h4X2xsX2ZtYy5oCisrKyBiL0luYy9zdG0zMmY3eHhfbGxfZm1jLmgKQEAgLTYsMjMgKzYsMjIgQEAKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgICogQGF0dGVudGlvbgogICAqCi0gICogPGgyPjxjZW50ZXI+JmNvcHk7IENvcHlyaWdodCAoYykgMjAxNyBTVE1pY3JvZWxlY3Ryb25pY3MuCi0gICogQWxsIHJpZ2h0cyByZXNlcnZlZC48L2NlbnRlcj48L2gyPgorICAqIENvcHlyaWdodCAoYykgMjAxNyBTVE1pY3JvZWxlY3Ryb25pY3MuCisgICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgKgotICAqIFRoaXMgc29mdHdhcmUgY29tcG9uZW50IGlzIGxpY2Vuc2VkIGJ5IFNUIHVuZGVyIEJTRCAzLUNsYXVzZSBsaWNlbnNlLAotICAqIHRoZSAiTGljZW5zZSI7IFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUKLSAgKiBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQ6Ci0gICogICAgICAgICAgICAgICAgICAgICAgICBvcGVuc291cmNlLm9yZy9saWNlbnNlcy9CU0QtMy1DbGF1c2UKKyAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIHVuZGVyIHRlcm1zIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUKKyAgKiBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb2Z0d2FyZSBjb21wb25lbnQuCisgICogSWYgbm8gTElDRU5TRSBmaWxlIGNvbWVzIHdpdGggdGhpcyBzb2Z0d2FyZSwgaXQgaXMgcHJvdmlkZWQgQVMtSVMuCiAgICoKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gICovIAorICAqLwogCiAvKiBEZWZpbmUgdG8gcHJldmVudCByZWN1cnNpdmUgaW5jbHVzaW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwotI2lmbmRlZiBfX1NUTTMyRjd4eF9MTF9GTUNfSAotI2RlZmluZSBfX1NUTTMyRjd4eF9MTF9GTUNfSAorI2lmbmRlZiBTVE0zMkY3eHhfTExfRk1DX0gKKyNkZWZpbmUgU1RNMzJGN3h4X0xMX0ZNQ19ICiAKICNpZmRlZiBfX2NwbHVzcGx1cwotIGV4dGVybiAiQyIgeworZXh0ZXJuICJDIiB7CiAjZW5kaWYKIAogLyogSW5jbHVkZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KQEAgLTM5LDYzICszOCw5NSBAQAogLyoqIEBhZGR0b2dyb3VwIEZNQ19MTF9Qcml2YXRlX01hY3JvcwogICAqIEB7CiAgICovCi0jZGVmaW5lIElTX0ZNQ19OT1JTUkFNX0JBTksoQkFOSykgKCgoQkFOSykgPT0gRk1DX05PUlNSQU1fQkFOSzEpIHx8IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChCQU5LKSA9PSBGTUNfTk9SU1JBTV9CQU5LMikgfHwgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKEJBTkspID09IEZNQ19OT1JTUkFNX0JBTkszKSB8fCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoQkFOSykgPT0gRk1DX05PUlNSQU1fQkFOSzQpKQogCisjZGVmaW5lIElTX0ZNQ19OT1JTUkFNX0JBTksoX19CQU5LX18pICgoKF9fQkFOS19fKSA9PSBGTUNfTk9SU1JBTV9CQU5LMSkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChfX0JBTktfXykgPT0gRk1DX05PUlNSQU1fQkFOSzIpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoX19CQU5LX18pID09IEZNQ19OT1JTUkFNX0JBTkszKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKF9fQkFOS19fKSA9PSBGTUNfTk9SU1JBTV9CQU5LNCkpCiAjZGVmaW5lIElTX0ZNQ19NVVgoX19NVVhfXykgKCgoX19NVVhfXykgPT0gRk1DX0RBVEFfQUREUkVTU19NVVhfRElTQUJMRSkgfHwgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChfX01VWF9fKSA9PSBGTUNfREFUQV9BRERSRVNTX01VWF9FTkFCTEUpKQotCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoX19NVVhfXykgPT0gRk1DX0RBVEFfQUREUkVTU19NVVhfRU5BQkxFKSkKICNkZWZpbmUgSVNfRk1DX01FTU9SWShfX01FTU9SWV9fKSAoKChfX01FTU9SWV9fKSA9PSBGTUNfTUVNT1JZX1RZUEVfU1JBTSkgfHwgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChfX01FTU9SWV9fKSA9PSBGTUNfTUVNT1JZX1RZUEVfUFNSQU0pfHwgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChfX01FTU9SWV9fKSA9PSBGTUNfTUVNT1JZX1RZUEVfTk9SKSkKLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKF9fTUVNT1JZX18pID09IEZNQ19NRU1PUllfVFlQRV9QU1JBTSl8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoX19NRU1PUllfXykgPT0gRk1DX01FTU9SWV9UWVBFX05PUikpCiAjZGVmaW5lIElTX0ZNQ19OT1JTUkFNX01FTU9SWV9XSURUSChfX1dJRFRIX18pICgoKF9fV0lEVEhfXykgPT0gRk1DX05PUlNSQU1fTUVNX0JVU19XSURUSF84KSAgfHwgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoX19XSURUSF9fKSA9PSBGTUNfTk9SU1JBTV9NRU1fQlVTX1dJRFRIXzE2KSB8fCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChfX1dJRFRIX18pID09IEZNQ19OT1JTUkFNX01FTV9CVVNfV0lEVEhfMzIpKQotCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKF9fV0lEVEhfXykgPT0gRk1DX05PUlNSQU1fTUVNX0JVU19XSURUSF8xNikgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChfX1dJRFRIX18pID09IEZNQ19OT1JTUkFNX01FTV9CVVNfV0lEVEhfMzIpKQorI2RlZmluZSBJU19GTUNfUEFHRVNJWkUoX19TSVpFX18pICgoKF9fU0laRV9fKSA9PSBGTUNfUEFHRV9TSVpFX05PTkUpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChfX1NJWkVfXykgPT0gRk1DX1BBR0VfU0laRV8xMjgpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChfX1NJWkVfXykgPT0gRk1DX1BBR0VfU0laRV8yNTYpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChfX1NJWkVfXykgPT0gRk1DX1BBR0VfU0laRV81MTIpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChfX1NJWkVfXykgPT0gRk1DX1BBR0VfU0laRV8xMDI0KSkKKyNkZWZpbmUgSVNfRk1DX1dSSVRFX0ZJRk8oX19GSUZPX18pICgoKF9fRklGT19fKSA9PSBGTUNfV1JJVEVfRklGT19ESVNBQkxFKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChfX0ZJRk9fXykgPT0gRk1DX1dSSVRFX0ZJRk9fRU5BQkxFKSkKICNkZWZpbmUgSVNfRk1DX0FDQ0VTU19NT0RFKF9fTU9ERV9fKSAoKChfX01PREVfXykgPT0gRk1DX0FDQ0VTU19NT0RFX0EpIHx8IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoX19NT0RFX18pID09IEZNQ19BQ0NFU1NfTU9ERV9CKSB8fCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKF9fTU9ERV9fKSA9PSBGTUNfQUNDRVNTX01PREVfQykgfHwgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChfX01PREVfXykgPT0gRk1DX0FDQ0VTU19NT0RFX0QpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKF9fTU9ERV9fKSA9PSBGTUNfQUNDRVNTX01PREVfQikgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKF9fTU9ERV9fKSA9PSBGTUNfQUNDRVNTX01PREVfQykgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKF9fTU9ERV9fKSA9PSBGTUNfQUNDRVNTX01PREVfRCkpCisjZGVmaW5lIElTX0ZNQ19CVVJTVE1PREUoX19TVEFURV9fKSAoKChfX1NUQVRFX18pID09IEZNQ19CVVJTVF9BQ0NFU1NfTU9ERV9ESVNBQkxFKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChfX1NUQVRFX18pID09IEZNQ19CVVJTVF9BQ0NFU1NfTU9ERV9FTkFCTEUpKQorI2RlZmluZSBJU19GTUNfV0FJVF9QT0xBUklUWShfX1BPTEFSSVRZX18pICgoKF9fUE9MQVJJVFlfXykgPT0gRk1DX1dBSVRfU0lHTkFMX1BPTEFSSVRZX0xPVykgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKF9fUE9MQVJJVFlfXykgPT0gRk1DX1dBSVRfU0lHTkFMX1BPTEFSSVRZX0hJR0gpKQorI2RlZmluZSBJU19GTUNfV0FJVF9TSUdOQUxfQUNUSVZFKF9fQUNUSVZFX18pICgoKF9fQUNUSVZFX18pID09IEZNQ19XQUlUX1RJTUlOR19CRUZPUkVfV1MpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChfX0FDVElWRV9fKSA9PSBGTUNfV0FJVF9USU1JTkdfRFVSSU5HX1dTKSkKKyNkZWZpbmUgSVNfRk1DX1dSSVRFX09QRVJBVElPTihfX09QRVJBVElPTl9fKSAoKChfX09QRVJBVElPTl9fKSA9PSBGTUNfV1JJVEVfT1BFUkFUSU9OX0RJU0FCTEUpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChfX09QRVJBVElPTl9fKSA9PSBGTUNfV1JJVEVfT1BFUkFUSU9OX0VOQUJMRSkpCisjZGVmaW5lIElTX0ZNQ19XQUlURV9TSUdOQUwoX19TSUdOQUxfXykgKCgoX19TSUdOQUxfXykgPT0gRk1DX1dBSVRfU0lHTkFMX0RJU0FCTEUpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChfX1NJR05BTF9fKSA9PSBGTUNfV0FJVF9TSUdOQUxfRU5BQkxFKSkKKyNkZWZpbmUgSVNfRk1DX0VYVEVOREVEX01PREUoX19NT0RFX18pICgoKF9fTU9ERV9fKSA9PSBGTUNfRVhURU5ERURfTU9ERV9ESVNBQkxFKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChfX01PREVfXykgPT0gRk1DX0VYVEVOREVEX01PREVfRU5BQkxFKSkKKyNkZWZpbmUgSVNfRk1DX0FTWU5XQUlUKF9fU1RBVEVfXykgKCgoX19TVEFURV9fKSA9PSBGTUNfQVNZTkNIUk9OT1VTX1dBSVRfRElTQUJMRSkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChfX1NUQVRFX18pID09IEZNQ19BU1lOQ0hST05PVVNfV0FJVF9FTkFCTEUpKQorI2RlZmluZSBJU19GTUNfREFUQV9MQVRFTkNZKF9fTEFURU5DWV9fKSAoKChfX0xBVEVOQ1lfXykgPiAxVSkgJiYgKChfX0xBVEVOQ1lfXykgPD0gMTdVKSkKKyNkZWZpbmUgSVNfRk1DX1dSSVRFX0JVUlNUKF9fQlVSU1RfXykgKCgoX19CVVJTVF9fKSA9PSBGTUNfV1JJVEVfQlVSU1RfRElTQUJMRSkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChfX0JVUlNUX18pID09IEZNQ19XUklURV9CVVJTVF9FTkFCTEUpKQorI2RlZmluZSBJU19GTUNfQ09OVElOT1VTX0NMT0NLKF9fQ0NMT0NLX18pICgoKF9fQ0NMT0NLX18pID09IEZNQ19DT05USU5VT1VTX0NMT0NLX1NZTkNfT05MWSkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKF9fQ0NMT0NLX18pID09IEZNQ19DT05USU5VT1VTX0NMT0NLX1NZTkNfQVNZTkMpKQorI2RlZmluZSBJU19GTUNfQUREUkVTU19TRVRVUF9USU1FKF9fVElNRV9fKSAoKF9fVElNRV9fKSA8PSAxNVUpCisjZGVmaW5lIElTX0ZNQ19BRERSRVNTX0hPTERfVElNRShfX1RJTUVfXykgKCgoX19USU1FX18pID4gMFUpICYmICgoX19USU1FX18pIDw9IDE1VSkpCisjZGVmaW5lIElTX0ZNQ19EQVRBU0VUVVBfVElNRShfX1RJTUVfXykgKCgoX19USU1FX18pID4gMFUpICYmICgoX19USU1FX18pIDw9IDI1NVUpKQorI2RlZmluZSBJU19GTUNfREFUQUhPTERfRFVSQVRJT04oX19EQVRBSE9MRF9fKSAoKF9fREFUQUhPTERfXykgPD0gM1UpCisjZGVmaW5lIElTX0ZNQ19UVVJOQVJPVU5EX1RJTUUoX19USU1FX18pICgoX19USU1FX18pIDw9IDE1VSkKKyNkZWZpbmUgSVNfRk1DX0NMS19ESVYoX19ESVZfXykgKCgoX19ESVZfXykgPiAxVSkgJiYgKChfX0RJVl9fKSA8PSAxNlUpKQorI2RlZmluZSBJU19GTUNfTk9SU1JBTV9ERVZJQ0UoX19JTlNUQU5DRV9fKSAoKF9fSU5TVEFOQ0VfXykgPT0gRk1DX05PUlNSQU1fREVWSUNFKQorI2RlZmluZSBJU19GTUNfTk9SU1JBTV9FWFRFTkRFRF9ERVZJQ0UoX19JTlNUQU5DRV9fKSAoKF9fSU5TVEFOQ0VfXykgPT0gRk1DX05PUlNSQU1fRVhURU5ERURfREVWSUNFKQogCi0jZGVmaW5lIElTX0ZNQ19OQU5EX0JBTksoQkFOSykgKChCQU5LKSA9PSBGTUNfTkFORF9CQU5LMykKIAotI2RlZmluZSBJU19GTUNfV0FJVF9GRUFUVVJFKEZFQVRVUkUpICgoKEZFQVRVUkUpID09IEZNQ19OQU5EX1dBSVRfRkVBVFVSRV9ESVNBQkxFKSB8fCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoRkVBVFVSRSkgPT0gRk1DX05BTkRfV0FJVF9GRUFUVVJFX0VOQUJMRSkpCisjZGVmaW5lIElTX0ZNQ19OQU5EX0JBTksoX19CQU5LX18pICgoX19CQU5LX18pID09IEZNQ19OQU5EX0JBTkszKQorI2RlZmluZSBJU19GTUNfV0FJVF9GRUFUVVJFKF9fRkVBVFVSRV9fKSAoKChfX0ZFQVRVUkVfXykgPT0gRk1DX05BTkRfV0FJVF9GRUFUVVJFX0RJU0FCTEUpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoX19GRUFUVVJFX18pID09IEZNQ19OQU5EX1dBSVRfRkVBVFVSRV9FTkFCTEUpKQorI2RlZmluZSBJU19GTUNfTkFORF9NRU1PUllfV0lEVEgoX19XSURUSF9fKSAoKChfX1dJRFRIX18pID09IEZNQ19OQU5EX01FTV9CVVNfV0lEVEhfOCkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChfX1dJRFRIX18pID09IEZNQ19OQU5EX01FTV9CVVNfV0lEVEhfMTYpKQorI2RlZmluZSBJU19GTUNfRUNDX1NUQVRFKF9fU1RBVEVfXykgKCgoX19TVEFURV9fKSA9PSBGTUNfTkFORF9FQ0NfRElTQUJMRSkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoX19TVEFURV9fKSA9PSBGTUNfTkFORF9FQ0NfRU5BQkxFKSkKIAotI2RlZmluZSBJU19GTUNfTkFORF9NRU1PUllfV0lEVEgoV0lEVEgpICgoKFdJRFRIKSA9PSBGTUNfTkFORF9NRU1fQlVTX1dJRFRIXzgpIHx8IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChXSURUSCkgPT0gRk1DX05BTkRfTUVNX0JVU19XSURUSF8xNikpCisjZGVmaW5lIElTX0ZNQ19FQ0NQQUdFX1NJWkUoX19TSVpFX18pICgoKF9fU0laRV9fKSA9PSBGTUNfTkFORF9FQ0NfUEFHRV9TSVpFXzI1NkJZVEUpICB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKF9fU0laRV9fKSA9PSBGTUNfTkFORF9FQ0NfUEFHRV9TSVpFXzUxMkJZVEUpICB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKF9fU0laRV9fKSA9PSBGTUNfTkFORF9FQ0NfUEFHRV9TSVpFXzEwMjRCWVRFKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKF9fU0laRV9fKSA9PSBGTUNfTkFORF9FQ0NfUEFHRV9TSVpFXzIwNDhCWVRFKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKF9fU0laRV9fKSA9PSBGTUNfTkFORF9FQ0NfUEFHRV9TSVpFXzQwOTZCWVRFKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKF9fU0laRV9fKSA9PSBGTUNfTkFORF9FQ0NfUEFHRV9TSVpFXzgxOTJCWVRFKSkKKyNkZWZpbmUgSVNfRk1DX1RDTFJfVElNRShfX1RJTUVfXykgKChfX1RJTUVfXykgPD0gMjU1VSkKKyNkZWZpbmUgSVNfRk1DX1RBUl9USU1FKF9fVElNRV9fKSAoKF9fVElNRV9fKSA8PSAyNTVVKQorI2RlZmluZSBJU19GTUNfU0VUVVBfVElNRShfX1RJTUVfXykgKChfX1RJTUVfXykgPD0gMjU0VSkKKyNkZWZpbmUgSVNfRk1DX1dBSVRfVElNRShfX1RJTUVfXykgKChfX1RJTUVfXykgPD0gMjU0VSkKKyNkZWZpbmUgSVNfRk1DX0hPTERfVElNRShfX1RJTUVfXykgKChfX1RJTUVfXykgPD0gMjU0VSkKKyNkZWZpbmUgSVNfRk1DX0hJWl9USU1FKF9fVElNRV9fKSAoKF9fVElNRV9fKSA8PSAyNTRVKQorI2RlZmluZSBJU19GTUNfTkFORF9ERVZJQ0UoX19JTlNUQU5DRV9fKSAoKF9fSU5TVEFOQ0VfXykgPT0gRk1DX05BTkRfREVWSUNFKQogCi0jZGVmaW5lIElTX0ZNQ19FQ0NfU1RBVEUoU1RBVEUpICgoKFNUQVRFKSA9PSBGTUNfTkFORF9FQ0NfRElTQUJMRSkgfHwgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChTVEFURSkgPT0gRk1DX05BTkRfRUNDX0VOQUJMRSkpCiAKLSNkZWZpbmUgSVNfRk1DX0VDQ1BBR0VfU0laRShTSVpFKSAoKChTSVpFKSA9PSBGTUNfTkFORF9FQ0NfUEFHRV9TSVpFXzI1NkJZVEUpICB8fCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoU0laRSkgPT0gRk1DX05BTkRfRUNDX1BBR0VfU0laRV81MTJCWVRFKSAgfHwgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFNJWkUpID09IEZNQ19OQU5EX0VDQ19QQUdFX1NJWkVfMTAyNEJZVEUpIHx8IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChTSVpFKSA9PSBGTUNfTkFORF9FQ0NfUEFHRV9TSVpFXzIwNDhCWVRFKSB8fCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoU0laRSkgPT0gRk1DX05BTkRfRUNDX1BBR0VfU0laRV80MDk2QllURSkgfHwgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFNJWkUpID09IEZNQ19OQU5EX0VDQ19QQUdFX1NJWkVfODE5MkJZVEUpKQotCQkJCQkJCQkgICAKLSNkZWZpbmUgSVNfRk1DX1NETUVNT1JZX1dJRFRIKFdJRFRIKSAoKChXSURUSCkgPT0gRk1DX1NEUkFNX01FTV9CVVNfV0lEVEhfOCkgIHx8IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChXSURUSCkgPT0gRk1DX1NEUkFNX01FTV9CVVNfV0lEVEhfMTYpIHx8IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChXSURUSCkgPT0gRk1DX1NEUkFNX01FTV9CVVNfV0lEVEhfMzIpKQotCisjZGVmaW5lIElTX0ZNQ19TRE1FTU9SWV9XSURUSChfX1dJRFRIX18pICgoKF9fV0lEVEhfXykgPT0gRk1DX1NEUkFNX01FTV9CVVNfV0lEVEhfOCkgIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoX19XSURUSF9fKSA9PSBGTUNfU0RSQU1fTUVNX0JVU19XSURUSF8xNikgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChfX1dJRFRIX18pID09IEZNQ19TRFJBTV9NRU1fQlVTX1dJRFRIXzMyKSkKICNkZWZpbmUgSVNfRk1DX1dSSVRFX1BST1RFQ1RJT04oX19XUklURV9fKSAoKChfX1dSSVRFX18pID09IEZNQ19TRFJBTV9XUklURV9QUk9URUNUSU9OX0RJU0FCTEUpIHx8IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChfX1dSSVRFX18pID09IEZNQ19TRFJBTV9XUklURV9QUk9URUNUSU9OX0VOQUJMRSkpCQkJCQkJCQkJICAKLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKF9fV1JJVEVfXykgPT0gRk1DX1NEUkFNX1dSSVRFX1BST1RFQ1RJT05fRU5BQkxFKSkKICNkZWZpbmUgSVNfRk1DX1NEQ0xPQ0tfUEVSSU9EKF9fUEVSSU9EX18pICgoKF9fUEVSSU9EX18pID09IEZNQ19TRFJBTV9DTE9DS19ESVNBQkxFKSAgfHwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoX19QRVJJT0RfXykgPT0gRk1DX1NEUkFNX0NMT0NLX1BFUklPRF8yKSB8fCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChfX1BFUklPRF9fKSA9PSBGTUNfU0RSQU1fQ0xPQ0tfUEVSSU9EXzMpKQotCQkJCQkJCQkJCSAgIAogI2RlZmluZSBJU19GTUNfUkVBRF9CVVJTVChfX1JCVVJTVF9fKSAoKChfX1JCVVJTVF9fKSA9PSBGTUNfU0RSQU1fUkJVUlNUX0RJU0FCTEUpIHx8IFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoX19SQlVSU1RfXykgPT0gRk1DX1NEUkFNX1JCVVJTVF9FTkFCTEUpKQotCQkJCQkJCQkJICAgCiAjZGVmaW5lIElTX0ZNQ19SRUFEUElQRV9ERUxBWShfX0RFTEFZX18pICgoKF9fREVMQVlfXykgPT0gRk1DX1NEUkFNX1JQSVBFX0RFTEFZXzApIHx8IFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoX19ERUxBWV9fKSA9PSBGTUNfU0RSQU1fUlBJUEVfREVMQVlfMSkgfHwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChfX0RFTEFZX18pID09IEZNQ19TRFJBTV9SUElQRV9ERUxBWV8yKSkKLQogI2RlZmluZSBJU19GTUNfQ09NTUFORF9NT0RFKF9fQ09NTUFORF9fKSAoKChfX0NPTU1BTkRfXykgPT0gRk1DX1NEUkFNX0NNRF9OT1JNQUxfTU9ERSkgICAgICB8fCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKF9fQ09NTUFORF9fKSA9PSBGTUNfU0RSQU1fQ01EX0NMS19FTkFCTEUpICAgICAgIHx8IFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoX19DT01NQU5EX18pID09IEZNQ19TRFJBTV9DTURfUEFMTCkgICAgICAgICAgICAgfHwgXApAQCAtMTAzLDI4MyArMTM0LDQ2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKF9fQ09NTUFORF9fKSA9PSBGTUNfU0RSQU1fQ01EX0xPQURfTU9ERSkgICAgICAgIHx8IFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoX19DT01NQU5EX18pID09IEZNQ19TRFJBTV9DTURfU0VMRlJFRlJFU0hfTU9ERSkgfHwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChfX0NPTU1BTkRfXykgPT0gRk1DX1NEUkFNX0NNRF9QT1dFUkRPV05fTU9ERSkpCi0KICNkZWZpbmUgSVNfRk1DX0NPTU1BTkRfVEFSR0VUKF9fVEFSR0VUX18pICgoKF9fVEFSR0VUX18pID09IEZNQ19TRFJBTV9DTURfVEFSR0VUX0JBTksxKSB8fCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChfX1RBUkdFVF9fKSA9PSBGTUNfU0RSQU1fQ01EX1RBUkdFVF9CQU5LMikgfHwgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoX19UQVJHRVRfXykgPT0gRk1DX1NEUkFNX0NNRF9UQVJHRVRfQkFOSzFfMikpIAkJCQkJCQkJCQkgIAotCQkJCQkJICAgCi0vKiogQGRlZmdyb3VwIEZNQ19UQ0xSX1NldHVwX1RpbWUgRk1DIFRDTFIgU2V0dXAgVGltZQotICAqIEB7Ci0gICovCi0jZGVmaW5lIElTX0ZNQ19UQ0xSX1RJTUUoX19USU1FX18pICgoX19USU1FX18pIDw9IDI1NSkKLS8qKgotICAqIEB9Ci0gICovCi0KLS8qKiBAZGVmZ3JvdXAgRk1DX1RBUl9TZXR1cF9UaW1lIEZNQyBUQVIgU2V0dXAgVGltZSAKLSAgKiBAewotICAqLwotI2RlZmluZSBJU19GTUNfVEFSX1RJTUUoVElNRSkgKChUSU1FKSA8PSAyNTUpCi0vKioKLSAgKiBAfQotICAqLwotCi0vKiogQGRlZmdyb3VwIEZNQ19TZXR1cF9UaW1lIEZNQyBTZXR1cCBUaW1lIAotICAqIEB7Ci0gICovCi0jZGVmaW5lIElTX0ZNQ19TRVRVUF9USU1FKFRJTUUpICgoVElNRSkgPD0gMjU0KQotLyoqCi0gICogQH0KLSAgKi8KLQotLyoqIEBkZWZncm91cCBGTUNfV2FpdF9TZXR1cF9UaW1lIEZNQyBXYWl0IFNldHVwIFRpbWUgCi0gICogQHsKLSAgKi8KLSNkZWZpbmUgSVNfRk1DX1dBSVRfVElNRShUSU1FKSAoKFRJTUUpIDw9IDI1NCkKLS8qKgotICAqIEB9Ci0gICovCi0KLS8qKiBAZGVmZ3JvdXAgRk1DX0hvbGRfU2V0dXBfVGltZSBGTUMgSG9sZCBTZXR1cCBUaW1lIAotICAqIEB7Ci0gICovCi0jZGVmaW5lIElTX0ZNQ19IT0xEX1RJTUUoVElNRSkgKChUSU1FKSA8PSAyNTQpCi0vKioKLSAgKiBAfQotICAqLwotCi0vKiogQGRlZmdyb3VwIEZNQ19IaVpfU2V0dXBfVGltZSBGTUMgSGlaIFNldHVwIFRpbWUgCi0gICogQHsKLSAgKi8KLSNkZWZpbmUgSVNfRk1DX0hJWl9USU1FKFRJTUUpICgoVElNRSkgPD0gMjU0KQotLyoqCi0gICogQH0KLSAgKi8KLQotI2RlZmluZSBJU19GTUNfQlVSU1RNT0RFKF9fU1RBVEVfXykgKCgoX19TVEFURV9fKSA9PSBGTUNfQlVSU1RfQUNDRVNTX01PREVfRElTQUJMRSkgfHwgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKF9fU1RBVEVfXykgPT0gRk1DX0JVUlNUX0FDQ0VTU19NT0RFX0VOQUJMRSkpCi0KLSNkZWZpbmUgSVNfRk1DX1dBSVRfUE9MQVJJVFkoX19QT0xBUklUWV9fKSAoKChfX1BPTEFSSVRZX18pID09IEZNQ19XQUlUX1NJR05BTF9QT0xBUklUWV9MT1cpIHx8IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoX19QT0xBUklUWV9fKSA9PSBGTUNfV0FJVF9TSUdOQUxfUE9MQVJJVFlfSElHSCkpCi0KLSNkZWZpbmUgSVNfRk1DX1dBSVRfU0lHTkFMX0FDVElWRShfX0FDVElWRV9fKSAoKChfX0FDVElWRV9fKSA9PSBGTUNfV0FJVF9USU1JTkdfQkVGT1JFX1dTKSB8fCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKF9fQUNUSVZFX18pID09IEZNQ19XQUlUX1RJTUlOR19EVVJJTkdfV1MpKSAKLQotI2RlZmluZSBJU19GTUNfV1JJVEVfT1BFUkFUSU9OKF9fT1BFUkFUSU9OX18pICgoKF9fT1BFUkFUSU9OX18pID09IEZNQ19XUklURV9PUEVSQVRJT05fRElTQUJMRSkgfHwgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChfX09QRVJBVElPTl9fKSA9PSBGTUNfV1JJVEVfT1BFUkFUSU9OX0VOQUJMRSkpCi0KLSNkZWZpbmUgSVNfRk1DX1dBSVRFX1NJR05BTChfX1NJR05BTF9fKSAoKChfX1NJR05BTF9fKSA9PSBGTUNfV0FJVF9TSUdOQUxfRElTQUJMRSkgfHwgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChfX1NJR05BTF9fKSA9PSBGTUNfV0FJVF9TSUdOQUxfRU5BQkxFKSkKLQotI2RlZmluZSBJU19GTUNfRVhURU5ERURfTU9ERShfX01PREVfXykgKCgoX19NT0RFX18pID09IEZNQ19FWFRFTkRFRF9NT0RFX0RJU0FCTEUpIHx8IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChfX01PREVfXykgPT0gRk1DX0VYVEVOREVEX01PREVfRU5BQkxFKSkKLQotI2RlZmluZSBJU19GTUNfQVNZTldBSVQoX19TVEFURV9fKSAoKChfX1NUQVRFX18pID09IEZNQ19BU1lOQ0hST05PVVNfV0FJVF9ESVNBQkxFKSB8fCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChfX1NUQVRFX18pID09IEZNQ19BU1lOQ0hST05PVVNfV0FJVF9FTkFCTEUpKQotCi0vKiogQGRlZmdyb3VwIEZNQ19EYXRhX0xhdGVuY3kgRk1DIERhdGEgTGF0ZW5jeSAKLSAgKiBAewotICAqLwotI2RlZmluZSBJU19GTUNfREFUQV9MQVRFTkNZKF9fTEFURU5DWV9fKSAoKChfX0xBVEVOQ1lfXykgPiAxKSAmJiAoKF9fTEFURU5DWV9fKSA8PSAxNykpCi0vKioKLSAgKiBAfQotICAqLwotCi0jZGVmaW5lIElTX0ZNQ19XUklURV9CVVJTVChfX0JVUlNUX18pICgoKF9fQlVSU1RfXykgPT0gRk1DX1dSSVRFX0JVUlNUX0RJU0FCTEUpIHx8IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKF9fQlVSU1RfXykgPT0gRk1DX1dSSVRFX0JVUlNUX0VOQUJMRSkpCi0KLSNkZWZpbmUgSVNfRk1DX0NPTlRJTk9VU19DTE9DSyhDQ0xPQ0spICgoKENDTE9DSykgPT0gRk1DX0NPTlRJTlVPVVNfQ0xPQ0tfU1lOQ19PTkxZKSB8fCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChDQ0xPQ0spID09IEZNQ19DT05USU5VT1VTX0NMT0NLX1NZTkNfQVNZTkMpKQotCi0KLS8qKiBAZGVmZ3JvdXAgRk1DX0FkZHJlc3NfU2V0dXBfVGltZSBGTUMgQWRkcmVzcyBTZXR1cCBUaW1lCi0gICogQHsKLSAgKi8KLSNkZWZpbmUgSVNfRk1DX0FERFJFU1NfU0VUVVBfVElNRShfX1RJTUVfXykgKChfX1RJTUVfXykgPD0gMTUpCi0vKioKLSAgKiBAfQotICAqLwotCi0vKiogQGRlZmdyb3VwIEZNQ19BZGRyZXNzX0hvbGRfVGltZSBGTUMgQWRkcmVzcyBIb2xkIFRpbWUKLSAgKiBAewotICAqLwotI2RlZmluZSBJU19GTUNfQUREUkVTU19IT0xEX1RJTUUoX19USU1FX18pICgoKF9fVElNRV9fKSA+IDApICYmICgoX19USU1FX18pIDw9IDE1KSkKLS8qKgotICAqIEB9Ci0gICovCi0KLS8qKiBAZGVmZ3JvdXAgRk1DX0RhdGFfU2V0dXBfVGltZSBGTUMgRGF0YSBTZXR1cCBUaW1lCi0gICogQHsKLSAgKi8KLSNkZWZpbmUgSVNfRk1DX0RBVEFTRVRVUF9USU1FKF9fVElNRV9fKSAoKChfX1RJTUVfXykgPiAwKSAmJiAoKF9fVElNRV9fKSA8PSAyNTUpKQotLyoqCi0gICogQH0KLSAgKi8KLQotLyoqIEBkZWZncm91cCBGTUNfQnVzX1R1cm5fYXJvdW5kX0R1cmF0aW9uIEZNQyBCdXMgVHVybiBhcm91bmQgRHVyYXRpb24KLSAgKiBAewotICAqLwotI2RlZmluZSBJU19GTUNfVFVSTkFST1VORF9USU1FKF9fVElNRV9fKSAoKF9fVElNRV9fKSA8PSAxNSkKLS8qKgotICAqIEB9Ci0gICovCi0KLS8qKiBAZGVmZ3JvdXAgRk1DX0NMS19EaXZpc2lvbiBGTUMgQ0xLIERpdmlzaW9uIAotICAqIEB7Ci0gICovCi0jZGVmaW5lIElTX0ZNQ19DTEtfRElWKERJVikgKCgoRElWKSA+IDEpICYmICgoRElWKSA8PSAxNikpCi0vKioKLSAgKiBAfQotICAqLwotCi0vKiogQGRlZmdyb3VwIEZNQ19TRFJBTV9Mb2FkVG9BY3RpdmVfRGVsYXkgRk1DIFNEUkFNIExvYWRUb0FjdGl2ZSBEZWxheQotICAqIEB7Ci0gICovCi0jZGVmaW5lIElTX0ZNQ19MT0FEVE9BQ1RJVkVfREVMQVkoX19ERUxBWV9fKSAoKChfX0RFTEFZX18pID4gMCkgJiYgKChfX0RFTEFZX18pIDw9IDE2KSkKLS8qKgotICAqIEB9Ci0gICovCi0gIAotLyoqIEBkZWZncm91cCBGTUNfU0RSQU1fRXhpdFNlbGZSZWZyZXNoX0RlbGF5IEZNQyBTRFJBTSBFeGl0U2VsZlJlZnJlc2ggRGVsYXkKLSAgKiBAewotICAqLwotI2RlZmluZSBJU19GTUNfRVhJVFNFTEZSRUZSRVNIX0RFTEFZKF9fREVMQVlfXykgKCgoX19ERUxBWV9fKSA+IDApICYmICgoX19ERUxBWV9fKSA8PSAxNikpCi0vKioKLSAgKiBAfQotICAqLyAKLSAgICAgCi0vKiogQGRlZmdyb3VwIEZNQ19TRFJBTV9TZWxmUmVmcmVzaF9UaW1lIEZNQyBTRFJBTSBTZWxmUmVmcmVzaCBUaW1lCi0gICogQHsKLSAgKi8gIAotI2RlZmluZSBJU19GTUNfU0VMRlJFRlJFU0hfVElNRShfX1RJTUVfXykgKCgoX19USU1FX18pID4gMCkgJiYgKChfX1RJTUVfXykgPD0gMTYpKQotLyoqCi0gICogQH0KLSAgKi8KLSAgCi0vKiogQGRlZmdyb3VwIEZNQ19TRFJBTV9Sb3dDeWNsZV9EZWxheSBGTUMgU0RSQU0gUm93Q3ljbGUgRGVsYXkKLSAgKiBAewotICAqLyAgCi0jZGVmaW5lIElTX0ZNQ19ST1dDWUNMRV9ERUxBWShfX0RFTEFZX18pICgoKF9fREVMQVlfXykgPiAwKSAmJiAoKF9fREVMQVlfXykgPD0gMTYpKQotLyoqCi0gICogQH0KLSAgKi8gIAotICAKLS8qKiBAZGVmZ3JvdXAgRk1DX1NEUkFNX1dyaXRlX1JlY292ZXJ5X1RpbWUgRk1DIFNEUkFNIFdyaXRlIFJlY292ZXJ5IFRpbWUKLSAgKiBAewotICAqLyAgCi0jZGVmaW5lIElTX0ZNQ19XUklURV9SRUNPVkVSWV9USU1FKF9fVElNRV9fKSAoKChfX1RJTUVfXykgPiAwKSAmJiAoKF9fVElNRV9fKSA8PSAxNikpCi0vKioKLSAgKiBAfQotICAqLyAgICAgICAgIAotICAKLS8qKiBAZGVmZ3JvdXAgRk1DX1NEUkFNX1JQX0RlbGF5IEZNQyBTRFJBTSBSUCBEZWxheQotICAqIEB7Ci0gICovICAKLSNkZWZpbmUgSVNfRk1DX1JQX0RFTEFZKF9fREVMQVlfXykgKCgoX19ERUxBWV9fKSA+IDApICYmICgoX19ERUxBWV9fKSA8PSAxNikpCi0vKioKLSAgKiBAfQotICAqLyAKLSAgCi0vKiogQGRlZmdyb3VwIEZNQ19TRFJBTV9SQ0RfRGVsYXkgRk1DIFNEUkFNIFJDRCBEZWxheQotICAqIEB7Ci0gICovICAKLSNkZWZpbmUgSVNfRk1DX1JDRF9ERUxBWShfX0RFTEFZX18pICgoKF9fREVMQVlfXykgPiAwKSAmJiAoKF9fREVMQVlfXykgPD0gMTYpKQotLyoqCi0gICogQH0KLSAgKi8KLSAgCi0vKiogQGRlZmdyb3VwIEZNQ19TRFJBTV9BdXRvUmVmcmVzaF9OdW1iZXIgRk1DIFNEUkFNIEF1dG9SZWZyZXNoIE51bWJlcgotICAqIEB7Ci0gICovICAKLSNkZWZpbmUgSVNfRk1DX0FVVE9SRUZSRVNIX05VTUJFUihfX05VTUJFUl9fKSAoKChfX05VTUJFUl9fKSA+IDApICYmICgoX19OVU1CRVJfXykgPD0gMTYpKQotLyoqCi0gICogQH0KLSAgKi8KLQotLyoqIEBkZWZncm91cCBGTUNfU0RSQU1fTW9kZVJlZ2lzdGVyX0RlZmluaXRpb24gRk1DIFNEUkFNIE1vZGVSZWdpc3RlciBEZWZpbml0aW9uCi0gICogQHsKLSAgKi8KLSNkZWZpbmUgSVNfRk1DX01PREVfUkVHSVNURVIoX19DT05URU5UX18pICgoX19DT05URU5UX18pIDw9IDgxOTEpCi0vKioKLSAgKiBAfQotICAqLwotCi0vKiogQGRlZmdyb3VwIEZNQ19TRFJBTV9SZWZyZXNoX3JhdGUgRk1DIFNEUkFNIFJlZnJlc2ggcmF0ZQotICAqIEB7Ci0gICovCi0jZGVmaW5lIElTX0ZNQ19SRUZSRVNIX1JBVEUoX19SQVRFX18pICgoX19SQVRFX18pIDw9IDgxOTEpCi0vKioKLSAgKiBAfQotICAqLwotICAKLS8qKiBAZGVmZ3JvdXAgRk1DX05PUlNSQU1fRGV2aWNlX0luc3RhbmNlIEZNQyBOT1JTUkFNIERldmljZSBJbnN0YW5jZQotICAqIEB7Ci0gICovCi0jZGVmaW5lIElTX0ZNQ19OT1JTUkFNX0RFVklDRShfX0lOU1RBTkNFX18pICgoX19JTlNUQU5DRV9fKSA9PSBGTUNfTk9SU1JBTV9ERVZJQ0UpCi0vKioKLSAgKiBAfQotICAqLwotCi0vKiogQGRlZmdyb3VwIEZNQ19OT1JTUkFNX0VYVEVOREVEX0RldmljZV9JbnN0YW5jZSBGTUMgTk9SU1JBTSBFWFRFTkRFRCBEZXZpY2UgSW5zdGFuY2UKLSAgKiBAewotICAqLwotI2RlZmluZSBJU19GTUNfTk9SU1JBTV9FWFRFTkRFRF9ERVZJQ0UoX19JTlNUQU5DRV9fKSAoKF9fSU5TVEFOQ0VfXykgPT0gRk1DX05PUlNSQU1fRVhURU5ERURfREVWSUNFKQotLyoqCi0gICogQH0KLSAgKi8KLSAgCi0vKiogQGRlZmdyb3VwIEZNQ19OQU5EX0RldmljZV9JbnN0YW5jZSBGTUMgTkFORCBEZXZpY2UgSW5zdGFuY2UKLSAgKiBAewotICAqLwotI2RlZmluZSBJU19GTUNfTkFORF9ERVZJQ0UoX19JTlNUQU5DRV9fKSAoKF9fSU5TVEFOQ0VfXykgPT0gRk1DX05BTkRfREVWSUNFKQotLyoqCi0gICogQH0KLSAgKi8KLQotLyoqIEBkZWZncm91cCBGTUNfU0RSQU1fRGV2aWNlX0luc3RhbmNlIEZNQyBTRFJBTSBEZXZpY2UgSW5zdGFuY2UKLSAgKiBAewotICAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoX19UQVJHRVRfXykgPT0gRk1DX1NEUkFNX0NNRF9UQVJHRVRfQkFOSzFfMikpCisjZGVmaW5lIElTX0ZNQ19MT0FEVE9BQ1RJVkVfREVMQVkoX19ERUxBWV9fKSAoKChfX0RFTEFZX18pID4gMFUpICYmICgoX19ERUxBWV9fKSA8PSAxNlUpKQorI2RlZmluZSBJU19GTUNfRVhJVFNFTEZSRUZSRVNIX0RFTEFZKF9fREVMQVlfXykgKCgoX19ERUxBWV9fKSA+IDBVKSAmJiAoKF9fREVMQVlfXykgPD0gMTZVKSkKKyNkZWZpbmUgSVNfRk1DX1NFTEZSRUZSRVNIX1RJTUUoX19USU1FX18pICgoKF9fVElNRV9fKSA+IDBVKSAmJiAoKF9fVElNRV9fKSA8PSAxNlUpKQorI2RlZmluZSBJU19GTUNfUk9XQ1lDTEVfREVMQVkoX19ERUxBWV9fKSAoKChfX0RFTEFZX18pID4gMFUpICYmICgoX19ERUxBWV9fKSA8PSAxNlUpKQorI2RlZmluZSBJU19GTUNfV1JJVEVfUkVDT1ZFUllfVElNRShfX1RJTUVfXykgKCgoX19USU1FX18pID4gMFUpICYmICgoX19USU1FX18pIDw9IDE2VSkpCisjZGVmaW5lIElTX0ZNQ19SUF9ERUxBWShfX0RFTEFZX18pICgoKF9fREVMQVlfXykgPiAwVSkgJiYgKChfX0RFTEFZX18pIDw9IDE2VSkpCisjZGVmaW5lIElTX0ZNQ19SQ0RfREVMQVkoX19ERUxBWV9fKSAoKChfX0RFTEFZX18pID4gMFUpICYmICgoX19ERUxBWV9fKSA8PSAxNlUpKQorI2RlZmluZSBJU19GTUNfQVVUT1JFRlJFU0hfTlVNQkVSKF9fTlVNQkVSX18pICgoKF9fTlVNQkVSX18pID4gMFUpICYmICgoX19OVU1CRVJfXykgPD0gMTVVKSkKKyNkZWZpbmUgSVNfRk1DX01PREVfUkVHSVNURVIoX19DT05URU5UX18pICgoX19DT05URU5UX18pIDw9IDgxOTFVKQorI2RlZmluZSBJU19GTUNfUkVGUkVTSF9SQVRFKF9fUkFURV9fKSAoKF9fUkFURV9fKSA8PSA4MTkxVSkKICNkZWZpbmUgSVNfRk1DX1NEUkFNX0RFVklDRShfX0lOU1RBTkNFX18pICgoX19JTlNUQU5DRV9fKSA9PSBGTUNfU0RSQU1fREVWSUNFKQotLyoqCi0gICogQH0KLSAgKi8KLQotI2RlZmluZSBJU19GTUNfU0RSQU1fQkFOSyhCQU5LKSAoKChCQU5LKSA9PSBGTUNfU0RSQU1fQkFOSzEpIHx8IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoQkFOSykgPT0gRk1DX1NEUkFNX0JBTksyKSkKLQotI2RlZmluZSBJU19GTUNfQ09MVU1OQklUU19OVU1CRVIoQ09MVU1OKSAoKChDT0xVTU4pID09IEZNQ19TRFJBTV9DT0xVTU5fQklUU19OVU1fOCkgIHx8IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoQ09MVU1OKSA9PSBGTUNfU0RSQU1fQ09MVU1OX0JJVFNfTlVNXzkpICB8fCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKENPTFVNTikgPT0gRk1DX1NEUkFNX0NPTFVNTl9CSVRTX05VTV8xMCkgfHwgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChDT0xVTU4pID09IEZNQ19TRFJBTV9DT0xVTU5fQklUU19OVU1fMTEpKQotCi0jZGVmaW5lIElTX0ZNQ19ST1dCSVRTX05VTUJFUihST1cpICgoKFJPVykgPT0gRk1DX1NEUkFNX1JPV19CSVRTX05VTV8xMSkgfHwgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChST1cpID09IEZNQ19TRFJBTV9ST1dfQklUU19OVU1fMTIpIHx8IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoUk9XKSA9PSBGTUNfU0RSQU1fUk9XX0JJVFNfTlVNXzEzKSkKLQotI2RlZmluZSBJU19GTUNfSU5URVJOQUxCQU5LX05VTUJFUihOVU1CRVIpICgoKE5VTUJFUikgPT0gRk1DX1NEUkFNX0lOVEVSTl9CQU5LU19OVU1fMikgfHwgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKE5VTUJFUikgPT0gRk1DX1NEUkFNX0lOVEVSTl9CQU5LU19OVU1fNCkpCisjZGVmaW5lIElTX0ZNQ19TRFJBTV9CQU5LKF9fQkFOS19fKSAoKChfX0JBTktfXykgPT0gRk1DX1NEUkFNX0JBTksxKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChfX0JBTktfXykgPT0gRk1DX1NEUkFNX0JBTksyKSkKKyNkZWZpbmUgSVNfRk1DX0NPTFVNTkJJVFNfTlVNQkVSKF9fQ09MVU1OX18pICgoKF9fQ09MVU1OX18pID09IEZNQ19TRFJBTV9DT0xVTU5fQklUU19OVU1fOCkgIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKF9fQ09MVU1OX18pID09IEZNQ19TRFJBTV9DT0xVTU5fQklUU19OVU1fOSkgIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKF9fQ09MVU1OX18pID09IEZNQ19TRFJBTV9DT0xVTU5fQklUU19OVU1fMTApIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKF9fQ09MVU1OX18pID09IEZNQ19TRFJBTV9DT0xVTU5fQklUU19OVU1fMTEpKQorI2RlZmluZSBJU19GTUNfUk9XQklUU19OVU1CRVIoX19ST1dfXykgKCgoX19ST1dfXykgPT0gRk1DX1NEUkFNX1JPV19CSVRTX05VTV8xMSkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoX19ST1dfXykgPT0gRk1DX1NEUkFNX1JPV19CSVRTX05VTV8xMikgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoX19ST1dfXykgPT0gRk1DX1NEUkFNX1JPV19CSVRTX05VTV8xMykpCisjZGVmaW5lIElTX0ZNQ19JTlRFUk5BTEJBTktfTlVNQkVSKF9fTlVNQkVSX18pICgoKF9fTlVNQkVSX18pID09IEZNQ19TRFJBTV9JTlRFUk5fQkFOS1NfTlVNXzIpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoX19OVU1CRVJfXykgPT0gRk1DX1NEUkFNX0lOVEVSTl9CQU5LU19OVU1fNCkpCisjZGVmaW5lIElTX0ZNQ19DQVNfTEFURU5DWShfX0xBVEVOQ1lfXykgKCgoX19MQVRFTkNZX18pID09IEZNQ19TRFJBTV9DQVNfTEFURU5DWV8xKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoX19MQVRFTkNZX18pID09IEZNQ19TRFJBTV9DQVNfTEFURU5DWV8yKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoX19MQVRFTkNZX18pID09IEZNQ19TRFJBTV9DQVNfTEFURU5DWV8zKSkKIAogCi0jZGVmaW5lIElTX0ZNQ19DQVNfTEFURU5DWShMQVRFTkNZKSAoKChMQVRFTkNZKSA9PSBGTUNfU0RSQU1fQ0FTX0xBVEVOQ1lfMSkgfHwgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoTEFURU5DWSkgPT0gRk1DX1NEUkFNX0NBU19MQVRFTkNZXzIpIHx8IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKExBVEVOQ1kpID09IEZNQ19TRFJBTV9DQVNfTEFURU5DWV8zKSkKLQotI2RlZmluZSBJU19GTUNfUEFHRVNJWkUoX19TSVpFX18pICgoKF9fU0laRV9fKSA9PSBGTUNfUEFHRV9TSVpFX05PTkUpIHx8IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChfX1NJWkVfXykgPT0gRk1DX1BBR0VfU0laRV8xMjgpIHx8IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChfX1NJWkVfXykgPT0gRk1DX1BBR0VfU0laRV8yNTYpIHx8IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChfX1NJWkVfXykgPT0gRk1DX1BBR0VfU0laRV81MTIpIHx8IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChfX1NJWkVfXykgPT0gRk1DX1BBR0VfU0laRV8xMDI0KSkKLQotI2RlZmluZSBJU19GTUNfV1JJVEVfRklGTyhfX0ZJRk9fXykgKCgoX19GSUZPX18pID09IEZNQ19XUklURV9GSUZPX0RJU0FCTEUpIHx8IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKF9fRklGT19fKSA9PSBGTUNfV1JJVEVfRklGT19FTkFCTEUpKQogLyoqCiAgICogQH0KICAgKi8KIAogLyogRXhwb3J0ZWQgdHlwZWRlZiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLS8qKiBAZGVmZ3JvdXAgRk1DX0V4cG9ydGVkX3R5cGVkZWYgRk1DIExvdyBMYXllciBFeHBvcnRlZCBUeXBlcworCisvKiogQGRlZmdyb3VwIEZNQ19MTF9FeHBvcnRlZF90eXBlZGVmIEZNQyBMb3cgTGF5ZXIgRXhwb3J0ZWQgVHlwZXMKICAgKiBAewogICAqLworCiAjZGVmaW5lIEZNQ19OT1JTUkFNX1R5cGVEZWYgICAgICAgICAgICBGTUNfQmFuazFfVHlwZURlZgogI2RlZmluZSBGTUNfTk9SU1JBTV9FWFRFTkRFRF9UeXBlRGVmICAgRk1DX0JhbmsxRV9UeXBlRGVmCiAjZGVmaW5lIEZNQ19OQU5EX1R5cGVEZWYgICAgICAgICAgICAgICBGTUNfQmFuazNfVHlwZURlZgpAQCAtMzkwLDEzMiArMTg0LDEzMiBAQAogI2RlZmluZSBGTUNfTkFORF9ERVZJQ0UgICAgICAgICAgICAgICAgRk1DX0JhbmszCiAjZGVmaW5lIEZNQ19TRFJBTV9ERVZJQ0UgICAgICAgICAgICAgICBGTUNfQmFuazVfNgogCi0vKiogCisvKioKICAgKiBAYnJpZWYgIEZNQyBOT1JTUkFNIENvbmZpZ3VyYXRpb24gU3RydWN0dXJlIGRlZmluaXRpb24KLSAgKi8gCisgICovCiB0eXBlZGVmIHN0cnVjdAogewogICB1aW50MzJfdCBOU0Jhbms7ICAgICAgICAgICAgICAgICAgICAgICAvKiE8IFNwZWNpZmllcyB0aGUgTk9SU1JBTSBtZW1vcnkgZGV2aWNlIHRoYXQgd2lsbCBiZSB1c2VkLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhIHZhbHVlIG9mIEByZWYgRk1DX05PUlNSQU1fQmFuayAgICAgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGEgdmFsdWUgb2YgQHJlZiBGTUNfTk9SU1JBTV9CYW5rICAgICAgICAgICAgICAgICAgKi8KIAogICB1aW50MzJfdCBEYXRhQWRkcmVzc011eDsgICAgICAgICAgICAgICAvKiE8IFNwZWNpZmllcyB3aGV0aGVyIHRoZSBhZGRyZXNzIGFuZCBkYXRhIHZhbHVlcyBhcmUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdWx0aXBsZXhlZCBvbiB0aGUgZGF0YSBidXMgb3Igbm90LiAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYSB2YWx1ZSBvZiBAcmVmIEZNQ19EYXRhX0FkZHJlc3NfQnVzX011bHRpcGxleGluZyAgICAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpcGxleGVkIG9uIHRoZSBkYXRhIGJ1cyBvciBub3QuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGEgdmFsdWUgb2YgQHJlZiBGTUNfRGF0YV9BZGRyZXNzX0J1c19NdWx0aXBsZXhpbmcgKi8KIAogICB1aW50MzJfdCBNZW1vcnlUeXBlOyAgICAgICAgICAgICAgICAgICAvKiE8IFNwZWNpZmllcyB0aGUgdHlwZSBvZiBleHRlcm5hbCBtZW1vcnkgYXR0YWNoZWQgdG8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgY29ycmVzcG9uZGluZyBtZW1vcnkgZGV2aWNlLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhIHZhbHVlIG9mIEByZWYgRk1DX01lbW9yeV9UeXBlICAgICAgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGEgdmFsdWUgb2YgQHJlZiBGTUNfTWVtb3J5X1R5cGUgICAgICAgICAgICAgICAgICAgKi8KIAogICB1aW50MzJfdCBNZW1vcnlEYXRhV2lkdGg7ICAgICAgICAgICAgICAvKiE8IFNwZWNpZmllcyB0aGUgZXh0ZXJuYWwgbWVtb3J5IGRldmljZSB3aWR0aC4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYSB2YWx1ZSBvZiBAcmVmIEZNQ19OT1JTUkFNX0RhdGFfV2lkdGggICAgICAgICAgICAgICAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhIHZhbHVlIG9mIEByZWYgRk1DX05PUlNSQU1fRGF0YV9XaWR0aCAgICAgICAgICAgICovCiAKICAgdWludDMyX3QgQnVyc3RBY2Nlc3NNb2RlOyAgICAgICAgICAgICAgLyohPCBFbmFibGVzIG9yIGRpc2FibGVzIHRoZSBidXJzdCBhY2Nlc3MgbW9kZSBmb3IgRmxhc2ggbWVtb3J5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkIG9ubHkgd2l0aCBzeW5jaHJvbm91cyBidXJzdCBGbGFzaCBtZW1vcmllcy4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYSB2YWx1ZSBvZiBAcmVmIEZNQ19CdXJzdF9BY2Nlc3NfTW9kZSAgICAgICAgICAgICAgICAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhIHZhbHVlIG9mIEByZWYgRk1DX0J1cnN0X0FjY2Vzc19Nb2RlICAgICAgICAgICAgICovCiAKICAgdWludDMyX3QgV2FpdFNpZ25hbFBvbGFyaXR5OyAgICAgICAgICAgLyohPCBTcGVjaWZpZXMgdGhlIHdhaXQgc2lnbmFsIHBvbGFyaXR5LCB2YWxpZCBvbmx5IHdoZW4gYWNjZXNzaW5nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIEZsYXNoIG1lbW9yeSBpbiBidXJzdCBtb2RlLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhIHZhbHVlIG9mIEByZWYgRk1DX1dhaXRfU2lnbmFsX1BvbGFyaXR5ICAgICAgICAgICAgICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGEgdmFsdWUgb2YgQHJlZiBGTUNfV2FpdF9TaWduYWxfUG9sYXJpdHkgICAgICAgICAgKi8KIAogICB1aW50MzJfdCBXYWl0U2lnbmFsQWN0aXZlOyAgICAgICAgICAgICAvKiE8IFNwZWNpZmllcyBpZiB0aGUgd2FpdCBzaWduYWwgaXMgYXNzZXJ0ZWQgYnkgdGhlIG1lbW9yeSBvbmUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9jayBjeWNsZSBiZWZvcmUgdGhlIHdhaXQgc3RhdGUgb3IgZHVyaW5nIHRoZSB3YWl0IHN0YXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkIG9ubHkgd2hlbiBhY2Nlc3NpbmcgbWVtb3JpZXMgaW4gYnVyc3QgbW9kZS4gCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGEgdmFsdWUgb2YgQHJlZiBGTUNfV2FpdF9UaW1pbmcgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZCBvbmx5IHdoZW4gYWNjZXNzaW5nIG1lbW9yaWVzIGluIGJ1cnN0IG1vZGUuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGEgdmFsdWUgb2YgQHJlZiBGTUNfV2FpdF9UaW1pbmcgICAgICAgICAgICAgICAgICAgKi8KIAotICB1aW50MzJfdCBXcml0ZU9wZXJhdGlvbjsgICAgICAgICAgICAgICAvKiE8IEVuYWJsZXMgb3IgZGlzYWJsZXMgdGhlIHdyaXRlIG9wZXJhdGlvbiBpbiB0aGUgc2VsZWN0ZWQgZGV2aWNlIGJ5IHRoZSBGTUMuIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhIHZhbHVlIG9mIEByZWYgRk1DX1dyaXRlX09wZXJhdGlvbiAgICAgICAgICAgICAgICAgICovCisgIHVpbnQzMl90IFdyaXRlT3BlcmF0aW9uOyAgICAgICAgICAgICAgIC8qITwgRW5hYmxlcyBvciBkaXNhYmxlcyB0aGUgd3JpdGUgb3BlcmF0aW9uIGluIHRoZSBzZWxlY3RlZCBkZXZpY2UgYnkgdGhlIEZNQy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYSB2YWx1ZSBvZiBAcmVmIEZNQ19Xcml0ZV9PcGVyYXRpb24gICAgICAgICAgICAgICAqLwogCiAgIHVpbnQzMl90IFdhaXRTaWduYWw7ICAgICAgICAgICAgICAgICAgIC8qITwgRW5hYmxlcyBvciBkaXNhYmxlcyB0aGUgd2FpdCBzdGF0ZSBpbnNlcnRpb24gdmlhIHdhaXQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaWduYWwsIHZhbGlkIGZvciBGbGFzaCBtZW1vcnkgYWNjZXNzIGluIGJ1cnN0IG1vZGUuIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhIHZhbHVlIG9mIEByZWYgRk1DX1dhaXRfU2lnbmFsICAgICAgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2lnbmFsLCB2YWxpZCBmb3IgRmxhc2ggbWVtb3J5IGFjY2VzcyBpbiBidXJzdCBtb2RlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhIHZhbHVlIG9mIEByZWYgRk1DX1dhaXRfU2lnbmFsICAgICAgICAgICAgICAgICAgICovCiAKICAgdWludDMyX3QgRXh0ZW5kZWRNb2RlOyAgICAgICAgICAgICAgICAgLyohPCBFbmFibGVzIG9yIGRpc2FibGVzIHRoZSBleHRlbmRlZCBtb2RlLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhIHZhbHVlIG9mIEByZWYgRk1DX0V4dGVuZGVkX01vZGUgICAgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGEgdmFsdWUgb2YgQHJlZiBGTUNfRXh0ZW5kZWRfTW9kZSAgICAgICAgICAgICAgICAgKi8KIAogICB1aW50MzJfdCBBc3luY2hyb25vdXNXYWl0OyAgICAgICAgICAgICAvKiE8IEVuYWJsZXMgb3IgZGlzYWJsZXMgd2FpdCBzaWduYWwgZHVyaW5nIGFzeW5jaHJvbm91cyB0cmFuc2ZlcnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWQgb25seSB3aXRoIGFzeW5jaHJvbm91cyBGbGFzaCBtZW1vcmllcy4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYSB2YWx1ZSBvZiBAcmVmIEZNQ19Bc3luY2hyb25vdXNXYWl0ICAgICAgICAgICAgICAgICAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhIHZhbHVlIG9mIEByZWYgRk1DX0FzeW5jaHJvbm91c1dhaXQgICAgICAgICAgICAgICovCiAKICAgdWludDMyX3QgV3JpdGVCdXJzdDsgICAgICAgICAgICAgICAgICAgLyohPCBFbmFibGVzIG9yIGRpc2FibGVzIHRoZSB3cml0ZSBidXJzdCBvcGVyYXRpb24uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGEgdmFsdWUgb2YgQHJlZiBGTUNfV3JpdGVfQnVyc3QgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYSB2YWx1ZSBvZiBAcmVmIEZNQ19Xcml0ZV9CdXJzdCAgICAgICAgICAgICAgICAgICAqLwogCiAgIHVpbnQzMl90IENvbnRpbnVvdXNDbG9jazsgICAgICAgICAgICAgIC8qITwgRW5hYmxlcyBvciBkaXNhYmxlcyB0aGUgRk1DIGNsb2NrIG91dHB1dCB0byBleHRlcm5hbCBtZW1vcnkgZGV2aWNlcy4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBpcyBvbmx5IGVuYWJsZWQgdGhyb3VnaCB0aGUgRk1DX0JDUjEgcmVnaXN0ZXIsIGFuZCBkb24ndCBjYXJlIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm91Z2ggRk1DX0JDUjIuLjQgcmVnaXN0ZXJzLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhIHZhbHVlIG9mIEByZWYgRk1DX0NvbnRpbm91c19DbG9jayAgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgaXMgb25seSBlbmFibGVkIHRocm91Z2ggdGhlIEZNQ19CQ1IxIHJlZ2lzdGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBkb24ndCBjYXJlIHRocm91Z2ggRk1DX0JDUjIuLjQgcmVnaXN0ZXJzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhIHZhbHVlIG9mIEByZWYgRk1DX0NvbnRpbm91c19DbG9jayAgICAgICAgICAgICAgICovCiAKICAgdWludDMyX3QgV3JpdGVGaWZvOyAgICAgICAgICAgICAgICAgICAgLyohPCBFbmFibGVzIG9yIGRpc2FibGVzIHRoZSB3cml0ZSBGSUZPIHVzZWQgYnkgdGhlIEZNQyBjb250cm9sbGVyLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGlzIG9ubHkgZW5hYmxlZCB0aHJvdWdoIHRoZSBGTUNfQkNSMSByZWdpc3RlciwgYW5kIGRvbid0IGNhcmUgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3VnaCBGTUNfQkNSMi4uNCByZWdpc3RlcnMuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGEgdmFsdWUgb2YgQHJlZiBGTUNfV3JpdGVfRklGTyAgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGlzIG9ubHkgZW5hYmxlZCB0aHJvdWdoIHRoZSBGTUNfQkNSMSByZWdpc3RlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgZG9uJ3QgY2FyZSB0aHJvdWdoIEZNQ19CQ1IyLi40IHJlZ2lzdGVycy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYSB2YWx1ZSBvZiBAcmVmIEZNQ19Xcml0ZV9GSUZPICAgICAgICAgICAgICAgICAgICAqLwogCiAgIHVpbnQzMl90IFBhZ2VTaXplOyAgICAgICAgICAgICAgICAgICAgIC8qITwgU3BlY2lmaWVzIHRoZSBtZW1vcnkgcGFnZSBzaXplLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhIHZhbHVlIG9mIEByZWYgRk1DX1BhZ2VfU2l6ZSAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGEgdmFsdWUgb2YgQHJlZiBGTUNfUGFnZV9TaXplICAgICAgICAgICAgICAgICAgICAgKi8KK30gRk1DX05PUlNSQU1fSW5pdFR5cGVEZWY7CiAKLX1GTUNfTk9SU1JBTV9Jbml0VHlwZURlZjsKLQotLyoqIAotICAqIEBicmllZiAgRk1DIE5PUlNSQU0gVGltaW5nIHBhcmFtZXRlcnMgc3RydWN0dXJlIGRlZmluaXRpb24gIAorLyoqCisgICogQGJyaWVmICBGTUMgTk9SU1JBTSBUaW1pbmcgcGFyYW1ldGVycyBzdHJ1Y3R1cmUgZGVmaW5pdGlvbgogICAqLwogdHlwZWRlZiBzdHJ1Y3QKIHsKICAgdWludDMyX3QgQWRkcmVzc1NldHVwVGltZTsgICAgICAgICAgICAgLyohPCBEZWZpbmVzIHRoZSBudW1iZXIgb2YgSENMSyBjeWNsZXMgdG8gY29uZmlndXJlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGR1cmF0aW9uIG9mIHRoZSBhZGRyZXNzIHNldHVwIHRpbWUuIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBkdXJhdGlvbiBvZiB0aGUgYWRkcmVzcyBzZXR1cCB0aW1lLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhIHZhbHVlIGJldHdlZW4gTWluX0RhdGEgPSAwIGFuZCBNYXhfRGF0YSA9IDE1LgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBub3RlIFRoaXMgcGFyYW1ldGVyIGlzIG5vdCB1c2VkIHdpdGggc3luY2hyb25vdXMgTk9SIEZsYXNoIG1lbW9yaWVzLiAgICAgICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQG5vdGUgVGhpcyBwYXJhbWV0ZXIgaXMgbm90IHVzZWQgd2l0aCBzeW5jaHJvbm91cyBOT1IgRmxhc2ggbWVtb3JpZXMuICAgKi8KIAogICB1aW50MzJfdCBBZGRyZXNzSG9sZFRpbWU7ICAgICAgICAgICAgICAvKiE8IERlZmluZXMgdGhlIG51bWJlciBvZiBIQ0xLIGN5Y2xlcyB0byBjb25maWd1cmUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgZHVyYXRpb24gb2YgdGhlIGFkZHJlc3MgaG9sZCB0aW1lLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhIHZhbHVlIGJldHdlZW4gTWluX0RhdGEgPSAxIGFuZCBNYXhfRGF0YSA9IDE1LiAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAbm90ZSBUaGlzIHBhcmFtZXRlciBpcyBub3QgdXNlZCB3aXRoIHN5bmNocm9ub3VzIE5PUiBGbGFzaCBtZW1vcmllcy4gICAgICAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhIHZhbHVlIGJldHdlZW4gTWluX0RhdGEgPSAxIGFuZCBNYXhfRGF0YSA9IDE1LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBub3RlIFRoaXMgcGFyYW1ldGVyIGlzIG5vdCB1c2VkIHdpdGggc3luY2hyb25vdXMgTk9SIEZsYXNoIG1lbW9yaWVzLiAgICovCiAKICAgdWludDMyX3QgRGF0YVNldHVwVGltZTsgICAgICAgICAgICAgICAgLyohPCBEZWZpbmVzIHRoZSBudW1iZXIgb2YgSENMSyBjeWNsZXMgdG8gY29uZmlndXJlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGR1cmF0aW9uIG9mIHRoZSBkYXRhIHNldHVwIHRpbWUuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGEgdmFsdWUgYmV0d2VlbiBNaW5fRGF0YSA9IDEgYW5kIE1heF9EYXRhID0gMjU1LgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBub3RlIFRoaXMgcGFyYW1ldGVyIGlzIHVzZWQgZm9yIFNSQU1zLCBST01zIGFuZCBhc3luY2hyb25vdXMgbXVsdGlwbGV4ZWQgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTk9SIEZsYXNoIG1lbW9yaWVzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAbm90ZSBUaGlzIHBhcmFtZXRlciBpcyB1c2VkIGZvciBTUkFNcywgUk9NcyBhbmQgYXN5bmNocm9ub3VzIG11bHRpcGxleGVkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTk9SIEZsYXNoIG1lbW9yaWVzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KIAogICB1aW50MzJfdCBCdXNUdXJuQXJvdW5kRHVyYXRpb247ICAgICAgICAvKiE8IERlZmluZXMgdGhlIG51bWJlciBvZiBIQ0xLIGN5Y2xlcyB0byBjb25maWd1cmUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgZHVyYXRpb24gb2YgdGhlIGJ1cyB0dXJuYXJvdW5kLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhIHZhbHVlIGJldHdlZW4gTWluX0RhdGEgPSAwIGFuZCBNYXhfRGF0YSA9IDE1LgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBub3RlIFRoaXMgcGFyYW1ldGVyIGlzIG9ubHkgdXNlZCBmb3IgbXVsdGlwbGV4ZWQgTk9SIEZsYXNoIG1lbW9yaWVzLiAgICAgICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQG5vdGUgVGhpcyBwYXJhbWV0ZXIgaXMgb25seSB1c2VkIGZvciBtdWx0aXBsZXhlZCBOT1IgRmxhc2ggbWVtb3JpZXMuICAgKi8KIAotICB1aW50MzJfdCBDTEtEaXZpc2lvbjsgICAgICAgICAgICAgICAgICAvKiE8IERlZmluZXMgdGhlIHBlcmlvZCBvZiBDTEsgY2xvY2sgb3V0cHV0IHNpZ25hbCwgZXhwcmVzc2VkIGluIG51bWJlciBvZiAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQ0xLIGN5Y2xlcy4gVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGEgdmFsdWUgYmV0d2VlbiBNaW5fRGF0YSA9IDIgYW5kIE1heF9EYXRhID0gMTYuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQG5vdGUgVGhpcyBwYXJhbWV0ZXIgaXMgbm90IHVzZWQgZm9yIGFzeW5jaHJvbm91cyBOT1IgRmxhc2gsIFNSQU0gb3IgUk9NIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjY2Vzc2VzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHVpbnQzMl90IENMS0RpdmlzaW9uOyAgICAgICAgICAgICAgICAgIC8qITwgRGVmaW5lcyB0aGUgcGVyaW9kIG9mIENMSyBjbG9jayBvdXRwdXQgc2lnbmFsLCBleHByZXNzZWQgaW4gbnVtYmVyIG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSENMSyBjeWNsZXMuIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhIHZhbHVlIGJldHdlZW4gTWluX0RhdGEgPSAyIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1heF9EYXRhID0gMTYuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQG5vdGUgVGhpcyBwYXJhbWV0ZXIgaXMgbm90IHVzZWQgZm9yIGFzeW5jaHJvbm91cyBOT1IgRmxhc2gsIFNSQU0gb3IgUk9NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWNjZXNzZXMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KIAogICB1aW50MzJfdCBEYXRhTGF0ZW5jeTsgICAgICAgICAgICAgICAgICAvKiE8IERlZmluZXMgdGhlIG51bWJlciBvZiBtZW1vcnkgY2xvY2sgY3ljbGVzIHRvIGlzc3VlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gdGhlIG1lbW9yeSBiZWZvcmUgZ2V0dGluZyB0aGUgZmlyc3QgZGF0YS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgcGFyYW1ldGVyIHZhbHVlIGRlcGVuZHMgb24gdGhlIG1lbW9yeSB0eXBlIGFzIHNob3duIGJlbG93OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gSXQgbXVzdCBiZSBzZXQgdG8gMCBpbiBjYXNlIG9mIGEgQ1JBTQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gSXQgaXMgZG9uJ3QgY2FyZSBpbiBhc3luY2hyb25vdXMgTk9SLCBTUkFNIG9yIFJPTSBhY2Nlc3NlcwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gSXQgbWF5IGFzc3VtZSBhIHZhbHVlIGJldHdlZW4gTWluX0RhdGEgPSAyIGFuZCBNYXhfRGF0YSA9IDE3IGluIE5PUiBGbGFzaCBtZW1vcmllcwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBzeW5jaHJvbm91cyBidXJzdCBtb2RlIGVuYWJsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSBJdCBtYXkgYXNzdW1lIGEgdmFsdWUgYmV0d2VlbiBNaW5fRGF0YSA9IDIgYW5kIE1heF9EYXRhID0gMTcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIE5PUiBGbGFzaCBtZW1vcmllcyB3aXRoIHN5bmNocm9ub3VzIGJ1cnN0IG1vZGUgZW5hYmxlICAgICAgICAgICAgICAqLwogCi0gIHVpbnQzMl90IEFjY2Vzc01vZGU7ICAgICAgICAgICAgICAgICAgIC8qITwgU3BlY2lmaWVzIHRoZSBhc3luY2hyb25vdXMgYWNjZXNzIG1vZGUuIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhIHZhbHVlIG9mIEByZWYgRk1DX0FjY2Vzc19Nb2RlICAgICAgICAgICAgICAgICAgICAgICovCi19Rk1DX05PUlNSQU1fVGltaW5nVHlwZURlZjsKKyAgdWludDMyX3QgQWNjZXNzTW9kZTsgICAgICAgICAgICAgICAgICAgLyohPCBTcGVjaWZpZXMgdGhlIGFzeW5jaHJvbm91cyBhY2Nlc3MgbW9kZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYSB2YWx1ZSBvZiBAcmVmIEZNQ19BY2Nlc3NfTW9kZSAgICAgICAgICAgICAgICAgICAqLworfSBGTUNfTk9SU1JBTV9UaW1pbmdUeXBlRGVmOwogCi0vKiogCi0gICogQGJyaWVmICBGTUMgTkFORCBDb25maWd1cmF0aW9uIFN0cnVjdHVyZSBkZWZpbml0aW9uICAKLSAgKi8gCisvKioKKyAgKiBAYnJpZWYgIEZNQyBOQU5EIENvbmZpZ3VyYXRpb24gU3RydWN0dXJlIGRlZmluaXRpb24KKyAgKi8KIHR5cGVkZWYgc3RydWN0CiB7CiAgIHVpbnQzMl90IE5hbmRCYW5rOyAgICAgICAgICAgICAgIC8qITwgU3BlY2lmaWVzIHRoZSBOQU5EIG1lbW9yeSBkZXZpY2UgdGhhdCB3aWxsIGJlIHVzZWQuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGEgdmFsdWUgb2YgQHJlZiBGTUNfTkFORF9CYW5rICAgICAgICAgICAgICAgICAgICAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhIHZhbHVlIG9mIEByZWYgRk1DX05BTkRfQmFuayAgICAgICAgICAgICAgICAgICovCiAKICAgdWludDMyX3QgV2FpdGZlYXR1cmU7ICAgICAgICAgICAgLyohPCBFbmFibGVzIG9yIGRpc2FibGVzIHRoZSBXYWl0IGZlYXR1cmUgZm9yIHRoZSBOQU5EIE1lbW9yeSBkZXZpY2UuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGFueSB2YWx1ZSBvZiBAcmVmIEZNQ19XYWl0X2ZlYXR1cmUgICAgICAgICAgICAgICAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhbnkgdmFsdWUgb2YgQHJlZiBGTUNfV2FpdF9mZWF0dXJlICAgICAgICAgICAgICovCiAKICAgdWludDMyX3QgTWVtb3J5RGF0YVdpZHRoOyAgICAgICAgLyohPCBTcGVjaWZpZXMgdGhlIGV4dGVybmFsIG1lbW9yeSBkZXZpY2Ugd2lkdGguCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGFueSB2YWx1ZSBvZiBAcmVmIEZNQ19OQU5EX0RhdGFfV2lkdGggICAgICAgICAgICAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhbnkgdmFsdWUgb2YgQHJlZiBGTUNfTkFORF9EYXRhX1dpZHRoICAgICAgICAgICovCiAKICAgdWludDMyX3QgRWNjQ29tcHV0YXRpb247ICAgICAgICAgLyohPCBFbmFibGVzIG9yIGRpc2FibGVzIHRoZSBFQ0MgY29tcHV0YXRpb24uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGFueSB2YWx1ZSBvZiBAcmVmIEZNQ19FQ0MgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhbnkgdmFsdWUgb2YgQHJlZiBGTUNfRUNDICAgICAgICAgICAgICAgICAgICAgICovCiAKICAgdWludDMyX3QgRUNDUGFnZVNpemU7ICAgICAgICAgICAgLyohPCBEZWZpbmVzIHRoZSBwYWdlIHNpemUgZm9yIHRoZSBleHRlbmRlZCBFQ0MuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGFueSB2YWx1ZSBvZiBAcmVmIEZNQ19FQ0NfUGFnZV9TaXplICAgICAgICAgICAgICAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhbnkgdmFsdWUgb2YgQHJlZiBGTUNfRUNDX1BhZ2VfU2l6ZSAgICAgICAgICAgICovCiAKICAgdWludDMyX3QgVENMUlNldHVwVGltZTsgICAgICAgICAgLyohPCBEZWZpbmVzIHRoZSBudW1iZXIgb2YgSENMSyBjeWNsZXMgdG8gY29uZmlndXJlIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGF5IGJldHdlZW4gQ0xFIGxvdyBhbmQgUkUgbG93LgpAQCAtNTI0LDkgKzMxOCw5IEBACiAgIHVpbnQzMl90IFRBUlNldHVwVGltZTsgICAgICAgICAgIC8qITwgRGVmaW5lcyB0aGUgbnVtYmVyIG9mIEhDTEsgY3ljbGVzIHRvIGNvbmZpZ3VyZSB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxheSBiZXR3ZWVuIEFMRSBsb3cgYW5kIFJFIGxvdy4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYSBudW1iZXIgYmV0d2VlbiBNaW5fRGF0YSA9IDAgYW5kIE1heF9EYXRhID0gMjU1ICovCi19Rk1DX05BTkRfSW5pdFR5cGVEZWY7Cit9IEZNQ19OQU5EX0luaXRUeXBlRGVmOwogCi0vKiogCisvKioKICAgKiBAYnJpZWYgIEZNQyBOQU5EIFRpbWluZyBwYXJhbWV0ZXJzIHN0cnVjdHVyZSBkZWZpbml0aW9uCiAgICovCiB0eXBlZGVmIHN0cnVjdApAQCAtNTQwLDcgKzMzNCw3IEBACiAgIHVpbnQzMl90IFdhaXRTZXR1cFRpbWU7ICAgICAgICAvKiE8IERlZmluZXMgdGhlIG1pbmltdW0gbnVtYmVyIG9mIEhDTEsgY3ljbGVzIHRvIGFzc2VydCB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZCBmb3IgTkFORC1GbGFzaCByZWFkIG9yIHdyaXRlIGFjY2VzcyB0bwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tb24vQXR0cmlidXRlIG9yIEkvTyBtZW1vcnkgc3BhY2UgKGRlcGVuZGluZyBvbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVtb3J5IHNwYWNlIHRpbWluZyB0byBiZSBjb25maWd1cmVkKS4gCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lbW9yeSBzcGFjZSB0aW1pbmcgdG8gYmUgY29uZmlndXJlZCkuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhIG51bWJlciBiZXR3ZWVuIE1pbl9EYXRhID0gMCBhbmQgTWF4X0RhdGEgPSAyNTQgICAqLwogCiAgIHVpbnQzMl90IEhvbGRTZXR1cFRpbWU7ICAgICAgICAvKiE8IERlZmluZXMgdGhlIG51bWJlciBvZiBIQ0xLIGNsb2NrIGN5Y2xlcyB0byBob2xkIGFkZHJlc3MKQEAgLTU1NSwxMSArMzQ5LDEyIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlIGFjY2VzcyB0byBjb21tb24vQXR0cmlidXRlIG9yIEkvTyBtZW1vcnkgc3BhY2UgKGRlcGVuZGluZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbiB0aGUgbWVtb3J5IHNwYWNlIHRpbWluZyB0byBiZSBjb25maWd1cmVkKS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGEgbnVtYmVyIGJldHdlZW4gTWluX0RhdGEgPSAwIGFuZCBNYXhfRGF0YSA9IDI1NCAgICovCi19Rk1DX05BTkRfUENDX1RpbWluZ1R5cGVEZWY7Cit9IEZNQ19OQU5EX1BDQ19UaW1pbmdUeXBlRGVmOwogCi0vKiogCi0gICogQGJyaWVmICBGTUMgU0RSQU0gQ29uZmlndXJhdGlvbiBTdHJ1Y3R1cmUgZGVmaW5pdGlvbiAgCi0gICovICAKKworLyoqCisgICogQGJyaWVmICBGTUMgU0RSQU0gQ29uZmlndXJhdGlvbiBTdHJ1Y3R1cmUgZGVmaW5pdGlvbgorICAqLwogdHlwZWRlZiBzdHJ1Y3QKIHsKICAgdWludDMyX3QgU0RCYW5rOyAgICAgICAgICAgICAgICAgICAgICAvKiE8IFNwZWNpZmllcyB0aGUgU0RSQU0gbWVtb3J5IGRldmljZSB0aGF0IHdpbGwgYmUgdXNlZC4KQEAgLTU4Myw1MyArMzc4LDUzIEBACiAgIHVpbnQzMl90IFdyaXRlUHJvdGVjdGlvbjsgICAgICAgICAgICAgLyohPCBFbmFibGVzIHRoZSBTRFJBTSBkZXZpY2UgdG8gYmUgYWNjZXNzZWQgaW4gd3JpdGUgbW9kZS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhIHZhbHVlIG9mIEByZWYgRk1DX1NEUkFNX1dyaXRlX1Byb3RlY3Rpb24uICAgKi8KIAotICB1aW50MzJfdCBTRENsb2NrUGVyaW9kOyAgICAgICAgICAgICAgIC8qITwgRGVmaW5lIHRoZSBTRFJBTSBDbG9jayBQZXJpb2QgZm9yIGJvdGggU0RSQU0gZGV2aWNlcyBhbmQgdGhleSBhbGxvdyAKKyAgdWludDMyX3QgU0RDbG9ja1BlcmlvZDsgICAgICAgICAgICAgICAvKiE8IERlZmluZSB0aGUgU0RSQU0gQ2xvY2sgUGVyaW9kIGZvciBib3RoIFNEUkFNIGRldmljZXMgYW5kIHRoZXkgYWxsb3cKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIGRpc2FibGUgdGhlIGNsb2NrIGJlZm9yZSBjaGFuZ2luZyBmcmVxdWVuY3kuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYSB2YWx1ZSBvZiBAcmVmIEZNQ19TRFJBTV9DbG9ja19QZXJpb2QuICAgICAgICovCiAKLSAgdWludDMyX3QgUmVhZEJ1cnN0OyAgICAgICAgICAgICAgICAgICAvKiE8IFRoaXMgYml0IGVuYWJsZSB0aGUgU0RSQU0gY29udHJvbGxlciB0byBhbnRpY2lwYXRlIHRoZSBuZXh0IHJlYWQgCisgIHVpbnQzMl90IFJlYWRCdXJzdDsgICAgICAgICAgICAgICAgICAgLyohPCBUaGlzIGJpdCBlbmFibGUgdGhlIFNEUkFNIGNvbnRyb2xsZXIgdG8gYW50aWNpcGF0ZSB0aGUgbmV4dCByZWFkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kcyBkdXJpbmcgdGhlIENBUyBsYXRlbmN5IGFuZCBzdG9yZXMgZGF0YSBpbiB0aGUgUmVhZCBGSUZPLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGEgdmFsdWUgb2YgQHJlZiBGTUNfU0RSQU1fUmVhZF9CdXJzdC4gICAgICAgICAqLwogCiAgIHVpbnQzMl90IFJlYWRQaXBlRGVsYXk7ICAgICAgICAgICAgICAgLyohPCBEZWZpbmUgdGhlIGRlbGF5IGluIHN5c3RlbSBjbG9jayBjeWNsZXMgb24gcmVhZCBkYXRhIHBhdGguCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYSB2YWx1ZSBvZiBAcmVmIEZNQ19TRFJBTV9SZWFkX1BpcGVfRGVsYXkuICAgICovCi19Rk1DX1NEUkFNX0luaXRUeXBlRGVmOworfSBGTUNfU0RSQU1fSW5pdFR5cGVEZWY7CiAKLS8qKiAKKy8qKgogICAqIEBicmllZiBGTUMgU0RSQU0gVGltaW5nIHBhcmFtZXRlcnMgc3RydWN0dXJlIGRlZmluaXRpb24KICAgKi8KIHR5cGVkZWYgc3RydWN0CiB7Ci0gIHVpbnQzMl90IExvYWRUb0FjdGl2ZURlbGF5OyAgICAgICAgICAgIC8qITwgRGVmaW5lcyB0aGUgZGVsYXkgYmV0d2VlbiBhIExvYWQgTW9kZSBSZWdpc3RlciBjb21tYW5kIGFuZCAKKyAgdWludDMyX3QgTG9hZFRvQWN0aXZlRGVsYXk7ICAgICAgICAgICAgLyohPCBEZWZpbmVzIHRoZSBkZWxheSBiZXR3ZWVuIGEgTG9hZCBNb2RlIFJlZ2lzdGVyIGNvbW1hbmQgYW5kCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW4gYWN0aXZlIG9yIFJlZnJlc2ggY29tbWFuZCBpbiBudW1iZXIgb2YgbWVtb3J5IGNsb2NrIGN5Y2xlcy4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYSB2YWx1ZSBiZXR3ZWVuIE1pbl9EYXRhID0gMSBhbmQgTWF4X0RhdGEgPSAxNiAgKi8KIAotICB1aW50MzJfdCBFeGl0U2VsZlJlZnJlc2hEZWxheTsgICAgICAgICAvKiE8IERlZmluZXMgdGhlIGRlbGF5IGZyb20gcmVsZWFzaW5nIHRoZSBzZWxmIHJlZnJlc2ggY29tbWFuZCB0byAKKyAgdWludDMyX3QgRXhpdFNlbGZSZWZyZXNoRGVsYXk7ICAgICAgICAgLyohPCBEZWZpbmVzIHRoZSBkZWxheSBmcm9tIHJlbGVhc2luZyB0aGUgc2VsZiByZWZyZXNoIGNvbW1hbmQgdG8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc3N1aW5nIHRoZSBBY3RpdmF0ZSBjb21tYW5kIGluIG51bWJlciBvZiBtZW1vcnkgY2xvY2sgY3ljbGVzLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhIHZhbHVlIGJldHdlZW4gTWluX0RhdGEgPSAxIGFuZCBNYXhfRGF0YSA9IDE2ICAqLwogCi0gIHVpbnQzMl90IFNlbGZSZWZyZXNoVGltZTsgICAgICAgICAgICAgIC8qITwgRGVmaW5lcyB0aGUgbWluaW11bSBTZWxmIFJlZnJlc2ggcGVyaW9kIGluIG51bWJlciBvZiBtZW1vcnkgY2xvY2sgCisgIHVpbnQzMl90IFNlbGZSZWZyZXNoVGltZTsgICAgICAgICAgICAgIC8qITwgRGVmaW5lcyB0aGUgbWluaW11bSBTZWxmIFJlZnJlc2ggcGVyaW9kIGluIG51bWJlciBvZiBtZW1vcnkgY2xvY2sKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjeWNsZXMuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGEgdmFsdWUgYmV0d2VlbiBNaW5fRGF0YSA9IDEgYW5kIE1heF9EYXRhID0gMTYgICovCiAKICAgdWludDMyX3QgUm93Q3ljbGVEZWxheTsgICAgICAgICAgICAgICAgLyohPCBEZWZpbmVzIHRoZSBkZWxheSBiZXR3ZWVuIHRoZSBSZWZyZXNoIGNvbW1hbmQgYW5kIHRoZSBBY3RpdmF0ZSBjb21tYW5kCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIHRoZSBkZWxheSBiZXR3ZWVuIHR3byBjb25zZWN1dGl2ZSBSZWZyZXNoIGNvbW1hbmRzIGluIG51bWJlciBvZiAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgdGhlIGRlbGF5IGJldHdlZW4gdHdvIGNvbnNlY3V0aXZlIFJlZnJlc2ggY29tbWFuZHMgaW4gbnVtYmVyIG9mCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVtb3J5IGNsb2NrIGN5Y2xlcy4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYSB2YWx1ZSBiZXR3ZWVuIE1pbl9EYXRhID0gMSBhbmQgTWF4X0RhdGEgPSAxNiAgKi8KIAogICB1aW50MzJfdCBXcml0ZVJlY292ZXJ5VGltZTsgICAgICAgICAgICAvKiE8IERlZmluZXMgdGhlIFdyaXRlIHJlY292ZXJ5IFRpbWUgaW4gbnVtYmVyIG9mIG1lbW9yeSBjbG9jayBjeWNsZXMuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGEgdmFsdWUgYmV0d2VlbiBNaW5fRGF0YSA9IDEgYW5kIE1heF9EYXRhID0gMTYgICovCiAKLSAgdWludDMyX3QgUlBEZWxheTsgICAgICAgICAgICAgICAgICAgICAgLyohPCBEZWZpbmVzIHRoZSBkZWxheSBiZXR3ZWVuIGEgUHJlY2hhcmdlIENvbW1hbmQgYW5kIGFuIG90aGVyIGNvbW1hbmQgCisgIHVpbnQzMl90IFJQRGVsYXk7ICAgICAgICAgICAgICAgICAgICAgIC8qITwgRGVmaW5lcyB0aGUgZGVsYXkgYmV0d2VlbiBhIFByZWNoYXJnZSBDb21tYW5kIGFuZCBhbiBvdGhlciBjb21tYW5kCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gbnVtYmVyIG9mIG1lbW9yeSBjbG9jayBjeWNsZXMuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGEgdmFsdWUgYmV0d2VlbiBNaW5fRGF0YSA9IDEgYW5kIE1heF9EYXRhID0gMTYgICovCiAKLSAgdWludDMyX3QgUkNERGVsYXk7ICAgICAgICAgICAgICAgICAgICAgLyohPCBEZWZpbmVzIHRoZSBkZWxheSBiZXR3ZWVuIHRoZSBBY3RpdmF0ZSBDb21tYW5kIGFuZCBhIFJlYWQvV3JpdGUgCisgIHVpbnQzMl90IFJDRERlbGF5OyAgICAgICAgICAgICAgICAgICAgIC8qITwgRGVmaW5lcyB0aGUgZGVsYXkgYmV0d2VlbiB0aGUgQWN0aXZhdGUgQ29tbWFuZCBhbmQgYSBSZWFkL1dyaXRlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZCBpbiBudW1iZXIgb2YgbWVtb3J5IGNsb2NrIGN5Y2xlcy4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYSB2YWx1ZSBiZXR3ZWVuIE1pbl9EYXRhID0gMSBhbmQgTWF4X0RhdGEgPSAxNiAgKi8gCi19Rk1DX1NEUkFNX1RpbWluZ1R5cGVEZWY7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGEgdmFsdWUgYmV0d2VlbiBNaW5fRGF0YSA9IDEgYW5kIE1heF9EYXRhID0gMTYgICovCit9IEZNQ19TRFJBTV9UaW1pbmdUeXBlRGVmOwogCi0vKiogCisvKioKICAgKiBAYnJpZWYgU0RSQU0gY29tbWFuZCBwYXJhbWV0ZXJzIHN0cnVjdHVyZSBkZWZpbml0aW9uCiAgICovCiB0eXBlZGVmIHN0cnVjdApAQCAtNjQyLDkgKzQzNywxMCBAQAogCiAgIHVpbnQzMl90IEF1dG9SZWZyZXNoTnVtYmVyOyAgICAgICAgICAgIC8qITwgRGVmaW5lcyB0aGUgbnVtYmVyIG9mIGNvbnNlY3V0aXZlIGF1dG8gcmVmcmVzaCBjb21tYW5kIGlzc3VlZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIGF1dG8gcmVmcmVzaCBtb2RlLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhIHZhbHVlIGJldHdlZW4gTWluX0RhdGEgPSAxIGFuZCBNYXhfRGF0YSA9IDE2ICAgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYSB2YWx1ZSBiZXR3ZWVuIE1pbl9EYXRhID0gMSBhbmQgTWF4X0RhdGEgPSAxNSAgICovCisKICAgdWludDMyX3QgTW9kZVJlZ2lzdGVyRGVmaW5pdGlvbjsgICAgICAgLyohPCBEZWZpbmVzIHRoZSBTRFJBTSBNb2RlIHJlZ2lzdGVyIGNvbnRlbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi19Rk1DX1NEUkFNX0NvbW1hbmRUeXBlRGVmOworfSBGTUNfU0RSQU1fQ29tbWFuZFR5cGVEZWY7CiAvKioKICAgKiBAfQogICAqLwpAQCAtNjU0LDE3ICs0NTAsMTcgQEAKICAgKiBAewogICAqLwogCi0vKiogQGRlZmdyb3VwIEZNQ19MTF9OT1JfU1JBTV9Db250cm9sbGVyIEZNQyBOT1IvU1JBTSBDb250cm9sbGVyIAorLyoqIEBkZWZncm91cCBGTUNfTExfTk9SX1NSQU1fQ29udHJvbGxlciBGTUMgTk9SL1NSQU0gQ29udHJvbGxlcgogICAqIEB7CiAgICovCiAKIC8qKiBAZGVmZ3JvdXAgRk1DX05PUlNSQU1fQmFuayBGTUMgTk9SL1NSQU0gQmFuawogICAqIEB7CiAgICovCi0jZGVmaW5lIEZNQ19OT1JTUkFNX0JBTksxICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDBVKQotI2RlZmluZSBGTUNfTk9SU1JBTV9CQU5LMiAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAyVSkKLSNkZWZpbmUgRk1DX05PUlNSQU1fQkFOSzMgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwNFUpCi0jZGVmaW5lIEZNQ19OT1JTUkFNX0JBTks0ICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDZVKQorI2RlZmluZSBGTUNfTk9SU1JBTV9CQU5LMSAgICAgICAgICAgICAgICAgICAgICAgKDB4MDAwMDAwMDBVKQorI2RlZmluZSBGTUNfTk9SU1JBTV9CQU5LMiAgICAgICAgICAgICAgICAgICAgICAgKDB4MDAwMDAwMDJVKQorI2RlZmluZSBGTUNfTk9SU1JBTV9CQU5LMyAgICAgICAgICAgICAgICAgICAgICAgKDB4MDAwMDAwMDRVKQorI2RlZmluZSBGTUNfTk9SU1JBTV9CQU5LNCAgICAgICAgICAgICAgICAgICAgICAgKDB4MDAwMDAwMDZVKQogLyoqCiAgICogQH0KICAgKi8KQEAgLTY3Miw4ICs0NjgsOCBAQAogLyoqIEBkZWZncm91cCBGTUNfRGF0YV9BZGRyZXNzX0J1c19NdWx0aXBsZXhpbmcgRk1DIERhdGEgQWRkcmVzcyBCdXMgTXVsdGlwbGV4aW5nCiAgICogQHsKICAgKi8KLSNkZWZpbmUgRk1DX0RBVEFfQUREUkVTU19NVVhfRElTQUJMRSAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMFUpCi0jZGVmaW5lIEZNQ19EQVRBX0FERFJFU1NfTVVYX0VOQUJMRSAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDJVKQorI2RlZmluZSBGTUNfREFUQV9BRERSRVNTX01VWF9ESVNBQkxFICAgICAgICAgICAgKDB4MDAwMDAwMDBVKQorI2RlZmluZSBGTUNfREFUQV9BRERSRVNTX01VWF9FTkFCTEUgICAgICAgICAgICAgKDB4MDAwMDAwMDJVKQogLyoqCiAgICogQH0KICAgKi8KQEAgLTY4MSw5ICs0NzcsOSBAQAogLyoqIEBkZWZncm91cCBGTUNfTWVtb3J5X1R5cGUgRk1DIE1lbW9yeSBUeXBlCiAgICogQHsKICAgKi8KLSNkZWZpbmUgRk1DX01FTU9SWV9UWVBFX1NSQU0gICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMFUpCi0jZGVmaW5lIEZNQ19NRU1PUllfVFlQRV9QU1JBTSAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDRVKQotI2RlZmluZSBGTUNfTUVNT1JZX1RZUEVfTk9SICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDA4VSkKKyNkZWZpbmUgRk1DX01FTU9SWV9UWVBFX1NSQU0gICAgICAgICAgICAgICAgICAgICgweDAwMDAwMDAwVSkKKyNkZWZpbmUgRk1DX01FTU9SWV9UWVBFX1BTUkFNICAgICAgICAgICAgICAgICAgICgweDAwMDAwMDA0VSkKKyNkZWZpbmUgRk1DX01FTU9SWV9UWVBFX05PUiAgICAgICAgICAgICAgICAgICAgICgweDAwMDAwMDA4VSkKIC8qKgogICAqIEB9CiAgICovCkBAIC02OTEsOSArNDg3LDkgQEAKIC8qKiBAZGVmZ3JvdXAgRk1DX05PUlNSQU1fRGF0YV9XaWR0aCBGTUMgTk9SU1JBTSBEYXRhIFdpZHRoCiAgICogQHsKICAgKi8KLSNkZWZpbmUgRk1DX05PUlNSQU1fTUVNX0JVU19XSURUSF84ICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMFUpCi0jZGVmaW5lIEZNQ19OT1JTUkFNX01FTV9CVVNfV0lEVEhfMTYgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMTBVKQotI2RlZmluZSBGTUNfTk9SU1JBTV9NRU1fQlVTX1dJRFRIXzMyICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDIwVSkKKyNkZWZpbmUgRk1DX05PUlNSQU1fTUVNX0JVU19XSURUSF84ICAgICAgICAgICAgICgweDAwMDAwMDAwVSkKKyNkZWZpbmUgRk1DX05PUlNSQU1fTUVNX0JVU19XSURUSF8xNiAgICAgICAgICAgICgweDAwMDAwMDEwVSkKKyNkZWZpbmUgRk1DX05PUlNSQU1fTUVNX0JVU19XSURUSF8zMiAgICAgICAgICAgICgweDAwMDAwMDIwVSkKIC8qKgogICAqIEB9CiAgICovCkBAIC03MDEsOCArNDk3LDggQEAKIC8qKiBAZGVmZ3JvdXAgRk1DX05PUlNSQU1fRmxhc2hfQWNjZXNzIEZNQyBOT1IvU1JBTSBGbGFzaCBBY2Nlc3MKICAgKiBAewogICAqLwotI2RlZmluZSBGTUNfTk9SU1JBTV9GTEFTSF9BQ0NFU1NfRU5BQkxFICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDQwVSkKLSNkZWZpbmUgRk1DX05PUlNSQU1fRkxBU0hfQUNDRVNTX0RJU0FCTEUgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMFUpCisjZGVmaW5lIEZNQ19OT1JTUkFNX0ZMQVNIX0FDQ0VTU19FTkFCTEUgICAgICAgICAoMHgwMDAwMDA0MFUpCisjZGVmaW5lIEZNQ19OT1JTUkFNX0ZMQVNIX0FDQ0VTU19ESVNBQkxFICAgICAgICAoMHgwMDAwMDAwMFUpCiAvKioKICAgKiBAfQogICAqLwpAQCAtNzEwLDggKzUwNiw4IEBACiAvKiogQGRlZmdyb3VwIEZNQ19CdXJzdF9BY2Nlc3NfTW9kZSBGTUMgQnVyc3QgQWNjZXNzIE1vZGUKICAgKiBAewogICAqLwotI2RlZmluZSBGTUNfQlVSU1RfQUNDRVNTX01PREVfRElTQUJMRSAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAwVSkgCi0jZGVmaW5lIEZNQ19CVVJTVF9BQ0NFU1NfTU9ERV9FTkFCTEUgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAxMDBVKQorI2RlZmluZSBGTUNfQlVSU1RfQUNDRVNTX01PREVfRElTQUJMRSAgICAgICAgICAgKDB4MDAwMDAwMDBVKQorI2RlZmluZSBGTUNfQlVSU1RfQUNDRVNTX01PREVfRU5BQkxFICAgICAgICAgICAgKDB4MDAwMDAxMDBVKQogLyoqCiAgICogQH0KICAgKi8KQEAgLTcxOSw4ICs1MTUsOCBAQAogLyoqIEBkZWZncm91cCBGTUNfV2FpdF9TaWduYWxfUG9sYXJpdHkgRk1DIFdhaXQgU2lnbmFsIFBvbGFyaXR5CiAgICogQHsKICAgKi8KLSNkZWZpbmUgRk1DX1dBSVRfU0lHTkFMX1BPTEFSSVRZX0xPVyAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMFUpCi0jZGVmaW5lIEZNQ19XQUlUX1NJR05BTF9QT0xBUklUWV9ISUdIICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAyMDBVKQorI2RlZmluZSBGTUNfV0FJVF9TSUdOQUxfUE9MQVJJVFlfTE9XICAgICAgICAgICAgKDB4MDAwMDAwMDBVKQorI2RlZmluZSBGTUNfV0FJVF9TSUdOQUxfUE9MQVJJVFlfSElHSCAgICAgICAgICAgKDB4MDAwMDAyMDBVKQogLyoqCiAgICogQH0KICAgKi8KQEAgLTcyOCw4ICs1MjQsOCBAQAogLyoqIEBkZWZncm91cCBGTUNfV2FpdF9UaW1pbmcgRk1DIFdhaXQgVGltaW5nCiAgICogQHsKICAgKi8KLSNkZWZpbmUgRk1DX1dBSVRfVElNSU5HX0JFRk9SRV9XUyAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMFUpCi0jZGVmaW5lIEZNQ19XQUlUX1RJTUlOR19EVVJJTkdfV1MgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDA4MDBVKSAKKyNkZWZpbmUgRk1DX1dBSVRfVElNSU5HX0JFRk9SRV9XUyAgICAgICAgICAgICAgICgweDAwMDAwMDAwVSkKKyNkZWZpbmUgRk1DX1dBSVRfVElNSU5HX0RVUklOR19XUyAgICAgICAgICAgICAgICgweDAwMDAwODAwVSkKIC8qKgogICAqIEB9CiAgICovCkBAIC03MzcsOCArNTMzLDggQEAKIC8qKiBAZGVmZ3JvdXAgRk1DX1dyaXRlX09wZXJhdGlvbiBGTUMgV3JpdGUgT3BlcmF0aW9uCiAgICogQHsKICAgKi8KLSNkZWZpbmUgRk1DX1dSSVRFX09QRVJBVElPTl9ESVNBQkxFICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMFUpCi0jZGVmaW5lIEZNQ19XUklURV9PUEVSQVRJT05fRU5BQkxFICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDEwMDBVKQorI2RlZmluZSBGTUNfV1JJVEVfT1BFUkFUSU9OX0RJU0FCTEUgICAgICAgICAgICAgKDB4MDAwMDAwMDBVKQorI2RlZmluZSBGTUNfV1JJVEVfT1BFUkFUSU9OX0VOQUJMRSAgICAgICAgICAgICAgKDB4MDAwMDEwMDBVKQogLyoqCiAgICogQH0KICAgKi8KQEAgLTc0Niw4ICs1NDIsOCBAQAogLyoqIEBkZWZncm91cCBGTUNfV2FpdF9TaWduYWwgRk1DIFdhaXQgU2lnbmFsCiAgICogQHsKICAgKi8KLSNkZWZpbmUgRk1DX1dBSVRfU0lHTkFMX0RJU0FCTEUgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMFUpCi0jZGVmaW5lIEZNQ19XQUlUX1NJR05BTF9FTkFCTEUgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDIwMDBVKQorI2RlZmluZSBGTUNfV0FJVF9TSUdOQUxfRElTQUJMRSAgICAgICAgICAgICAgICAgKDB4MDAwMDAwMDBVKQorI2RlZmluZSBGTUNfV0FJVF9TSUdOQUxfRU5BQkxFICAgICAgICAgICAgICAgICAgKDB4MDAwMDIwMDBVKQogLyoqCiAgICogQH0KICAgKi8KQEAgLTc1NSw4ICs1NTEsOCBAQAogLyoqIEBkZWZncm91cCBGTUNfRXh0ZW5kZWRfTW9kZSBGTUMgRXh0ZW5kZWQgTW9kZQogICAqIEB7CiAgICovCi0jZGVmaW5lIEZNQ19FWFRFTkRFRF9NT0RFX0RJU0FCTEUgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDBVKQotI2RlZmluZSBGTUNfRVhURU5ERURfTU9ERV9FTkFCTEUgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDA0MDAwVSkKKyNkZWZpbmUgRk1DX0VYVEVOREVEX01PREVfRElTQUJMRSAgICAgICAgICAgICAgICgweDAwMDAwMDAwVSkKKyNkZWZpbmUgRk1DX0VYVEVOREVEX01PREVfRU5BQkxFICAgICAgICAgICAgICAgICgweDAwMDA0MDAwVSkKIC8qKgogICAqIEB9CiAgICovCkBAIC03NjQsNzMgKzU2MCw3NSBAQAogLyoqIEBkZWZncm91cCBGTUNfQXN5bmNocm9ub3VzV2FpdCBGTUMgQXN5bmNocm9ub3VzIFdhaXQKICAgKiBAewogICAqLwotI2RlZmluZSBGTUNfQVNZTkNIUk9OT1VTX1dBSVRfRElTQUJMRSAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAwVSkKLSNkZWZpbmUgRk1DX0FTWU5DSFJPTk9VU19XQUlUX0VOQUJMRSAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwODAwMFUpCisjZGVmaW5lIEZNQ19BU1lOQ0hST05PVVNfV0FJVF9ESVNBQkxFICAgICAgICAgICAoMHgwMDAwMDAwMFUpCisjZGVmaW5lIEZNQ19BU1lOQ0hST05PVVNfV0FJVF9FTkFCTEUgICAgICAgICAgICAoMHgwMDAwODAwMFUpCiAvKioKICAgKiBAfQotICAqLyAgCisgICovCiAKIC8qKiBAZGVmZ3JvdXAgRk1DX1BhZ2VfU2l6ZSBGTUMgUGFnZSBTaXplCiAgICogQHsKICAgKi8KLSNkZWZpbmUgRk1DX1BBR0VfU0laRV9OT05FICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDBVKQotI2RlZmluZSBGTUNfUEFHRV9TSVpFXzEyOCAgICAgICAgICAgICgodWludDMyX3QpRk1DX0JDUjFfQ1BTSVpFXzApCi0jZGVmaW5lIEZNQ19QQUdFX1NJWkVfMjU2ICAgICAgICAgICAgKCh1aW50MzJfdClGTUNfQkNSMV9DUFNJWkVfMSkKLSNkZWZpbmUgRk1DX1BBR0VfU0laRV81MTIgICAgICAgICAgICAoKHVpbnQzMl90KShGTUNfQkNSMV9DUFNJWkVfMCB8IEZNQ19CQ1IxX0NQU0laRV8xKSkKLSNkZWZpbmUgRk1DX1BBR0VfU0laRV8xMDI0ICAgICAgICAgICAoKHVpbnQzMl90KUZNQ19CQ1IxX0NQU0laRV8yKQorI2RlZmluZSBGTUNfUEFHRV9TSVpFX05PTkUgICAgICAgICAgICAgICAgICAgICAgKDB4MDAwMDAwMDBVKQorI2RlZmluZSBGTUNfUEFHRV9TSVpFXzEyOCAgICAgICAgICAgICAgICAgICAgICAgRk1DX0JDUjFfQ1BTSVpFXzAKKyNkZWZpbmUgRk1DX1BBR0VfU0laRV8yNTYgICAgICAgICAgICAgICAgICAgICAgIEZNQ19CQ1IxX0NQU0laRV8xCisjZGVmaW5lIEZNQ19QQUdFX1NJWkVfNTEyICAgICAgICAgICAgICAgICAgICAgICAoRk1DX0JDUjFfQ1BTSVpFXzBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBGTUNfQkNSMV9DUFNJWkVfMSkKKyNkZWZpbmUgRk1DX1BBR0VfU0laRV8xMDI0ICAgICAgICAgICAgICAgICAgICAgIEZNQ19CQ1IxX0NQU0laRV8yCiAvKioKICAgKiBAfQotICAqLyAgCisgICovCiAKIC8qKiBAZGVmZ3JvdXAgRk1DX1dyaXRlX0J1cnN0IEZNQyBXcml0ZSBCdXJzdAogICAqIEB7CiAgICovCi0jZGVmaW5lIEZNQ19XUklURV9CVVJTVF9ESVNBQkxFICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDBVKQotI2RlZmluZSBGTUNfV1JJVEVfQlVSU1RfRU5BQkxFICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDgwMDAwVSkgCisjZGVmaW5lIEZNQ19XUklURV9CVVJTVF9ESVNBQkxFICAgICAgICAgICAgICAgICAoMHgwMDAwMDAwMFUpCisjZGVmaW5lIEZNQ19XUklURV9CVVJTVF9FTkFCTEUgICAgICAgICAgICAgICAgICAoMHgwMDA4MDAwMFUpCiAvKioKICAgKiBAfQogICAqLwotICAKKwogLyoqIEBkZWZncm91cCBGTUNfQ29udGlub3VzX0Nsb2NrIEZNQyBDb250aW51b3VzIENsb2NrCiAgICogQHsKICAgKi8KLSNkZWZpbmUgRk1DX0NPTlRJTlVPVVNfQ0xPQ0tfU1lOQ19PTkxZICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMFUpCi0jZGVmaW5lIEZNQ19DT05USU5VT1VTX0NMT0NLX1NZTkNfQVNZTkMgICAgICAgICAoKHVpbnQzMl90KTB4MDAxMDAwMDBVKQorI2RlZmluZSBGTUNfQ09OVElOVU9VU19DTE9DS19TWU5DX09OTFkgICAgICAgICAgKDB4MDAwMDAwMDBVKQorI2RlZmluZSBGTUNfQ09OVElOVU9VU19DTE9DS19TWU5DX0FTWU5DICAgICAgICAgKDB4MDAxMDAwMDBVKQogLyoqCiAgICogQH0KLSAgKi8gCisgICovCiAKLS8qKiBAZGVmZ3JvdXAgRk1DX1dyaXRlX0ZJRk8gRk1DIFdyaXRlIEZJRk8gCisvKiogQGRlZmdyb3VwIEZNQ19Xcml0ZV9GSUZPIEZNQyBXcml0ZSBGSUZPCiAgICogQHsKICAgKi8KLSNkZWZpbmUgRk1DX1dSSVRFX0ZJRk9fRElTQUJMRSAgICAgICAgICAgKCh1aW50MzJfdClGTUNfQkNSMV9XRkRJUykKLSNkZWZpbmUgRk1DX1dSSVRFX0ZJRk9fRU5BQkxFICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAwVSkKKyNkZWZpbmUgRk1DX1dSSVRFX0ZJRk9fRElTQUJMRSAgICAgICAgICAgICAgICAgIEZNQ19CQ1IxX1dGRElTCisjZGVmaW5lIEZNQ19XUklURV9GSUZPX0VOQUJMRSAgICAgICAgICAgICAgICAgICAoMHgwMDAwMDAwMFUpCiAvKioKICAgKiBAfQogICAqLwotCQotLyoqIEBkZWZncm91cCBGTUNfQWNjZXNzX01vZGUgRk1DIEFjY2VzcyBNb2RlIAotICAqIEB7Ci0gICovCi0jZGVmaW5lIEZNQ19BQ0NFU1NfTU9ERV9BICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAwVSkKLSNkZWZpbmUgRk1DX0FDQ0VTU19NT0RFX0IgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MTAwMDAwMDBVKSAKLSNkZWZpbmUgRk1DX0FDQ0VTU19NT0RFX0MgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MjAwMDAwMDBVKQotI2RlZmluZSBGTUNfQUNDRVNTX01PREVfRCAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgzMDAwMDAwMCkKLS8qKgotICAqIEB9Ci0gICovCi0gICAgCi0vKioKLSAgKiBAfQotICAqLyAKIAotLyoqIEBkZWZncm91cCBGTUNfTExfTkFORF9Db250cm9sbGVyIEZNQyBOQU5EIENvbnRyb2xsZXIgCisvKiogQGRlZmdyb3VwIEZNQ19BY2Nlc3NfTW9kZSBGTUMgQWNjZXNzIE1vZGUKICAgKiBAewogICAqLwotLyoqIEBkZWZncm91cCBGTUNfTkFORF9CYW5rIEZNQyBOQU5EIEJhbmsgCisjZGVmaW5lIEZNQ19BQ0NFU1NfTU9ERV9BICAgICAgICAgICAgICAgICAgICAgICAoMHgwMDAwMDAwMFUpCisjZGVmaW5lIEZNQ19BQ0NFU1NfTU9ERV9CICAgICAgICAgICAgICAgICAgICAgICAoMHgxMDAwMDAwMFUpCisjZGVmaW5lIEZNQ19BQ0NFU1NfTU9ERV9DICAgICAgICAgICAgICAgICAgICAgICAoMHgyMDAwMDAwMFUpCisjZGVmaW5lIEZNQ19BQ0NFU1NfTU9ERV9EICAgICAgICAgICAgICAgICAgICAgICAoMHgzMDAwMDAwMFUpCisvKioKKyAgKiBAfQorICAqLworCisvKioKKyAgKiBAfQorICAqLworCisKKy8qKiBAZGVmZ3JvdXAgRk1DX0xMX05BTkRfQ29udHJvbGxlciBGTUMgTkFORCBDb250cm9sbGVyCiAgICogQHsKICAgKi8KLSNkZWZpbmUgRk1DX05BTkRfQkFOSzMgICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDEwMFUpIAorLyoqIEBkZWZncm91cCBGTUNfTkFORF9CYW5rIEZNQyBOQU5EIEJhbmsKKyAgKiBAeworICAqLworI2RlZmluZSBGTUNfTkFORF9CQU5LMyAgICAgICAgICAgICAgICAgICAgICAgICAgKDB4MDAwMDAxMDBVKQogLyoqCiAgICogQH0KICAgKi8KQEAgLTgzOCw3NCArNjM2LDc0IEBACiAvKiogQGRlZmdyb3VwIEZNQ19XYWl0X2ZlYXR1cmUgRk1DIFdhaXQgZmVhdHVyZQogICAqIEB7CiAgICovCi0jZGVmaW5lIEZNQ19OQU5EX1dBSVRfRkVBVFVSRV9ESVNBQkxFICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDBVKQotI2RlZmluZSBGTUNfTkFORF9XQUlUX0ZFQVRVUkVfRU5BQkxFICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAyVSkKKyNkZWZpbmUgRk1DX05BTkRfV0FJVF9GRUFUVVJFX0RJU0FCTEUgICAgICAgICAgICgweDAwMDAwMDAwVSkKKyNkZWZpbmUgRk1DX05BTkRfV0FJVF9GRUFUVVJFX0VOQUJMRSAgICAgICAgICAgICgweDAwMDAwMDAyVSkKIC8qKgogICAqIEB9CiAgICovCiAKLS8qKiBAZGVmZ3JvdXAgRk1DX1BDUl9NZW1vcnlfVHlwZSBGTUMgUENSIE1lbW9yeSBUeXBlIAorLyoqIEBkZWZncm91cCBGTUNfUENSX01lbW9yeV9UeXBlIEZNQyBQQ1IgTWVtb3J5IFR5cGUKICAgKiBAewogICAqLwotI2RlZmluZSBGTUNfUENSX01FTU9SWV9UWVBFX05BTkQgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDA4VSkKKyNkZWZpbmUgRk1DX1BDUl9NRU1PUllfVFlQRV9OQU5EICAgICAgICAgICAgICAgICgweDAwMDAwMDA4VSkKIC8qKgogICAqIEB9CiAgICovCiAKLS8qKiBAZGVmZ3JvdXAgRk1DX05BTkRfRGF0YV9XaWR0aCBGTUMgTkFORCBEYXRhIFdpZHRoIAorLyoqIEBkZWZncm91cCBGTUNfTkFORF9EYXRhX1dpZHRoIEZNQyBOQU5EIERhdGEgV2lkdGgKICAgKiBAewogICAqLwotI2RlZmluZSBGTUNfTkFORF9NRU1fQlVTX1dJRFRIXzggICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAwVSkKLSNkZWZpbmUgRk1DX05BTkRfTUVNX0JVU19XSURUSF8xNiAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAxMFUpCisjZGVmaW5lIEZNQ19OQU5EX01FTV9CVVNfV0lEVEhfOCAgICAgICAgICAgICAgICAoMHgwMDAwMDAwMFUpCisjZGVmaW5lIEZNQ19OQU5EX01FTV9CVVNfV0lEVEhfMTYgICAgICAgICAgICAgICAoMHgwMDAwMDAxMFUpCiAvKioKICAgKiBAfQogICAqLwogCi0vKiogQGRlZmdyb3VwIEZNQ19FQ0MgRk1DIEVDQyAKKy8qKiBAZGVmZ3JvdXAgRk1DX0VDQyBGTUMgRUNDCiAgICogQHsKICAgKi8KLSNkZWZpbmUgRk1DX05BTkRfRUNDX0RJU0FCTEUgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMFUpCi0jZGVmaW5lIEZNQ19OQU5EX0VDQ19FTkFCTEUgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwNDBVKQorI2RlZmluZSBGTUNfTkFORF9FQ0NfRElTQUJMRSAgICAgICAgICAgICAgICAgICAgKDB4MDAwMDAwMDBVKQorI2RlZmluZSBGTUNfTkFORF9FQ0NfRU5BQkxFICAgICAgICAgICAgICAgICAgICAgKDB4MDAwMDAwNDBVKQogLyoqCiAgICogQH0KICAgKi8KIAotLyoqIEBkZWZncm91cCBGTUNfRUNDX1BhZ2VfU2l6ZSBGTUMgRUNDIFBhZ2UgU2l6ZSAKKy8qKiBAZGVmZ3JvdXAgRk1DX0VDQ19QYWdlX1NpemUgRk1DIEVDQyBQYWdlIFNpemUKICAgKiBAewogICAqLwotI2RlZmluZSBGTUNfTkFORF9FQ0NfUEFHRV9TSVpFXzI1NkJZVEUgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAwVSkKLSNkZWZpbmUgRk1DX05BTkRfRUNDX1BBR0VfU0laRV81MTJCWVRFICAgICAgICAgICgodWludDMyX3QpMHgwMDAyMDAwMFUpCi0jZGVmaW5lIEZNQ19OQU5EX0VDQ19QQUdFX1NJWkVfMTAyNEJZVEUgICAgICAgICAoKHVpbnQzMl90KTB4MDAwNDAwMDBVKQotI2RlZmluZSBGTUNfTkFORF9FQ0NfUEFHRV9TSVpFXzIwNDhCWVRFICAgICAgICAgKCh1aW50MzJfdCkweDAwMDYwMDAwVSkKLSNkZWZpbmUgRk1DX05BTkRfRUNDX1BBR0VfU0laRV80MDk2QllURSAgICAgICAgICgodWludDMyX3QpMHgwMDA4MDAwMFUpCi0jZGVmaW5lIEZNQ19OQU5EX0VDQ19QQUdFX1NJWkVfODE5MkJZVEUgICAgICAgICAoKHVpbnQzMl90KTB4MDAwQTAwMDBVKQorI2RlZmluZSBGTUNfTkFORF9FQ0NfUEFHRV9TSVpFXzI1NkJZVEUgICAgICAgICAgKDB4MDAwMDAwMDBVKQorI2RlZmluZSBGTUNfTkFORF9FQ0NfUEFHRV9TSVpFXzUxMkJZVEUgICAgICAgICAgKDB4MDAwMjAwMDBVKQorI2RlZmluZSBGTUNfTkFORF9FQ0NfUEFHRV9TSVpFXzEwMjRCWVRFICAgICAgICAgKDB4MDAwNDAwMDBVKQorI2RlZmluZSBGTUNfTkFORF9FQ0NfUEFHRV9TSVpFXzIwNDhCWVRFICAgICAgICAgKDB4MDAwNjAwMDBVKQorI2RlZmluZSBGTUNfTkFORF9FQ0NfUEFHRV9TSVpFXzQwOTZCWVRFICAgICAgICAgKDB4MDAwODAwMDBVKQorI2RlZmluZSBGTUNfTkFORF9FQ0NfUEFHRV9TSVpFXzgxOTJCWVRFICAgICAgICAgKDB4MDAwQTAwMDBVKQogLyoqCiAgICogQH0KICAgKi8KLSAgCisKIC8qKgogICAqIEB9Ci0gICovIAorICAqLwogCi0vKiogQGRlZmdyb3VwIEZNQ19MTF9TRFJBTV9Db250cm9sbGVyIEZNQyBTRFJBTSBDb250cm9sbGVyIAorLyoqIEBkZWZncm91cCBGTUNfTExfU0RSQU1fQ29udHJvbGxlciBGTUMgU0RSQU0gQ29udHJvbGxlcgogICAqIEB7CiAgICovCiAvKiogQGRlZmdyb3VwIEZNQ19TRFJBTV9CYW5rIEZNQyBTRFJBTSBCYW5rCiAgICogQHsKICAgKi8KLSNkZWZpbmUgRk1DX1NEUkFNX0JBTksxICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDBVKQotI2RlZmluZSBGTUNfU0RSQU1fQkFOSzIgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMVUpCisjZGVmaW5lIEZNQ19TRFJBTV9CQU5LMSAgICAgICAgICAgICAgICAgICAgICAgICAoMHgwMDAwMDAwMFUpCisjZGVmaW5lIEZNQ19TRFJBTV9CQU5LMiAgICAgICAgICAgICAgICAgICAgICAgICAoMHgwMDAwMDAwMVUpCiAvKioKICAgKiBAfQogICAqLwogCi0vKiogQGRlZmdyb3VwIEZNQ19TRFJBTV9Db2x1bW5fQml0c19udW1iZXIgRk1DIFNEUkFNIENvbHVtbiBCaXRzIG51bWJlciAKKy8qKiBAZGVmZ3JvdXAgRk1DX1NEUkFNX0NvbHVtbl9CaXRzX251bWJlciBGTUMgU0RSQU0gQ29sdW1uIEJpdHMgbnVtYmVyCiAgICogQHsKICAgKi8KLSNkZWZpbmUgRk1DX1NEUkFNX0NPTFVNTl9CSVRTX05VTV84ICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDBVKQotI2RlZmluZSBGTUNfU0RSQU1fQ09MVU1OX0JJVFNfTlVNXzkgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMVUpCi0jZGVmaW5lIEZNQ19TRFJBTV9DT0xVTU5fQklUU19OVU1fMTAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAyVSkKLSNkZWZpbmUgRk1DX1NEUkFNX0NPTFVNTl9CSVRTX05VTV8xMSAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDNVKQorI2RlZmluZSBGTUNfU0RSQU1fQ09MVU1OX0JJVFNfTlVNXzggICAgICAgICAgICAgKDB4MDAwMDAwMDBVKQorI2RlZmluZSBGTUNfU0RSQU1fQ09MVU1OX0JJVFNfTlVNXzkgICAgICAgICAgICAgKDB4MDAwMDAwMDFVKQorI2RlZmluZSBGTUNfU0RSQU1fQ09MVU1OX0JJVFNfTlVNXzEwICAgICAgICAgICAgKDB4MDAwMDAwMDJVKQorI2RlZmluZSBGTUNfU0RSQU1fQ09MVU1OX0JJVFNfTlVNXzExICAgICAgICAgICAgKDB4MDAwMDAwMDNVKQogLyoqCiAgICogQH0KICAgKi8KQEAgLTkxMyw5ICs3MTEsOSBAQAogLyoqIEBkZWZncm91cCBGTUNfU0RSQU1fUm93X0JpdHNfbnVtYmVyIEZNQyBTRFJBTSBSb3cgQml0cyBudW1iZXIKICAgKiBAewogICAqLwotI2RlZmluZSBGTUNfU0RSQU1fUk9XX0JJVFNfTlVNXzExICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMFUpCi0jZGVmaW5lIEZNQ19TRFJBTV9ST1dfQklUU19OVU1fMTIgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDA0VSkKLSNkZWZpbmUgRk1DX1NEUkFNX1JPV19CSVRTX05VTV8xMyAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDhVKQorI2RlZmluZSBGTUNfU0RSQU1fUk9XX0JJVFNfTlVNXzExICAgICAgICAgICAgICAgKDB4MDAwMDAwMDBVKQorI2RlZmluZSBGTUNfU0RSQU1fUk9XX0JJVFNfTlVNXzEyICAgICAgICAgICAgICAgKDB4MDAwMDAwMDRVKQorI2RlZmluZSBGTUNfU0RSQU1fUk9XX0JJVFNfTlVNXzEzICAgICAgICAgICAgICAgKDB4MDAwMDAwMDhVKQogLyoqCiAgICogQH0KICAgKi8KQEAgLTkyMyw5ICs3MjEsOSBAQAogLyoqIEBkZWZncm91cCBGTUNfU0RSQU1fTWVtb3J5X0J1c19XaWR0aCBGTUMgU0RSQU0gTWVtb3J5IEJ1cyBXaWR0aAogICAqIEB7CiAgICovCi0jZGVmaW5lIEZNQ19TRFJBTV9NRU1fQlVTX1dJRFRIXzggICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAwVSkKLSNkZWZpbmUgRk1DX1NEUkFNX01FTV9CVVNfV0lEVEhfMTYgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMTBVKQotI2RlZmluZSBGTUNfU0RSQU1fTUVNX0JVU19XSURUSF8zMiAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAyMFUpCisjZGVmaW5lIEZNQ19TRFJBTV9NRU1fQlVTX1dJRFRIXzggICAgICAgICAgICAgICAoMHgwMDAwMDAwMFUpCisjZGVmaW5lIEZNQ19TRFJBTV9NRU1fQlVTX1dJRFRIXzE2ICAgICAgICAgICAgICAoMHgwMDAwMDAxMFUpCisjZGVmaW5lIEZNQ19TRFJBTV9NRU1fQlVTX1dJRFRIXzMyICAgICAgICAgICAgICAoMHgwMDAwMDAyMFUpCiAvKioKICAgKiBAfQogICAqLwpAQCAtOTMzLDggKzczMSw4IEBACiAvKiogQGRlZmdyb3VwIEZNQ19TRFJBTV9JbnRlcm5hbF9CYW5rc19OdW1iZXIgRk1DIFNEUkFNIEludGVybmFsIEJhbmtzIE51bWJlcgogICAqIEB7CiAgICovCi0jZGVmaW5lIEZNQ19TRFJBTV9JTlRFUk5fQkFOS1NfTlVNXzIgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAwVSkKLSNkZWZpbmUgRk1DX1NEUkFNX0lOVEVSTl9CQU5LU19OVU1fNCAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwNDBVKQorI2RlZmluZSBGTUNfU0RSQU1fSU5URVJOX0JBTktTX05VTV8yICAgICAgICAgICAgKDB4MDAwMDAwMDBVKQorI2RlZmluZSBGTUNfU0RSQU1fSU5URVJOX0JBTktTX05VTV80ICAgICAgICAgICAgKDB4MDAwMDAwNDBVKQogLyoqCiAgICogQH0KICAgKi8KQEAgLTk0Miw5ICs3NDAsOSBAQAogLyoqIEBkZWZncm91cCBGTUNfU0RSQU1fQ0FTX0xhdGVuY3kgRk1DIFNEUkFNIENBUyBMYXRlbmN5CiAgICogQHsKICAgKi8KLSNkZWZpbmUgRk1DX1NEUkFNX0NBU19MQVRFTkNZXzEgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwODBVKQotI2RlZmluZSBGTUNfU0RSQU1fQ0FTX0xBVEVOQ1lfMiAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDEwMFUpCi0jZGVmaW5lIEZNQ19TRFJBTV9DQVNfTEFURU5DWV8zICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMTgwKQorI2RlZmluZSBGTUNfU0RSQU1fQ0FTX0xBVEVOQ1lfMSAgICAgICAgICAgICAgICAgKDB4MDAwMDAwODBVKQorI2RlZmluZSBGTUNfU0RSQU1fQ0FTX0xBVEVOQ1lfMiAgICAgICAgICAgICAgICAgKDB4MDAwMDAxMDBVKQorI2RlZmluZSBGTUNfU0RSQU1fQ0FTX0xBVEVOQ1lfMyAgICAgICAgICAgICAgICAgKDB4MDAwMDAxODBVKQogLyoqCiAgICogQH0KICAgKi8KQEAgLTk1Miw4ICs3NTAsOCBAQAogLyoqIEBkZWZncm91cCBGTUNfU0RSQU1fV3JpdGVfUHJvdGVjdGlvbiBGTUMgU0RSQU0gV3JpdGUgUHJvdGVjdGlvbgogICAqIEB7CiAgICovCi0jZGVmaW5lIEZNQ19TRFJBTV9XUklURV9QUk9URUNUSU9OX0RJU0FCTEUgICAgKCh1aW50MzJfdCkweDAwMDAwMDAwVSkKLSNkZWZpbmUgRk1DX1NEUkFNX1dSSVRFX1BST1RFQ1RJT05fRU5BQkxFICAgICAoKHVpbnQzMl90KTB4MDAwMDAyMDBVKQorI2RlZmluZSBGTUNfU0RSQU1fV1JJVEVfUFJPVEVDVElPTl9ESVNBQkxFICAgICAgKDB4MDAwMDAwMDBVKQorI2RlZmluZSBGTUNfU0RSQU1fV1JJVEVfUFJPVEVDVElPTl9FTkFCTEUgICAgICAgKDB4MDAwMDAyMDBVKQogLyoqCiAgICogQH0KICAgKi8KQEAgLTk2MSw5ICs3NTksOSBAQAogLyoqIEBkZWZncm91cCBGTUNfU0RSQU1fQ2xvY2tfUGVyaW9kIEZNQyBTRFJBTSBDbG9jayBQZXJpb2QKICAgKiBAewogICAqLwotI2RlZmluZSBGTUNfU0RSQU1fQ0xPQ0tfRElTQUJMRSAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMFUpCi0jZGVmaW5lIEZNQ19TRFJBTV9DTE9DS19QRVJJT0RfMiAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwODAwVSkKLSNkZWZpbmUgRk1DX1NEUkFNX0NMT0NLX1BFUklPRF8zICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDBDMDApCisjZGVmaW5lIEZNQ19TRFJBTV9DTE9DS19ESVNBQkxFICAgICAgICAgICAgICAgICAoMHgwMDAwMDAwMFUpCisjZGVmaW5lIEZNQ19TRFJBTV9DTE9DS19QRVJJT0RfMiAgICAgICAgICAgICAgICAoMHgwMDAwMDgwMFUpCisjZGVmaW5lIEZNQ19TRFJBTV9DTE9DS19QRVJJT0RfMyAgICAgICAgICAgICAgICAoMHgwMDAwMEMwMFUpCiAvKioKICAgKiBAfQogICAqLwpAQCAtOTcxLDE4ICs3NjksMTggQEAKIC8qKiBAZGVmZ3JvdXAgRk1DX1NEUkFNX1JlYWRfQnVyc3QgRk1DIFNEUkFNIFJlYWQgQnVyc3QKICAgKiBAewogICAqLwotI2RlZmluZSBGTUNfU0RSQU1fUkJVUlNUX0RJU0FCTEUgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMFUpCi0jZGVmaW5lIEZNQ19TRFJBTV9SQlVSU1RfRU5BQkxFICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAxMDAwVSkKKyNkZWZpbmUgRk1DX1NEUkFNX1JCVVJTVF9ESVNBQkxFICAgICAgICAgICAgICAgICgweDAwMDAwMDAwVSkKKyNkZWZpbmUgRk1DX1NEUkFNX1JCVVJTVF9FTkFCTEUgICAgICAgICAgICAgICAgICgweDAwMDAxMDAwVSkKIC8qKgogICAqIEB9CiAgICovCi0gIAorCiAvKiogQGRlZmdyb3VwIEZNQ19TRFJBTV9SZWFkX1BpcGVfRGVsYXkgRk1DIFNEUkFNIFJlYWQgUGlwZSBEZWxheQogICAqIEB7CiAgICovCi0jZGVmaW5lIEZNQ19TRFJBTV9SUElQRV9ERUxBWV8wICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAwVSkKLSNkZWZpbmUgRk1DX1NEUkFNX1JQSVBFX0RFTEFZXzEgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDIwMDBVKQotI2RlZmluZSBGTUNfU0RSQU1fUlBJUEVfREVMQVlfMiAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwNDAwMFUpCisjZGVmaW5lIEZNQ19TRFJBTV9SUElQRV9ERUxBWV8wICAgICAgICAgICAgICAgICAoMHgwMDAwMDAwMFUpCisjZGVmaW5lIEZNQ19TRFJBTV9SUElQRV9ERUxBWV8xICAgICAgICAgICAgICAgICAoMHgwMDAwMjAwMFUpCisjZGVmaW5lIEZNQ19TRFJBTV9SUElQRV9ERUxBWV8yICAgICAgICAgICAgICAgICAoMHgwMDAwNDAwMFUpCiAvKioKICAgKiBAfQogICAqLwpAQCAtOTkwLDEzICs3ODgsMTMgQEAKIC8qKiBAZGVmZ3JvdXAgRk1DX1NEUkFNX0NvbW1hbmRfTW9kZSBGTUMgU0RSQU0gQ29tbWFuZCBNb2RlCiAgICogQHsKICAgKi8KLSNkZWZpbmUgRk1DX1NEUkFNX0NNRF9OT1JNQUxfTU9ERSAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDBVKQotI2RlZmluZSBGTUNfU0RSQU1fQ01EX0NMS19FTkFCTEUgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMVUpCi0jZGVmaW5lIEZNQ19TRFJBTV9DTURfUEFMTCAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAyVSkKLSNkZWZpbmUgRk1DX1NEUkFNX0NNRF9BVVRPUkVGUkVTSF9NT0RFICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDNVKQotI2RlZmluZSBGTUNfU0RSQU1fQ01EX0xPQURfTU9ERSAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwNFUpCi0jZGVmaW5lIEZNQ19TRFJBTV9DTURfU0VMRlJFRlJFU0hfTU9ERSAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDA1VSkKLSNkZWZpbmUgRk1DX1NEUkFNX0NNRF9QT1dFUkRPV05fTU9ERSAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDZVKQorI2RlZmluZSBGTUNfU0RSQU1fQ01EX05PUk1BTF9NT0RFICAgICAgICAgICAgICAgKDB4MDAwMDAwMDBVKQorI2RlZmluZSBGTUNfU0RSQU1fQ01EX0NMS19FTkFCTEUgICAgICAgICAgICAgICAgKDB4MDAwMDAwMDFVKQorI2RlZmluZSBGTUNfU0RSQU1fQ01EX1BBTEwgICAgICAgICAgICAgICAgICAgICAgKDB4MDAwMDAwMDJVKQorI2RlZmluZSBGTUNfU0RSQU1fQ01EX0FVVE9SRUZSRVNIX01PREUgICAgICAgICAgKDB4MDAwMDAwMDNVKQorI2RlZmluZSBGTUNfU0RSQU1fQ01EX0xPQURfTU9ERSAgICAgICAgICAgICAgICAgKDB4MDAwMDAwMDRVKQorI2RlZmluZSBGTUNfU0RSQU1fQ01EX1NFTEZSRUZSRVNIX01PREUgICAgICAgICAgKDB4MDAwMDAwMDVVKQorI2RlZmluZSBGTUNfU0RSQU1fQ01EX1BPV0VSRE9XTl9NT0RFICAgICAgICAgICAgKDB4MDAwMDAwMDZVKQogLyoqCiAgICogQH0KICAgKi8KQEAgLTEwMDQsNTEgKzgwMiw1MyBAQAogLyoqIEBkZWZncm91cCBGTUNfU0RSQU1fQ29tbWFuZF9UYXJnZXQgRk1DIFNEUkFNIENvbW1hbmQgVGFyZ2V0CiAgICogQHsKICAgKi8KLSNkZWZpbmUgRk1DX1NEUkFNX0NNRF9UQVJHRVRfQkFOSzIgICAgICAgICAgICBGTUNfU0RDTVJfQ1RCMgotI2RlZmluZSBGTUNfU0RSQU1fQ01EX1RBUkdFVF9CQU5LMSAgICAgICAgICAgIEZNQ19TRENNUl9DVEIxCi0jZGVmaW5lIEZNQ19TRFJBTV9DTURfVEFSR0VUX0JBTksxXzIgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDE4VSkKKyNkZWZpbmUgRk1DX1NEUkFNX0NNRF9UQVJHRVRfQkFOSzIgICAgICAgICAgICAgIEZNQ19TRENNUl9DVEIyCisjZGVmaW5lIEZNQ19TRFJBTV9DTURfVEFSR0VUX0JBTksxICAgICAgICAgICAgICBGTUNfU0RDTVJfQ1RCMQorI2RlZmluZSBGTUNfU0RSQU1fQ01EX1RBUkdFVF9CQU5LMV8yICAgICAgICAgICAgKDB4MDAwMDAwMThVKQogLyoqCiAgICogQH0KICAgKi8KIAotLyoqIEBkZWZncm91cCBGTUNfU0RSQU1fTW9kZV9TdGF0dXMgRk1DIFNEUkFNIE1vZGUgU3RhdHVzIAorLyoqIEBkZWZncm91cCBGTUNfU0RSQU1fTW9kZV9TdGF0dXMgRk1DIFNEUkFNIE1vZGUgU3RhdHVzCiAgICogQHsKICAgKi8KLSNkZWZpbmUgRk1DX1NEUkFNX05PUk1BTF9NT0RFICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAwVSkKLSNkZWZpbmUgRk1DX1NEUkFNX1NFTEZfUkVGUkVTSF9NT0RFICAgICAgICAgICAgICAgRk1DX1NEU1JfTU9ERVMxXzAKLSNkZWZpbmUgRk1DX1NEUkFNX1BPV0VSX0RPV05fTU9ERSAgICAgICAgICAgICAgICAgRk1DX1NEU1JfTU9ERVMxXzEKKyNkZWZpbmUgRk1DX1NEUkFNX05PUk1BTF9NT0RFICAgICAgICAgICAgICAgICAgICgweDAwMDAwMDAwVSkKKyNkZWZpbmUgRk1DX1NEUkFNX1NFTEZfUkVGUkVTSF9NT0RFICAgICAgICAgICAgIEZNQ19TRFNSX01PREVTMV8wCisjZGVmaW5lIEZNQ19TRFJBTV9QT1dFUl9ET1dOX01PREUgICAgICAgICAgICAgICBGTUNfU0RTUl9NT0RFUzFfMQogLyoqCiAgICogQH0KICAgKi8KIAogLyoqCiAgICogQH0KLSAgKi8gCisgICovCiAKLS8qKiBAZGVmZ3JvdXAgRk1DX0xMX0ludGVycnVwdF9kZWZpbml0aW9uIEZNQyBMb3cgTGF5ZXIgSW50ZXJydXB0IGRlZmluaXRpb24gIAorCisvKiogQGRlZmdyb3VwIEZNQ19MTF9JbnRlcnJ1cHRfZGVmaW5pdGlvbiBGTUMgTG93IExheWVyIEludGVycnVwdCBkZWZpbml0aW9uCiAgICogQHsKLSAgKi8gIAotI2RlZmluZSBGTUNfSVRfUklTSU5HX0VER0UgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDA4VSkKLSNkZWZpbmUgRk1DX0lUX0xFVkVMICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAxMFUpCi0jZGVmaW5lIEZNQ19JVF9GQUxMSU5HX0VER0UgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMjBVKQotI2RlZmluZSBGTUNfSVRfUkVGUkVTSF9FUlJPUiAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDA0MDAwVSkKKyAgKi8KKyNkZWZpbmUgRk1DX0lUX1JJU0lOR19FREdFICAgICAgICAgICAgICAgICAgICAgICgweDAwMDAwMDA4VSkKKyNkZWZpbmUgRk1DX0lUX0xFVkVMICAgICAgICAgICAgICAgICAgICAgICAgICAgICgweDAwMDAwMDEwVSkKKyNkZWZpbmUgRk1DX0lUX0ZBTExJTkdfRURHRSAgICAgICAgICAgICAgICAgICAgICgweDAwMDAwMDIwVSkKKyNkZWZpbmUgRk1DX0lUX1JFRlJFU0hfRVJST1IgICAgICAgICAgICAgICAgICAgICgweDAwMDA0MDAwVSkKIC8qKgogICAqIEB9CiAgICovCi0gICAgCi0vKiogQGRlZmdyb3VwIEZNQ19MTF9GbGFnX2RlZmluaXRpb24gRk1DIExvdyBMYXllciBGbGFnIGRlZmluaXRpb24gCisKKy8qKiBAZGVmZ3JvdXAgRk1DX0xMX0ZsYWdfZGVmaW5pdGlvbiBGTUMgTG93IExheWVyIEZsYWcgZGVmaW5pdGlvbgogICAqIEB7Ci0gICovIAotI2RlZmluZSBGTUNfRkxBR19SSVNJTkdfRURHRSAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAxVSkKLSNkZWZpbmUgRk1DX0ZMQUdfTEVWRUwgICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMlUpCi0jZGVmaW5lIEZNQ19GTEFHX0ZBTExJTkdfRURHRSAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDRVKQotI2RlZmluZSBGTUNfRkxBR19GRU1QVCAgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDQwVSkKKyAgKi8KKyNkZWZpbmUgRk1DX0ZMQUdfUklTSU5HX0VER0UgICAgICAgICAgICAgICAgICAgICgweDAwMDAwMDAxVSkKKyNkZWZpbmUgRk1DX0ZMQUdfTEVWRUwgICAgICAgICAgICAgICAgICAgICAgICAgICgweDAwMDAwMDAyVSkKKyNkZWZpbmUgRk1DX0ZMQUdfRkFMTElOR19FREdFICAgICAgICAgICAgICAgICAgICgweDAwMDAwMDA0VSkKKyNkZWZpbmUgRk1DX0ZMQUdfRkVNUFQgICAgICAgICAgICAgICAgICAgICAgICAgICgweDAwMDAwMDQwVSkKICNkZWZpbmUgRk1DX1NEUkFNX0ZMQUdfUkVGUkVTSF9JVCAgICAgICAgICAgICAgIEZNQ19TRFNSX1JFCiAjZGVmaW5lIEZNQ19TRFJBTV9GTEFHX0JVU1kgICAgICAgICAgICAgICAgICAgICBGTUNfU0RTUl9CVVNZCiAjZGVmaW5lIEZNQ19TRFJBTV9GTEFHX1JFRlJFU0hfRVJST1IgICAgICAgICAgICBGTUNfU0RSVFJfQ1JFCiAvKioKICAgKiBAfQogICAqLworCiAvKioKICAgKiBAfQogICAqLwpAQCAtMTA2MSw3MCArODYxLDcyIEBACiAvKiogQGRlZmdyb3VwIEZNQ19MTF9Qcml2YXRlX01hY3JvcyBGTUNfTEwgIFByaXZhdGUgTWFjcm9zCiAgICogQHsKICAgKi8KLQogLyoqIEBkZWZncm91cCBGTUNfTExfTk9SX01hY3JvcyBGTUMgTk9SL1NSQU0gTWFjcm9zCi0gKiAgQGJyaWVmIG1hY3JvcyB0byBoYW5kbGUgTk9SIGRldmljZSBlbmFibGUvZGlzYWJsZSBhbmQgcmVhZC93cml0ZSBvcGVyYXRpb25zCi0gKiAgQHsKLSAqLwotIAorICAqIEBicmllZiBtYWNyb3MgdG8gaGFuZGxlIE5PUiBkZXZpY2UgZW5hYmxlL2Rpc2FibGUgYW5kIHJlYWQvd3JpdGUgb3BlcmF0aW9ucworICAqIEB7CisgICovCisKIC8qKgogICAqIEBicmllZiAgRW5hYmxlIHRoZSBOT1JTUkFNIGRldmljZSBhY2Nlc3MuCiAgICogQHBhcmFtICBfX0lOU1RBTkNFX18gRk1DX05PUlNSQU0gSW5zdGFuY2UKLSAgKiBAcGFyYW0gIF9fQkFOS19fIEZNQ19OT1JTUkFNIEJhbmsgICAgIAorICAqIEBwYXJhbSAgX19CQU5LX18gRk1DX05PUlNSQU0gQmFuawogICAqIEByZXR2YWwgTm9uZQotICAqLyAKLSNkZWZpbmUgX19GTUNfTk9SU1JBTV9FTkFCTEUoX19JTlNUQU5DRV9fLCBfX0JBTktfXykgICgoX19JTlNUQU5DRV9fKS0+QlRDUlsoX19CQU5LX18pXSB8PSBGTUNfQkNSMV9NQktFTikKKyAgKi8KKyNkZWZpbmUgX19GTUNfTk9SU1JBTV9FTkFCTEUoX19JTlNUQU5DRV9fLCBfX0JBTktfXykgICgoX19JTlNUQU5DRV9fKS0+QlRDUlsoX19CQU5LX18pXVwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8PSBGTUNfQkNSMV9NQktFTikKIAogLyoqCiAgICogQGJyaWVmICBEaXNhYmxlIHRoZSBOT1JTUkFNIGRldmljZSBhY2Nlc3MuCiAgICogQHBhcmFtICBfX0lOU1RBTkNFX18gRk1DX05PUlNSQU0gSW5zdGFuY2UKLSAgKiBAcGFyYW0gIF9fQkFOS19fIEZNQ19OT1JTUkFNIEJhbmsgICAKKyAgKiBAcGFyYW0gIF9fQkFOS19fIEZNQ19OT1JTUkFNIEJhbmsKICAgKiBAcmV0dmFsIE5vbmUKLSAgKi8gCi0jZGVmaW5lIF9fRk1DX05PUlNSQU1fRElTQUJMRShfX0lOU1RBTkNFX18sIF9fQkFOS19fKSAoKF9fSU5TVEFOQ0VfXyktPkJUQ1JbKF9fQkFOS19fKV0gJj0gfkZNQ19CQ1IxX01CS0VOKSAgCisgICovCisjZGVmaW5lIF9fRk1DX05PUlNSQU1fRElTQUJMRShfX0lOU1RBTkNFX18sIF9fQkFOS19fKSAoKF9fSU5TVEFOQ0VfXyktPkJUQ1JbKF9fQkFOS19fKV1cCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJj0gfkZNQ19CQ1IxX01CS0VOKQogCiAvKioKICAgKiBAfQotICAqLyAKKyAgKi8KIAogLyoqIEBkZWZncm91cCBGTUNfTExfTkFORF9NYWNyb3MgRk1DIE5BTkQgTWFjcm9zCi0gKiAgQGJyaWVmIG1hY3JvcyB0byBoYW5kbGUgTkFORCBkZXZpY2UgZW5hYmxlL2Rpc2FibGUKLSAqICBAewotICovCi0gCisgICogIEBicmllZiBtYWNyb3MgdG8gaGFuZGxlIE5BTkQgZGV2aWNlIGVuYWJsZS9kaXNhYmxlCisgICogIEB7CisgICovCisKIC8qKgogICAqIEBicmllZiAgRW5hYmxlIHRoZSBOQU5EIGRldmljZSBhY2Nlc3MuCi0gICogQHBhcmFtICBfX0lOU1RBTkNFX18gRk1DX05BTkQgSW5zdGFuY2UgICAgCisgICogQHBhcmFtICBfX0lOU1RBTkNFX18gRk1DX05BTkQgSW5zdGFuY2UKICAgKiBAcmV0dmFsIE5vbmUKLSAgKi8gIAorICAqLwogI2RlZmluZSBfX0ZNQ19OQU5EX0VOQUJMRShfX0lOU1RBTkNFX18pICAoKF9fSU5TVEFOQ0VfXyktPlBDUiB8PSBGTUNfUENSX1BCS0VOKQogCiAvKioKICAgKiBAYnJpZWYgIERpc2FibGUgdGhlIE5BTkQgZGV2aWNlIGFjY2Vzcy4KLSAgKiBAcGFyYW0gIF9fSU5TVEFOQ0VfXyBGTUNfTkFORCBJbnN0YW5jZSAgCisgICogQHBhcmFtICBfX0lOU1RBTkNFX18gRk1DX05BTkQgSW5zdGFuY2UKKyAgKiBAcGFyYW0gIF9fQkFOS19fICAgICBGTUNfTkFORCBCYW5rCiAgICogQHJldHZhbCBOb25lCiAgICovCi0jZGVmaW5lIF9fRk1DX05BTkRfRElTQUJMRShfX0lOU1RBTkNFX18pICgoX19JTlNUQU5DRV9fKS0+UENSICY9IH5GTUNfUENSX1BCS0VOKQorI2RlZmluZSBfX0ZNQ19OQU5EX0RJU0FCTEUoX19JTlNUQU5DRV9fLCBfX0JBTktfXykgQ0xFQVJfQklUKChfX0lOU1RBTkNFX18pLT5QQ1IsIEZNQ19QQ1JfUEJLRU4pCiAKIC8qKgogICAqIEB9Ci0gICovIAotICAgIAotLyoqIEBkZWZncm91cCBGTUNfSW50ZXJydXB0IEZNQyBJbnRlcnJ1cHQKLSAqICBAYnJpZWYgbWFjcm9zIHRvIGhhbmRsZSBGTUMgaW50ZXJydXB0cwotICogQHsKLSAqLyAKKyAgKi8KKworLyoqIEBkZWZncm91cCBGTUNfTExfTkFORF9JbnRlcnJ1cHQgRk1DIE5BTkQgSW50ZXJydXB0CisgICogQGJyaWVmIG1hY3JvcyB0byBoYW5kbGUgTkFORCBpbnRlcnJ1cHRzCisgICogQHsKKyAgKi8KIAogLyoqCiAgICogQGJyaWVmICBFbmFibGUgdGhlIE5BTkQgZGV2aWNlIGludGVycnVwdC4KLSAgKiBAcGFyYW0gIF9fSU5TVEFOQ0VfXyAgRk1DX05BTkQgaW5zdGFuY2UgICAgIAotICAqIEBwYXJhbSAgX19JTlRFUlJVUFRfXyBGTUNfTkFORCBpbnRlcnJ1cHQgCisgICogQHBhcmFtICBfX0lOU1RBTkNFX18gIEZNQ19OQU5EIGluc3RhbmNlCisgICogQHBhcmFtICBfX0lOVEVSUlVQVF9fIEZNQ19OQU5EIGludGVycnVwdAogICAqICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGFueSBjb21iaW5hdGlvbiBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoKICAgKiAgICAgICAgICAgIEBhcmcgRk1DX0lUX1JJU0lOR19FREdFOiBJbnRlcnJ1cHQgcmlzaW5nIGVkZ2UuCiAgICogICAgICAgICAgICBAYXJnIEZNQ19JVF9MRVZFTDogSW50ZXJydXB0IGxldmVsLgotICAqICAgICAgICAgICAgQGFyZyBGTUNfSVRfRkFMTElOR19FREdFOiBJbnRlcnJ1cHQgZmFsbGluZyBlZGdlLiAgICAgICAKKyAgKiAgICAgICAgICAgIEBhcmcgRk1DX0lUX0ZBTExJTkdfRURHRTogSW50ZXJydXB0IGZhbGxpbmcgZWRnZS4KICAgKiBAcmV0dmFsIE5vbmUKLSAgKi8gIAorICAqLwogI2RlZmluZSBfX0ZNQ19OQU5EX0VOQUJMRV9JVChfX0lOU1RBTkNFX18sIF9fSU5URVJSVVBUX18pICAoKF9fSU5TVEFOQ0VfXyktPlNSIHw9IChfX0lOVEVSUlVQVF9fKSkKIAogLyoqCkBAIC0xMTM0LDYyICs5MzYsNzIgQEAKICAgKiAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhbnkgY29tYmluYXRpb24gb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6CiAgICogICAgICAgICAgICBAYXJnIEZNQ19JVF9SSVNJTkdfRURHRTogSW50ZXJydXB0IHJpc2luZyBlZGdlLgogICAqICAgICAgICAgICAgQGFyZyBGTUNfSVRfTEVWRUw6IEludGVycnVwdCBsZXZlbC4KLSAgKiAgICAgICAgICAgIEBhcmcgRk1DX0lUX0ZBTExJTkdfRURHRTogSW50ZXJydXB0IGZhbGxpbmcgZWRnZS4gICAKKyAgKiAgICAgICAgICAgIEBhcmcgRk1DX0lUX0ZBTExJTkdfRURHRTogSW50ZXJydXB0IGZhbGxpbmcgZWRnZS4KICAgKiBAcmV0dmFsIE5vbmUKICAgKi8KICNkZWZpbmUgX19GTUNfTkFORF9ESVNBQkxFX0lUKF9fSU5TVEFOQ0VfXywgX19JTlRFUlJVUFRfXykgICgoX19JTlNUQU5DRV9fKS0+U1IgJj0gfihfX0lOVEVSUlVQVF9fKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorCiAvKioKICAgKiBAYnJpZWYgIEdldCBmbGFnIHN0YXR1cyBvZiB0aGUgTkFORCBkZXZpY2UuCiAgICogQHBhcmFtICBfX0lOU1RBTkNFX18gRk1DX05BTkQgSW5zdGFuY2UKLSAgKiBAcGFyYW0gIF9fQkFOS19fICAgICBGTUNfTkFORCBCYW5rICAgICAKLSAgKiBAcGFyYW0gIF9fRkxBR19fIEZNQ19OQU5EIGZsYWcKKyAgKiBAcGFyYW0gIF9fQkFOS19fICAgICBGTUNfTkFORCBCYW5rCisgICogQHBhcmFtICBfX0ZMQUdfXyAgICAgRk1DX05BTkQgZmxhZwogICAqICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGFueSBjb21iaW5hdGlvbiBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoKICAgKiAgICAgICAgICAgIEBhcmcgRk1DX0ZMQUdfUklTSU5HX0VER0U6IEludGVycnVwdCByaXNpbmcgZWRnZSBmbGFnLgogICAqICAgICAgICAgICAgQGFyZyBGTUNfRkxBR19MRVZFTDogSW50ZXJydXB0IGxldmVsIGVkZ2UgZmxhZy4KICAgKiAgICAgICAgICAgIEBhcmcgRk1DX0ZMQUdfRkFMTElOR19FREdFOiBJbnRlcnJ1cHQgZmFsbGluZyBlZGdlIGZsYWcuCi0gICogICAgICAgICAgICBAYXJnIEZNQ19GTEFHX0ZFTVBUOiBGSUZPIGVtcHR5IGZsYWcuICAgCisgICogICAgICAgICAgICBAYXJnIEZNQ19GTEFHX0ZFTVBUOiBGSUZPIGVtcHR5IGZsYWcuCiAgICogQHJldHZhbCBUaGUgc3RhdGUgb2YgRkxBRyAoU0VUIG9yIFJFU0VUKS4KICAgKi8KICNkZWZpbmUgX19GTUNfTkFORF9HRVRfRkxBRyhfX0lOU1RBTkNFX18sIF9fQkFOS19fLCBfX0ZMQUdfXykgICgoKF9fSU5TVEFOQ0VfXyktPlNSICYoX19GTEFHX18pKSA9PSAoX19GTEFHX18pKQogCiAvKioKICAgKiBAYnJpZWYgIENsZWFyIGZsYWcgc3RhdHVzIG9mIHRoZSBOQU5EIGRldmljZS4KLSAgKiBAcGFyYW0gIF9fSU5TVEFOQ0VfXyBGTUNfTkFORCBJbnN0YW5jZSAgIAotICAqIEBwYXJhbSAgX19GTEFHX18gRk1DX05BTkQgZmxhZworICAqIEBwYXJhbSAgX19JTlNUQU5DRV9fIEZNQ19OQU5EIEluc3RhbmNlCisgICogQHBhcmFtICBfX0ZMQUdfXyAgICAgRk1DX05BTkQgZmxhZwogICAqICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGFueSBjb21iaW5hdGlvbiBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoKICAgKiAgICAgICAgICAgIEBhcmcgRk1DX0ZMQUdfUklTSU5HX0VER0U6IEludGVycnVwdCByaXNpbmcgZWRnZSBmbGFnLgogICAqICAgICAgICAgICAgQGFyZyBGTUNfRkxBR19MRVZFTDogSW50ZXJydXB0IGxldmVsIGVkZ2UgZmxhZy4KICAgKiAgICAgICAgICAgIEBhcmcgRk1DX0ZMQUdfRkFMTElOR19FREdFOiBJbnRlcnJ1cHQgZmFsbGluZyBlZGdlIGZsYWcuCi0gICogICAgICAgICAgICBAYXJnIEZNQ19GTEFHX0ZFTVBUOiBGSUZPIGVtcHR5IGZsYWcuICAgCisgICogICAgICAgICAgICBAYXJnIEZNQ19GTEFHX0ZFTVBUOiBGSUZPIGVtcHR5IGZsYWcuCiAgICogQHJldHZhbCBOb25lCiAgICovCi0jZGVmaW5lIF9fRk1DX05BTkRfQ0xFQVJfRkxBRyhfX0lOU1RBTkNFX18sIF9fRkxBR19fKSAgKChfX0lOU1RBTkNFX18pLT5TUiAmPSB+KF9fRkxBR19fKSkgIAorI2RlZmluZSBfX0ZNQ19OQU5EX0NMRUFSX0ZMQUcoX19JTlNUQU5DRV9fLCBfX0ZMQUdfXykgICgoX19JTlNUQU5DRV9fKS0+U1IgJj0gfihfX0ZMQUdfXykpCisKKy8qKgorICAqIEB9CisgICovCisKKworLyoqIEBkZWZncm91cCBGTUNfTExfU0RSQU1fSW50ZXJydXB0IEZNQyBTRFJBTSBJbnRlcnJ1cHQKKyAgKiBAYnJpZWYgbWFjcm9zIHRvIGhhbmRsZSBTRFJBTSBpbnRlcnJ1cHRzCisgICogQHsKKyAgKi8KIAogLyoqCiAgICogQGJyaWVmICBFbmFibGUgdGhlIFNEUkFNIGRldmljZSBpbnRlcnJ1cHQuCi0gICogQHBhcmFtICBfX0lOU1RBTkNFX18gRk1DX1NEUkFNIGluc3RhbmNlICAKLSAgKiBAcGFyYW0gIF9fSU5URVJSVVBUX18gRk1DX1NEUkFNIGludGVycnVwdCAKKyAgKiBAcGFyYW0gIF9fSU5TVEFOQ0VfXyAgRk1DX1NEUkFNIGluc3RhbmNlCisgICogQHBhcmFtICBfX0lOVEVSUlVQVF9fIEZNQ19TRFJBTSBpbnRlcnJ1cHQKICAgKiAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhbnkgY29tYmluYXRpb24gb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6Ci0gICogICAgICAgICAgICBAYXJnIEZNQ19JVF9SRUZSRVNIX0VSUk9SOiBJbnRlcnJ1cHQgcmVmcmVzaCBlcnJvciAgICAgIAorICAqICAgICAgICAgICAgQGFyZyBGTUNfSVRfUkVGUkVTSF9FUlJPUjogSW50ZXJydXB0IHJlZnJlc2ggZXJyb3IKICAgKiBAcmV0dmFsIE5vbmUKICAgKi8KICNkZWZpbmUgX19GTUNfU0RSQU1fRU5BQkxFX0lUKF9fSU5TVEFOQ0VfXywgX19JTlRFUlJVUFRfXykgICgoX19JTlNUQU5DRV9fKS0+U0RSVFIgfD0gKF9fSU5URVJSVVBUX18pKQogCiAvKioKICAgKiBAYnJpZWYgIERpc2FibGUgdGhlIFNEUkFNIGRldmljZSBpbnRlcnJ1cHQuCi0gICogQHBhcmFtICBfX0lOU1RBTkNFX18gRk1DX1NEUkFNIGluc3RhbmNlICAKLSAgKiBAcGFyYW0gIF9fSU5URVJSVVBUX18gRk1DX1NEUkFNIGludGVycnVwdCAKKyAgKiBAcGFyYW0gIF9fSU5TVEFOQ0VfXyAgRk1DX1NEUkFNIGluc3RhbmNlCisgICogQHBhcmFtICBfX0lOVEVSUlVQVF9fIEZNQ19TRFJBTSBpbnRlcnJ1cHQKICAgKiAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhbnkgY29tYmluYXRpb24gb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6Ci0gICogICAgICAgICAgICBAYXJnIEZNQ19JVF9SRUZSRVNIX0VSUk9SOiBJbnRlcnJ1cHQgcmVmcmVzaCBlcnJvciAgICAgIAorICAqICAgICAgICAgICAgQGFyZyBGTUNfSVRfUkVGUkVTSF9FUlJPUjogSW50ZXJydXB0IHJlZnJlc2ggZXJyb3IKICAgKiBAcmV0dmFsIE5vbmUKICAgKi8KICNkZWZpbmUgX19GTUNfU0RSQU1fRElTQUJMRV9JVChfX0lOU1RBTkNFX18sIF9fSU5URVJSVVBUX18pICAoKF9fSU5TVEFOQ0VfXyktPlNEUlRSICY9IH4oX19JTlRFUlJVUFRfXykpCiAKIC8qKgogICAqIEBicmllZiAgR2V0IGZsYWcgc3RhdHVzIG9mIHRoZSBTRFJBTSBkZXZpY2UuCi0gICogQHBhcmFtICBfX0lOU1RBTkNFX18gRk1DX1NEUkFNIGluc3RhbmNlICAKLSAgKiBAcGFyYW0gIF9fRkxBR19fIEZNQ19TRFJBTSBmbGFnCisgICogQHBhcmFtICBfX0lOU1RBTkNFX18gRk1DX1NEUkFNIGluc3RhbmNlCisgICogQHBhcmFtICBfX0ZMQUdfXyAgICAgRk1DX1NEUkFNIGZsYWcKICAgKiAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhbnkgY29tYmluYXRpb24gb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6CiAgICogICAgICAgICAgICBAYXJnIEZNQ19TRFJBTV9GTEFHX1JFRlJFU0hfSVQ6IEludGVycnVwdCByZWZyZXNoIGVycm9yLgogICAqICAgICAgICAgICAgQGFyZyBGTUNfU0RSQU1fRkxBR19CVVNZOiBTRFJBTSBidXN5IGZsYWcuCkBAIC0xMjAwLDIwICsxMDEyLDI0IEBACiAKIC8qKgogICAqIEBicmllZiAgQ2xlYXIgZmxhZyBzdGF0dXMgb2YgdGhlIFNEUkFNIGRldmljZS4KLSAgKiBAcGFyYW0gIF9fSU5TVEFOQ0VfXyBGTUNfU0RSQU0gaW5zdGFuY2UgIAotICAqIEBwYXJhbSAgX19GTEFHX18gRk1DX1NEUkFNIGZsYWcKKyAgKiBAcGFyYW0gIF9fSU5TVEFOQ0VfXyBGTUNfU0RSQU0gaW5zdGFuY2UKKyAgKiBAcGFyYW0gIF9fRkxBR19fICAgICBGTUNfU0RSQU0gZmxhZwogICAqICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGFueSBjb21iaW5hdGlvbiBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoKICAgKiAgICAgICAgICAgQGFyZyBGTUNfU0RSQU1fRkxBR19SRUZSRVNIX0VSUk9SCiAgICogQHJldHZhbCBOb25lCiAgICovCiAjZGVmaW5lIF9fRk1DX1NEUkFNX0NMRUFSX0ZMQUcoX19JTlNUQU5DRV9fLCBfX0ZMQUdfXykgICgoX19JTlNUQU5DRV9fKS0+U0RSVFIgfD0gKF9fRkxBR19fKSkKKworLyoqCisgICogQH0KKyAgKi8KIC8qKgogICAqIEB9CiAgICovCiAKIC8qKgogICAqIEB9Ci0gICovIAorICAqLwogCiAvKiBQcml2YXRlIGZ1bmN0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogLyoqIEBkZWZncm91cCBGTUNfTExfUHJpdmF0ZV9GdW5jdGlvbnMgRk1DIExMIFByaXZhdGUgRnVuY3Rpb25zCkBAIC0xMjIzLDE4ICsxMDM5LDIzIEBACiAvKiogQGRlZmdyb3VwIEZNQ19MTF9OT1JTUkFNICBOT1IgU1JBTQogICAqICBAewogICAqLwotLyoqIEBkZWZncm91cCBGTUNfTExfTk9SU1JBTV9Qcml2YXRlX0Z1bmN0aW9uc19Hcm91cDEgTk9SIFNSQU0gSW5pdGlhbGl6YXRpb24vZGUtaW5pdGlhbGl6YXRpb24gZnVuY3Rpb25zIAorLyoqIEBkZWZncm91cCBGTUNfTExfTk9SU1JBTV9Qcml2YXRlX0Z1bmN0aW9uc19Hcm91cDEgTk9SIFNSQU0gSW5pdGlhbGl6YXRpb24vZGUtaW5pdGlhbGl6YXRpb24gZnVuY3Rpb25zCiAgICogIEB7CiAgICovCi1IQUxfU3RhdHVzVHlwZURlZiAgRk1DX05PUlNSQU1fSW5pdChGTUNfTk9SU1JBTV9UeXBlRGVmICpEZXZpY2UsIEZNQ19OT1JTUkFNX0luaXRUeXBlRGVmICpJbml0KTsKLUhBTF9TdGF0dXNUeXBlRGVmICBGTUNfTk9SU1JBTV9UaW1pbmdfSW5pdChGTUNfTk9SU1JBTV9UeXBlRGVmICpEZXZpY2UsIEZNQ19OT1JTUkFNX1RpbWluZ1R5cGVEZWYgKlRpbWluZywgdWludDMyX3QgQmFuayk7Ci1IQUxfU3RhdHVzVHlwZURlZiAgRk1DX05PUlNSQU1fRXh0ZW5kZWRfVGltaW5nX0luaXQoRk1DX05PUlNSQU1fRVhURU5ERURfVHlwZURlZiAqRGV2aWNlLCBGTUNfTk9SU1JBTV9UaW1pbmdUeXBlRGVmICpUaW1pbmcsIHVpbnQzMl90IEJhbmssIHVpbnQzMl90IEV4dGVuZGVkTW9kZSk7Ci1IQUxfU3RhdHVzVHlwZURlZiAgRk1DX05PUlNSQU1fRGVJbml0KEZNQ19OT1JTUkFNX1R5cGVEZWYgKkRldmljZSwgRk1DX05PUlNSQU1fRVhURU5ERURfVHlwZURlZiAqRXhEZXZpY2UsIHVpbnQzMl90IEJhbmspOworSEFMX1N0YXR1c1R5cGVEZWYgIEZNQ19OT1JTUkFNX0luaXQoRk1DX05PUlNSQU1fVHlwZURlZiAqRGV2aWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRk1DX05PUlNSQU1fSW5pdFR5cGVEZWYgKkluaXQpOworSEFMX1N0YXR1c1R5cGVEZWYgIEZNQ19OT1JTUkFNX1RpbWluZ19Jbml0KEZNQ19OT1JTUkFNX1R5cGVEZWYgKkRldmljZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGTUNfTk9SU1JBTV9UaW1pbmdUeXBlRGVmICpUaW1pbmcsIHVpbnQzMl90IEJhbmspOworSEFMX1N0YXR1c1R5cGVEZWYgIEZNQ19OT1JTUkFNX0V4dGVuZGVkX1RpbWluZ19Jbml0KEZNQ19OT1JTUkFNX0VYVEVOREVEX1R5cGVEZWYgKkRldmljZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGTUNfTk9SU1JBTV9UaW1pbmdUeXBlRGVmICpUaW1pbmcsIHVpbnQzMl90IEJhbmssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgRXh0ZW5kZWRNb2RlKTsKK0hBTF9TdGF0dXNUeXBlRGVmICBGTUNfTk9SU1JBTV9EZUluaXQoRk1DX05PUlNSQU1fVHlwZURlZiAqRGV2aWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGTUNfTk9SU1JBTV9FWFRFTkRFRF9UeXBlRGVmICpFeERldmljZSwgdWludDMyX3QgQmFuayk7CiAvKioKICAgKiBAfQotICAqLyAKKyAgKi8KIAotLyoqIEBkZWZncm91cCBGTUNfTExfTk9SU1JBTV9Qcml2YXRlX0Z1bmN0aW9uc19Hcm91cDIgTk9SIFNSQU0gQ29udHJvbCBmdW5jdGlvbnMgCisvKiogQGRlZmdyb3VwIEZNQ19MTF9OT1JTUkFNX1ByaXZhdGVfRnVuY3Rpb25zX0dyb3VwMiBOT1IgU1JBTSBDb250cm9sIGZ1bmN0aW9ucwogICAqICBAewogICAqLwogSEFMX1N0YXR1c1R5cGVEZWYgIEZNQ19OT1JTUkFNX1dyaXRlT3BlcmF0aW9uX0VuYWJsZShGTUNfTk9SU1JBTV9UeXBlRGVmICpEZXZpY2UsIHVpbnQzMl90IEJhbmspOwpAQCAtMTI0OSw1NCArMTA3MCw2MiBAQAogLyoqIEBkZWZncm91cCBGTUNfTExfTkFORCBOQU5ECiAgICogIEB7CiAgICovCi0vKiogQGRlZmdyb3VwIEZNQ19MTF9OQU5EX1ByaXZhdGVfRnVuY3Rpb25zX0dyb3VwMSBOQU5EIEluaXRpYWxpemF0aW9uL2RlLWluaXRpYWxpemF0aW9uIGZ1bmN0aW9ucyAKKy8qKiBAZGVmZ3JvdXAgRk1DX0xMX05BTkRfUHJpdmF0ZV9GdW5jdGlvbnNfR3JvdXAxIE5BTkQgSW5pdGlhbGl6YXRpb24vZGUtaW5pdGlhbGl6YXRpb24gZnVuY3Rpb25zCiAgICogIEB7CiAgICovCiBIQUxfU3RhdHVzVHlwZURlZiAgRk1DX05BTkRfSW5pdChGTUNfTkFORF9UeXBlRGVmICpEZXZpY2UsIEZNQ19OQU5EX0luaXRUeXBlRGVmICpJbml0KTsKLUhBTF9TdGF0dXNUeXBlRGVmICBGTUNfTkFORF9Db21tb25TcGFjZV9UaW1pbmdfSW5pdChGTUNfTkFORF9UeXBlRGVmICpEZXZpY2UsIEZNQ19OQU5EX1BDQ19UaW1pbmdUeXBlRGVmICpUaW1pbmcsIHVpbnQzMl90IEJhbmspOwotSEFMX1N0YXR1c1R5cGVEZWYgIEZNQ19OQU5EX0F0dHJpYnV0ZVNwYWNlX1RpbWluZ19Jbml0KEZNQ19OQU5EX1R5cGVEZWYgKkRldmljZSwgRk1DX05BTkRfUENDX1RpbWluZ1R5cGVEZWYgKlRpbWluZywgdWludDMyX3QgQmFuayk7CitIQUxfU3RhdHVzVHlwZURlZiAgRk1DX05BTkRfQ29tbW9uU3BhY2VfVGltaW5nX0luaXQoRk1DX05BTkRfVHlwZURlZiAqRGV2aWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZNQ19OQU5EX1BDQ19UaW1pbmdUeXBlRGVmICpUaW1pbmcsIHVpbnQzMl90IEJhbmspOworSEFMX1N0YXR1c1R5cGVEZWYgIEZNQ19OQU5EX0F0dHJpYnV0ZVNwYWNlX1RpbWluZ19Jbml0KEZNQ19OQU5EX1R5cGVEZWYgKkRldmljZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGTUNfTkFORF9QQ0NfVGltaW5nVHlwZURlZiAqVGltaW5nLCB1aW50MzJfdCBCYW5rKTsKIEhBTF9TdGF0dXNUeXBlRGVmICBGTUNfTkFORF9EZUluaXQoRk1DX05BTkRfVHlwZURlZiAqRGV2aWNlLCB1aW50MzJfdCBCYW5rKTsKIC8qKgogICAqIEB9CiAgICovCiAKLS8qKiBAZGVmZ3JvdXAgRk1DX0xMX05BTkRfUHJpdmF0ZV9GdW5jdGlvbnNfR3JvdXAyIE5BTkQgQ29udHJvbCBmdW5jdGlvbnMgCisvKiogQGRlZmdyb3VwIEZNQ19MTF9OQU5EX1ByaXZhdGVfRnVuY3Rpb25zX0dyb3VwMiBOQU5EIENvbnRyb2wgZnVuY3Rpb25zCiAgICogIEB7CiAgICovCiBIQUxfU3RhdHVzVHlwZURlZiAgRk1DX05BTkRfRUNDX0VuYWJsZShGTUNfTkFORF9UeXBlRGVmICpEZXZpY2UsIHVpbnQzMl90IEJhbmspOwogSEFMX1N0YXR1c1R5cGVEZWYgIEZNQ19OQU5EX0VDQ19EaXNhYmxlKEZNQ19OQU5EX1R5cGVEZWYgKkRldmljZSwgdWludDMyX3QgQmFuayk7Ci1IQUxfU3RhdHVzVHlwZURlZiAgRk1DX05BTkRfR2V0RUNDKEZNQ19OQU5EX1R5cGVEZWYgKkRldmljZSwgdWludDMyX3QgKkVDQ3ZhbCwgdWludDMyX3QgQmFuaywgdWludDMyX3QgVGltZW91dCk7CitIQUxfU3RhdHVzVHlwZURlZiAgRk1DX05BTkRfR2V0RUNDKEZNQ19OQU5EX1R5cGVEZWYgKkRldmljZSwgdWludDMyX3QgKkVDQ3ZhbCwgdWludDMyX3QgQmFuaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgVGltZW91dCk7CiAvKioKICAgKiBAfQogICAqLworLyoqCisgICogQH0KKyAgKi8KKwogCiAvKiogQGRlZmdyb3VwIEZNQ19MTF9TRFJBTSBTRFJBTQogICAqICBAewogICAqLwotLyoqIEBkZWZncm91cCBGTUNfTExfU0RSQU1fUHJpdmF0ZV9GdW5jdGlvbnNfR3JvdXAxIFNEUkFNIEluaXRpYWxpemF0aW9uL2RlLWluaXRpYWxpemF0aW9uIGZ1bmN0aW9ucyAKKy8qKiBAZGVmZ3JvdXAgRk1DX0xMX1NEUkFNX1ByaXZhdGVfRnVuY3Rpb25zX0dyb3VwMSBTRFJBTSBJbml0aWFsaXphdGlvbi9kZS1pbml0aWFsaXphdGlvbiBmdW5jdGlvbnMKICAgKiAgQHsKICAgKi8KIEhBTF9TdGF0dXNUeXBlRGVmICBGTUNfU0RSQU1fSW5pdChGTUNfU0RSQU1fVHlwZURlZiAqRGV2aWNlLCBGTUNfU0RSQU1fSW5pdFR5cGVEZWYgKkluaXQpOwotSEFMX1N0YXR1c1R5cGVEZWYgIEZNQ19TRFJBTV9UaW1pbmdfSW5pdChGTUNfU0RSQU1fVHlwZURlZiAqRGV2aWNlLCBGTUNfU0RSQU1fVGltaW5nVHlwZURlZiAqVGltaW5nLCB1aW50MzJfdCBCYW5rKTsKK0hBTF9TdGF0dXNUeXBlRGVmICBGTUNfU0RSQU1fVGltaW5nX0luaXQoRk1DX1NEUkFNX1R5cGVEZWYgKkRldmljZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRk1DX1NEUkFNX1RpbWluZ1R5cGVEZWYgKlRpbWluZywgdWludDMyX3QgQmFuayk7CiBIQUxfU3RhdHVzVHlwZURlZiAgRk1DX1NEUkFNX0RlSW5pdChGTUNfU0RSQU1fVHlwZURlZiAqRGV2aWNlLCB1aW50MzJfdCBCYW5rKTsKLQogLyoqCiAgICogQH0KICAgKi8KIAotLyoqIEBkZWZncm91cCBGTUNfTExfU0RSQU1fUHJpdmF0ZV9GdW5jdGlvbnNfR3JvdXAyIFNEUkFNIENvbnRyb2wgZnVuY3Rpb25zIAorLyoqIEBkZWZncm91cCBGTUNfTExfU0RSQU1fUHJpdmF0ZV9GdW5jdGlvbnNfR3JvdXAyIFNEUkFNIENvbnRyb2wgZnVuY3Rpb25zCiAgICogIEB7CiAgICovCiBIQUxfU3RhdHVzVHlwZURlZiAgRk1DX1NEUkFNX1dyaXRlUHJvdGVjdGlvbl9FbmFibGUoRk1DX1NEUkFNX1R5cGVEZWYgKkRldmljZSwgdWludDMyX3QgQmFuayk7CiBIQUxfU3RhdHVzVHlwZURlZiAgRk1DX1NEUkFNX1dyaXRlUHJvdGVjdGlvbl9EaXNhYmxlKEZNQ19TRFJBTV9UeXBlRGVmICpEZXZpY2UsIHVpbnQzMl90IEJhbmspOwotSEFMX1N0YXR1c1R5cGVEZWYgIEZNQ19TRFJBTV9TZW5kQ29tbWFuZChGTUNfU0RSQU1fVHlwZURlZiAqRGV2aWNlLCBGTUNfU0RSQU1fQ29tbWFuZFR5cGVEZWYgKkNvbW1hbmQsIHVpbnQzMl90IFRpbWVvdXQpOworSEFMX1N0YXR1c1R5cGVEZWYgIEZNQ19TRFJBTV9TZW5kQ29tbWFuZChGTUNfU0RSQU1fVHlwZURlZiAqRGV2aWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGTUNfU0RSQU1fQ29tbWFuZFR5cGVEZWYgKkNvbW1hbmQsIHVpbnQzMl90IFRpbWVvdXQpOwogSEFMX1N0YXR1c1R5cGVEZWYgIEZNQ19TRFJBTV9Qcm9ncmFtUmVmcmVzaFJhdGUoRk1DX1NEUkFNX1R5cGVEZWYgKkRldmljZSwgdWludDMyX3QgUmVmcmVzaFJhdGUpOwotSEFMX1N0YXR1c1R5cGVEZWYgIEZNQ19TRFJBTV9TZXRBdXRvUmVmcmVzaE51bWJlcihGTUNfU0RSQU1fVHlwZURlZiAqRGV2aWNlLCB1aW50MzJfdCBBdXRvUmVmcmVzaE51bWJlcik7CitIQUxfU3RhdHVzVHlwZURlZiAgRk1DX1NEUkFNX1NldEF1dG9SZWZyZXNoTnVtYmVyKEZNQ19TRFJBTV9UeXBlRGVmICpEZXZpY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IEF1dG9SZWZyZXNoTnVtYmVyKTsKIHVpbnQzMl90ICAgICAgICAgICBGTUNfU0RSQU1fR2V0TW9kZVN0YXR1cyhGTUNfU0RSQU1fVHlwZURlZiAqRGV2aWNlLCB1aW50MzJfdCBCYW5rKTsKIC8qKgogICAqIEB9CiAgICovCi0KIC8qKgogICAqIEB9CiAgICovCkBAIC0xMzEyLDEwICsxMTQxLDkgQEAKIC8qKgogICAqIEB9CiAgICovCisKICNpZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlmCiAKLSNlbmRpZiAvKiBfX1NUTTMyRjd4eF9MTF9GTUNfSCAqLwotCi0vKioqKioqKioqKioqKioqKioqKioqKioqIChDKSBDT1BZUklHSFQgU1RNaWNyb2VsZWN0cm9uaWNzICoqKioqRU5EIE9GIEZJTEUqKioqLworI2VuZGlmIC8qIFNUTTMyRjd4eF9MTF9GTUNfSCAqLwpkaWZmIC0tZ2l0IGEvSW5jL3N0bTMyZjd4eF9sbF9ncGlvLmggYi9JbmMvc3RtMzJmN3h4X2xsX2dwaW8uaAppbmRleCBlYWI0MmIxLi40NmI2ZTYwIDEwMDY0NAotLS0gYS9JbmMvc3RtMzJmN3h4X2xsX2dwaW8uaAorKysgYi9JbmMvc3RtMzJmN3h4X2xsX2dwaW8uaApAQCAtNiwxMyArNiwxMiBAQAogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgKiBAYXR0ZW50aW9uCiAgICoKLSAgKiA8aDI+PGNlbnRlcj4mY29weTsgQ29weXJpZ2h0IChjKSAyMDE3IFNUTWljcm9lbGVjdHJvbmljcy4KLSAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLjwvY2VudGVyPjwvaDI+CisgICogQ29weXJpZ2h0IChjKSAyMDE3IFNUTWljcm9lbGVjdHJvbmljcy4KKyAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAqCi0gICogVGhpcyBzb2Z0d2FyZSBjb21wb25lbnQgaXMgbGljZW5zZWQgYnkgU1QgdW5kZXIgQlNEIDMtQ2xhdXNlIGxpY2Vuc2UsCi0gICogdGhlICJMaWNlbnNlIjsgWW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZQotICAqIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdDoKLSAgKiAgICAgICAgICAgICAgICAgICAgICAgIG9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0JTRC0zLUNsYXVzZQorICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgdW5kZXIgdGVybXMgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZQorICAqIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvZnR3YXJlIGNvbXBvbmVudC4KKyAgKiBJZiBubyBMSUNFTlNFIGZpbGUgY29tZXMgd2l0aCB0aGlzIHNvZnR3YXJlLCBpdCBpcyBwcm92aWRlZCBBUy1JUy4KICAgKgogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgKi8KQEAgLTk4MCw0ICs5NzksMyBAQAogCiAjZW5kaWYgLyogX19TVE0zMkY3eHhfTExfR1BJT19IICovCiAKLS8qKioqKioqKioqKioqKioqKioqKioqKiogKEMpIENPUFlSSUdIVCBTVE1pY3JvZWxlY3Ryb25pY3MgKioqKipFTkQgT0YgRklMRSoqKiovCmRpZmYgLS1naXQgYS9JbmMvc3RtMzJmN3h4X2xsX2kyYy5oIGIvSW5jL3N0bTMyZjd4eF9sbF9pMmMuaAppbmRleCA3NmRjNGM2Li5iYTUzZmRjIDEwMDY0NAotLS0gYS9JbmMvc3RtMzJmN3h4X2xsX2kyYy5oCisrKyBiL0luYy9zdG0zMmY3eHhfbGxfaTJjLmgKQEAgLTYsMTMgKzYsMTIgQEAKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgICogQGF0dGVudGlvbgogICAqCi0gICogPGgyPjxjZW50ZXI+JmNvcHk7IENvcHlyaWdodCAoYykgMjAxNyBTVE1pY3JvZWxlY3Ryb25pY3MuCi0gICogQWxsIHJpZ2h0cyByZXNlcnZlZC48L2NlbnRlcj48L2gyPgorICAqIENvcHlyaWdodCAoYykgMjAxNyBTVE1pY3JvZWxlY3Ryb25pY3MuCisgICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgKgotICAqIFRoaXMgc29mdHdhcmUgY29tcG9uZW50IGlzIGxpY2Vuc2VkIGJ5IFNUIHVuZGVyIEJTRCAzLUNsYXVzZSBsaWNlbnNlLAotICAqIHRoZSAiTGljZW5zZSI7IFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUKLSAgKiBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQ6Ci0gICogICAgICAgICAgICAgICAgICAgICAgICBvcGVuc291cmNlLm9yZy9saWNlbnNlcy9CU0QtMy1DbGF1c2UKKyAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIHVuZGVyIHRlcm1zIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUKKyAgKiBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb2Z0d2FyZSBjb21wb25lbnQuCisgICogSWYgbm8gTElDRU5TRSBmaWxlIGNvbWVzIHdpdGggdGhpcyBzb2Z0d2FyZSwgaXQgaXMgcHJvdmlkZWQgQVMtSVMuCiAgICoKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgICovCkBAIC02OSwzOCArNjgsNDYgQEAKICAgdWludDMyX3QgUGVyaXBoZXJhbE1vZGU7ICAgICAgLyohPCBTcGVjaWZpZXMgdGhlIHBlcmlwaGVyYWwgbW9kZS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYSB2YWx1ZSBvZiBAcmVmIEkyQ19MTF9FQ19QRVJJUEhFUkFMX01PREUuCiAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGZlYXR1cmUgY2FuIGJlIG1vZGlmaWVkIGFmdGVyd2FyZHMgdXNpbmcgdW5pdGFyeSBmdW5jdGlvbiBAcmVmIExMX0kyQ19TZXRNb2RlKCkuICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBmZWF0dXJlIGNhbiBiZSBtb2RpZmllZCBhZnRlcndhcmRzIHVzaW5nIHVuaXRhcnkgZnVuY3Rpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAcmVmIExMX0kyQ19TZXRNb2RlKCkuICovCiAKICAgdWludDMyX3QgVGltaW5nOyAgICAgICAgICAgICAgLyohPCBTcGVjaWZpZXMgdGhlIFNEQSBzZXR1cCwgaG9sZCB0aW1lIGFuZCB0aGUgU0NMIGhpZ2gsIGxvdyBwZXJpb2QgdmFsdWVzLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIG11c3QgYmUgc2V0IGJ5IHJlZmVycmluZyB0byB0aGUgU1RNMzJDdWJlTVggVG9vbCBhbmQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgaGVscGVyIG1hY3JvIEByZWYgX19MTF9JMkNfQ09OVkVSVF9USU1JTkdTKCkuCiAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGZlYXR1cmUgY2FuIGJlIG1vZGlmaWVkIGFmdGVyd2FyZHMgdXNpbmcgdW5pdGFyeSBmdW5jdGlvbiBAcmVmIExMX0kyQ19TZXRUaW1pbmcoKS4gKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGZlYXR1cmUgY2FuIGJlIG1vZGlmaWVkIGFmdGVyd2FyZHMgdXNpbmcgdW5pdGFyeSBmdW5jdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEByZWYgTExfSTJDX1NldFRpbWluZygpLiAqLwogCiAgIHVpbnQzMl90IEFuYWxvZ0ZpbHRlcjsgICAgICAgIC8qITwgRW5hYmxlcyBvciBkaXNhYmxlcyBhbmFsb2cgbm9pc2UgZmlsdGVyLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhIHZhbHVlIG9mIEByZWYgSTJDX0xMX0VDX0FOQUxPR0ZJTFRFUl9TRUxFQ1RJT04uCiAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGZlYXR1cmUgY2FuIGJlIG1vZGlmaWVkIGFmdGVyd2FyZHMgdXNpbmcgdW5pdGFyeSBmdW5jdGlvbnMgQHJlZiBMTF9JMkNfRW5hYmxlQW5hbG9nRmlsdGVyKCkgb3IgTExfSTJDX0Rpc2FibGVBbmFsb2dGaWx0ZXIoKS4gKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGZlYXR1cmUgY2FuIGJlIG1vZGlmaWVkIGFmdGVyd2FyZHMgdXNpbmcgdW5pdGFyeSBmdW5jdGlvbnMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAcmVmIExMX0kyQ19FbmFibGVBbmFsb2dGaWx0ZXIoKSBvciBMTF9JMkNfRGlzYWJsZUFuYWxvZ0ZpbHRlcigpLiAqLwogCiAgIHVpbnQzMl90IERpZ2l0YWxGaWx0ZXI7ICAgICAgIC8qITwgQ29uZmlndXJlcyB0aGUgZGlnaXRhbCBub2lzZSBmaWx0ZXIuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGEgbnVtYmVyIGJldHdlZW4gTWluX0RhdGEgPSAweDAwIGFuZCBNYXhfRGF0YSA9IDB4MEYuCiAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGZlYXR1cmUgY2FuIGJlIG1vZGlmaWVkIGFmdGVyd2FyZHMgdXNpbmcgdW5pdGFyeSBmdW5jdGlvbiBAcmVmIExMX0kyQ19TZXREaWdpdGFsRmlsdGVyKCkuICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBmZWF0dXJlIGNhbiBiZSBtb2RpZmllZCBhZnRlcndhcmRzIHVzaW5nIHVuaXRhcnkgZnVuY3Rpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAcmVmIExMX0kyQ19TZXREaWdpdGFsRmlsdGVyKCkuICovCiAKICAgdWludDMyX3QgT3duQWRkcmVzczE7ICAgICAgICAgLyohPCBTcGVjaWZpZXMgdGhlIGRldmljZSBvd24gYWRkcmVzcyAxLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIG11c3QgYmUgYSB2YWx1ZSBiZXR3ZWVuIE1pbl9EYXRhID0gMHgwMCBhbmQgTWF4X0RhdGEgPSAweDNGRi4KIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgZmVhdHVyZSBjYW4gYmUgbW9kaWZpZWQgYWZ0ZXJ3YXJkcyB1c2luZyB1bml0YXJ5IGZ1bmN0aW9uIEByZWYgTExfSTJDX1NldE93bkFkZHJlc3MxKCkuICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBmZWF0dXJlIGNhbiBiZSBtb2RpZmllZCBhZnRlcndhcmRzIHVzaW5nIHVuaXRhcnkgZnVuY3Rpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAcmVmIExMX0kyQ19TZXRPd25BZGRyZXNzMSgpLiAqLwogCi0gIHVpbnQzMl90IFR5cGVBY2tub3dsZWRnZTsgICAgIC8qITwgU3BlY2lmaWVzIHRoZSBBQ0tub3dsZWRnZSBvciBOb24gQUNLbm93bGVkZ2UgY29uZGl0aW9uIGFmdGVyIHRoZSBhZGRyZXNzIHJlY2VpdmUgbWF0Y2ggY29kZSBvciBuZXh0IHJlY2VpdmVkIGJ5dGUuCisgIHVpbnQzMl90IFR5cGVBY2tub3dsZWRnZTsgICAgIC8qITwgU3BlY2lmaWVzIHRoZSBBQ0tub3dsZWRnZSBvciBOb24gQUNLbm93bGVkZ2UgY29uZGl0aW9uIGFmdGVyIHRoZSBhZGRyZXNzIHJlY2VpdmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCBjb2RlIG9yIG5leHQgcmVjZWl2ZWQgYnl0ZS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYSB2YWx1ZSBvZiBAcmVmIEkyQ19MTF9FQ19JMkNfQUNLTk9XTEVER0UuCiAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGZlYXR1cmUgY2FuIGJlIG1vZGlmaWVkIGFmdGVyd2FyZHMgdXNpbmcgdW5pdGFyeSBmdW5jdGlvbiBAcmVmIExMX0kyQ19BY2tub3dsZWRnZU5leHREYXRhKCkuICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBmZWF0dXJlIGNhbiBiZSBtb2RpZmllZCBhZnRlcndhcmRzIHVzaW5nIHVuaXRhcnkgZnVuY3Rpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAcmVmIExMX0kyQ19BY2tub3dsZWRnZU5leHREYXRhKCkuICovCiAKICAgdWludDMyX3QgT3duQWRkclNpemU7ICAgICAgICAgLyohPCBTcGVjaWZpZXMgdGhlIGRldmljZSBvd24gYWRkcmVzcyAxIHNpemUgKDctYml0IG9yIDEwLWJpdCkuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGEgdmFsdWUgb2YgQHJlZiBJMkNfTExfRUNfT1dOQUREUkVTUzEuCiAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGZlYXR1cmUgY2FuIGJlIG1vZGlmaWVkIGFmdGVyd2FyZHMgdXNpbmcgdW5pdGFyeSBmdW5jdGlvbiBAcmVmIExMX0kyQ19TZXRPd25BZGRyZXNzMSgpLiAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgZmVhdHVyZSBjYW4gYmUgbW9kaWZpZWQgYWZ0ZXJ3YXJkcyB1c2luZyB1bml0YXJ5IGZ1bmN0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQHJlZiBMTF9JMkNfU2V0T3duQWRkcmVzczEoKS4gKi8KIH0gTExfSTJDX0luaXRUeXBlRGVmOwogLyoqCiAgICogQH0KQEAgLTE3MCwxMCArMTc3LDExIEBACiAvKiogQGRlZmdyb3VwIEkyQ19MTF9FQ19QRVJJUEhFUkFMX01PREUgUGVyaXBoZXJhbCBNb2RlCiAgICogQHsKICAgKi8KLSNkZWZpbmUgTExfSTJDX01PREVfSTJDICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAwVSAgICAgICAgICAgICAgLyohPCBJMkMgTWFzdGVyIG9yIFNsYXZlIG1vZGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotI2RlZmluZSBMTF9JMkNfTU9ERV9TTUJVU19IT1NUICAgICAgICAgICAgIEkyQ19DUjFfU01CSEVOICAgICAgICAgICAvKiE8IFNNQnVzIEhvc3QgYWRkcmVzcyBhY2tub3dsZWRnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0jZGVmaW5lIExMX0kyQ19NT0RFX1NNQlVTX0RFVklDRSAgICAgICAgICAgMHgwMDAwMDAwMFUgICAgICAgICAgICAgIC8qITwgU01CdXMgRGV2aWNlIGRlZmF1bHQgbW9kZSAoRGVmYXVsdCBhZGRyZXNzIG5vdCBhY2tub3dsZWRnZSkgKi8KLSNkZWZpbmUgTExfSTJDX01PREVfU01CVVNfREVWSUNFX0FSUCAgICAgICBJMkNfQ1IxX1NNQkRFTiAgICAgICAgICAgLyohPCBTTUJ1cyBEZXZpY2UgRGVmYXVsdCBhZGRyZXNzIGFja25vd2xlZGdlICAgICAgICAgICAgICAgICAgICAqLworI2RlZmluZSBMTF9JMkNfTU9ERV9JMkMgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDBVICAgICAgICAgICAgICAvKiE8IEkyQyBNYXN0ZXIgb3IgU2xhdmUgbW9kZSAgICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgTExfSTJDX01PREVfU01CVVNfSE9TVCAgICAgICAgICAgICBJMkNfQ1IxX1NNQkhFTiAgICAgICAgICAgLyohPCBTTUJ1cyBIb3N0IGFkZHJlc3MgYWNrbm93bGVkZ2UgICAgICAgICAgICovCisjZGVmaW5lIExMX0kyQ19NT0RFX1NNQlVTX0RFVklDRSAgICAgICAgICAgMHgwMDAwMDAwMFUgICAgICAgICAgICAgIC8qITwgU01CdXMgRGV2aWNlIGRlZmF1bHQgbW9kZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChEZWZhdWx0IGFkZHJlc3Mgbm90IGFja25vd2xlZGdlKSAgICAgICAgKi8KKyNkZWZpbmUgTExfSTJDX01PREVfU01CVVNfREVWSUNFX0FSUCAgICAgICBJMkNfQ1IxX1NNQkRFTiAgICAgICAgICAgLyohPCBTTUJ1cyBEZXZpY2UgRGVmYXVsdCBhZGRyZXNzIGFja25vd2xlZGdlICovCiAvKioKICAgKiBAfQogICAqLwpAQCAtMjA4LDE0ICsyMTYsMTUgQEAKIC8qKiBAZGVmZ3JvdXAgSTJDX0xMX0VDX09XTkFERFJFU1MyIE93biBBZGRyZXNzIDIgTWFza3MKICAgKiBAewogICAqLwotI2RlZmluZSBMTF9JMkNfT1dOQUREUkVTUzJfTk9NQVNLICAgICAgICAgICBJMkNfT0FSMl9PQTJOT01BU0sgICAgICAvKiE8IE93biBBZGRyZXNzMiBObyBtYXNrLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLSNkZWZpbmUgTExfSTJDX09XTkFERFJFU1MyX01BU0swMSAgICAgICAgICAgSTJDX09BUjJfT0EyTUFTSzAxICAgICAgLyohPCBPbmx5IEFkZHJlc3MyIGJpdHNbNzoyXSBhcmUgY29tcGFyZWQuICAgICAgICAgICAgICAgICovCi0jZGVmaW5lIExMX0kyQ19PV05BRERSRVNTMl9NQVNLMDIgICAgICAgICAgIEkyQ19PQVIyX09BMk1BU0swMiAgICAgIC8qITwgT25seSBBZGRyZXNzMiBiaXRzWzc6M10gYXJlIGNvbXBhcmVkLiAgICAgICAgICAgICAgICAqLwotI2RlZmluZSBMTF9JMkNfT1dOQUREUkVTUzJfTUFTSzAzICAgICAgICAgICBJMkNfT0FSMl9PQTJNQVNLMDMgICAgICAvKiE8IE9ubHkgQWRkcmVzczIgYml0c1s3OjRdIGFyZSBjb21wYXJlZC4gICAgICAgICAgICAgICAgKi8KLSNkZWZpbmUgTExfSTJDX09XTkFERFJFU1MyX01BU0swNCAgICAgICAgICAgSTJDX09BUjJfT0EyTUFTSzA0ICAgICAgLyohPCBPbmx5IEFkZHJlc3MyIGJpdHNbNzo1XSBhcmUgY29tcGFyZWQuICAgICAgICAgICAgICAgICovCi0jZGVmaW5lIExMX0kyQ19PV05BRERSRVNTMl9NQVNLMDUgICAgICAgICAgIEkyQ19PQVIyX09BMk1BU0swNSAgICAgIC8qITwgT25seSBBZGRyZXNzMiBiaXRzWzc6Nl0gYXJlIGNvbXBhcmVkLiAgICAgICAgICAgICAgICAqLwotI2RlZmluZSBMTF9JMkNfT1dOQUREUkVTUzJfTUFTSzA2ICAgICAgICAgICBJMkNfT0FSMl9PQTJNQVNLMDYgICAgICAvKiE8IE9ubHkgQWRkcmVzczIgYml0c1s3XSBhcmUgY29tcGFyZWQuICAgICAgICAgICAgICAgICAgKi8KLSNkZWZpbmUgTExfSTJDX09XTkFERFJFU1MyX01BU0swNyAgICAgICAgICAgSTJDX09BUjJfT0EyTUFTSzA3ICAgICAgLyohPCBObyBjb21wYXJpc29uIGlzIGRvbmUuIEFsbCBBZGRyZXNzMiBhcmUgYWNrbm93bGVkZ2VkLiovCisjZGVmaW5lIExMX0kyQ19PV05BRERSRVNTMl9OT01BU0sgICAgICAgICAgIEkyQ19PQVIyX09BMk5PTUFTSyAgICAgIC8qITwgT3duIEFkZHJlc3MyIE5vIG1hc2suICAgICAgICAgICAgICAgICAqLworI2RlZmluZSBMTF9JMkNfT1dOQUREUkVTUzJfTUFTSzAxICAgICAgICAgICBJMkNfT0FSMl9PQTJNQVNLMDEgICAgICAvKiE8IE9ubHkgQWRkcmVzczIgYml0c1s3OjJdIGFyZSBjb21wYXJlZC4gKi8KKyNkZWZpbmUgTExfSTJDX09XTkFERFJFU1MyX01BU0swMiAgICAgICAgICAgSTJDX09BUjJfT0EyTUFTSzAyICAgICAgLyohPCBPbmx5IEFkZHJlc3MyIGJpdHNbNzozXSBhcmUgY29tcGFyZWQuICovCisjZGVmaW5lIExMX0kyQ19PV05BRERSRVNTMl9NQVNLMDMgICAgICAgICAgIEkyQ19PQVIyX09BMk1BU0swMyAgICAgIC8qITwgT25seSBBZGRyZXNzMiBiaXRzWzc6NF0gYXJlIGNvbXBhcmVkLiAqLworI2RlZmluZSBMTF9JMkNfT1dOQUREUkVTUzJfTUFTSzA0ICAgICAgICAgICBJMkNfT0FSMl9PQTJNQVNLMDQgICAgICAvKiE8IE9ubHkgQWRkcmVzczIgYml0c1s3OjVdIGFyZSBjb21wYXJlZC4gKi8KKyNkZWZpbmUgTExfSTJDX09XTkFERFJFU1MyX01BU0swNSAgICAgICAgICAgSTJDX09BUjJfT0EyTUFTSzA1ICAgICAgLyohPCBPbmx5IEFkZHJlc3MyIGJpdHNbNzo2XSBhcmUgY29tcGFyZWQuICovCisjZGVmaW5lIExMX0kyQ19PV05BRERSRVNTMl9NQVNLMDYgICAgICAgICAgIEkyQ19PQVIyX09BMk1BU0swNiAgICAgIC8qITwgT25seSBBZGRyZXNzMiBiaXRzWzddIGFyZSBjb21wYXJlZC4gICAqLworI2RlZmluZSBMTF9JMkNfT1dOQUREUkVTUzJfTUFTSzA3ICAgICAgICAgICBJMkNfT0FSMl9PQTJNQVNLMDcgICAgICAvKiE8IE5vIGNvbXBhcmlzb24gaXMgZG9uZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbGwgQWRkcmVzczIgYXJlIGFja25vd2xlZGdlZC4gICAgICAgICovCiAvKioKICAgKiBAfQogICAqLwpAQCAtMjUwLDE0ICsyNTksMjEgQEAKIC8qKiBAZGVmZ3JvdXAgSTJDX0xMX0VDX01PREUgVHJhbnNmZXIgRW5kIE1vZGUKICAgKiBAewogICAqLwotI2RlZmluZSBMTF9JMkNfTU9ERV9SRUxPQUQgICAgICAgICAgICAgICAgICBJMkNfQ1IyX1JFTE9BRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBFbmFibGUgSTJDIFJlbG9hZCBtb2RlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLSNkZWZpbmUgTExfSTJDX01PREVfQVVUT0VORCAgICAgICAgICAgICAgICAgSTJDX0NSMl9BVVRPRU5EICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgRW5hYmxlIEkyQyBBdXRvbWF0aWMgZW5kIG1vZGUgd2l0aCBubyBIVyBQRUMgY29tcGFyaXNvbi4gICovCi0jZGVmaW5lIExMX0kyQ19NT0RFX1NPRlRFTkQgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDBVICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IEVuYWJsZSBJMkMgU29mdHdhcmUgZW5kIG1vZGUgd2l0aCBubyBIVyBQRUMgY29tcGFyaXNvbi4gICAqLwotI2RlZmluZSBMTF9JMkNfTU9ERV9TTUJVU19SRUxPQUQgICAgICAgICAgICBMTF9JMkNfTU9ERV9SRUxPQUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBFbmFibGUgU01CVVMgQXV0b21hdGljIGVuZCBtb2RlIHdpdGggSFcgUEVDIGNvbXBhcmlzb24uICAgKi8KLSNkZWZpbmUgTExfSTJDX01PREVfU01CVVNfQVVUT0VORF9OT19QRUMgICAgTExfSTJDX01PREVfQVVUT0VORCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgRW5hYmxlIFNNQlVTIEF1dG9tYXRpYyBlbmQgbW9kZSB3aXRoIEhXIFBFQyBjb21wYXJpc29uLiAgICovCi0jZGVmaW5lIExMX0kyQ19NT0RFX1NNQlVTX1NPRlRFTkRfTk9fUEVDICAgIExMX0kyQ19NT0RFX1NPRlRFTkQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IEVuYWJsZSBTTUJVUyBTb2Z0d2FyZSBlbmQgbW9kZSB3aXRoIEhXIFBFQyBjb21wYXJpc29uLiAgICAqLwotI2RlZmluZSBMTF9JMkNfTU9ERV9TTUJVU19BVVRPRU5EX1dJVEhfUEVDICAodWludDMyX3QpKExMX0kyQ19NT0RFX0FVVE9FTkQgfCBJMkNfQ1IyX1BFQ0JZVEUpICAgLyohPCBFbmFibGUgU01CVVMgQXV0b21hdGljIGVuZCBtb2RlIHdpdGggSFcgUEVDIGNvbXBhcmlzb24uICAgKi8KLSNkZWZpbmUgTExfSTJDX01PREVfU01CVVNfU09GVEVORF9XSVRIX1BFQyAgKHVpbnQzMl90KShMTF9JMkNfTU9ERV9TT0ZURU5EIHwgSTJDX0NSMl9QRUNCWVRFKSAgIC8qITwgRW5hYmxlIFNNQlVTIFNvZnR3YXJlIGVuZCBtb2RlIHdpdGggSFcgUEVDIGNvbXBhcmlzb24uICAgICovCisjZGVmaW5lIExMX0kyQ19NT0RFX1JFTE9BRCAgICAgICAgICAgICAgICAgIEkyQ19DUjJfUkVMT0FEICAgICAgICAgICAvKiE8IEVuYWJsZSBJMkMgUmVsb2FkIG1vZGUuICAgICAqLworI2RlZmluZSBMTF9JMkNfTU9ERV9BVVRPRU5EICAgICAgICAgICAgICAgICBJMkNfQ1IyX0FVVE9FTkQgICAgICAgICAgLyohPCBFbmFibGUgSTJDIEF1dG9tYXRpYyBlbmQgbW9kZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIG5vIEhXIFBFQyBjb21wYXJpc29uLiAgKi8KKyNkZWZpbmUgTExfSTJDX01PREVfU09GVEVORCAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMFUgICAgICAgICAgICAgIC8qITwgRW5hYmxlIEkyQyBTb2Z0d2FyZSBlbmQgbW9kZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIG5vIEhXIFBFQyBjb21wYXJpc29uLiAgKi8KKyNkZWZpbmUgTExfSTJDX01PREVfU01CVVNfUkVMT0FEICAgICAgICAgICAgTExfSTJDX01PREVfUkVMT0FEICAgICAgIC8qITwgRW5hYmxlIFNNQlVTIEF1dG9tYXRpYyBlbmQgbW9kZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIEhXIFBFQyBjb21wYXJpc29uLiAgICAgKi8KKyNkZWZpbmUgTExfSTJDX01PREVfU01CVVNfQVVUT0VORF9OT19QRUMgICAgTExfSTJDX01PREVfQVVUT0VORCAgICAgIC8qITwgRW5hYmxlIFNNQlVTIEF1dG9tYXRpYyBlbmQgbW9kZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIEhXIFBFQyBjb21wYXJpc29uLiAgICAgKi8KKyNkZWZpbmUgTExfSTJDX01PREVfU01CVVNfU09GVEVORF9OT19QRUMgICAgTExfSTJDX01PREVfU09GVEVORCAgICAgIC8qITwgRW5hYmxlIFNNQlVTIFNvZnR3YXJlIGVuZCBtb2RlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggSFcgUEVDIGNvbXBhcmlzb24uICAgICAqLworI2RlZmluZSBMTF9JMkNfTU9ERV9TTUJVU19BVVRPRU5EX1dJVEhfUEVDICAodWludDMyX3QpKExMX0kyQ19NT0RFX0FVVE9FTkQgfCBJMkNfQ1IyX1BFQ0JZVEUpCisvKiE8IEVuYWJsZSBTTUJVUyBBdXRvbWF0aWMgZW5kIG1vZGUgd2l0aCBIVyBQRUMgY29tcGFyaXNvbi4gICAqLworI2RlZmluZSBMTF9JMkNfTU9ERV9TTUJVU19TT0ZURU5EX1dJVEhfUEVDICAodWludDMyX3QpKExMX0kyQ19NT0RFX1NPRlRFTkQgfCBJMkNfQ1IyX1BFQ0JZVEUpCisvKiE8IEVuYWJsZSBTTUJVUyBTb2Z0d2FyZSBlbmQgbW9kZSB3aXRoIEhXIFBFQyBjb21wYXJpc29uLiAgICAqLwogLyoqCiAgICogQH0KICAgKi8KQEAgLTI2NSwxNCArMjgxLDIzIEBACiAvKiogQGRlZmdyb3VwIEkyQ19MTF9FQ19HRU5FUkFURSBTdGFydCBBbmQgU3RvcCBHZW5lcmF0aW9uCiAgICogQHsKICAgKi8KLSNkZWZpbmUgTExfSTJDX0dFTkVSQVRFX05PU1RBUlRTVE9QICAgICAgICAgMHgwMDAwMDAwMFUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBEb24ndCBHZW5lcmF0ZSBTdG9wIGFuZCBTdGFydCBjb25kaXRpb24uICAgICAgICAgICAgICAgICovCi0jZGVmaW5lIExMX0kyQ19HRU5FUkFURV9TVE9QICAgICAgICAgICAgICAgICh1aW50MzJfdCkoMHg4MDAwMDAwMFUgfCBJMkNfQ1IyX1NUT1ApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgR2VuZXJhdGUgU3RvcCBjb25kaXRpb24gKFNpemUgc2hvdWxkIGJlIHNldCB0byAwKS4gICAgICAqLwotI2RlZmluZSBMTF9JMkNfR0VORVJBVEVfU1RBUlRfUkVBRCAgICAgICAgICAodWludDMyX3QpKDB4ODAwMDAwMDBVIHwgSTJDX0NSMl9TVEFSVCB8IEkyQ19DUjJfUkRfV1JOKSAgICAgICAgICAgICAgICAgICAvKiE8IEdlbmVyYXRlIFN0YXJ0IGZvciByZWFkIHJlcXVlc3QuICAgICAgICAgICAgICAgICAgICAgICAgKi8KLSNkZWZpbmUgTExfSTJDX0dFTkVSQVRFX1NUQVJUX1dSSVRFICAgICAgICAgKHVpbnQzMl90KSgweDgwMDAwMDAwVSB8IEkyQ19DUjJfU1RBUlQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBHZW5lcmF0ZSBTdGFydCBmb3Igd3JpdGUgcmVxdWVzdC4gICAgICAgICAgICAgICAgICAgICAgICovCi0jZGVmaW5lIExMX0kyQ19HRU5FUkFURV9SRVNUQVJUXzdCSVRfUkVBRCAgICh1aW50MzJfdCkoMHg4MDAwMDAwMFUgfCBJMkNfQ1IyX1NUQVJUIHwgSTJDX0NSMl9SRF9XUk4pICAgICAgICAgICAgICAgICAgIC8qITwgR2VuZXJhdGUgUmVzdGFydCBmb3IgcmVhZCByZXF1ZXN0LCBzbGF2ZSA3Qml0IGFkZHJlc3MuICAqLwotI2RlZmluZSBMTF9JMkNfR0VORVJBVEVfUkVTVEFSVF83QklUX1dSSVRFICAodWludDMyX3QpKDB4ODAwMDAwMDBVIHwgSTJDX0NSMl9TVEFSVCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IEdlbmVyYXRlIFJlc3RhcnQgZm9yIHdyaXRlIHJlcXVlc3QsIHNsYXZlIDdCaXQgYWRkcmVzcy4gKi8KLSNkZWZpbmUgTExfSTJDX0dFTkVSQVRFX1JFU1RBUlRfMTBCSVRfUkVBRCAgKHVpbnQzMl90KSgweDgwMDAwMDAwVSB8IEkyQ19DUjJfU1RBUlQgfCBJMkNfQ1IyX1JEX1dSTiB8IEkyQ19DUjJfSEVBRDEwUikgLyohPCBHZW5lcmF0ZSBSZXN0YXJ0IGZvciByZWFkIHJlcXVlc3QsIHNsYXZlIDEwQml0IGFkZHJlc3MuICovCi0jZGVmaW5lIExMX0kyQ19HRU5FUkFURV9SRVNUQVJUXzEwQklUX1dSSVRFICh1aW50MzJfdCkoMHg4MDAwMDAwMFUgfCBJMkNfQ1IyX1NUQVJUKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgR2VuZXJhdGUgUmVzdGFydCBmb3Igd3JpdGUgcmVxdWVzdCwgc2xhdmUgMTBCaXQgYWRkcmVzcy4qLworI2RlZmluZSBMTF9JMkNfR0VORVJBVEVfTk9TVEFSVFNUT1AgICAgICAgICAweDAwMDAwMDAwVQorLyohPCBEb24ndCBHZW5lcmF0ZSBTdG9wIGFuZCBTdGFydCBjb25kaXRpb24uICovCisjZGVmaW5lIExMX0kyQ19HRU5FUkFURV9TVE9QICAgICAgICAgICAgICAgICh1aW50MzJfdCkoMHg4MDAwMDAwMFUgfCBJMkNfQ1IyX1NUT1ApCisvKiE8IEdlbmVyYXRlIFN0b3AgY29uZGl0aW9uIChTaXplIHNob3VsZCBiZSBzZXQgdG8gMCkuICAgICAgKi8KKyNkZWZpbmUgTExfSTJDX0dFTkVSQVRFX1NUQVJUX1JFQUQgICAgICAgICAgKHVpbnQzMl90KSgweDgwMDAwMDAwVSB8IEkyQ19DUjJfU1RBUlQgfCBJMkNfQ1IyX1JEX1dSTikKKy8qITwgR2VuZXJhdGUgU3RhcnQgZm9yIHJlYWQgcmVxdWVzdC4gKi8KKyNkZWZpbmUgTExfSTJDX0dFTkVSQVRFX1NUQVJUX1dSSVRFICAgICAgICAgKHVpbnQzMl90KSgweDgwMDAwMDAwVSB8IEkyQ19DUjJfU1RBUlQpCisvKiE8IEdlbmVyYXRlIFN0YXJ0IGZvciB3cml0ZSByZXF1ZXN0LiAqLworI2RlZmluZSBMTF9JMkNfR0VORVJBVEVfUkVTVEFSVF83QklUX1JFQUQgICAodWludDMyX3QpKDB4ODAwMDAwMDBVIHwgSTJDX0NSMl9TVEFSVCB8IEkyQ19DUjJfUkRfV1JOKQorLyohPCBHZW5lcmF0ZSBSZXN0YXJ0IGZvciByZWFkIHJlcXVlc3QsIHNsYXZlIDdCaXQgYWRkcmVzcy4gICovCisjZGVmaW5lIExMX0kyQ19HRU5FUkFURV9SRVNUQVJUXzdCSVRfV1JJVEUgICh1aW50MzJfdCkoMHg4MDAwMDAwMFUgfCBJMkNfQ1IyX1NUQVJUKQorLyohPCBHZW5lcmF0ZSBSZXN0YXJ0IGZvciB3cml0ZSByZXF1ZXN0LCBzbGF2ZSA3Qml0IGFkZHJlc3MuICovCisjZGVmaW5lIExMX0kyQ19HRU5FUkFURV9SRVNUQVJUXzEwQklUX1JFQUQgICh1aW50MzJfdCkoMHg4MDAwMDAwMFUgfCBJMkNfQ1IyX1NUQVJUIHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEkyQ19DUjJfUkRfV1JOIHwgSTJDX0NSMl9IRUFEMTBSKQorLyohPCBHZW5lcmF0ZSBSZXN0YXJ0IGZvciByZWFkIHJlcXVlc3QsIHNsYXZlIDEwQml0IGFkZHJlc3MuICovCisjZGVmaW5lIExMX0kyQ19HRU5FUkFURV9SRVNUQVJUXzEwQklUX1dSSVRFICh1aW50MzJfdCkoMHg4MDAwMDAwMFUgfCBJMkNfQ1IyX1NUQVJUKQorLyohPCBHZW5lcmF0ZSBSZXN0YXJ0IGZvciB3cml0ZSByZXF1ZXN0LCBzbGF2ZSAxMEJpdCBhZGRyZXNzLiovCiAvKioKICAgKiBAfQogICAqLwpAQCAtMjgwLDggKzMwNSwxMCBAQAogLyoqIEBkZWZncm91cCBJMkNfTExfRUNfRElSRUNUSU9OIFJlYWQgV3JpdGUgRGlyZWN0aW9uCiAgICogQHsKICAgKi8KLSNkZWZpbmUgTExfSTJDX0RJUkVDVElPTl9XUklURSAgICAgICAgICAgICAgMHgwMDAwMDAwMFUgICAgICAgICAgICAgIC8qITwgV3JpdGUgdHJhbnNmZXIgcmVxdWVzdCBieSBtYXN0ZXIsIHNsYXZlIGVudGVycyByZWNlaXZlciBtb2RlLiAgKi8KLSNkZWZpbmUgTExfSTJDX0RJUkVDVElPTl9SRUFEICAgICAgICAgICAgICAgSTJDX0lTUl9ESVIgICAgICAgICAgICAgIC8qITwgUmVhZCB0cmFuc2ZlciByZXF1ZXN0IGJ5IG1hc3Rlciwgc2xhdmUgZW50ZXJzIHRyYW5zbWl0dGVyIG1vZGUuKi8KKyNkZWZpbmUgTExfSTJDX0RJUkVDVElPTl9XUklURSAgICAgICAgICAgICAgMHgwMDAwMDAwMFUgICAgICAgICAgICAgIC8qITwgV3JpdGUgdHJhbnNmZXIgcmVxdWVzdCBieSBtYXN0ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsYXZlIGVudGVycyByZWNlaXZlciBtb2RlLiAgKi8KKyNkZWZpbmUgTExfSTJDX0RJUkVDVElPTl9SRUFEICAgICAgICAgICAgICAgSTJDX0lTUl9ESVIgICAgICAgICAgICAgIC8qITwgUmVhZCB0cmFuc2ZlciByZXF1ZXN0IGJ5IG1hc3RlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2xhdmUgZW50ZXJzIHRyYW5zbWl0dGVyIG1vZGUuKi8KIC8qKgogICAqIEB9CiAgICovCkBAIC0yODksOCArMzE2LDEwIEBACiAvKiogQGRlZmdyb3VwIEkyQ19MTF9FQ19ETUFfUkVHX0RBVEEgRE1BIFJlZ2lzdGVyIERhdGEKICAgKiBAewogICAqLwotI2RlZmluZSBMTF9JMkNfRE1BX1JFR19EQVRBX1RSQU5TTUlUICAgICAgICAweDAwMDAwMDAwVSAgICAgICAgICAgICAgLyohPCBHZXQgYWRkcmVzcyBvZiBkYXRhIHJlZ2lzdGVyIHVzZWQgZm9yIHRyYW5zbWlzc2lvbiAqLwotI2RlZmluZSBMTF9JMkNfRE1BX1JFR19EQVRBX1JFQ0VJVkUgICAgICAgICAweDAwMDAwMDAxVSAgICAgICAgICAgICAgLyohPCBHZXQgYWRkcmVzcyBvZiBkYXRhIHJlZ2lzdGVyIHVzZWQgZm9yIHJlY2VwdGlvbiAqLworI2RlZmluZSBMTF9JMkNfRE1BX1JFR19EQVRBX1RSQU5TTUlUICAgICAgICAweDAwMDAwMDAwVSAgICAgICAgICAgICAgLyohPCBHZXQgYWRkcmVzcyBvZiBkYXRhIHJlZ2lzdGVyIHVzZWQgZm9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zbWlzc2lvbiAqLworI2RlZmluZSBMTF9JMkNfRE1BX1JFR19EQVRBX1JFQ0VJVkUgICAgICAgICAweDAwMDAwMDAxVSAgICAgICAgICAgICAgLyohPCBHZXQgYWRkcmVzcyBvZiBkYXRhIHJlZ2lzdGVyIHVzZWQgZm9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY2VwdGlvbiAqLwogLyoqCiAgICogQH0KICAgKi8KQEAgLTI5OCw4ICszMjcsMTAgQEAKIC8qKiBAZGVmZ3JvdXAgSTJDX0xMX0VDX1NNQlVTX1RJTUVPVVRBX01PREUgU01CdXMgVGltZW91dEEgTW9kZSBTQ0wgU0RBIFRpbWVvdXQKICAgKiBAewogICAqLwotI2RlZmluZSBMTF9JMkNfU01CVVNfVElNRU9VVEFfTU9ERV9TQ0xfTE9XICAgICAgMHgwMDAwMDAwMFUgICAgICAgICAgLyohPCBUaW1lb3V0QSBpcyB1c2VkIHRvIGRldGVjdCBTQ0wgbG93IGxldmVsIHRpbWVvdXQuICAgICAgICAgICAgICAqLwotI2RlZmluZSBMTF9JMkNfU01CVVNfVElNRU9VVEFfTU9ERV9TREFfU0NMX0hJR0ggSTJDX1RJTUVPVVRSX1RJRExFICAgLyohPCBUaW1lb3V0QSBpcyB1c2VkIHRvIGRldGVjdCBib3RoIFNDTCBhbmQgU0RBIGhpZ2ggbGV2ZWwgdGltZW91dC4qLworI2RlZmluZSBMTF9JMkNfU01CVVNfVElNRU9VVEFfTU9ERV9TQ0xfTE9XICAgICAgMHgwMDAwMDAwMFUgICAgICAgICAgLyohPCBUaW1lb3V0QSBpcyB1c2VkIHRvIGRldGVjdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTQ0wgbG93IGxldmVsIHRpbWVvdXQuICAgICAgICAgICAgICAqLworI2RlZmluZSBMTF9JMkNfU01CVVNfVElNRU9VVEFfTU9ERV9TREFfU0NMX0hJR0ggSTJDX1RJTUVPVVRSX1RJRExFICAgLyohPCBUaW1lb3V0QSBpcyB1c2VkIHRvIGRldGVjdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3RoIFNDTCBhbmQgU0RBIGhpZ2ggbGV2ZWwgdGltZW91dC4qLwogLyoqCiAgICogQH0KICAgKi8KQEAgLTMwNyw5ICszMzgsMTIgQEAKIC8qKiBAZGVmZ3JvdXAgSTJDX0xMX0VDX1NNQlVTX1RJTUVPVVRfU0VMRUNUSU9OIFNNQnVzIFRpbWVvdXQgU2VsZWN0aW9uCiAgICogQHsKICAgKi8KLSNkZWZpbmUgTExfSTJDX1NNQlVTX1RJTUVPVVRBICAgICAgICAgICAgICAgSTJDX1RJTUVPVVRSX1RJTU9VVEVOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IFRpbWVvdXRBIGVuYWJsZSBiaXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0jZGVmaW5lIExMX0kyQ19TTUJVU19USU1FT1VUQiAgICAgICAgICAgICAgIEkyQ19USU1FT1VUUl9URVhURU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBUaW1lb3V0QiAoZXh0ZW5kZWQgY2xvY2spIGVuYWJsZSBiaXQgICAgICAgICAgICAgICAqLwotI2RlZmluZSBMTF9JMkNfU01CVVNfQUxMX1RJTUVPVVQgICAgICAgICAgICAodWludDMyX3QpKEkyQ19USU1FT1VUUl9USU1PVVRFTiB8IEkyQ19USU1FT1VUUl9URVhURU4pIC8qITwgVGltZW91dEEgYW5kIFRpbWVvdXRCIChleHRlbmRlZCBjbG9jaykgZW5hYmxlIGJpdHMgKi8KKyNkZWZpbmUgTExfSTJDX1NNQlVTX1RJTUVPVVRBICAgICAgICAgICAgICAgSTJDX1RJTUVPVVRSX1RJTU9VVEVOICAgICAgICAgICAgICAgICAvKiE8IFRpbWVvdXRBIGVuYWJsZSBiaXQgICAgICAgICAgKi8KKyNkZWZpbmUgTExfSTJDX1NNQlVTX1RJTUVPVVRCICAgICAgICAgICAgICAgSTJDX1RJTUVPVVRSX1RFWFRFTiAgICAgICAgICAgICAgICAgICAvKiE8IFRpbWVvdXRCIChleHRlbmRlZCBjbG9jaykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZSBiaXQgICAgICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgTExfSTJDX1NNQlVTX0FMTF9USU1FT1VUICAgICAgICAgICAgKHVpbnQzMl90KShJMkNfVElNRU9VVFJfVElNT1VURU4gfCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSTJDX1RJTUVPVVRSX1RFWFRFTikgICAgICAgLyohPCBUaW1lb3V0QSBhbmQgVGltZW91dEIKKyhleHRlbmRlZCBjbG9jaykgZW5hYmxlIGJpdHMgKi8KIC8qKgogICAqIEB9CiAgICovCkBAIC0zNTMsMTggKzM4NywyMiBAQAogLyoqCiAgICogQGJyaWVmICBDb25maWd1cmUgdGhlIFNEQSBzZXR1cCwgaG9sZCB0aW1lIGFuZCB0aGUgU0NMIGhpZ2gsIGxvdyBwZXJpb2QuCiAgICogQHBhcmFtICBfX1BSRVNDQUxFUl9fIFRoaXMgcGFyYW1ldGVyIG11c3QgYmUgYSB2YWx1ZSBiZXR3ZWVuICBNaW5fRGF0YT0wIGFuZCBNYXhfRGF0YT0weEYuCi0gICogQHBhcmFtICBfX0RBVEFfU0VUVVBfVElNRV9fIFRoaXMgcGFyYW1ldGVyIG11c3QgYmUgYSB2YWx1ZSBiZXR3ZWVuIE1pbl9EYXRhPTAgYW5kIE1heF9EYXRhPTB4Ri4gKHRzY2xkZWwgPSAoU0NMREVMKzEpeHRwcmVzYykKLSAgKiBAcGFyYW0gIF9fREFUQV9IT0xEX1RJTUVfXyBUaGlzIHBhcmFtZXRlciBtdXN0IGJlIGEgdmFsdWUgYmV0d2VlbiBNaW5fRGF0YT0wIGFuZCBNYXhfRGF0YT0weEYuICh0c2RhZGVsID0gU0RBREVMeHRwcmVzYykKLSAgKiBAcGFyYW0gIF9fQ0xPQ0tfSElHSF9QRVJJT0RfXyBUaGlzIHBhcmFtZXRlciBtdXN0IGJlIGEgdmFsdWUgYmV0d2VlbiBNaW5fRGF0YT0wIGFuZCBNYXhfRGF0YT0weEZGLiAodHNjbGggPSAoU0NMSCsxKXh0cHJlc2MpCi0gICogQHBhcmFtICBfX0NMT0NLX0xPV19QRVJJT0RfXyBUaGlzIHBhcmFtZXRlciBtdXN0IGJlIGEgdmFsdWUgYmV0d2VlbiAgTWluX0RhdGE9MCBhbmQgTWF4X0RhdGE9MHhGRi4gKHRzY2xsID0gKFNDTEwrMSl4dHByZXNjKQorICAqIEBwYXJhbSAgX19TRVRVUF9USU1FX18gVGhpcyBwYXJhbWV0ZXIgbXVzdCBiZSBhIHZhbHVlIGJldHdlZW4gTWluX0RhdGE9MCBhbmQgTWF4X0RhdGE9MHhGLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRzY2xkZWwgPSAoU0NMREVMKzEpeHRwcmVzYykKKyAgKiBAcGFyYW0gIF9fSE9MRF9USU1FX18gIFRoaXMgcGFyYW1ldGVyIG11c3QgYmUgYSB2YWx1ZSBiZXR3ZWVuIE1pbl9EYXRhPTAgYW5kIE1heF9EYXRhPTB4Ri4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICh0c2RhZGVsID0gU0RBREVMeHRwcmVzYykKKyAgKiBAcGFyYW0gIF9fU0NMSF9QRVJJT0RfXyBUaGlzIHBhcmFtZXRlciBtdXN0IGJlIGEgdmFsdWUgYmV0d2VlbiBNaW5fRGF0YT0wIGFuZCBNYXhfRGF0YT0weEZGLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0c2NsaCA9IChTQ0xIKzEpeHRwcmVzYykKKyAgKiBAcGFyYW0gIF9fU0NMTF9QRVJJT0RfXyBUaGlzIHBhcmFtZXRlciBtdXN0IGJlIGEgdmFsdWUgYmV0d2VlbiAgTWluX0RhdGE9MCBhbmQgTWF4X0RhdGE9MHhGRi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHNjbGwgPSAoU0NMTCsxKXh0cHJlc2MpCiAgICogQHJldHZhbCBWYWx1ZSBiZXR3ZWVuIE1pbl9EYXRhPTAgYW5kIE1heF9EYXRhPTB4RkZGRkZGRkYKICAgKi8KLSNkZWZpbmUgX19MTF9JMkNfQ09OVkVSVF9USU1JTkdTKF9fUFJFU0NBTEVSX18sIF9fREFUQV9TRVRVUF9USU1FX18sIF9fREFUQV9IT0xEX1RJTUVfXywgX19DTE9DS19ISUdIX1BFUklPRF9fLCBfX0NMT0NLX0xPV19QRVJJT0RfXykgICBcCi0gICgoKCh1aW50MzJfdCkoX19QUkVTQ0FMRVJfXykgICAgICAgICA8PCBJMkNfVElNSU5HUl9QUkVTQ19Qb3MpICAmIEkyQ19USU1JTkdSX1BSRVNDKSAgIHwgXAotICAgKCgodWludDMyX3QpKF9fREFUQV9TRVRVUF9USU1FX18pICAgPDwgSTJDX1RJTUlOR1JfU0NMREVMX1BvcykgJiBJMkNfVElNSU5HUl9TQ0xERUwpICB8IFwKLSAgICgoKHVpbnQzMl90KShfX0RBVEFfSE9MRF9USU1FX18pICAgIDw8IEkyQ19USU1JTkdSX1NEQURFTF9Qb3MpICYgSTJDX1RJTUlOR1JfU0RBREVMKSAgfCBcCi0gICAoKCh1aW50MzJfdCkoX19DTE9DS19ISUdIX1BFUklPRF9fKSA8PCBJMkNfVElNSU5HUl9TQ0xIX1BvcykgICAmIEkyQ19USU1JTkdSX1NDTEgpICAgIHwgXAotICAgKCgodWludDMyX3QpKF9fQ0xPQ0tfTE9XX1BFUklPRF9fKSAgPDwgSTJDX1RJTUlOR1JfU0NMTF9Qb3MpICAgJiBJMkNfVElNSU5HUl9TQ0xMKSkKKyNkZWZpbmUgX19MTF9JMkNfQ09OVkVSVF9USU1JTkdTKF9fUFJFU0NBTEVSX18sIF9fU0VUVVBfVElNRV9fLCBfX0hPTERfVElNRV9fLCBfX1NDTEhfUEVSSU9EX18sIF9fU0NMTF9QRVJJT0RfXykgXAorICAoKCgodWludDMyX3QpKF9fUFJFU0NBTEVSX18pICAgIDw8IEkyQ19USU1JTkdSX1BSRVNDX1BvcykgICYgSTJDX1RJTUlOR1JfUFJFU0MpICAgfCBcCisgICAoKCh1aW50MzJfdCkoX19TRVRVUF9USU1FX18pICAgPDwgSTJDX1RJTUlOR1JfU0NMREVMX1BvcykgJiBJMkNfVElNSU5HUl9TQ0xERUwpICB8IFwKKyAgICgoKHVpbnQzMl90KShfX0hPTERfVElNRV9fKSAgICA8PCBJMkNfVElNSU5HUl9TREFERUxfUG9zKSAmIEkyQ19USU1JTkdSX1NEQURFTCkgIHwgXAorICAgKCgodWludDMyX3QpKF9fU0NMSF9QRVJJT0RfXykgIDw8IEkyQ19USU1JTkdSX1NDTEhfUG9zKSAgICYgSTJDX1RJTUlOR1JfU0NMSCkgICAgfCBcCisgICAoKCh1aW50MzJfdCkoX19TQ0xMX1BFUklPRF9fKSAgPDwgSTJDX1RJTUlOR1JfU0NMTF9Qb3MpICAgJiBJMkNfVElNSU5HUl9TQ0xMKSkKIC8qKgogICAqIEB9CiAgICovCkBAIC00MjgsNyArNDY2LDggQEAKICAgKiBAcGFyYW0gIEFuYWxvZ0ZpbHRlciBUaGlzIHBhcmFtZXRlciBjYW4gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOgogICAqICAgICAgICAgQGFyZyBAcmVmIExMX0kyQ19BTkFMT0dGSUxURVJfRU5BQkxFCiAgICogICAgICAgICBAYXJnIEByZWYgTExfSTJDX0FOQUxPR0ZJTFRFUl9ESVNBQkxFCi0gICogQHBhcmFtICBEaWdpdGFsRmlsdGVyIFRoaXMgcGFyYW1ldGVyIG11c3QgYmUgYSB2YWx1ZSBiZXR3ZWVuIE1pbl9EYXRhPTB4MDAgKERpZ2l0YWwgZmlsdGVyIGRpc2FibGVkKSBhbmQgTWF4X0RhdGE9MHgwRiAoRGlnaXRhbCBmaWx0ZXIgZW5hYmxlZCBhbmQgZmlsdGVyaW5nIGNhcGFiaWxpdHkgdXAgdG8gMTUqdGkyY2NsaykuCisgICogQHBhcmFtICBEaWdpdGFsRmlsdGVyIFRoaXMgcGFyYW1ldGVyIG11c3QgYmUgYSB2YWx1ZSBiZXR3ZWVuIE1pbl9EYXRhPTB4MDAgKERpZ2l0YWwgZmlsdGVyIGRpc2FibGVkKQorICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgTWF4X0RhdGE9MHgwRiAoRGlnaXRhbCBmaWx0ZXIgZW5hYmxlZCBhbmQgZmlsdGVyaW5nIGNhcGFiaWxpdHkgdXAgdG8gMTUqdGkyY2NsaykuCiAgICogICAgICAgICBUaGlzIHBhcmFtZXRlciBpcyB1c2VkIHRvIGNvbmZpZ3VyZSB0aGUgZGlnaXRhbCBub2lzZSBmaWx0ZXIgb24gU0RBIGFuZCBTQ0wgaW5wdXQuCiAgICogICAgICAgICBUaGUgZGlnaXRhbCBmaWx0ZXIgd2lsbCBmaWx0ZXIgc3Bpa2VzIHdpdGggYSBsZW5ndGggb2YgdXAgdG8gRE5GWzM6MF0qdGkyY2Nsay4KICAgKiBAcmV0dmFsIE5vbmUKQEAgLTQ0NCw3ICs0ODMsOCBAQAogICAqICAgICAgICAgVGhpcyBmaWx0ZXIgY2FuIG9ubHkgYmUgcHJvZ3JhbW1lZCB3aGVuIHRoZSBJMkMgaXMgZGlzYWJsZWQgKFBFID0gMCkuCiAgICogQHJtdG9sbCBDUjEgICAgICAgICAgRE5GICAgICAgICAgICBMTF9JMkNfU2V0RGlnaXRhbEZpbHRlcgogICAqIEBwYXJhbSAgSTJDeCBJMkMgSW5zdGFuY2UuCi0gICogQHBhcmFtICBEaWdpdGFsRmlsdGVyIFRoaXMgcGFyYW1ldGVyIG11c3QgYmUgYSB2YWx1ZSBiZXR3ZWVuIE1pbl9EYXRhPTB4MDAgKERpZ2l0YWwgZmlsdGVyIGRpc2FibGVkKSBhbmQgTWF4X0RhdGE9MHgwRiAoRGlnaXRhbCBmaWx0ZXIgZW5hYmxlZCBhbmQgZmlsdGVyaW5nIGNhcGFiaWxpdHkgdXAgdG8gMTUqdGkyY2NsaykuCisgICogQHBhcmFtICBEaWdpdGFsRmlsdGVyIFRoaXMgcGFyYW1ldGVyIG11c3QgYmUgYSB2YWx1ZSBiZXR3ZWVuIE1pbl9EYXRhPTB4MDAgKERpZ2l0YWwgZmlsdGVyIGRpc2FibGVkKQorICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgTWF4X0RhdGE9MHgwRiAoRGlnaXRhbCBmaWx0ZXIgZW5hYmxlZCBhbmQgZmlsdGVyaW5nIGNhcGFiaWxpdHkgdXAgdG8gMTUqdGkyY2NsaykuCiAgICogICAgICAgICBUaGlzIHBhcmFtZXRlciBpcyB1c2VkIHRvIGNvbmZpZ3VyZSB0aGUgZGlnaXRhbCBub2lzZSBmaWx0ZXIgb24gU0RBIGFuZCBTQ0wgaW5wdXQuCiAgICogICAgICAgICBUaGUgZGlnaXRhbCBmaWx0ZXIgd2lsbCBmaWx0ZXIgc3Bpa2VzIHdpdGggYSBsZW5ndGggb2YgdXAgdG8gRE5GWzM6MF0qdGkyY2Nsay4KICAgKiBAcmV0dmFsIE5vbmUKQEAgLTY2Miw3ICs3MDIsNiBAQAogICByZXR1cm4gKChSRUFEX0JJVChJMkN4LT5DUjEsIEkyQ19DUjFfU0JDKSA9PSAoSTJDX0NSMV9TQkMpKSA/IDFVTCA6IDBVTCk7CiB9CiAKLQogLyoqCiAgICogQGJyaWVmICBFbmFibGUgR2VuZXJhbCBDYWxsLgogICAqIEBub3RlICAgV2hlbiBlbmFibGVkIHRoZSBBZGRyZXNzIDB4MDAgaXMgQUNLZWQuCkBAIC05MDIsNyArOTQxLDcgQEAKIAogLyoqCiAgICogQGJyaWVmICBDb25maWd1cmUgcGVyaXBoZXJhbCBtb2RlLgotICAqIEBub3RlICAgTWFjcm8gSVNfU01CVVNfQUxMX0lOU1RBTkNFKEkyQ3gpIGNhbiBiZSB1c2VkIHRvIGNoZWNrIHdoZXRoZXIgb3Igbm90CisgICogQG5vdGUgICBUaGUgbWFjcm8gSVNfU01CVVNfQUxMX0lOU1RBTkNFKEkyQ3gpIGNhbiBiZSB1c2VkIHRvIGNoZWNrIHdoZXRoZXIgb3Igbm90CiAgICogICAgICAgICBTTUJ1cyBmZWF0dXJlIGlzIHN1cHBvcnRlZCBieSB0aGUgSTJDeCBJbnN0YW5jZS4KICAgKiBAcm10b2xsIENSMSAgICAgICAgICBTTUJIRU4gICAgICAgIExMX0kyQ19TZXRNb2RlXG4KICAgKiAgICAgICAgIENSMSAgICAgICAgICBTTUJERU4gICAgICAgIExMX0kyQ19TZXRNb2RlCkBAIC05MjEsNyArOTYwLDcgQEAKIAogLyoqCiAgICogQGJyaWVmICBHZXQgcGVyaXBoZXJhbCBtb2RlLgotICAqIEBub3RlICAgTWFjcm8gSVNfU01CVVNfQUxMX0lOU1RBTkNFKEkyQ3gpIGNhbiBiZSB1c2VkIHRvIGNoZWNrIHdoZXRoZXIgb3Igbm90CisgICogQG5vdGUgICBUaGUgbWFjcm8gSVNfU01CVVNfQUxMX0lOU1RBTkNFKEkyQ3gpIGNhbiBiZSB1c2VkIHRvIGNoZWNrIHdoZXRoZXIgb3Igbm90CiAgICogICAgICAgICBTTUJ1cyBmZWF0dXJlIGlzIHN1cHBvcnRlZCBieSB0aGUgSTJDeCBJbnN0YW5jZS4KICAgKiBAcm10b2xsIENSMSAgICAgICAgICBTTUJIRU4gICAgICAgIExMX0kyQ19HZXRNb2RlXG4KICAgKiAgICAgICAgIENSMSAgICAgICAgICBTTUJERU4gICAgICAgIExMX0kyQ19HZXRNb2RlCkBAIC05MzksNyArOTc4LDcgQEAKIAogLyoqCiAgICogQGJyaWVmICBFbmFibGUgU01CdXMgYWxlcnQgKEhvc3Qgb3IgRGV2aWNlIG1vZGUpCi0gICogQG5vdGUgICBNYWNybyBJU19TTUJVU19BTExfSU5TVEFOQ0UoSTJDeCkgY2FuIGJlIHVzZWQgdG8gY2hlY2sgd2hldGhlciBvciBub3QKKyAgKiBAbm90ZSAgIFRoZSBtYWNybyBJU19TTUJVU19BTExfSU5TVEFOQ0UoSTJDeCkgY2FuIGJlIHVzZWQgdG8gY2hlY2sgd2hldGhlciBvciBub3QKICAgKiAgICAgICAgIFNNQnVzIGZlYXR1cmUgaXMgc3VwcG9ydGVkIGJ5IHRoZSBJMkN4IEluc3RhbmNlLgogICAqIEBub3RlICAgU01CdXMgRGV2aWNlIG1vZGU6CiAgICogICAgICAgICAtIFNNQnVzIEFsZXJ0IHBpbiBpcyBkcml2ZWQgbG93IGFuZApAQCAtOTU3LDcgKzk5Niw3IEBACiAKIC8qKgogICAqIEBicmllZiAgRGlzYWJsZSBTTUJ1cyBhbGVydCAoSG9zdCBvciBEZXZpY2UgbW9kZSkKLSAgKiBAbm90ZSAgIE1hY3JvIElTX1NNQlVTX0FMTF9JTlNUQU5DRShJMkN4KSBjYW4gYmUgdXNlZCB0byBjaGVjayB3aGV0aGVyIG9yIG5vdAorICAqIEBub3RlICAgVGhlIG1hY3JvIElTX1NNQlVTX0FMTF9JTlNUQU5DRShJMkN4KSBjYW4gYmUgdXNlZCB0byBjaGVjayB3aGV0aGVyIG9yIG5vdAogICAqICAgICAgICAgU01CdXMgZmVhdHVyZSBpcyBzdXBwb3J0ZWQgYnkgdGhlIEkyQ3ggSW5zdGFuY2UuCiAgICogQG5vdGUgICBTTUJ1cyBEZXZpY2UgbW9kZToKICAgKiAgICAgICAgIC0gU01CdXMgQWxlcnQgcGluIGlzIG5vdCBkcml2ZWQgKGNhbiBiZSB1c2VkIGFzIGEgc3RhbmRhcmQgR1BJTykgYW5kCkBAIC05NzUsNyArMTAxNCw3IEBACiAKIC8qKgogICAqIEBicmllZiAgQ2hlY2sgaWYgU01CdXMgYWxlcnQgKEhvc3Qgb3IgRGV2aWNlIG1vZGUpIGlzIGVuYWJsZWQgb3IgZGlzYWJsZWQuCi0gICogQG5vdGUgICBNYWNybyBJU19TTUJVU19BTExfSU5TVEFOQ0UoSTJDeCkgY2FuIGJlIHVzZWQgdG8gY2hlY2sgd2hldGhlciBvciBub3QKKyAgKiBAbm90ZSAgIFRoZSBtYWNybyBJU19TTUJVU19BTExfSU5TVEFOQ0UoSTJDeCkgY2FuIGJlIHVzZWQgdG8gY2hlY2sgd2hldGhlciBvciBub3QKICAgKiAgICAgICAgIFNNQnVzIGZlYXR1cmUgaXMgc3VwcG9ydGVkIGJ5IHRoZSBJMkN4IEluc3RhbmNlLgogICAqIEBybXRvbGwgQ1IxICAgICAgICAgIEFMRVJURU4gICAgICAgTExfSTJDX0lzRW5hYmxlZFNNQnVzQWxlcnQKICAgKiBAcGFyYW0gIEkyQ3ggSTJDIEluc3RhbmNlLgpAQCAtOTg4LDcgKzEwMjcsNyBAQAogCiAvKioKICAgKiBAYnJpZWYgIEVuYWJsZSBTTUJ1cyBQYWNrZXQgRXJyb3IgQ2FsY3VsYXRpb24gKFBFQykuCi0gICogQG5vdGUgICBNYWNybyBJU19TTUJVU19BTExfSU5TVEFOQ0UoSTJDeCkgY2FuIGJlIHVzZWQgdG8gY2hlY2sgd2hldGhlciBvciBub3QKKyAgKiBAbm90ZSAgIFRoZSBtYWNybyBJU19TTUJVU19BTExfSU5TVEFOQ0UoSTJDeCkgY2FuIGJlIHVzZWQgdG8gY2hlY2sgd2hldGhlciBvciBub3QKICAgKiAgICAgICAgIFNNQnVzIGZlYXR1cmUgaXMgc3VwcG9ydGVkIGJ5IHRoZSBJMkN4IEluc3RhbmNlLgogICAqIEBybXRvbGwgQ1IxICAgICAgICAgIFBFQ0VOICAgICAgICAgTExfSTJDX0VuYWJsZVNNQnVzUEVDCiAgICogQHBhcmFtICBJMkN4IEkyQyBJbnN0YW5jZS4KQEAgLTEwMDEsNyArMTA0MCw3IEBACiAKIC8qKgogICAqIEBicmllZiAgRGlzYWJsZSBTTUJ1cyBQYWNrZXQgRXJyb3IgQ2FsY3VsYXRpb24gKFBFQykuCi0gICogQG5vdGUgICBNYWNybyBJU19TTUJVU19BTExfSU5TVEFOQ0UoSTJDeCkgY2FuIGJlIHVzZWQgdG8gY2hlY2sgd2hldGhlciBvciBub3QKKyAgKiBAbm90ZSAgIFRoZSBtYWNybyBJU19TTUJVU19BTExfSU5TVEFOQ0UoSTJDeCkgY2FuIGJlIHVzZWQgdG8gY2hlY2sgd2hldGhlciBvciBub3QKICAgKiAgICAgICAgIFNNQnVzIGZlYXR1cmUgaXMgc3VwcG9ydGVkIGJ5IHRoZSBJMkN4IEluc3RhbmNlLgogICAqIEBybXRvbGwgQ1IxICAgICAgICAgIFBFQ0VOICAgICAgICAgTExfSTJDX0Rpc2FibGVTTUJ1c1BFQwogICAqIEBwYXJhbSAgSTJDeCBJMkMgSW5zdGFuY2UuCkBAIC0xMDE0LDcgKzEwNTMsNyBAQAogCiAvKioKICAgKiBAYnJpZWYgIENoZWNrIGlmIFNNQnVzIFBhY2tldCBFcnJvciBDYWxjdWxhdGlvbiAoUEVDKSBpcyBlbmFibGVkIG9yIGRpc2FibGVkLgotICAqIEBub3RlICAgTWFjcm8gSVNfU01CVVNfQUxMX0lOU1RBTkNFKEkyQ3gpIGNhbiBiZSB1c2VkIHRvIGNoZWNrIHdoZXRoZXIgb3Igbm90CisgICogQG5vdGUgICBUaGUgbWFjcm8gSVNfU01CVVNfQUxMX0lOU1RBTkNFKEkyQ3gpIGNhbiBiZSB1c2VkIHRvIGNoZWNrIHdoZXRoZXIgb3Igbm90CiAgICogICAgICAgICBTTUJ1cyBmZWF0dXJlIGlzIHN1cHBvcnRlZCBieSB0aGUgSTJDeCBJbnN0YW5jZS4KICAgKiBAcm10b2xsIENSMSAgICAgICAgICBQRUNFTiAgICAgICAgIExMX0kyQ19Jc0VuYWJsZWRTTUJ1c1BFQwogICAqIEBwYXJhbSAgSTJDeCBJMkMgSW5zdGFuY2UuCkBAIC0xMDI3LDcgKzEwNjYsNyBAQAogCiAvKioKICAgKiBAYnJpZWYgIENvbmZpZ3VyZSB0aGUgU01CdXMgQ2xvY2sgVGltZW91dC4KLSAgKiBAbm90ZSAgIE1hY3JvIElTX1NNQlVTX0FMTF9JTlNUQU5DRShJMkN4KSBjYW4gYmUgdXNlZCB0byBjaGVjayB3aGV0aGVyIG9yIG5vdAorICAqIEBub3RlICAgVGhlIG1hY3JvIElTX1NNQlVTX0FMTF9JTlNUQU5DRShJMkN4KSBjYW4gYmUgdXNlZCB0byBjaGVjayB3aGV0aGVyIG9yIG5vdAogICAqICAgICAgICAgU01CdXMgZmVhdHVyZSBpcyBzdXBwb3J0ZWQgYnkgdGhlIEkyQ3ggSW5zdGFuY2UuCiAgICogQG5vdGUgICBUaGlzIGNvbmZpZ3VyYXRpb24gY2FuIG9ubHkgYmUgcHJvZ3JhbW1lZCB3aGVuIGFzc29jaWF0ZWQgVGltZW91dCBpcyBkaXNhYmxlZCAoVGltZW91dEEgYW5kL29yVGltZW91dEIpLgogICAqIEBybXRvbGwgVElNRU9VVFIgICAgIFRJTUVPVVRBICAgICAgTExfSTJDX0NvbmZpZ1NNQnVzVGltZW91dFxuCkBAIC0xMDUwLDcgKzEwODksNyBAQAogCiAvKioKICAgKiBAYnJpZWYgIENvbmZpZ3VyZSB0aGUgU01CdXMgQ2xvY2sgVGltZW91dEEgKFNDTCBsb3cgdGltZW91dCBvciBTQ0wgYW5kIFNEQSBoaWdoIHRpbWVvdXQgZGVwZW5kcyBvbiBUaW1lb3V0QSBtb2RlKS4KLSAgKiBAbm90ZSAgIE1hY3JvIElTX1NNQlVTX0FMTF9JTlNUQU5DRShJMkN4KSBjYW4gYmUgdXNlZCB0byBjaGVjayB3aGV0aGVyIG9yIG5vdAorICAqIEBub3RlICAgVGhlIG1hY3JvIElTX1NNQlVTX0FMTF9JTlNUQU5DRShJMkN4KSBjYW4gYmUgdXNlZCB0byBjaGVjayB3aGV0aGVyIG9yIG5vdAogICAqICAgICAgICAgU01CdXMgZmVhdHVyZSBpcyBzdXBwb3J0ZWQgYnkgdGhlIEkyQ3ggSW5zdGFuY2UuCiAgICogQG5vdGUgICBUaGVzZSBiaXRzIGNhbiBvbmx5IGJlIHByb2dyYW1tZWQgd2hlbiBUaW1lb3V0QSBpcyBkaXNhYmxlZC4KICAgKiBAcm10b2xsIFRJTUVPVVRSICAgICBUSU1FT1VUQSAgICAgIExMX0kyQ19TZXRTTUJ1c1RpbWVvdXRBCkBAIC0xMDY1LDcgKzExMDQsNyBAQAogCiAvKioKICAgKiBAYnJpZWYgIEdldCB0aGUgU01CdXMgQ2xvY2sgVGltZW91dEEgc2V0dGluZy4KLSAgKiBAbm90ZSAgIE1hY3JvIElTX1NNQlVTX0FMTF9JTlNUQU5DRShJMkN4KSBjYW4gYmUgdXNlZCB0byBjaGVjayB3aGV0aGVyIG9yIG5vdAorICAqIEBub3RlICAgVGhlIG1hY3JvIElTX1NNQlVTX0FMTF9JTlNUQU5DRShJMkN4KSBjYW4gYmUgdXNlZCB0byBjaGVjayB3aGV0aGVyIG9yIG5vdAogICAqICAgICAgICAgU01CdXMgZmVhdHVyZSBpcyBzdXBwb3J0ZWQgYnkgdGhlIEkyQ3ggSW5zdGFuY2UuCiAgICogQHJtdG9sbCBUSU1FT1VUUiAgICAgVElNRU9VVEEgICAgICBMTF9JMkNfR2V0U01CdXNUaW1lb3V0QQogICAqIEBwYXJhbSAgSTJDeCBJMkMgSW5zdGFuY2UuCkBAIC0xMDc4LDcgKzExMTcsNyBAQAogCiAvKioKICAgKiBAYnJpZWYgIFNldCB0aGUgU01CdXMgQ2xvY2sgVGltZW91dEEgbW9kZS4KLSAgKiBAbm90ZSAgIE1hY3JvIElTX1NNQlVTX0FMTF9JTlNUQU5DRShJMkN4KSBjYW4gYmUgdXNlZCB0byBjaGVjayB3aGV0aGVyIG9yIG5vdAorICAqIEBub3RlICAgVGhlIG1hY3JvIElTX1NNQlVTX0FMTF9JTlNUQU5DRShJMkN4KSBjYW4gYmUgdXNlZCB0byBjaGVjayB3aGV0aGVyIG9yIG5vdAogICAqICAgICAgICAgU01CdXMgZmVhdHVyZSBpcyBzdXBwb3J0ZWQgYnkgdGhlIEkyQ3ggSW5zdGFuY2UuCiAgICogQG5vdGUgICBUaGlzIGJpdCBjYW4gb25seSBiZSBwcm9ncmFtbWVkIHdoZW4gVGltZW91dEEgaXMgZGlzYWJsZWQuCiAgICogQHJtdG9sbCBUSU1FT1VUUiAgICAgVElETEUgICAgICAgICBMTF9JMkNfU2V0U01CdXNUaW1lb3V0QU1vZGUKQEAgLTEwOTUsNyArMTEzNCw3IEBACiAKIC8qKgogICAqIEBicmllZiAgR2V0IHRoZSBTTUJ1cyBDbG9jayBUaW1lb3V0QSBtb2RlLgotICAqIEBub3RlICAgTWFjcm8gSVNfU01CVVNfQUxMX0lOU1RBTkNFKEkyQ3gpIGNhbiBiZSB1c2VkIHRvIGNoZWNrIHdoZXRoZXIgb3Igbm90CisgICogQG5vdGUgICBUaGUgbWFjcm8gSVNfU01CVVNfQUxMX0lOU1RBTkNFKEkyQ3gpIGNhbiBiZSB1c2VkIHRvIGNoZWNrIHdoZXRoZXIgb3Igbm90CiAgICogICAgICAgICBTTUJ1cyBmZWF0dXJlIGlzIHN1cHBvcnRlZCBieSB0aGUgSTJDeCBJbnN0YW5jZS4KICAgKiBAcm10b2xsIFRJTUVPVVRSICAgICBUSURMRSAgICAgICAgIExMX0kyQ19HZXRTTUJ1c1RpbWVvdXRBTW9kZQogICAqIEBwYXJhbSAgSTJDeCBJMkMgSW5zdGFuY2UuCkBAIC0xMTEwLDcgKzExNDksNyBAQAogCiAvKioKICAgKiBAYnJpZWYgIENvbmZpZ3VyZSB0aGUgU01CdXMgRXh0ZW5kZWQgQ3VtdWxhdGl2ZSBDbG9jayBUaW1lb3V0QiAoTWFzdGVyIG9yIFNsYXZlIG1vZGUpLgotICAqIEBub3RlICAgTWFjcm8gSVNfU01CVVNfQUxMX0lOU1RBTkNFKEkyQ3gpIGNhbiBiZSB1c2VkIHRvIGNoZWNrIHdoZXRoZXIgb3Igbm90CisgICogQG5vdGUgICBUaGUgbWFjcm8gSVNfU01CVVNfQUxMX0lOU1RBTkNFKEkyQ3gpIGNhbiBiZSB1c2VkIHRvIGNoZWNrIHdoZXRoZXIgb3Igbm90CiAgICogICAgICAgICBTTUJ1cyBmZWF0dXJlIGlzIHN1cHBvcnRlZCBieSB0aGUgSTJDeCBJbnN0YW5jZS4KICAgKiBAbm90ZSAgIFRoZXNlIGJpdHMgY2FuIG9ubHkgYmUgcHJvZ3JhbW1lZCB3aGVuIFRpbWVvdXRCIGlzIGRpc2FibGVkLgogICAqIEBybXRvbGwgVElNRU9VVFIgICAgIFRJTUVPVVRCICAgICAgTExfSTJDX1NldFNNQnVzVGltZW91dEIKQEAgLTExMjUsNyArMTE2NCw3IEBACiAKIC8qKgogICAqIEBicmllZiAgR2V0IHRoZSBTTUJ1cyBFeHRlbmRlZCBDdW11bGF0aXZlIENsb2NrIFRpbWVvdXRCIHNldHRpbmcuCi0gICogQG5vdGUgICBNYWNybyBJU19TTUJVU19BTExfSU5TVEFOQ0UoSTJDeCkgY2FuIGJlIHVzZWQgdG8gY2hlY2sgd2hldGhlciBvciBub3QKKyAgKiBAbm90ZSAgIFRoZSBtYWNybyBJU19TTUJVU19BTExfSU5TVEFOQ0UoSTJDeCkgY2FuIGJlIHVzZWQgdG8gY2hlY2sgd2hldGhlciBvciBub3QKICAgKiAgICAgICAgIFNNQnVzIGZlYXR1cmUgaXMgc3VwcG9ydGVkIGJ5IHRoZSBJMkN4IEluc3RhbmNlLgogICAqIEBybXRvbGwgVElNRU9VVFIgICAgIFRJTUVPVVRCICAgICAgTExfSTJDX0dldFNNQnVzVGltZW91dEIKICAgKiBAcGFyYW0gIEkyQ3ggSTJDIEluc3RhbmNlLgpAQCAtMTEzOCw3ICsxMTc3LDcgQEAKIAogLyoqCiAgICogQGJyaWVmICBFbmFibGUgdGhlIFNNQnVzIENsb2NrIFRpbWVvdXQuCi0gICogQG5vdGUgICBNYWNybyBJU19TTUJVU19BTExfSU5TVEFOQ0UoSTJDeCkgY2FuIGJlIHVzZWQgdG8gY2hlY2sgd2hldGhlciBvciBub3QKKyAgKiBAbm90ZSAgIFRoZSBtYWNybyBJU19TTUJVU19BTExfSU5TVEFOQ0UoSTJDeCkgY2FuIGJlIHVzZWQgdG8gY2hlY2sgd2hldGhlciBvciBub3QKICAgKiAgICAgICAgIFNNQnVzIGZlYXR1cmUgaXMgc3VwcG9ydGVkIGJ5IHRoZSBJMkN4IEluc3RhbmNlLgogICAqIEBybXRvbGwgVElNRU9VVFIgICAgIFRJTU9VVEVOICAgICAgTExfSTJDX0VuYWJsZVNNQnVzVGltZW91dFxuCiAgICogICAgICAgICBUSU1FT1VUUiAgICAgVEVYVEVOICAgICAgICBMTF9JMkNfRW5hYmxlU01CdXNUaW1lb3V0CkBAIC0xMTU2LDcgKzExOTUsNyBAQAogCiAvKioKICAgKiBAYnJpZWYgIERpc2FibGUgdGhlIFNNQnVzIENsb2NrIFRpbWVvdXQuCi0gICogQG5vdGUgICBNYWNybyBJU19TTUJVU19BTExfSU5TVEFOQ0UoSTJDeCkgY2FuIGJlIHVzZWQgdG8gY2hlY2sgd2hldGhlciBvciBub3QKKyAgKiBAbm90ZSAgIFRoZSBtYWNybyBJU19TTUJVU19BTExfSU5TVEFOQ0UoSTJDeCkgY2FuIGJlIHVzZWQgdG8gY2hlY2sgd2hldGhlciBvciBub3QKICAgKiAgICAgICAgIFNNQnVzIGZlYXR1cmUgaXMgc3VwcG9ydGVkIGJ5IHRoZSBJMkN4IEluc3RhbmNlLgogICAqIEBybXRvbGwgVElNRU9VVFIgICAgIFRJTU9VVEVOICAgICAgTExfSTJDX0Rpc2FibGVTTUJ1c1RpbWVvdXRcbgogICAqICAgICAgICAgVElNRU9VVFIgICAgIFRFWFRFTiAgICAgICAgTExfSTJDX0Rpc2FibGVTTUJ1c1RpbWVvdXQKQEAgLTExNzQsNyArMTIxMyw3IEBACiAKIC8qKgogICAqIEBicmllZiAgQ2hlY2sgaWYgdGhlIFNNQnVzIENsb2NrIFRpbWVvdXQgaXMgZW5hYmxlZCBvciBkaXNhYmxlZC4KLSAgKiBAbm90ZSAgIE1hY3JvIElTX1NNQlVTX0FMTF9JTlNUQU5DRShJMkN4KSBjYW4gYmUgdXNlZCB0byBjaGVjayB3aGV0aGVyIG9yIG5vdAorICAqIEBub3RlICAgVGhlIG1hY3JvIElTX1NNQlVTX0FMTF9JTlNUQU5DRShJMkN4KSBjYW4gYmUgdXNlZCB0byBjaGVjayB3aGV0aGVyIG9yIG5vdAogICAqICAgICAgICAgU01CdXMgZmVhdHVyZSBpcyBzdXBwb3J0ZWQgYnkgdGhlIEkyQ3ggSW5zdGFuY2UuCiAgICogQHJtdG9sbCBUSU1FT1VUUiAgICAgVElNT1VURU4gICAgICBMTF9JMkNfSXNFbmFibGVkU01CdXNUaW1lb3V0XG4KICAgKiAgICAgICAgIFRJTUVPVVRSICAgICBURVhURU4gICAgICAgIExMX0kyQ19Jc0VuYWJsZWRTTUJ1c1RpbWVvdXQKQEAgLTExODcsNyArMTIyNiw4IEBACiAgICovCiBfX1NUQVRJQ19JTkxJTkUgdWludDMyX3QgTExfSTJDX0lzRW5hYmxlZFNNQnVzVGltZW91dChJMkNfVHlwZURlZiAqSTJDeCwgdWludDMyX3QgQ2xvY2tUaW1lb3V0KQogewotICByZXR1cm4gKChSRUFEX0JJVChJMkN4LT5USU1FT1VUUiwgKEkyQ19USU1FT1VUUl9USU1PVVRFTiB8IEkyQ19USU1FT1VUUl9URVhURU4pKSA9PSAoQ2xvY2tUaW1lb3V0KSkgPyAxVUwgOiAwVUwpOworICByZXR1cm4gKChSRUFEX0JJVChJMkN4LT5USU1FT1VUUiwgKEkyQ19USU1FT1VUUl9USU1PVVRFTiB8IEkyQ19USU1FT1VUUl9URVhURU4pKSA9PSBcCisgICAgICAgICAgIChDbG9ja1RpbWVvdXQpKSA/IDFVTCA6IDBVTCk7CiB9CiAKIC8qKgpAQCAtMTQwNCw3ICsxNDQ0LDcgQEAKIAogLyoqCiAgICogQGJyaWVmICBFbmFibGUgRXJyb3IgaW50ZXJydXB0cy4KLSAgKiBAbm90ZSAgIE1hY3JvIElTX1NNQlVTX0FMTF9JTlNUQU5DRShJMkN4KSBjYW4gYmUgdXNlZCB0byBjaGVjayB3aGV0aGVyIG9yIG5vdAorICAqIEBub3RlICAgVGhlIG1hY3JvIElTX1NNQlVTX0FMTF9JTlNUQU5DRShJMkN4KSBjYW4gYmUgdXNlZCB0byBjaGVjayB3aGV0aGVyIG9yIG5vdAogICAqICAgICAgICAgU01CdXMgZmVhdHVyZSBpcyBzdXBwb3J0ZWQgYnkgdGhlIEkyQ3ggSW5zdGFuY2UuCiAgICogQG5vdGUgICBBbnkgb2YgdGhlc2UgZXJyb3JzIHdpbGwgZ2VuZXJhdGUgaW50ZXJydXB0IDoKICAgKiAgICAgICAgIEFyYml0cmF0aW9uIExvc3MgKEFSTE8pCkBAIC0xNDI0LDcgKzE0NjQsNyBAQAogCiAvKioKICAgKiBAYnJpZWYgIERpc2FibGUgRXJyb3IgaW50ZXJydXB0cy4KLSAgKiBAbm90ZSAgIE1hY3JvIElTX1NNQlVTX0FMTF9JTlNUQU5DRShJMkN4KSBjYW4gYmUgdXNlZCB0byBjaGVjayB3aGV0aGVyIG9yIG5vdAorICAqIEBub3RlICAgVGhlIG1hY3JvIElTX1NNQlVTX0FMTF9JTlNUQU5DRShJMkN4KSBjYW4gYmUgdXNlZCB0byBjaGVjayB3aGV0aGVyIG9yIG5vdAogICAqICAgICAgICAgU01CdXMgZmVhdHVyZSBpcyBzdXBwb3J0ZWQgYnkgdGhlIEkyQ3ggSW5zdGFuY2UuCiAgICogQG5vdGUgICBBbnkgb2YgdGhlc2UgZXJyb3JzIHdpbGwgZ2VuZXJhdGUgaW50ZXJydXB0IDoKICAgKiAgICAgICAgIEFyYml0cmF0aW9uIExvc3MgKEFSTE8pCkBAIC0xNjA2LDcgKzE2NDYsNyBAQAogCiAvKioKICAgKiBAYnJpZWYgIEluZGljYXRlIHRoZSBzdGF0dXMgb2YgU01CdXMgUEVDIGVycm9yIGZsYWcgaW4gcmVjZXB0aW9uLgotICAqIEBub3RlICAgTWFjcm8gSVNfU01CVVNfQUxMX0lOU1RBTkNFKEkyQ3gpIGNhbiBiZSB1c2VkIHRvIGNoZWNrIHdoZXRoZXIgb3Igbm90CisgICogQG5vdGUgICBUaGUgbWFjcm8gSVNfU01CVVNfQUxMX0lOU1RBTkNFKEkyQ3gpIGNhbiBiZSB1c2VkIHRvIGNoZWNrIHdoZXRoZXIgb3Igbm90CiAgICogICAgICAgICBTTUJ1cyBmZWF0dXJlIGlzIHN1cHBvcnRlZCBieSB0aGUgSTJDeCBJbnN0YW5jZS4KICAgKiBAbm90ZSAgIFJFU0VUOiBDbGVhciBkZWZhdWx0IHZhbHVlLgogICAqICAgICAgICAgU0VUOiBXaGVuIHRoZSByZWNlaXZlZCBQRUMgZG9lcyBub3QgbWF0Y2ggd2l0aCB0aGUgUEVDIHJlZ2lzdGVyIGNvbnRlbnQuCkBAIC0xNjIxLDcgKzE2NjEsNyBAQAogCiAvKioKICAgKiBAYnJpZWYgIEluZGljYXRlIHRoZSBzdGF0dXMgb2YgU01CdXMgVGltZW91dCBkZXRlY3Rpb24gZmxhZy4KLSAgKiBAbm90ZSAgIE1hY3JvIElTX1NNQlVTX0FMTF9JTlNUQU5DRShJMkN4KSBjYW4gYmUgdXNlZCB0byBjaGVjayB3aGV0aGVyIG9yIG5vdAorICAqIEBub3RlICAgVGhlIG1hY3JvIElTX1NNQlVTX0FMTF9JTlNUQU5DRShJMkN4KSBjYW4gYmUgdXNlZCB0byBjaGVjayB3aGV0aGVyIG9yIG5vdAogICAqICAgICAgICAgU01CdXMgZmVhdHVyZSBpcyBzdXBwb3J0ZWQgYnkgdGhlIEkyQ3ggSW5zdGFuY2UuCiAgICogQG5vdGUgICBSRVNFVDogQ2xlYXIgZGVmYXVsdCB2YWx1ZS4KICAgKiAgICAgICAgIFNFVDogV2hlbiBhIHRpbWVvdXQgb3IgZXh0ZW5kZWQgY2xvY2sgdGltZW91dCBvY2N1cnMuCkBAIC0xNjM2LDcgKzE2NzYsNyBAQAogCiAvKioKICAgKiBAYnJpZWYgIEluZGljYXRlIHRoZSBzdGF0dXMgb2YgU01CdXMgYWxlcnQgZmxhZy4KLSAgKiBAbm90ZSAgIE1hY3JvIElTX1NNQlVTX0FMTF9JTlNUQU5DRShJMkN4KSBjYW4gYmUgdXNlZCB0byBjaGVjayB3aGV0aGVyIG9yIG5vdAorICAqIEBub3RlICAgVGhlIG1hY3JvIElTX1NNQlVTX0FMTF9JTlNUQU5DRShJMkN4KSBjYW4gYmUgdXNlZCB0byBjaGVjayB3aGV0aGVyIG9yIG5vdAogICAqICAgICAgICAgU01CdXMgZmVhdHVyZSBpcyBzdXBwb3J0ZWQgYnkgdGhlIEkyQ3ggSW5zdGFuY2UuCiAgICogQG5vdGUgICBSRVNFVDogQ2xlYXIgZGVmYXVsdCB2YWx1ZS4KICAgKiAgICAgICAgIFNFVDogV2hlbiBTTUJ1cyBob3N0IGNvbmZpZ3VyYXRpb24sIFNNQnVzIGFsZXJ0IGVuYWJsZWQgYW5kCkBAIC0xNzQzLDcgKzE3ODMsNyBAQAogCiAvKioKICAgKiBAYnJpZWYgIENsZWFyIFNNQnVzIFBFQyBlcnJvciBmbGFnLgotICAqIEBub3RlICAgTWFjcm8gSVNfU01CVVNfQUxMX0lOU1RBTkNFKEkyQ3gpIGNhbiBiZSB1c2VkIHRvIGNoZWNrIHdoZXRoZXIgb3Igbm90CisgICogQG5vdGUgICBUaGUgbWFjcm8gSVNfU01CVVNfQUxMX0lOU1RBTkNFKEkyQ3gpIGNhbiBiZSB1c2VkIHRvIGNoZWNrIHdoZXRoZXIgb3Igbm90CiAgICogICAgICAgICBTTUJ1cyBmZWF0dXJlIGlzIHN1cHBvcnRlZCBieSB0aGUgSTJDeCBJbnN0YW5jZS4KICAgKiBAcm10b2xsIElDUiAgICAgICAgICBQRUNDRiAgICAgICAgIExMX0kyQ19DbGVhclNNQnVzRmxhZ19QRUNFUlIKICAgKiBAcGFyYW0gIEkyQ3ggSTJDIEluc3RhbmNlLgpAQCAtMTc1Niw3ICsxNzk2LDcgQEAKIAogLyoqCiAgICogQGJyaWVmICBDbGVhciBTTUJ1cyBUaW1lb3V0IGRldGVjdGlvbiBmbGFnLgotICAqIEBub3RlICAgTWFjcm8gSVNfU01CVVNfQUxMX0lOU1RBTkNFKEkyQ3gpIGNhbiBiZSB1c2VkIHRvIGNoZWNrIHdoZXRoZXIgb3Igbm90CisgICogQG5vdGUgICBUaGUgbWFjcm8gSVNfU01CVVNfQUxMX0lOU1RBTkNFKEkyQ3gpIGNhbiBiZSB1c2VkIHRvIGNoZWNrIHdoZXRoZXIgb3Igbm90CiAgICogICAgICAgICBTTUJ1cyBmZWF0dXJlIGlzIHN1cHBvcnRlZCBieSB0aGUgSTJDeCBJbnN0YW5jZS4KICAgKiBAcm10b2xsIElDUiAgICAgICAgICBUSU1PVVRDRiAgICAgIExMX0kyQ19DbGVhclNNQnVzRmxhZ19USU1FT1VUCiAgICogQHBhcmFtICBJMkN4IEkyQyBJbnN0YW5jZS4KQEAgLTE3NjksNyArMTgwOSw3IEBACiAKIC8qKgogICAqIEBicmllZiAgQ2xlYXIgU01CdXMgQWxlcnQgZmxhZy4KLSAgKiBAbm90ZSAgIE1hY3JvIElTX1NNQlVTX0FMTF9JTlNUQU5DRShJMkN4KSBjYW4gYmUgdXNlZCB0byBjaGVjayB3aGV0aGVyIG9yIG5vdAorICAqIEBub3RlICAgVGhlIG1hY3JvIElTX1NNQlVTX0FMTF9JTlNUQU5DRShJMkN4KSBjYW4gYmUgdXNlZCB0byBjaGVjayB3aGV0aGVyIG9yIG5vdAogICAqICAgICAgICAgU01CdXMgZmVhdHVyZSBpcyBzdXBwb3J0ZWQgYnkgdGhlIEkyQ3ggSW5zdGFuY2UuCiAgICogQHJtdG9sbCBJQ1IgICAgICAgICAgQUxFUlRDRiAgICAgICBMTF9JMkNfQ2xlYXJTTUJ1c0ZsYWdfQUxFUlQKICAgKiBAcGFyYW0gIEkyQ3ggSTJDIEluc3RhbmNlLgpAQCAtMTg4NCw3ICsxOTI0LDggQEAKIH0KIAogLyoqCi0gICogQGJyaWVmICBQcmVwYXJlIHRoZSBnZW5lcmF0aW9uIG9mIGEgQUNLbm93bGVkZ2Ugb3IgTm9uIEFDS25vd2xlZGdlIGNvbmRpdGlvbiBhZnRlciB0aGUgYWRkcmVzcyByZWNlaXZlIG1hdGNoIGNvZGUgb3IgbmV4dCByZWNlaXZlZCBieXRlLgorICAqIEBicmllZiAgUHJlcGFyZSB0aGUgZ2VuZXJhdGlvbiBvZiBhIEFDS25vd2xlZGdlIG9yIE5vbiBBQ0tub3dsZWRnZSBjb25kaXRpb24gYWZ0ZXIgdGhlIGFkZHJlc3MgcmVjZWl2ZSBtYXRjaCBjb2RlCisgICAgICAgICAgICBvciBuZXh0IHJlY2VpdmVkIGJ5dGUuCiAgICogQG5vdGUgICBVc2FnZSBpbiBTbGF2ZSBtb2RlIG9ubHkuCiAgICogQHJtdG9sbCBDUjIgICAgICAgICAgTkFDSyAgICAgICAgICBMTF9JMkNfQWNrbm93bGVkZ2VOZXh0RGF0YQogICAqIEBwYXJhbSAgSTJDeCBJMkMgSW5zdGFuY2UuCkBAIC0xOTI1LDcgKzE5NjYsOCBAQAogLyoqCiAgICogQGJyaWVmICBFbmFibGUgYXV0b21hdGljIFJFU1RBUlQgUmVhZCByZXF1ZXN0IGNvbmRpdGlvbiBmb3IgMTBiaXQgYWRkcmVzcyBoZWFkZXIgKG1hc3RlciBtb2RlKS4KICAgKiBAbm90ZSAgIFRoZSBtYXN0ZXIgc2VuZHMgdGhlIGNvbXBsZXRlIDEwYml0IHNsYXZlIGFkZHJlc3MgcmVhZCBzZXF1ZW5jZSA6Ci0gICogICAgICAgICBTdGFydCArIDIgYnl0ZXMgMTBiaXQgYWRkcmVzcyBpbiBXcml0ZSBkaXJlY3Rpb24gKyBSZXN0YXJ0ICsgZmlyc3QgNyBiaXRzIG9mIDEwYml0IGFkZHJlc3MgaW4gUmVhZCBkaXJlY3Rpb24uCisgICogICAgICAgICBTdGFydCArIDIgYnl0ZXMgMTBiaXQgYWRkcmVzcyBpbiBXcml0ZSBkaXJlY3Rpb24gKyBSZXN0YXJ0ICsgZmlyc3QgNyBiaXRzIG9mIDEwYml0IGFkZHJlc3MKKyAgICAgICAgICAgIGluIFJlYWQgZGlyZWN0aW9uLgogICAqIEBybXRvbGwgQ1IyICAgICAgICAgIEhFQUQxMFIgICAgICAgTExfSTJDX0VuYWJsZUF1dG8xMEJpdFJlYWQKICAgKiBAcGFyYW0gIEkyQ3ggSTJDIEluc3RhbmNlLgogICAqIEByZXR2YWwgTm9uZQpAQCAtMjA4Niw5ICsyMTI4LDEwIEBACiAKIC8qKgogICAqIEBicmllZiAgRW5hYmxlIGludGVybmFsIGNvbXBhcmlzb24gb2YgdGhlIFNNQnVzIFBhY2tldCBFcnJvciBieXRlICh0cmFuc21pc3Npb24gb3IgcmVjZXB0aW9uIG1vZGUpLgotICAqIEBub3RlICAgTWFjcm8gSVNfU01CVVNfQUxMX0lOU1RBTkNFKEkyQ3gpIGNhbiBiZSB1c2VkIHRvIGNoZWNrIHdoZXRoZXIgb3Igbm90CisgICogQG5vdGUgICBUaGUgbWFjcm8gSVNfU01CVVNfQUxMX0lOU1RBTkNFKEkyQ3gpIGNhbiBiZSB1c2VkIHRvIGNoZWNrIHdoZXRoZXIgb3Igbm90CiAgICogICAgICAgICBTTUJ1cyBmZWF0dXJlIGlzIHN1cHBvcnRlZCBieSB0aGUgSTJDeCBJbnN0YW5jZS4KLSAgKiBAbm90ZSAgIFRoaXMgZmVhdHVyZSBpcyBjbGVhcmVkIGJ5IGhhcmR3YXJlIHdoZW4gdGhlIFBFQyBieXRlIGlzIHRyYW5zZmVycmVkLCBvciB3aGVuIGEgU1RPUCBjb25kaXRpb24gb3IgYW4gQWRkcmVzcyBNYXRjaGVkIGlzIHJlY2VpdmVkLgorICAqIEBub3RlICAgVGhpcyBmZWF0dXJlIGlzIGNsZWFyZWQgYnkgaGFyZHdhcmUgd2hlbiB0aGUgUEVDIGJ5dGUgaXMgdHJhbnNmZXJyZWQsIG9yIHdoZW4gYSBTVE9QIGNvbmRpdGlvbgorICAgICAgICAgICAgb3IgYW4gQWRkcmVzcyBNYXRjaGVkIGlzIHJlY2VpdmVkLgogICAqICAgICAgICAgVGhpcyBiaXQgaGFzIG5vIGVmZmVjdCB3aGVuIFJFTE9BRCBiaXQgaXMgc2V0LgogICAqICAgICAgICAgVGhpcyBiaXQgaGFzIG5vIGVmZmVjdCBpbiBkZXZpY2UgbW9kZSB3aGVuIFNCQyBiaXQgaXMgbm90IHNldC4KICAgKiBAcm10b2xsIENSMiAgICAgICAgICBQRUNCWVRFICAgICAgIExMX0kyQ19FbmFibGVTTUJ1c1BFQ0NvbXBhcmUKQEAgLTIxMDIsNyArMjE0NSw3IEBACiAKIC8qKgogICAqIEBicmllZiAgQ2hlY2sgaWYgdGhlIFNNQnVzIFBhY2tldCBFcnJvciBieXRlIGludGVybmFsIGNvbXBhcmlzb24gaXMgcmVxdWVzdGVkIG9yIG5vdC4KLSAgKiBAbm90ZSAgIE1hY3JvIElTX1NNQlVTX0FMTF9JTlNUQU5DRShJMkN4KSBjYW4gYmUgdXNlZCB0byBjaGVjayB3aGV0aGVyIG9yIG5vdAorICAqIEBub3RlICAgVGhlIG1hY3JvIElTX1NNQlVTX0FMTF9JTlNUQU5DRShJMkN4KSBjYW4gYmUgdXNlZCB0byBjaGVjayB3aGV0aGVyIG9yIG5vdAogICAqICAgICAgICAgU01CdXMgZmVhdHVyZSBpcyBzdXBwb3J0ZWQgYnkgdGhlIEkyQ3ggSW5zdGFuY2UuCiAgICogQHJtdG9sbCBDUjIgICAgICAgICAgUEVDQllURSAgICAgICBMTF9JMkNfSXNFbmFibGVkU01CdXNQRUNDb21wYXJlCiAgICogQHBhcmFtICBJMkN4IEkyQyBJbnN0YW5jZS4KQEAgLTIxMTUsNyArMjE1OCw3IEBACiAKIC8qKgogICAqIEBicmllZiAgR2V0IHRoZSBTTUJ1cyBQYWNrZXQgRXJyb3IgYnl0ZSBjYWxjdWxhdGVkLgotICAqIEBub3RlICAgTWFjcm8gSVNfU01CVVNfQUxMX0lOU1RBTkNFKEkyQ3gpIGNhbiBiZSB1c2VkIHRvIGNoZWNrIHdoZXRoZXIgb3Igbm90CisgICogQG5vdGUgICBUaGUgbWFjcm8gSVNfU01CVVNfQUxMX0lOU1RBTkNFKEkyQ3gpIGNhbiBiZSB1c2VkIHRvIGNoZWNrIHdoZXRoZXIgb3Igbm90CiAgICogICAgICAgICBTTUJ1cyBmZWF0dXJlIGlzIHN1cHBvcnRlZCBieSB0aGUgSTJDeCBJbnN0YW5jZS4KICAgKiBAcm10b2xsIFBFQ1IgICAgICAgICBQRUMgICAgICAgICAgIExMX0kyQ19HZXRTTUJ1c1BFQwogICAqIEBwYXJhbSAgSTJDeCBJMkMgSW5zdGFuY2UuCkBAIC0yMTg3LDUgKzIyMzAsMyBAQAogI2VuZGlmCiAKICNlbmRpZiAvKiBTVE0zMkY3eHhfTExfSTJDX0ggKi8KLQotLyoqKioqKioqKioqKioqKioqKioqKioqKiAoQykgQ09QWVJJR0hUIFNUTWljcm9lbGVjdHJvbmljcyAqKioqKkVORCBPRiBGSUxFKioqKi8KZGlmZiAtLWdpdCBhL0luYy9zdG0zMmY3eHhfbGxfaXdkZy5oIGIvSW5jL3N0bTMyZjd4eF9sbF9pd2RnLmgKaW5kZXggNjg2ZjA5ZS4uNjFiNzNhNCAxMDA2NDQKLS0tIGEvSW5jL3N0bTMyZjd4eF9sbF9pd2RnLmgKKysrIGIvSW5jL3N0bTMyZjd4eF9sbF9pd2RnLmgKQEAgLTYsMTMgKzYsMTIgQEAKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgICogQGF0dGVudGlvbgogICAqCi0gICogPGgyPjxjZW50ZXI+JmNvcHk7IENvcHlyaWdodCAoYykgMjAxNyBTVE1pY3JvZWxlY3Ryb25pY3MuCi0gICogQWxsIHJpZ2h0cyByZXNlcnZlZC48L2NlbnRlcj48L2gyPgorICAqIENvcHlyaWdodCAoYykgMjAxNyBTVE1pY3JvZWxlY3Ryb25pY3MuCisgICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgKgotICAqIFRoaXMgc29mdHdhcmUgY29tcG9uZW50IGlzIGxpY2Vuc2VkIGJ5IFNUIHVuZGVyIEJTRCAzLUNsYXVzZSBsaWNlbnNlLAotICAqIHRoZSAiTGljZW5zZSI7IFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUKLSAgKiBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQ6Ci0gICogICAgICAgICAgICAgICAgICAgICAgICBvcGVuc291cmNlLm9yZy9saWNlbnNlcy9CU0QtMy1DbGF1c2UKKyAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIHVuZGVyIHRlcm1zIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUKKyAgKiBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb2Z0d2FyZSBjb21wb25lbnQuCisgICogSWYgbm8gTElDRU5TRSBmaWxlIGNvbWVzIHdpdGggdGhpcyBzb2Z0d2FyZSwgaXQgaXMgcHJvdmlkZWQgQVMtSVMuCiAgICoKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgICovCkBAIC0zMzcsNSArMzM2LDMgQEAKICNlbmRpZgogCiAjZW5kaWYgLyogU1RNMzJGN3h4X0xMX0lXREdfSCAqLwotCi0vKioqKioqKioqKioqKioqKioqKioqKioqIChDKSBDT1BZUklHSFQgU1RNaWNyb2VsZWN0cm9uaWNzICoqKioqRU5EIE9GIEZJTEUqKioqLwpkaWZmIC0tZ2l0IGEvSW5jL3N0bTMyZjd4eF9sbF9scHRpbS5oIGIvSW5jL3N0bTMyZjd4eF9sbF9scHRpbS5oCmluZGV4IGI5YTA3MTkuLmVhMDc4Y2MgMTAwNjQ0Ci0tLSBhL0luYy9zdG0zMmY3eHhfbGxfbHB0aW0uaAorKysgYi9JbmMvc3RtMzJmN3h4X2xsX2xwdGltLmgKQEAgLTYsMTMgKzYsMTIgQEAKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgICogQGF0dGVudGlvbgogICAqCi0gICogPGgyPjxjZW50ZXI+JmNvcHk7IENvcHlyaWdodCAoYykgMjAxNyBTVE1pY3JvZWxlY3Ryb25pY3MuCi0gICogQWxsIHJpZ2h0cyByZXNlcnZlZC48L2NlbnRlcj48L2gyPgorICAqIENvcHlyaWdodCAoYykgMjAxNyBTVE1pY3JvZWxlY3Ryb25pY3MuCisgICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgKgotICAqIFRoaXMgc29mdHdhcmUgY29tcG9uZW50IGlzIGxpY2Vuc2VkIGJ5IFNUIHVuZGVyIEJTRCAzLUNsYXVzZSBsaWNlbnNlLAotICAqIHRoZSAiTGljZW5zZSI7IFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUKLSAgKiBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQ6Ci0gICogICAgICAgICAgICAgICAgICAgICAgICBvcGVuc291cmNlLm9yZy9saWNlbnNlcy9CU0QtMy1DbGF1c2UKKyAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIHVuZGVyIHRlcm1zIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUKKyAgKiBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb2Z0d2FyZSBjb21wb25lbnQuCisgICogSWYgbm8gTElDRU5TRSBmaWxlIGNvbWVzIHdpdGggdGhpcyBzb2Z0d2FyZSwgaXQgaXMgcHJvdmlkZWQgQVMtSVMuCiAgICoKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgICovCkBAIC02NywyMiArNjYsMjYgQEAKICAgdWludDMyX3QgQ2xvY2tTb3VyY2U7ICAgIC8qITwgU3BlY2lmaWVzIHRoZSBzb3VyY2Ugb2YgdGhlIGNsb2NrIHVzZWQgYnkgdGhlIExQVElNIGluc3RhbmNlLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYSB2YWx1ZSBvZiBAcmVmIExQVElNX0xMX0VDX0NMS19TT1VSQ0UuCiAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBmZWF0dXJlIGNhbiBiZSBtb2RpZmllZCBhZnRlcndhcmRzIHVzaW5nIHVuaXRhcnkgZnVuY3Rpb24gQHJlZiBMTF9MUFRJTV9TZXRDbG9ja1NvdXJjZSgpLiovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgZmVhdHVyZSBjYW4gYmUgbW9kaWZpZWQgYWZ0ZXJ3YXJkcyB1c2luZyB1bml0YXJ5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIEByZWYgTExfTFBUSU1fU2V0Q2xvY2tTb3VyY2UoKS4qLwogCiAgIHVpbnQzMl90IFByZXNjYWxlcjsgICAgICAvKiE8IFNwZWNpZmllcyB0aGUgcHJlc2NhbGVyIGRpdmlzaW9uIHJhdGlvLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYSB2YWx1ZSBvZiBAcmVmIExQVElNX0xMX0VDX1BSRVNDQUxFUi4KIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGZlYXR1cmUgY2FuIGJlIG1vZGlmaWVkIGFmdGVyd2FyZHMgdXNpbmcgdXNpbmcgdW5pdGFyeSBmdW5jdGlvbiBAcmVmIExMX0xQVElNX1NldFByZXNjYWxlcigpLiovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgZmVhdHVyZSBjYW4gYmUgbW9kaWZpZWQgYWZ0ZXJ3YXJkcyB1c2luZyB1c2luZyB1bml0YXJ5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIEByZWYgTExfTFBUSU1fU2V0UHJlc2NhbGVyKCkuKi8KIAogICB1aW50MzJfdCBXYXZlZm9ybTsgICAgICAgLyohPCBTcGVjaWZpZXMgdGhlIHdhdmVmb3JtIHNoYXBlLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYSB2YWx1ZSBvZiBAcmVmIExQVElNX0xMX0VDX09VVFBVVF9XQVZFRk9STS4KIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGZlYXR1cmUgY2FuIGJlIG1vZGlmaWVkIGFmdGVyd2FyZHMgdXNpbmcgdW5pdGFyeSBmdW5jdGlvbiBAcmVmIExMX0xQVElNX0NvbmZpZ091dHB1dCgpLiovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgZmVhdHVyZSBjYW4gYmUgbW9kaWZpZWQgYWZ0ZXJ3YXJkcyB1c2luZyB1bml0YXJ5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIEByZWYgTExfTFBUSU1fQ29uZmlnT3V0cHV0KCkuKi8KIAogICB1aW50MzJfdCBQb2xhcml0eTsgICAgICAgLyohPCBTcGVjaWZpZXMgd2F2ZWZvcm0gcG9sYXJpdHkuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhIHZhbHVlIG9mIEByZWYgTFBUSU1fTExfRUNfT1VUUFVUX1BPTEFSSVRZLgogCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgZmVhdHVyZSBjYW4gYmUgbW9kaWZpZWQgYWZ0ZXJ3YXJkcyB1c2luZyB1bml0YXJ5IGZ1bmN0aW9uIEByZWYgTExfTFBUSU1fQ29uZmlnT3V0cHV0KCkuKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBmZWF0dXJlIGNhbiBiZSBtb2RpZmllZCBhZnRlcndhcmRzIHVzaW5nIHVuaXRhcnkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gQHJlZiBMTF9MUFRJTV9Db25maWdPdXRwdXQoKS4qLwogfSBMTF9MUFRJTV9Jbml0VHlwZURlZjsKIAogLyoqCkBAIC03OTEsNyArNzk0LDggQEAKIH0KIAogLyoqCi0gICogQGJyaWVmICBDb25maWd1cmUgdGhlIGFjdGl2ZSBlZGdlIG9yIGVkZ2VzIHVzZWQgYnkgdGhlIGNvdW50ZXIgd2hlbiB0aGUgTFBUSU0gaXMgY2xvY2tlZCBieSBhbiBleHRlcm5hbCBjbG9jayBzb3VyY2UuCisgICogQGJyaWVmICBDb25maWd1cmUgdGhlIGFjdGl2ZSBlZGdlIG9yIGVkZ2VzIHVzZWQgYnkgdGhlIGNvdW50ZXIgd2hlbgorICAgICAgICAgICAgdGhlIExQVElNIGlzIGNsb2NrZWQgYnkgYW4gZXh0ZXJuYWwgY2xvY2sgc291cmNlLgogICAqIEBub3RlIFRoaXMgZnVuY3Rpb24gbXVzdCBiZSBjYWxsZWQgd2hlbiB0aGUgTFBUSU0gaW5zdGFuY2UgaXMgZGlzYWJsZWQuCiAgICogQG5vdGUgV2hlbiBib3RoIGV4dGVybmFsIGNsb2NrIHNpZ25hbCBlZGdlcyBhcmUgY29uc2lkZXJlZCBhY3RpdmUgb25lcywKICAgKiAgICAgICB0aGUgTFBUSU0gbXVzdCBhbHNvIGJlIGNsb2NrZWQgYnkgYW4gaW50ZXJuYWwgY2xvY2sgc291cmNlIHdpdGggYQpAQCAtMTAwOSw3ICsxMDEzLDggQEAKIH0KIAogLyoqCi0gICogQGJyaWVmICBJbmZvcm1zIGFwcGxpY2F0aW9uIHdoZXRoZXIgdGhlIEFQQiBidXMgd3JpdGUgb3BlcmF0aW9uIHRvIHRoZSBMUFRJTXhfQ01QIHJlZ2lzdGVyIGhhcyBiZWVuIHN1Y2Nlc3NmdWxseSBjb21wbGV0ZWQuIElmIHNvLCBhIG5ldyBvbmUgY2FuIGJlIGluaXRpYXRlZC4KKyAgKiBAYnJpZWYgIEluZm9ybXMgYXBwbGljYXRpb24gd2hldGhlciB0aGUgQVBCIGJ1cyB3cml0ZSBvcGVyYXRpb24gdG8gdGhlIExQVElNeF9DTVAgcmVnaXN0ZXIgaGFzIGJlZW4gc3VjY2Vzc2Z1bGx5CisgICAgICAgICAgICBjb21wbGV0ZWQuIElmIHNvLCBhIG5ldyBvbmUgY2FuIGJlIGluaXRpYXRlZC4KICAgKiBAcm10b2xsIElTUiAgICAgICAgICBDTVBPSyAgICAgICAgIExMX0xQVElNX0lzQWN0aXZlRmxhZ19DTVBPSwogICAqIEBwYXJhbSAgTFBUSU14IExvdy1Qb3dlciBUaW1lciBpbnN0YW5jZQogICAqIEByZXR2YWwgU3RhdGUgb2YgYml0ICgxIG9yIDApLgpAQCAtMTAzMSw3ICsxMDM2LDggQEAKIH0KIAogLyoqCi0gICogQGJyaWVmICBJbmZvcm1zIGFwcGxpY2F0aW9uIHdoZXRoZXIgdGhlIEFQQiBidXMgd3JpdGUgb3BlcmF0aW9uIHRvIHRoZSBMUFRJTXhfQVJSIHJlZ2lzdGVyIGhhcyBiZWVuIHN1Y2Nlc3NmdWxseSBjb21wbGV0ZWQuIElmIHNvLCBhIG5ldyBvbmUgY2FuIGJlIGluaXRpYXRlZC4KKyAgKiBAYnJpZWYgIEluZm9ybXMgYXBwbGljYXRpb24gd2hldGhlciB0aGUgQVBCIGJ1cyB3cml0ZSBvcGVyYXRpb24gdG8gdGhlIExQVElNeF9BUlIgcmVnaXN0ZXIgaGFzIGJlZW4gc3VjY2Vzc2Z1bGx5CisgICAgICAgICAgICBjb21wbGV0ZWQuIElmIHNvLCBhIG5ldyBvbmUgY2FuIGJlIGluaXRpYXRlZC4KICAgKiBAcm10b2xsIElTUiAgICAgICAgICBBUlJPSyAgICAgICAgIExMX0xQVElNX0lzQWN0aXZlRmxhZ19BUlJPSwogICAqIEBwYXJhbSAgTFBUSU14IExvdy1Qb3dlciBUaW1lciBpbnN0YW5jZQogICAqIEByZXR2YWwgU3RhdGUgb2YgYml0ICgxIG9yIDApLgpAQCAtMTA1Myw3ICsxMDU5LDggQEAKIH0KIAogLyoqCi0gICogQGJyaWVmICBJbmZvcm1zIHRoZSBhcHBsaWNhdGlvbiB3aGV0aGVyIHRoZSBjb3VudGVyIGRpcmVjdGlvbiBoYXMgY2hhbmdlZCBmcm9tIGRvd24gdG8gdXAgKHdoZW4gdGhlIExQVElNIGluc3RhbmNlIG9wZXJhdGVzIGluIGVuY29kZXIgbW9kZSkuCisgICogQGJyaWVmICBJbmZvcm1zIHRoZSBhcHBsaWNhdGlvbiB3aGV0aGVyIHRoZSBjb3VudGVyIGRpcmVjdGlvbiBoYXMgY2hhbmdlZCBmcm9tIGRvd24gdG8gdXAgKHdoZW4gdGhlIExQVElNIGluc3RhbmNlCisgICAgICAgICAgICBvcGVyYXRlcyBpbiBlbmNvZGVyIG1vZGUpLgogICAqIEBybXRvbGwgSVNSICAgICAgICAgIFVQICAgICAgICAgICAgTExfTFBUSU1fSXNBY3RpdmVGbGFnX1VQCiAgICogQHBhcmFtICBMUFRJTXggTG93LVBvd2VyIFRpbWVyIGluc3RhbmNlCiAgICogQHJldHZhbCBTdGF0ZSBvZiBiaXQgKDEgb3IgMCkuCkBAIC0xMDc1LDcgKzEwODIsOCBAQAogfQogCiAvKioKLSAgKiBAYnJpZWYgIEluZm9ybXMgdGhlIGFwcGxpY2F0aW9uIHdoZXRoZXIgdGhlIGNvdW50ZXIgZGlyZWN0aW9uIGhhcyBjaGFuZ2VkIGZyb20gdXAgdG8gZG93biAod2hlbiB0aGUgTFBUSU0gaW5zdGFuY2Ugb3BlcmF0ZXMgaW4gZW5jb2RlciBtb2RlKS4KKyAgKiBAYnJpZWYgIEluZm9ybXMgdGhlIGFwcGxpY2F0aW9uIHdoZXRoZXIgdGhlIGNvdW50ZXIgZGlyZWN0aW9uIGhhcyBjaGFuZ2VkIGZyb20gdXAgdG8gZG93biAod2hlbiB0aGUgTFBUSU0gaW5zdGFuY2UKKyAgICAgICAgICAgIG9wZXJhdGVzIGluIGVuY29kZXIgbW9kZSkuCiAgICogQHJtdG9sbCBJU1IgICAgICAgICAgRE9XTiAgICAgICAgICBMTF9MUFRJTV9Jc0FjdGl2ZUZsYWdfRE9XTgogICAqIEBwYXJhbSAgTFBUSU14IExvdy1Qb3dlciBUaW1lciBpbnN0YW5jZQogICAqIEByZXR2YWwgU3RhdGUgb2YgYml0ICgxIG9yIDApLgpAQCAtMTM0Nyw1ICsxMzU1LDMgQEAKICNlbmRpZgogCiAjZW5kaWYgLyogU1RNMzJGN3h4X0xMX0xQVElNX0ggKi8KLQotLyoqKioqKioqKioqKioqKioqKioqKioqKiAoQykgQ09QWVJJR0hUIFNUTWljcm9lbGVjdHJvbmljcyAqKioqKkVORCBPRiBGSUxFKioqKi8KZGlmZiAtLWdpdCBhL0luYy9zdG0zMmY3eHhfbGxfcHdyLmggYi9JbmMvc3RtMzJmN3h4X2xsX3B3ci5oCmluZGV4IDM5OWJjZjEuLjRjNzZhNTcgMTAwNjQ0Ci0tLSBhL0luYy9zdG0zMmY3eHhfbGxfcHdyLmgKKysrIGIvSW5jL3N0bTMyZjd4eF9sbF9wd3IuaApAQCAtNiwxMyArNiwxMiBAQAogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgKiBAYXR0ZW50aW9uCiAgICoKLSAgKiA8aDI+PGNlbnRlcj4mY29weTsgQ29weXJpZ2h0IChjKSAyMDE3IFNUTWljcm9lbGVjdHJvbmljcy4KLSAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLjwvY2VudGVyPjwvaDI+CisgICogQ29weXJpZ2h0IChjKSAyMDE3IFNUTWljcm9lbGVjdHJvbmljcy4KKyAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAqCi0gICogVGhpcyBzb2Z0d2FyZSBjb21wb25lbnQgaXMgbGljZW5zZWQgYnkgU1QgdW5kZXIgQlNEIDMtQ2xhdXNlIGxpY2Vuc2UsCi0gICogdGhlICJMaWNlbnNlIjsgWW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZQotICAqIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdDoKLSAgKiAgICAgICAgICAgICAgICAgICAgICAgIG9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0JTRC0zLUNsYXVzZQorICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgdW5kZXIgdGVybXMgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZQorICAqIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvZnR3YXJlIGNvbXBvbmVudC4KKyAgKiBJZiBubyBMSUNFTlNFIGZpbGUgY29tZXMgd2l0aCB0aGlzIHNvZnR3YXJlLCBpdCBpcyBwcm92aWRlZCBBUy1JUy4KICAgKgogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgKi8KQEAgLTEwMTUsNCArMTAxNCwzIEBACiAKICNlbmRpZiAvKiBfX1NUTTMyRjd4eF9MTF9QV1JfSCAqLwogCi0vKioqKioqKioqKioqKioqKioqKioqKioqIChDKSBDT1BZUklHSFQgU1RNaWNyb2VsZWN0cm9uaWNzICoqKioqRU5EIE9GIEZJTEUqKioqLwpkaWZmIC0tZ2l0IGEvSW5jL3N0bTMyZjd4eF9sbF9yY2MuaCBiL0luYy9zdG0zMmY3eHhfbGxfcmNjLmgKaW5kZXggOTA4M2ZjNy4uNjViYjljNiAxMDA2NDQKLS0tIGEvSW5jL3N0bTMyZjd4eF9sbF9yY2MuaAorKysgYi9JbmMvc3RtMzJmN3h4X2xsX3JjYy5oCkBAIC02LDE0ICs2LDEyIEBACiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAqIEBhdHRlbnRpb24KICAgKgotICAqIDxoMj48Y2VudGVyPiZjb3B5OyBDb3B5cmlnaHQgKGMpIDIwMTcgU1RNaWNyb2VsZWN0cm9uaWNzLgotICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuPC9jZW50ZXI+PC9oMj4KKyAgKiBDb3B5cmlnaHQgKGMpIDIwMTcgU1RNaWNyb2VsZWN0cm9uaWNzLgorICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICoKLSAgKiBUaGlzIHNvZnR3YXJlIGNvbXBvbmVudCBpcyBsaWNlbnNlZCBieSBTVCB1bmRlciBCU0QgMy1DbGF1c2UgbGljZW5zZSwKLSAgKiB0aGUgIkxpY2Vuc2UiOyBZb3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlCi0gICogTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0OgotICAqICAgICAgICAgICAgICAgICAgICAgICAgb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvQlNELTMtQ2xhdXNlCi0gICoKKyAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIHVuZGVyIHRlcm1zIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4KKyAgKiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb2Z0d2FyZSBjb21wb25lbnQuCisgICogSWYgbm8gTElDRU5TRSBmaWxlIGNvbWVzIHdpdGggdGhpcyBzb2Z0d2FyZSwgaXQgaXMgcHJvdmlkZWQgQVMtSVMuCiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAqLwogCkBAIC01MTcwLDQgKzUxNjgsMyBAQAogCiAjZW5kaWYgLyogX19TVE0zMkY3eHhfTExfUkNDX0ggKi8KIAotLyoqKioqKioqKioqKioqKioqKioqKioqKiAoQykgQ09QWVJJR0hUIFNUTWljcm9lbGVjdHJvbmljcyAqKioqKkVORCBPRiBGSUxFKioqKi8KZGlmZiAtLWdpdCBhL0luYy9zdG0zMmY3eHhfbGxfcm5nLmggYi9JbmMvc3RtMzJmN3h4X2xsX3JuZy5oCmluZGV4IDIxNDA2YTUuLmZhMmYzODYgMTAwNjQ0Ci0tLSBhL0luYy9zdG0zMmY3eHhfbGxfcm5nLmgKKysrIGIvSW5jL3N0bTMyZjd4eF9sbF9ybmcuaApAQCAtNiwxMyArNiwxMiBAQAogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgKiBAYXR0ZW50aW9uCiAgICoKLSAgKiA8aDI+PGNlbnRlcj4mY29weTsgQ29weXJpZ2h0IChjKSAyMDE3IFNUTWljcm9lbGVjdHJvbmljcy4KLSAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLjwvY2VudGVyPjwvaDI+CisgICogQ29weXJpZ2h0IChjKSAyMDE3IFNUTWljcm9lbGVjdHJvbmljcy4KKyAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAqCi0gICogVGhpcyBzb2Z0d2FyZSBjb21wb25lbnQgaXMgbGljZW5zZWQgYnkgU1QgdW5kZXIgQlNEIDMtQ2xhdXNlIGxpY2Vuc2UsCi0gICogdGhlICJMaWNlbnNlIjsgWW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZQotICAqIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdDoKLSAgKiAgICAgICAgICAgICAgICAgICAgICAgIG9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0JTRC0zLUNsYXVzZQorICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgdW5kZXIgdGVybXMgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZQorICAqIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvZnR3YXJlIGNvbXBvbmVudC4KKyAgKiBJZiBubyBMSUNFTlNFIGZpbGUgY29tZXMgd2l0aCB0aGlzIHNvZnR3YXJlLCBpdCBpcyBwcm92aWRlZCBBUy1JUy4KICAgKgogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgKi8KQEAgLTMzNCw0ICszMzMsMyBAQAogCiAjZW5kaWYgLyogX19TVE0zMkY3eHhfTExfUk5HX0ggKi8KIAotLyoqKioqKioqKioqKioqKioqKioqKioqKiAoQykgQ09QWVJJR0hUIFNUTWljcm9lbGVjdHJvbmljcyAqKioqKkVORCBPRiBGSUxFKioqKi8KZGlmZiAtLWdpdCBhL0luYy9zdG0zMmY3eHhfbGxfcnRjLmggYi9JbmMvc3RtMzJmN3h4X2xsX3J0Yy5oCmluZGV4IGNlYjM5OGIuLmYwNDA1MTcgMTAwNjQ0Ci0tLSBhL0luYy9zdG0zMmY3eHhfbGxfcnRjLmgKKysrIGIvSW5jL3N0bTMyZjd4eF9sbF9ydGMuaApAQCAtNiwxMyArNiwxMiBAQAogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgKiBAYXR0ZW50aW9uCiAgICoKLSAgKiA8aDI+PGNlbnRlcj4mY29weTsgQ29weXJpZ2h0IChjKSAyMDE3IFNUTWljcm9lbGVjdHJvbmljcy4KLSAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLjwvY2VudGVyPjwvaDI+CisgICogQ29weXJpZ2h0IChjKSAyMDE3IFNUTWljcm9lbGVjdHJvbmljcy4KKyAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAqCi0gICogVGhpcyBzb2Z0d2FyZSBjb21wb25lbnQgaXMgbGljZW5zZWQgYnkgU1QgdW5kZXIgQlNEIDMtQ2xhdXNlIGxpY2Vuc2UsCi0gICogdGhlICJMaWNlbnNlIjsgWW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZQotICAqIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdDoKLSAgKiAgICAgICAgICAgICAgICAgICAgICAgIG9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0JTRC0zLUNsYXVzZQorICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgdW5kZXIgdGVybXMgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZQorICAqIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvZnR3YXJlIGNvbXBvbmVudC4KKyAgKiBJZiBubyBMSUNFTlNFIGZpbGUgY29tZXMgd2l0aCB0aGlzIHNvZnR3YXJlLCBpdCBpcyBwcm92aWRlZCBBUy1JUy4KICAgKgogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgKi8KQEAgLTM4MTUsNCArMzgxNCwzIEBACiAKICNlbmRpZiAvKiBfX1NUTTMyRjd4eF9MTF9SVENfSCAqLwogCi0vKioqKioqKioqKioqKioqKioqKioqKioqIChDKSBDT1BZUklHSFQgU1RNaWNyb2VsZWN0cm9uaWNzICoqKioqRU5EIE9GIEZJTEUqKioqLwpkaWZmIC0tZ2l0IGEvSW5jL3N0bTMyZjd4eF9sbF9zZG1tYy5oIGIvSW5jL3N0bTMyZjd4eF9sbF9zZG1tYy5oCmluZGV4IGI5NzgxODguLmEzYjk1NzYgMTAwNjQ0Ci0tLSBhL0luYy9zdG0zMmY3eHhfbGxfc2RtbWMuaAorKysgYi9JbmMvc3RtMzJmN3h4X2xsX3NkbW1jLmgKQEAgLTYsMTMgKzYsMTIgQEAKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgICogQGF0dGVudGlvbgogICAqCi0gICogPGgyPjxjZW50ZXI+JmNvcHk7IENvcHlyaWdodCAoYykgMjAxNyBTVE1pY3JvZWxlY3Ryb25pY3MuCi0gICogQWxsIHJpZ2h0cyByZXNlcnZlZC48L2NlbnRlcj48L2gyPgorICAqIENvcHlyaWdodCAoYykgMjAxNyBTVE1pY3JvZWxlY3Ryb25pY3MuCisgICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgKgotICAqIFRoaXMgc29mdHdhcmUgY29tcG9uZW50IGlzIGxpY2Vuc2VkIGJ5IFNUIHVuZGVyIEJTRCAzLUNsYXVzZSBsaWNlbnNlLAotICAqIHRoZSAiTGljZW5zZSI7IFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUKLSAgKiBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQ6Ci0gICogICAgICAgICAgICAgICAgICAgICAgIG9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0JTRC0zLUNsYXVzZQorICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgdW5kZXIgdGVybXMgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZQorICAqIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvZnR3YXJlIGNvbXBvbmVudC4KKyAgKiBJZiBubyBMSUNFTlNFIGZpbGUgY29tZXMgd2l0aCB0aGlzIHNvZnR3YXJlLCBpdCBpcyBwcm92aWRlZCBBUy1JUy4KICAgKgogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgKi8gCkBAIC05NjQsOCArOTYzLDE0IEBACiAKIC8qIFNETU1DIENhcmRzIG1vZGUgbWFuYWdlbWVudCBmdW5jdGlvbnMgKi8KIEhBTF9TdGF0dXNUeXBlRGVmIFNETU1DX1NldFNETU1DUmVhZFdhaXRNb2RlKFNETU1DX1R5cGVEZWYgKlNETU1DeCwgdWludDMyX3QgU0RNTUNfUmVhZFdhaXRNb2RlKTsKKy8qKgorICAqIEB9CisgICovCiAKIC8qIFNETU1DIENvbW1hbmRzIG1hbmFnZW1lbnQgZnVuY3Rpb25zICovCisvKiogQGFkZHRvZ3JvdXAgSEFMX1NETU1DX0xMX0dyb3VwNAorICAqIEB7CisgICovCiB1aW50MzJfdCBTRE1NQ19DbWRCbG9ja0xlbmd0aChTRE1NQ19UeXBlRGVmICpTRE1NQ3gsIHVpbnQzMl90IEJsb2NrU2l6ZSk7CiB1aW50MzJfdCBTRE1NQ19DbWRSZWFkU2luZ2xlQmxvY2soU0RNTUNfVHlwZURlZiAqU0RNTUN4LCB1aW50MzJfdCBSZWFkQWRkKTsKIHVpbnQzMl90IFNETU1DX0NtZFJlYWRNdWx0aUJsb2NrKFNETU1DX1R5cGVEZWYgKlNETU1DeCwgdWludDMyX3QgUmVhZEFkZCk7CkBAIC05ODYsMTMgKzk5MSwyNiBAQAogdWludDMyX3QgU0RNTUNfQ21kU2VuZFNDUihTRE1NQ19UeXBlRGVmICpTRE1NQ3gpOwogdWludDMyX3QgU0RNTUNfQ21kU2VuZENJRChTRE1NQ19UeXBlRGVmICpTRE1NQ3gpOwogdWludDMyX3QgU0RNTUNfQ21kU2VuZENTRChTRE1NQ19UeXBlRGVmICpTRE1NQ3gsIHVpbnQzMl90IEFyZ3VtZW50KTsKLXVpbnQzMl90IFNETU1DX0NtZFNlbmRFWFRDU0QoU0RNTUNfVHlwZURlZiAqU0RNTUN4LCB1aW50MzJfdCBBcmd1bWVudCk7CiB1aW50MzJfdCBTRE1NQ19DbWRTZXRSZWxBZGQoU0RNTUNfVHlwZURlZiAqU0RNTUN4LCB1aW50MTZfdCAqcFJDQSk7Cit1aW50MzJfdCBTRE1NQ19DbWRTZXRSZWxBZGRNbWMoU0RNTUNfVHlwZURlZiAqU0RNTUN4LCB1aW50MTZfdCBSQ0EpOwogdWludDMyX3QgU0RNTUNfQ21kU2VuZFN0YXR1cyhTRE1NQ19UeXBlRGVmICpTRE1NQ3gsIHVpbnQzMl90IEFyZ3VtZW50KTsKIHVpbnQzMl90IFNETU1DX0NtZFN0YXR1c1JlZ2lzdGVyKFNETU1DX1R5cGVEZWYgKlNETU1DeCk7CiB1aW50MzJfdCBTRE1NQ19DbWRPcENvbmRpdGlvbihTRE1NQ19UeXBlRGVmICpTRE1NQ3gsIHVpbnQzMl90IEFyZ3VtZW50KTsKIHVpbnQzMl90IFNETU1DX0NtZFN3aXRjaChTRE1NQ19UeXBlRGVmICpTRE1NQ3gsIHVpbnQzMl90IEFyZ3VtZW50KTsKK3VpbnQzMl90IFNETU1DX0NtZFNlbmRFWFRDU0QoU0RNTUNfVHlwZURlZiAqU0RNTUN4LCB1aW50MzJfdCBBcmd1bWVudCk7CisvKioKKyAgKiBAfQorICAqLwogCisvKiBTRE1NQyBSZXNwb25zZXMgbWFuYWdlbWVudCBmdW5jdGlvbnMgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiogQGFkZHRvZ3JvdXAgSEFMX1NETU1DX0xMX0dyb3VwNQorICAqIEB7CisgICovCit1aW50MzJfdCBTRE1NQ19HZXRDbWRSZXNwMShTRE1NQ19UeXBlRGVmICpTRE1NQ3gsIHVpbnQ4X3QgU0RfQ01ELCB1aW50MzJfdCBUaW1lb3V0KTsKK3VpbnQzMl90IFNETU1DX0dldENtZFJlc3AyKFNETU1DX1R5cGVEZWYgKlNETU1DeCk7Cit1aW50MzJfdCBTRE1NQ19HZXRDbWRSZXNwMyhTRE1NQ19UeXBlRGVmICpTRE1NQ3gpOwordWludDMyX3QgU0RNTUNfR2V0Q21kUmVzcDYoU0RNTUNfVHlwZURlZiAqU0RNTUN4LCB1aW50OF90IFNEX0NNRCwgdWludDE2X3QgKnBSQ0EpOwordWludDMyX3QgU0RNTUNfR2V0Q21kUmVzcDcoU0RNTUNfVHlwZURlZiAqU0RNTUN4KTsKIC8qKgogICAqIEB9CiAgICovCkBAIC0xMDE2LDUgKzEwMzQsMyBAQAogI2VuZGlmCiAKICNlbmRpZiAvKiBTVE0zMkY3eHhfTExfU0RNTUNfSCAqLwotCi0vKioqKioqKioqKioqKioqKioqKioqKioqIChDKSBDT1BZUklHSFQgU1RNaWNyb2VsZWN0cm9uaWNzICoqKioqRU5EIE9GIEZJTEUqKioqLwpkaWZmIC0tZ2l0IGEvSW5jL3N0bTMyZjd4eF9sbF9zcGkuaCBiL0luYy9zdG0zMmY3eHhfbGxfc3BpLmgKaW5kZXggYTliZWVlYi4uMDljYzNlNSAxMDA2NDQKLS0tIGEvSW5jL3N0bTMyZjd4eF9sbF9zcGkuaAorKysgYi9JbmMvc3RtMzJmN3h4X2xsX3NwaS5oCkBAIC02LDEzICs2LDEyIEBACiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAqIEBhdHRlbnRpb24KICAgKgotICAqIDxoMj48Y2VudGVyPiZjb3B5OyBDb3B5cmlnaHQgKGMpIDIwMTcgU1RNaWNyb2VsZWN0cm9uaWNzLgotICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuPC9jZW50ZXI+PC9oMj4KKyAgKiBDb3B5cmlnaHQgKGMpIDIwMTcgU1RNaWNyb2VsZWN0cm9uaWNzLgorICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICoKLSAgKiBUaGlzIHNvZnR3YXJlIGNvbXBvbmVudCBpcyBsaWNlbnNlZCBieSBTVCB1bmRlciBCU0QgMy1DbGF1c2UgbGljZW5zZSwKLSAgKiB0aGUgIkxpY2Vuc2UiOyBZb3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlCi0gICogTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0OgotICAqICAgICAgICAgICAgICAgICAgICAgICAgb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvQlNELTMtQ2xhdXNlCisgICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCB1bmRlciB0ZXJtcyB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlCisgICogaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc29mdHdhcmUgY29tcG9uZW50LgorICAqIElmIG5vIExJQ0VOU0UgZmlsZSBjb21lcyB3aXRoIHRoaXMgc29mdHdhcmUsIGl0IGlzIHByb3ZpZGVkIEFTLUlTLgogICAqCiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAqLwpAQCAtMTMzMyw3ICsxMzMyLDcgQEAKICAgKi8KIF9fU1RBVElDX0lOTElORSB1aW50OF90IExMX1NQSV9SZWNlaXZlRGF0YTgoU1BJX1R5cGVEZWYgKlNQSXgpCiB7Ci0gIHJldHVybiAodWludDhfdCkoUkVBRF9SRUcoU1BJeC0+RFIpKTsKKyAgcmV0dXJuICgqKChfX0lPIHVpbnQ4X3QgKikmU1BJeC0+RFIpKTsKIH0KIAogLyoqCkBAIC0yMjgxLDQgKzIyODAsMyBAQAogCiAjZW5kaWYgLyogU1RNMzJGN3h4X0xMX1NQSV9IICovCiAKLS8qKioqKioqKioqKioqKioqKioqKioqKiogKEMpIENPUFlSSUdIVCBTVE1pY3JvZWxlY3Ryb25pY3MgKioqKipFTkQgT0YgRklMRSoqKiovCmRpZmYgLS1naXQgYS9JbmMvc3RtMzJmN3h4X2xsX3N5c3RlbS5oIGIvSW5jL3N0bTMyZjd4eF9sbF9zeXN0ZW0uaAppbmRleCBhZDkwMGJhLi4wY2IwMmIwIDEwMDY0NAotLS0gYS9JbmMvc3RtMzJmN3h4X2xsX3N5c3RlbS5oCisrKyBiL0luYy9zdG0zMmY3eHhfbGxfc3lzdGVtLmgKQEAgLTMsNiArMywxNyBAQAogICAqIEBmaWxlICAgIHN0bTMyZjd4eF9sbF9zeXN0ZW0uaAogICAqIEBhdXRob3IgIE1DRCBBcHBsaWNhdGlvbiBUZWFtCiAgICogQGJyaWVmICAgSGVhZGVyIGZpbGUgb2YgU1lTVEVNIExMIG1vZHVsZS4KKyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICogQGF0dGVudGlvbgorICAqCisgICogQ29weXJpZ2h0IChjKSAyMDE3IFNUTWljcm9lbGVjdHJvbmljcy4KKyAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICAqCisgICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCB1bmRlciB0ZXJtcyB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlCisgICogaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc29mdHdhcmUgY29tcG9uZW50LgorICAqIElmIG5vIExJQ0VOU0UgZmlsZSBjb21lcyB3aXRoIHRoaXMgc29mdHdhcmUsIGl0IGlzIHByb3ZpZGVkIEFTLUlTLgorICAqCisgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICBAdmVyYmF0aW0KICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgICAgICAgICAgICAgICAgICAgICAjIyMjIyBIb3cgdG8gdXNlIHRoaXMgZHJpdmVyICMjIyMjCkBAIC0xNiwxNyArMjcsNiBAQAogCiAgIEBlbmR2ZXJiYXRpbQogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAgKiBAYXR0ZW50aW9uCi0gICoKLSAgKiA8aDI+PGNlbnRlcj4mY29weTsgQ29weXJpZ2h0IChjKSAyMDE3IFNUTWljcm9lbGVjdHJvbmljcy4KLSAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLjwvY2VudGVyPjwvaDI+Ci0gICoKLSAgKiBUaGlzIHNvZnR3YXJlIGNvbXBvbmVudCBpcyBsaWNlbnNlZCBieSBTVCB1bmRlciBCU0QgMy1DbGF1c2UgbGljZW5zZSwKLSAgKiB0aGUgIkxpY2Vuc2UiOyBZb3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlCi0gICogTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0OgotICAqICAgICAgICAgICAgICAgICAgICAgICAgb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvQlNELTMtQ2xhdXNlCi0gICoKLSAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgICovCiAKIC8qIERlZmluZSB0byBwcmV2ZW50IHJlY3Vyc2l2ZSBpbmNsdXNpb24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCkBAIC0xMDE1LDQgKzEwMTUsNCBAQAogCiAjZW5kaWYgLyogX19TVE0zMkY3eHhfTExfU1lTVEVNX0ggKi8KIAotLyoqKioqKioqKioqKioqKioqKioqKioqKiAoQykgQ09QWVJJR0hUIFNUTWljcm9lbGVjdHJvbmljcyAqKioqKkVORCBPRiBGSUxFKioqKi8KKwpkaWZmIC0tZ2l0IGEvSW5jL3N0bTMyZjd4eF9sbF90aW0uaCBiL0luYy9zdG0zMmY3eHhfbGxfdGltLmgKaW5kZXggNDcwOTcwZi4uOWM0YmM0YiAxMDA2NDQKLS0tIGEvSW5jL3N0bTMyZjd4eF9sbF90aW0uaAorKysgYi9JbmMvc3RtMzJmN3h4X2xsX3RpbS5oCkBAIC02LDEzICs2LDEyIEBACiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAqIEBhdHRlbnRpb24KICAgKgotICAqIDxoMj48Y2VudGVyPiZjb3B5OyBDb3B5cmlnaHQgKGMpIDIwMTcgU1RNaWNyb2VsZWN0cm9uaWNzLgotICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuPC9jZW50ZXI+PC9oMj4KKyAgKiBDb3B5cmlnaHQgKGMpIDIwMTcgU1RNaWNyb2VsZWN0cm9uaWNzLgorICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICoKLSAgKiBUaGlzIHNvZnR3YXJlIGNvbXBvbmVudCBpcyBsaWNlbnNlZCBieSBTVCB1bmRlciBCU0QgMy1DbGF1c2UgbGljZW5zZSwKLSAgKiB0aGUgIkxpY2Vuc2UiOyBZb3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlCi0gICogTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0OgotICAqICAgICAgICAgICAgICAgICAgICAgICAgb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvQlNELTMtQ2xhdXNlCisgICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCB1bmRlciB0ZXJtcyB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlCisgICogaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc29mdHdhcmUgY29tcG9uZW50LgorICAqIElmIG5vIExJQ0VOU0UgZmlsZSBjb21lcyB3aXRoIHRoaXMgc29mdHdhcmUsIGl0IGlzIHByb3ZpZGVkIEFTLUlTLgogICAqCiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAqLwpAQCAtMjA2LDI0ICsyMDUsMjkgQEAKICAgdWludDE2X3QgUHJlc2NhbGVyOyAgICAgICAgIC8qITwgU3BlY2lmaWVzIHRoZSBwcmVzY2FsZXIgdmFsdWUgdXNlZCB0byBkaXZpZGUgdGhlIFRJTSBjbG9jay4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGEgbnVtYmVyIGJldHdlZW4gTWluX0RhdGE9MHgwMDAwIGFuZCBNYXhfRGF0YT0weEZGRkYuCiAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBmZWF0dXJlIGNhbiBiZSBtb2RpZmllZCBhZnRlcndhcmRzIHVzaW5nIHVuaXRhcnkgZnVuY3Rpb24gQHJlZiBMTF9USU1fU2V0UHJlc2NhbGVyKCkuKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBmZWF0dXJlIGNhbiBiZSBtb2RpZmllZCBhZnRlcndhcmRzIHVzaW5nIHVuaXRhcnkgZnVuY3Rpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQHJlZiBMTF9USU1fU2V0UHJlc2NhbGVyKCkuKi8KIAogICB1aW50MzJfdCBDb3VudGVyTW9kZTsgICAgICAgLyohPCBTcGVjaWZpZXMgdGhlIGNvdW50ZXIgbW9kZS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGEgdmFsdWUgb2YgQHJlZiBUSU1fTExfRUNfQ09VTlRFUk1PREUuCiAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBmZWF0dXJlIGNhbiBiZSBtb2RpZmllZCBhZnRlcndhcmRzIHVzaW5nIHVuaXRhcnkgZnVuY3Rpb24gQHJlZiBMTF9USU1fU2V0Q291bnRlck1vZGUoKS4qLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGZlYXR1cmUgY2FuIGJlIG1vZGlmaWVkIGFmdGVyd2FyZHMgdXNpbmcgdW5pdGFyeSBmdW5jdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAcmVmIExMX1RJTV9TZXRDb3VudGVyTW9kZSgpLiovCiAKICAgdWludDMyX3QgQXV0b3JlbG9hZDsgICAgICAgIC8qITwgU3BlY2lmaWVzIHRoZSBhdXRvIHJlbG9hZCB2YWx1ZSB0byBiZSBsb2FkZWQgaW50byB0aGUgYWN0aXZlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEF1dG8tUmVsb2FkIFJlZ2lzdGVyIGF0IHRoZSBuZXh0IHVwZGF0ZSBldmVudC4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgbXVzdCBiZSBhIG51bWJlciBiZXR3ZWVuIE1pbl9EYXRhPTB4MDAwMCBhbmQgTWF4X0RhdGE9MHhGRkZGLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTb21lIHRpbWVyIGluc3RhbmNlcyBtYXkgc3VwcG9ydCAzMiBiaXRzIGNvdW50ZXJzLiBJbiB0aGF0IGNhc2UgdGhpcyBwYXJhbWV0ZXIgbXVzdCBiZSBhIG51bWJlciBiZXR3ZWVuIDB4MDAwMCBhbmQgMHhGRkZGRkZGRi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU29tZSB0aW1lciBpbnN0YW5jZXMgbWF5IHN1cHBvcnQgMzIgYml0cyBjb3VudGVycy4gSW4gdGhhdCBjYXNlIHRoaXMgcGFyYW1ldGVyIG11c3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmUgYSBudW1iZXIgYmV0d2VlbiAweDAwMDAgYW5kIDB4RkZGRkZGRkYuCiAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBmZWF0dXJlIGNhbiBiZSBtb2RpZmllZCBhZnRlcndhcmRzIHVzaW5nIHVuaXRhcnkgZnVuY3Rpb24gQHJlZiBMTF9USU1fU2V0QXV0b1JlbG9hZCgpLiovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgZmVhdHVyZSBjYW4gYmUgbW9kaWZpZWQgYWZ0ZXJ3YXJkcyB1c2luZyB1bml0YXJ5IGZ1bmN0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEByZWYgTExfVElNX1NldEF1dG9SZWxvYWQoKS4qLwogCiAgIHVpbnQzMl90IENsb2NrRGl2aXNpb247ICAgICAvKiE8IFNwZWNpZmllcyB0aGUgY2xvY2sgZGl2aXNpb24uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhIHZhbHVlIG9mIEByZWYgVElNX0xMX0VDX0NMT0NLRElWSVNJT04uCiAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBmZWF0dXJlIGNhbiBiZSBtb2RpZmllZCBhZnRlcndhcmRzIHVzaW5nIHVuaXRhcnkgZnVuY3Rpb24gQHJlZiBMTF9USU1fU2V0Q2xvY2tEaXZpc2lvbigpLiovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgZmVhdHVyZSBjYW4gYmUgbW9kaWZpZWQgYWZ0ZXJ3YXJkcyB1c2luZyB1bml0YXJ5IGZ1bmN0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEByZWYgTExfVElNX1NldENsb2NrRGl2aXNpb24oKS4qLwogCiAgIHVpbnQzMl90IFJlcGV0aXRpb25Db3VudGVyOyAgLyohPCBTcGVjaWZpZXMgdGhlIHJlcGV0aXRpb24gY291bnRlciB2YWx1ZS4gRWFjaCB0aW1lIHRoZSBSQ1IgZG93bmNvdW50ZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhY2hlcyB6ZXJvLCBhbiB1cGRhdGUgZXZlbnQgaXMgZ2VuZXJhdGVkIGFuZCBjb3VudGluZyByZXN0YXJ0cwpAQCAtMjMxLDEwICsyMzUsMTMgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBtZWFucyBpbiBQV00gbW9kZSB0aGF0IChOKzEpIGNvcnJlc3BvbmRzIHRvOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIHRoZSBudW1iZXIgb2YgUFdNIHBlcmlvZHMgaW4gZWRnZS1hbGlnbmVkIG1vZGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSB0aGUgbnVtYmVyIG9mIGhhbGYgUFdNIHBlcmlvZCBpbiBjZW50ZXItYWxpZ25lZCBtb2RlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdQIHRpbWVyczogdGhpcyBwYXJhbWV0ZXIgbXVzdCBiZSBhIG51bWJlciBiZXR3ZWVuIE1pbl9EYXRhID0gMHgwMCBhbmQgTWF4X0RhdGEgPSAweEZGLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBZHZhbmNlZCB0aW1lcnM6IHRoaXMgcGFyYW1ldGVyIG11c3QgYmUgYSBudW1iZXIgYmV0d2VlbiBNaW5fRGF0YSA9IDB4MDAwMCBhbmQgTWF4X0RhdGEgPSAweEZGRkYuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdQIHRpbWVyczogdGhpcyBwYXJhbWV0ZXIgbXVzdCBiZSBhIG51bWJlciBiZXR3ZWVuIE1pbl9EYXRhID0gMHgwMCBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWF4X0RhdGEgPSAweEZGLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBZHZhbmNlZCB0aW1lcnM6IHRoaXMgcGFyYW1ldGVyIG11c3QgYmUgYSBudW1iZXIgYmV0d2VlbiBNaW5fRGF0YSA9IDB4MDAwMCBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWF4X0RhdGEgPSAweEZGRkYuCiAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBmZWF0dXJlIGNhbiBiZSBtb2RpZmllZCBhZnRlcndhcmRzIHVzaW5nIHVuaXRhcnkgZnVuY3Rpb24gQHJlZiBMTF9USU1fU2V0UmVwZXRpdGlvbkNvdW50ZXIoKS4qLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGZlYXR1cmUgY2FuIGJlIG1vZGlmaWVkIGFmdGVyd2FyZHMgdXNpbmcgdW5pdGFyeSBmdW5jdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAcmVmIExMX1RJTV9TZXRSZXBldGl0aW9uQ291bnRlcigpLiovCiB9IExMX1RJTV9Jbml0VHlwZURlZjsKIAogLyoqCkBAIC0yNDUsNDMgKzI1Miw1MSBAQAogICB1aW50MzJfdCBPQ01vZGU7ICAgICAgICAvKiE8IFNwZWNpZmllcyB0aGUgb3V0cHV0IG1vZGUuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGEgdmFsdWUgb2YgQHJlZiBUSU1fTExfRUNfT0NNT0RFLgogCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBmZWF0dXJlIGNhbiBiZSBtb2RpZmllZCBhZnRlcndhcmRzIHVzaW5nIHVuaXRhcnkgZnVuY3Rpb24gQHJlZiBMTF9USU1fT0NfU2V0TW9kZSgpLiovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBmZWF0dXJlIGNhbiBiZSBtb2RpZmllZCBhZnRlcndhcmRzIHVzaW5nIHVuaXRhcnkgZnVuY3Rpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAcmVmIExMX1RJTV9PQ19TZXRNb2RlKCkuKi8KIAogICB1aW50MzJfdCBPQ1N0YXRlOyAgICAgICAvKiE8IFNwZWNpZmllcyB0aGUgVElNIE91dHB1dCBDb21wYXJlIHN0YXRlLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhIHZhbHVlIG9mIEByZWYgVElNX0xMX0VDX09DU1RBVEUuCiAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGZlYXR1cmUgY2FuIGJlIG1vZGlmaWVkIGFmdGVyd2FyZHMgdXNpbmcgdW5pdGFyeSBmdW5jdGlvbnMgQHJlZiBMTF9USU1fQ0NfRW5hYmxlQ2hhbm5lbCgpIG9yIEByZWYgTExfVElNX0NDX0Rpc2FibGVDaGFubmVsKCkuKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGZlYXR1cmUgY2FuIGJlIG1vZGlmaWVkIGFmdGVyd2FyZHMgdXNpbmcgdW5pdGFyeSBmdW5jdGlvbnMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAcmVmIExMX1RJTV9DQ19FbmFibGVDaGFubmVsKCkgb3IgQHJlZiBMTF9USU1fQ0NfRGlzYWJsZUNoYW5uZWwoKS4qLwogCiAgIHVpbnQzMl90IE9DTlN0YXRlOyAgICAgIC8qITwgU3BlY2lmaWVzIHRoZSBUSU0gY29tcGxlbWVudGFyeSBPdXRwdXQgQ29tcGFyZSBzdGF0ZS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYSB2YWx1ZSBvZiBAcmVmIFRJTV9MTF9FQ19PQ1NUQVRFLgogCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBmZWF0dXJlIGNhbiBiZSBtb2RpZmllZCBhZnRlcndhcmRzIHVzaW5nIHVuaXRhcnkgZnVuY3Rpb25zIEByZWYgTExfVElNX0NDX0VuYWJsZUNoYW5uZWwoKSBvciBAcmVmIExMX1RJTV9DQ19EaXNhYmxlQ2hhbm5lbCgpLiovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBmZWF0dXJlIGNhbiBiZSBtb2RpZmllZCBhZnRlcndhcmRzIHVzaW5nIHVuaXRhcnkgZnVuY3Rpb25zCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQHJlZiBMTF9USU1fQ0NfRW5hYmxlQ2hhbm5lbCgpIG9yIEByZWYgTExfVElNX0NDX0Rpc2FibGVDaGFubmVsKCkuKi8KIAogICB1aW50MzJfdCBDb21wYXJlVmFsdWU7ICAvKiE8IFNwZWNpZmllcyB0aGUgQ29tcGFyZSB2YWx1ZSB0byBiZSBsb2FkZWQgaW50byB0aGUgQ2FwdHVyZSBDb21wYXJlIFJlZ2lzdGVyLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhIG51bWJlciBiZXR3ZWVuIE1pbl9EYXRhPTB4MDAwMCBhbmQgTWF4X0RhdGE9MHhGRkZGLgogCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBmZWF0dXJlIGNhbiBiZSBtb2RpZmllZCBhZnRlcndhcmRzIHVzaW5nIHVuaXRhcnkgZnVuY3Rpb24gTExfVElNX09DX1NldENvbXBhcmVDSHggKHg9MS4uNikuKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGZlYXR1cmUgY2FuIGJlIG1vZGlmaWVkIGFmdGVyd2FyZHMgdXNpbmcgdW5pdGFyeSBmdW5jdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExMX1RJTV9PQ19TZXRDb21wYXJlQ0h4ICh4PTEuLjYpLiovCiAKICAgdWludDMyX3QgT0NQb2xhcml0eTsgICAgLyohPCBTcGVjaWZpZXMgdGhlIG91dHB1dCBwb2xhcml0eS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYSB2YWx1ZSBvZiBAcmVmIFRJTV9MTF9FQ19PQ1BPTEFSSVRZLgogCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBmZWF0dXJlIGNhbiBiZSBtb2RpZmllZCBhZnRlcndhcmRzIHVzaW5nIHVuaXRhcnkgZnVuY3Rpb24gQHJlZiBMTF9USU1fT0NfU2V0UG9sYXJpdHkoKS4qLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgZmVhdHVyZSBjYW4gYmUgbW9kaWZpZWQgYWZ0ZXJ3YXJkcyB1c2luZyB1bml0YXJ5IGZ1bmN0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQHJlZiBMTF9USU1fT0NfU2V0UG9sYXJpdHkoKS4qLwogCiAgIHVpbnQzMl90IE9DTlBvbGFyaXR5OyAgIC8qITwgU3BlY2lmaWVzIHRoZSBjb21wbGVtZW50YXJ5IG91dHB1dCBwb2xhcml0eS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYSB2YWx1ZSBvZiBAcmVmIFRJTV9MTF9FQ19PQ1BPTEFSSVRZLgogCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBmZWF0dXJlIGNhbiBiZSBtb2RpZmllZCBhZnRlcndhcmRzIHVzaW5nIHVuaXRhcnkgZnVuY3Rpb24gQHJlZiBMTF9USU1fT0NfU2V0UG9sYXJpdHkoKS4qLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgZmVhdHVyZSBjYW4gYmUgbW9kaWZpZWQgYWZ0ZXJ3YXJkcyB1c2luZyB1bml0YXJ5IGZ1bmN0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQHJlZiBMTF9USU1fT0NfU2V0UG9sYXJpdHkoKS4qLwogCiAKICAgdWludDMyX3QgT0NJZGxlU3RhdGU7ICAgLyohPCBTcGVjaWZpZXMgdGhlIFRJTSBPdXRwdXQgQ29tcGFyZSBwaW4gc3RhdGUgZHVyaW5nIElkbGUgc3RhdGUuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGEgdmFsdWUgb2YgQHJlZiBUSU1fTExfRUNfT0NJRExFU1RBVEUuCiAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGZlYXR1cmUgY2FuIGJlIG1vZGlmaWVkIGFmdGVyd2FyZHMgdXNpbmcgdW5pdGFyeSBmdW5jdGlvbiBAcmVmIExMX1RJTV9PQ19TZXRJZGxlU3RhdGUoKS4qLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgZmVhdHVyZSBjYW4gYmUgbW9kaWZpZWQgYWZ0ZXJ3YXJkcyB1c2luZyB1bml0YXJ5IGZ1bmN0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQHJlZiBMTF9USU1fT0NfU2V0SWRsZVN0YXRlKCkuKi8KIAogICB1aW50MzJfdCBPQ05JZGxlU3RhdGU7ICAvKiE8IFNwZWNpZmllcyB0aGUgVElNIE91dHB1dCBDb21wYXJlIHBpbiBzdGF0ZSBkdXJpbmcgSWRsZSBzdGF0ZS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYSB2YWx1ZSBvZiBAcmVmIFRJTV9MTF9FQ19PQ0lETEVTVEFURS4KIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgZmVhdHVyZSBjYW4gYmUgbW9kaWZpZWQgYWZ0ZXJ3YXJkcyB1c2luZyB1bml0YXJ5IGZ1bmN0aW9uIEByZWYgTExfVElNX09DX1NldElkbGVTdGF0ZSgpLiovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBmZWF0dXJlIGNhbiBiZSBtb2RpZmllZCBhZnRlcndhcmRzIHVzaW5nIHVuaXRhcnkgZnVuY3Rpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAcmVmIExMX1RJTV9PQ19TZXRJZGxlU3RhdGUoKS4qLwogfSBMTF9USU1fT0NfSW5pdFR5cGVEZWY7CiAKIC8qKgpAQCAtMjk0LDIyICszMDksMjYgQEAKICAgdWludDMyX3QgSUNQb2xhcml0eTsgICAgLyohPCBTcGVjaWZpZXMgdGhlIGFjdGl2ZSBlZGdlIG9mIHRoZSBpbnB1dCBzaWduYWwuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGEgdmFsdWUgb2YgQHJlZiBUSU1fTExfRUNfSUNfUE9MQVJJVFkuCiAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGZlYXR1cmUgY2FuIGJlIG1vZGlmaWVkIGFmdGVyd2FyZHMgdXNpbmcgdW5pdGFyeSBmdW5jdGlvbiBAcmVmIExMX1RJTV9JQ19TZXRQb2xhcml0eSgpLiovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBmZWF0dXJlIGNhbiBiZSBtb2RpZmllZCBhZnRlcndhcmRzIHVzaW5nIHVuaXRhcnkgZnVuY3Rpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAcmVmIExMX1RJTV9JQ19TZXRQb2xhcml0eSgpLiovCiAKICAgdWludDMyX3QgSUNBY3RpdmVJbnB1dDsgLyohPCBTcGVjaWZpZXMgdGhlIGlucHV0LgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhIHZhbHVlIG9mIEByZWYgVElNX0xMX0VDX0FDVElWRUlOUFVULgogCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBmZWF0dXJlIGNhbiBiZSBtb2RpZmllZCBhZnRlcndhcmRzIHVzaW5nIHVuaXRhcnkgZnVuY3Rpb24gQHJlZiBMTF9USU1fSUNfU2V0QWN0aXZlSW5wdXQoKS4qLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgZmVhdHVyZSBjYW4gYmUgbW9kaWZpZWQgYWZ0ZXJ3YXJkcyB1c2luZyB1bml0YXJ5IGZ1bmN0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQHJlZiBMTF9USU1fSUNfU2V0QWN0aXZlSW5wdXQoKS4qLwogCiAgIHVpbnQzMl90IElDUHJlc2NhbGVyOyAgIC8qITwgU3BlY2lmaWVzIHRoZSBJbnB1dCBDYXB0dXJlIFByZXNjYWxlci4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYSB2YWx1ZSBvZiBAcmVmIFRJTV9MTF9FQ19JQ1BTQy4KIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgZmVhdHVyZSBjYW4gYmUgbW9kaWZpZWQgYWZ0ZXJ3YXJkcyB1c2luZyB1bml0YXJ5IGZ1bmN0aW9uIEByZWYgTExfVElNX0lDX1NldFByZXNjYWxlcigpLiovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBmZWF0dXJlIGNhbiBiZSBtb2RpZmllZCBhZnRlcndhcmRzIHVzaW5nIHVuaXRhcnkgZnVuY3Rpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAcmVmIExMX1RJTV9JQ19TZXRQcmVzY2FsZXIoKS4qLwogCiAgIHVpbnQzMl90IElDRmlsdGVyOyAgICAgIC8qITwgU3BlY2lmaWVzIHRoZSBpbnB1dCBjYXB0dXJlIGZpbHRlci4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYSB2YWx1ZSBvZiBAcmVmIFRJTV9MTF9FQ19JQ19GSUxURVIuCiAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGZlYXR1cmUgY2FuIGJlIG1vZGlmaWVkIGFmdGVyd2FyZHMgdXNpbmcgdW5pdGFyeSBmdW5jdGlvbiBAcmVmIExMX1RJTV9JQ19TZXRGaWx0ZXIoKS4qLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgZmVhdHVyZSBjYW4gYmUgbW9kaWZpZWQgYWZ0ZXJ3YXJkcyB1c2luZyB1bml0YXJ5IGZ1bmN0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQHJlZiBMTF9USU1fSUNfU2V0RmlsdGVyKCkuKi8KIH0gTExfVElNX0lDX0luaXRUeXBlRGVmOwogCiAKQEAgLTMyMSw0NyArMzQwLDU2IEBACiAgIHVpbnQzMl90IEVuY29kZXJNb2RlOyAgICAgLyohPCBTcGVjaWZpZXMgdGhlIGVuY29kZXIgcmVzb2x1dGlvbiAoeDIgb3IgeDQpLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGEgdmFsdWUgb2YgQHJlZiBUSU1fTExfRUNfRU5DT0RFUk1PREUuCiAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgZmVhdHVyZSBjYW4gYmUgbW9kaWZpZWQgYWZ0ZXJ3YXJkcyB1c2luZyB1bml0YXJ5IGZ1bmN0aW9uIEByZWYgTExfVElNX1NldEVuY29kZXJNb2RlKCkuKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgZmVhdHVyZSBjYW4gYmUgbW9kaWZpZWQgYWZ0ZXJ3YXJkcyB1c2luZyB1bml0YXJ5IGZ1bmN0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAcmVmIExMX1RJTV9TZXRFbmNvZGVyTW9kZSgpLiovCiAKICAgdWludDMyX3QgSUMxUG9sYXJpdHk7ICAgICAvKiE8IFNwZWNpZmllcyB0aGUgYWN0aXZlIGVkZ2Ugb2YgVEkxIGlucHV0LgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGEgdmFsdWUgb2YgQHJlZiBUSU1fTExfRUNfSUNfUE9MQVJJVFkuCiAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgZmVhdHVyZSBjYW4gYmUgbW9kaWZpZWQgYWZ0ZXJ3YXJkcyB1c2luZyB1bml0YXJ5IGZ1bmN0aW9uIEByZWYgTExfVElNX0lDX1NldFBvbGFyaXR5KCkuKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgZmVhdHVyZSBjYW4gYmUgbW9kaWZpZWQgYWZ0ZXJ3YXJkcyB1c2luZyB1bml0YXJ5IGZ1bmN0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAcmVmIExMX1RJTV9JQ19TZXRQb2xhcml0eSgpLiovCiAKICAgdWludDMyX3QgSUMxQWN0aXZlSW5wdXQ7ICAvKiE8IFNwZWNpZmllcyB0aGUgVEkxIGlucHV0IHNvdXJjZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGEgdmFsdWUgb2YgQHJlZiBUSU1fTExfRUNfQUNUSVZFSU5QVVQuCiAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgZmVhdHVyZSBjYW4gYmUgbW9kaWZpZWQgYWZ0ZXJ3YXJkcyB1c2luZyB1bml0YXJ5IGZ1bmN0aW9uIEByZWYgTExfVElNX0lDX1NldEFjdGl2ZUlucHV0KCkuKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgZmVhdHVyZSBjYW4gYmUgbW9kaWZpZWQgYWZ0ZXJ3YXJkcyB1c2luZyB1bml0YXJ5IGZ1bmN0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAcmVmIExMX1RJTV9JQ19TZXRBY3RpdmVJbnB1dCgpLiovCiAKICAgdWludDMyX3QgSUMxUHJlc2NhbGVyOyAgICAvKiE8IFNwZWNpZmllcyB0aGUgVEkxIGlucHV0IHByZXNjYWxlciB2YWx1ZS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhIHZhbHVlIG9mIEByZWYgVElNX0xMX0VDX0lDUFNDLgogCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGZlYXR1cmUgY2FuIGJlIG1vZGlmaWVkIGFmdGVyd2FyZHMgdXNpbmcgdW5pdGFyeSBmdW5jdGlvbiBAcmVmIExMX1RJTV9JQ19TZXRQcmVzY2FsZXIoKS4qLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBmZWF0dXJlIGNhbiBiZSBtb2RpZmllZCBhZnRlcndhcmRzIHVzaW5nIHVuaXRhcnkgZnVuY3Rpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEByZWYgTExfVElNX0lDX1NldFByZXNjYWxlcigpLiovCiAKICAgdWludDMyX3QgSUMxRmlsdGVyOyAgICAgICAvKiE8IFNwZWNpZmllcyB0aGUgVEkxIGlucHV0IGZpbHRlci4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhIHZhbHVlIG9mIEByZWYgVElNX0xMX0VDX0lDX0ZJTFRFUi4KIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBmZWF0dXJlIGNhbiBiZSBtb2RpZmllZCBhZnRlcndhcmRzIHVzaW5nIHVuaXRhcnkgZnVuY3Rpb24gQHJlZiBMTF9USU1fSUNfU2V0RmlsdGVyKCkuKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgZmVhdHVyZSBjYW4gYmUgbW9kaWZpZWQgYWZ0ZXJ3YXJkcyB1c2luZyB1bml0YXJ5IGZ1bmN0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAcmVmIExMX1RJTV9JQ19TZXRGaWx0ZXIoKS4qLwogCiAgIHVpbnQzMl90IElDMlBvbGFyaXR5OyAgICAgIC8qITwgU3BlY2lmaWVzIHRoZSBhY3RpdmUgZWRnZSBvZiBUSTIgaW5wdXQuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYSB2YWx1ZSBvZiBAcmVmIFRJTV9MTF9FQ19JQ19QT0xBUklUWS4KIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBmZWF0dXJlIGNhbiBiZSBtb2RpZmllZCBhZnRlcndhcmRzIHVzaW5nIHVuaXRhcnkgZnVuY3Rpb24gQHJlZiBMTF9USU1fSUNfU2V0UG9sYXJpdHkoKS4qLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBmZWF0dXJlIGNhbiBiZSBtb2RpZmllZCBhZnRlcndhcmRzIHVzaW5nIHVuaXRhcnkgZnVuY3Rpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEByZWYgTExfVElNX0lDX1NldFBvbGFyaXR5KCkuKi8KIAogICB1aW50MzJfdCBJQzJBY3RpdmVJbnB1dDsgIC8qITwgU3BlY2lmaWVzIHRoZSBUSTIgaW5wdXQgc291cmNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYSB2YWx1ZSBvZiBAcmVmIFRJTV9MTF9FQ19BQ1RJVkVJTlBVVC4KIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBmZWF0dXJlIGNhbiBiZSBtb2RpZmllZCBhZnRlcndhcmRzIHVzaW5nIHVuaXRhcnkgZnVuY3Rpb24gQHJlZiBMTF9USU1fSUNfU2V0QWN0aXZlSW5wdXQoKS4qLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBmZWF0dXJlIGNhbiBiZSBtb2RpZmllZCBhZnRlcndhcmRzIHVzaW5nIHVuaXRhcnkgZnVuY3Rpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEByZWYgTExfVElNX0lDX1NldEFjdGl2ZUlucHV0KCkuKi8KIAogICB1aW50MzJfdCBJQzJQcmVzY2FsZXI7ICAgIC8qITwgU3BlY2lmaWVzIHRoZSBUSTIgaW5wdXQgcHJlc2NhbGVyIHZhbHVlLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGEgdmFsdWUgb2YgQHJlZiBUSU1fTExfRUNfSUNQU0MuCiAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgZmVhdHVyZSBjYW4gYmUgbW9kaWZpZWQgYWZ0ZXJ3YXJkcyB1c2luZyB1bml0YXJ5IGZ1bmN0aW9uIEByZWYgTExfVElNX0lDX1NldFByZXNjYWxlcigpLiovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGZlYXR1cmUgY2FuIGJlIG1vZGlmaWVkIGFmdGVyd2FyZHMgdXNpbmcgdW5pdGFyeSBmdW5jdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQHJlZiBMTF9USU1fSUNfU2V0UHJlc2NhbGVyKCkuKi8KIAogICB1aW50MzJfdCBJQzJGaWx0ZXI7ICAgICAgIC8qITwgU3BlY2lmaWVzIHRoZSBUSTIgaW5wdXQgZmlsdGVyLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGEgdmFsdWUgb2YgQHJlZiBUSU1fTExfRUNfSUNfRklMVEVSLgogCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGZlYXR1cmUgY2FuIGJlIG1vZGlmaWVkIGFmdGVyd2FyZHMgdXNpbmcgdW5pdGFyeSBmdW5jdGlvbiBAcmVmIExMX1RJTV9JQ19TZXRGaWx0ZXIoKS4qLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBmZWF0dXJlIGNhbiBiZSBtb2RpZmllZCBhZnRlcndhcmRzIHVzaW5nIHVuaXRhcnkgZnVuY3Rpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEByZWYgTExfVElNX0lDX1NldEZpbHRlcigpLiovCiAKIH0gTExfVElNX0VOQ09ERVJfSW5pdFR5cGVEZWY7CiAKQEAgLTM3NCwyNiArNDAyLDMxIEBACiAgIHVpbnQzMl90IElDMVBvbGFyaXR5OyAgICAgICAgLyohPCBTcGVjaWZpZXMgdGhlIGFjdGl2ZSBlZGdlIG9mIFRJMSBpbnB1dC4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhIHZhbHVlIG9mIEByZWYgVElNX0xMX0VDX0lDX1BPTEFSSVRZLgogCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGZlYXR1cmUgY2FuIGJlIG1vZGlmaWVkIGFmdGVyd2FyZHMgdXNpbmcgdW5pdGFyeSBmdW5jdGlvbiBAcmVmIExMX1RJTV9JQ19TZXRQb2xhcml0eSgpLiovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGZlYXR1cmUgY2FuIGJlIG1vZGlmaWVkIGFmdGVyd2FyZHMgdXNpbmcgdW5pdGFyeSBmdW5jdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQHJlZiBMTF9USU1fSUNfU2V0UG9sYXJpdHkoKS4qLwogCiAgIHVpbnQzMl90IElDMVByZXNjYWxlcjsgICAgICAgLyohPCBTcGVjaWZpZXMgdGhlIFRJMSBpbnB1dCBwcmVzY2FsZXIgdmFsdWUuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcmVzY2FsZXIgbXVzdCBiZSBzZXQgdG8gZ2V0IGEgbWF4aW11bSBjb3VudGVyIHBlcmlvZCBsb25nZXIgdGhhbiB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWUgaW50ZXJ2YWwgYmV0d2VlbiAyIGNvbnNlY3V0aXZlIGNoYW5nZXMgb24gdGhlIEhhbGwgaW5wdXRzLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGEgdmFsdWUgb2YgQHJlZiBUSU1fTExfRUNfSUNQU0MuCiAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgZmVhdHVyZSBjYW4gYmUgbW9kaWZpZWQgYWZ0ZXJ3YXJkcyB1c2luZyB1bml0YXJ5IGZ1bmN0aW9uIEByZWYgTExfVElNX0lDX1NldFByZXNjYWxlcigpLiovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGZlYXR1cmUgY2FuIGJlIG1vZGlmaWVkIGFmdGVyd2FyZHMgdXNpbmcgdW5pdGFyeSBmdW5jdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQHJlZiBMTF9USU1fSUNfU2V0UHJlc2NhbGVyKCkuKi8KIAogICB1aW50MzJfdCBJQzFGaWx0ZXI7ICAgICAgICAgIC8qITwgU3BlY2lmaWVzIHRoZSBUSTEgaW5wdXQgZmlsdGVyLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGEgdmFsdWUgb2YgQHJlZiBUSU1fTExfRUNfSUNfRklMVEVSLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGEgdmFsdWUgb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEByZWYgVElNX0xMX0VDX0lDX0ZJTFRFUi4KIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBmZWF0dXJlIGNhbiBiZSBtb2RpZmllZCBhZnRlcndhcmRzIHVzaW5nIHVuaXRhcnkgZnVuY3Rpb24gQHJlZiBMTF9USU1fSUNfU2V0RmlsdGVyKCkuKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgZmVhdHVyZSBjYW4gYmUgbW9kaWZpZWQgYWZ0ZXJ3YXJkcyB1c2luZyB1bml0YXJ5IGZ1bmN0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAcmVmIExMX1RJTV9JQ19TZXRGaWx0ZXIoKS4qLwogCiAgIHVpbnQzMl90IENvbW11dGF0aW9uRGVsYXk7ICAgLyohPCBTcGVjaWZpZXMgdGhlIGNvbXBhcmUgdmFsdWUgdG8gYmUgbG9hZGVkIGludG8gdGhlIENhcHR1cmUgQ29tcGFyZSBSZWdpc3Rlci4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEEgcG9zaXRpdmUgcHVsc2UgKFRSR08gZXZlbnQpIGlzIGdlbmVyYXRlZCB3aXRoIGEgcHJvZ3JhbW1hYmxlIGRlbGF5IGV2ZXJ5IHRpbWUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgY2hhbmdlIG9jY3VycyBvbiB0aGUgSGFsbCBpbnB1dHMuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYSBudW1iZXIgYmV0d2VlbiBNaW5fRGF0YSA9IDB4MDAwMCBhbmQgTWF4X0RhdGEgPSAweEZGRkYuCiAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgZmVhdHVyZSBjYW4gYmUgbW9kaWZpZWQgYWZ0ZXJ3YXJkcyB1c2luZyB1bml0YXJ5IGZ1bmN0aW9uIEByZWYgTExfVElNX09DX1NldENvbXBhcmVDSDIoKS4qLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBmZWF0dXJlIGNhbiBiZSBtb2RpZmllZCBhZnRlcndhcmRzIHVzaW5nIHVuaXRhcnkgZnVuY3Rpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEByZWYgTExfVElNX09DX1NldENvbXBhcmVDSDIoKS4qLwogfSBMTF9USU1fSEFMTFNFTlNPUl9Jbml0VHlwZURlZjsKIAogLyoqCkBAIC00MDQsNzkgKzQzNyw5OSBAQAogICB1aW50MzJfdCBPU1NSU3RhdGU7ICAgICAgICAgICAgLyohPCBTcGVjaWZpZXMgdGhlIE9mZi1TdGF0ZSBzZWxlY3Rpb24gdXNlZCBpbiBSdW4gbW9kZS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGEgdmFsdWUgb2YgQHJlZiBUSU1fTExfRUNfT1NTUgogCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgZmVhdHVyZSBjYW4gYmUgbW9kaWZpZWQgYWZ0ZXJ3YXJkcyB1c2luZyB1bml0YXJ5IGZ1bmN0aW9uIEByZWYgTExfVElNX1NldE9mZlN0YXRlcygpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgZmVhdHVyZSBjYW4gYmUgbW9kaWZpZWQgYWZ0ZXJ3YXJkcyB1c2luZyB1bml0YXJ5IGZ1bmN0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEByZWYgTExfVElNX1NldE9mZlN0YXRlcygpCiAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQG5vdGUgVGhpcyBiaXQtZmllbGQgY2Fubm90IGJlIG1vZGlmaWVkIGFzIGxvbmcgYXMgTE9DSyBsZXZlbCAyIGhhcyBiZWVuIHByb2dyYW1tZWQuICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBub3RlIFRoaXMgYml0LWZpZWxkIGNhbm5vdCBiZSBtb2RpZmllZCBhcyBsb25nIGFzIExPQ0sgbGV2ZWwgMiBoYXMgYmVlbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvZ3JhbW1lZC4gKi8KIAogICB1aW50MzJfdCBPU1NJU3RhdGU7ICAgICAgICAgICAgLyohPCBTcGVjaWZpZXMgdGhlIE9mZi1TdGF0ZSB1c2VkIGluIElkbGUgc3RhdGUuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhIHZhbHVlIG9mIEByZWYgVElNX0xMX0VDX09TU0kKIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGZlYXR1cmUgY2FuIGJlIG1vZGlmaWVkIGFmdGVyd2FyZHMgdXNpbmcgdW5pdGFyeSBmdW5jdGlvbiBAcmVmIExMX1RJTV9TZXRPZmZTdGF0ZXMoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGZlYXR1cmUgY2FuIGJlIG1vZGlmaWVkIGFmdGVyd2FyZHMgdXNpbmcgdW5pdGFyeSBmdW5jdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAcmVmIExMX1RJTV9TZXRPZmZTdGF0ZXMoKQogCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBub3RlIFRoaXMgYml0LWZpZWxkIGNhbm5vdCBiZSBtb2RpZmllZCBhcyBsb25nIGFzIExPQ0sgbGV2ZWwgMiBoYXMgYmVlbiBwcm9ncmFtbWVkLiAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAbm90ZSBUaGlzIGJpdC1maWVsZCBjYW5ub3QgYmUgbW9kaWZpZWQgYXMgbG9uZyBhcyBMT0NLIGxldmVsIDIgaGFzIGJlZW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvZ3JhbW1lZC4gKi8KIAogICB1aW50MzJfdCBMb2NrTGV2ZWw7ICAgICAgICAgICAgLyohPCBTcGVjaWZpZXMgdGhlIExPQ0sgbGV2ZWwgcGFyYW1ldGVycy4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGEgdmFsdWUgb2YgQHJlZiBUSU1fTExfRUNfTE9DS0xFVkVMCiAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQG5vdGUgVGhlIExPQ0sgYml0cyBjYW4gYmUgd3JpdHRlbiBvbmx5IG9uY2UgYWZ0ZXIgdGhlIHJlc2V0LiBPbmNlIHRoZSBUSU14X0JEVFIgcmVnaXN0ZXIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzIGJlZW4gd3JpdHRlbiwgdGhlaXIgY29udGVudCBpcyBmcm96ZW4gdW50aWwgdGhlIG5leHQgcmVzZXQuKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQG5vdGUgVGhlIExPQ0sgYml0cyBjYW4gYmUgd3JpdHRlbiBvbmx5IG9uY2UgYWZ0ZXIgdGhlIHJlc2V0LiBPbmNlIHRoZSBUSU14X0JEVFIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXIgaGFzIGJlZW4gd3JpdHRlbiwgdGhlaXIgY29udGVudCBpcyBmcm96ZW4gdW50aWwgdGhlIG5leHQgcmVzZXQuKi8KIAogICB1aW50OF90IERlYWRUaW1lOyAgICAgICAgICAgICAgLyohPCBTcGVjaWZpZXMgdGhlIGRlbGF5IHRpbWUgYmV0d2VlbiB0aGUgc3dpdGNoaW5nLW9mZiBhbmQgdGhlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaGluZy1vbiBvZiB0aGUgb3V0cHV0cy4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGEgbnVtYmVyIGJldHdlZW4gTWluX0RhdGEgPSAweDAwIGFuZCBNYXhfRGF0YSA9IDB4RkYuCiAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBmZWF0dXJlIGNhbiBiZSBtb2RpZmllZCBhZnRlcndhcmRzIHVzaW5nIHVuaXRhcnkgZnVuY3Rpb24gQHJlZiBMTF9USU1fT0NfU2V0RGVhZFRpbWUoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGZlYXR1cmUgY2FuIGJlIG1vZGlmaWVkIGFmdGVyd2FyZHMgdXNpbmcgdW5pdGFyeSBmdW5jdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAcmVmIExMX1RJTV9PQ19TZXREZWFkVGltZSgpCiAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQG5vdGUgVGhpcyBiaXQtZmllbGQgY2FuIG5vdCBiZSBtb2RpZmllZCBhcyBsb25nIGFzIExPQ0sgbGV2ZWwgMSwgMiBvciAzIGhhcyBiZWVuIHByb2dyYW1tZWQuICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBub3RlIFRoaXMgYml0LWZpZWxkIGNhbiBub3QgYmUgbW9kaWZpZWQgYXMgbG9uZyBhcyBMT0NLIGxldmVsIDEsIDIgb3IgMyBoYXMgYmVlbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvZ3JhbW1lZC4gKi8KIAogICB1aW50MTZfdCBCcmVha1N0YXRlOyAgICAgICAgICAgLyohPCBTcGVjaWZpZXMgd2hldGhlciB0aGUgVElNIEJyZWFrIGlucHV0IGlzIGVuYWJsZWQgb3Igbm90LgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYSB2YWx1ZSBvZiBAcmVmIFRJTV9MTF9FQ19CUkVBS19FTkFCTEUKIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGZlYXR1cmUgY2FuIGJlIG1vZGlmaWVkIGFmdGVyd2FyZHMgdXNpbmcgdW5pdGFyeSBmdW5jdGlvbnMgQHJlZiBMTF9USU1fRW5hYmxlQlJLKCkgb3IgQHJlZiBMTF9USU1fRGlzYWJsZUJSSygpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgZmVhdHVyZSBjYW4gYmUgbW9kaWZpZWQgYWZ0ZXJ3YXJkcyB1c2luZyB1bml0YXJ5IGZ1bmN0aW9ucworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAcmVmIExMX1RJTV9FbmFibGVCUksoKSBvciBAcmVmIExMX1RJTV9EaXNhYmxlQlJLKCkKIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAbm90ZSBUaGlzIGJpdC1maWVsZCBjYW4gbm90IGJlIG1vZGlmaWVkIGFzIGxvbmcgYXMgTE9DSyBsZXZlbCAxIGhhcyBiZWVuIHByb2dyYW1tZWQuICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBub3RlIFRoaXMgYml0LWZpZWxkIGNhbiBub3QgYmUgbW9kaWZpZWQgYXMgbG9uZyBhcyBMT0NLIGxldmVsIDEgaGFzIGJlZW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvZ3JhbW1lZC4gKi8KIAogICB1aW50MzJfdCBCcmVha1BvbGFyaXR5OyAgICAgICAgLyohPCBTcGVjaWZpZXMgdGhlIFRJTSBCcmVhayBJbnB1dCBwaW4gcG9sYXJpdHkuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhIHZhbHVlIG9mIEByZWYgVElNX0xMX0VDX0JSRUFLX1BPTEFSSVRZCiAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBmZWF0dXJlIGNhbiBiZSBtb2RpZmllZCBhZnRlcndhcmRzIHVzaW5nIHVuaXRhcnkgZnVuY3Rpb24gQHJlZiBMTF9USU1fQ29uZmlnQlJLKCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBmZWF0dXJlIGNhbiBiZSBtb2RpZmllZCBhZnRlcndhcmRzIHVzaW5nIHVuaXRhcnkgZnVuY3Rpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQHJlZiBMTF9USU1fQ29uZmlnQlJLKCkKIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAbm90ZSBUaGlzIGJpdC1maWVsZCBjYW4gbm90IGJlIG1vZGlmaWVkIGFzIGxvbmcgYXMgTE9DSyBsZXZlbCAxIGhhcyBiZWVuIHByb2dyYW1tZWQuICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBub3RlIFRoaXMgYml0LWZpZWxkIGNhbiBub3QgYmUgbW9kaWZpZWQgYXMgbG9uZyBhcyBMT0NLIGxldmVsIDEgaGFzIGJlZW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvZ3JhbW1lZC4gKi8KIAogICB1aW50MzJfdCBCcmVha0ZpbHRlcjsgICAgICAgICAgLyohPCBTcGVjaWZpZXMgdGhlIFRJTSBCcmVhayBGaWx0ZXIuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhIHZhbHVlIG9mIEByZWYgVElNX0xMX0VDX0JSRUFLX0ZJTFRFUgogCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgZmVhdHVyZSBjYW4gYmUgbW9kaWZpZWQgYWZ0ZXJ3YXJkcyB1c2luZyB1bml0YXJ5IGZ1bmN0aW9uIEByZWYgTExfVElNX0NvbmZpZ0JSSygpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgZmVhdHVyZSBjYW4gYmUgbW9kaWZpZWQgYWZ0ZXJ3YXJkcyB1c2luZyB1bml0YXJ5IGZ1bmN0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEByZWYgTExfVElNX0NvbmZpZ0JSSygpCiAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQG5vdGUgVGhpcyBiaXQtZmllbGQgY2FuIG5vdCBiZSBtb2RpZmllZCBhcyBsb25nIGFzIExPQ0sgbGV2ZWwgMSBoYXMgYmVlbiBwcm9ncmFtbWVkLiAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAbm90ZSBUaGlzIGJpdC1maWVsZCBjYW4gbm90IGJlIG1vZGlmaWVkIGFzIGxvbmcgYXMgTE9DSyBsZXZlbCAxIGhhcyBiZWVuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2dyYW1tZWQuICovCiAKICAgdWludDMyX3QgQnJlYWsyU3RhdGU7ICAgICAgICAgIC8qITwgU3BlY2lmaWVzIHdoZXRoZXIgdGhlIFRJTSBCcmVhazIgaW5wdXQgaXMgZW5hYmxlZCBvciBub3QuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhIHZhbHVlIG9mIEByZWYgVElNX0xMX0VDX0JSRUFLMl9FTkFCTEUKIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGZlYXR1cmUgY2FuIGJlIG1vZGlmaWVkIGFmdGVyd2FyZHMgdXNpbmcgdW5pdGFyeSBmdW5jdGlvbnMgQHJlZiBMTF9USU1fRW5hYmxlQlJLMigpIG9yIEByZWYgTExfVElNX0Rpc2FibGVCUksyKCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBmZWF0dXJlIGNhbiBiZSBtb2RpZmllZCBhZnRlcndhcmRzIHVzaW5nIHVuaXRhcnkgZnVuY3Rpb25zCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEByZWYgTExfVElNX0VuYWJsZUJSSzIoKSBvciBAcmVmIExMX1RJTV9EaXNhYmxlQlJLMigpCiAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQG5vdGUgVGhpcyBiaXQtZmllbGQgY2FuIG5vdCBiZSBtb2RpZmllZCBhcyBsb25nIGFzIExPQ0sgbGV2ZWwgMSBoYXMgYmVlbiBwcm9ncmFtbWVkLiAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAbm90ZSBUaGlzIGJpdC1maWVsZCBjYW4gbm90IGJlIG1vZGlmaWVkIGFzIGxvbmcgYXMgTE9DSyBsZXZlbCAxIGhhcyBiZWVuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2dyYW1tZWQuICovCiAKICAgdWludDMyX3QgQnJlYWsyUG9sYXJpdHk7ICAgICAgICAvKiE8IFNwZWNpZmllcyB0aGUgVElNIEJyZWFrMiBJbnB1dCBwaW4gcG9sYXJpdHkuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhIHZhbHVlIG9mIEByZWYgVElNX0xMX0VDX0JSRUFLMl9QT0xBUklUWQogCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgZmVhdHVyZSBjYW4gYmUgbW9kaWZpZWQgYWZ0ZXJ3YXJkcyB1c2luZyB1bml0YXJ5IGZ1bmN0aW9uIEByZWYgTExfVElNX0NvbmZpZ0JSSzIoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGZlYXR1cmUgY2FuIGJlIG1vZGlmaWVkIGFmdGVyd2FyZHMgdXNpbmcgdW5pdGFyeSBmdW5jdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAcmVmIExMX1RJTV9Db25maWdCUksyKCkKIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAbm90ZSBUaGlzIGJpdC1maWVsZCBjYW4gbm90IGJlIG1vZGlmaWVkIGFzIGxvbmcgYXMgTE9DSyBsZXZlbCAxIGhhcyBiZWVuIHByb2dyYW1tZWQuICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBub3RlIFRoaXMgYml0LWZpZWxkIGNhbiBub3QgYmUgbW9kaWZpZWQgYXMgbG9uZyBhcyBMT0NLIGxldmVsIDEgaGFzIGJlZW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvZ3JhbW1lZC4gKi8KIAogICB1aW50MzJfdCBCcmVhazJGaWx0ZXI7ICAgICAgICAgIC8qITwgU3BlY2lmaWVzIHRoZSBUSU0gQnJlYWsyIEZpbHRlci4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGEgdmFsdWUgb2YgQHJlZiBUSU1fTExfRUNfQlJFQUsyX0ZJTFRFUgogCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgZmVhdHVyZSBjYW4gYmUgbW9kaWZpZWQgYWZ0ZXJ3YXJkcyB1c2luZyB1bml0YXJ5IGZ1bmN0aW9uIEByZWYgTExfVElNX0NvbmZpZ0JSSzIoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGZlYXR1cmUgY2FuIGJlIG1vZGlmaWVkIGFmdGVyd2FyZHMgdXNpbmcgdW5pdGFyeSBmdW5jdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAcmVmIExMX1RJTV9Db25maWdCUksyKCkKIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAbm90ZSBUaGlzIGJpdC1maWVsZCBjYW4gbm90IGJlIG1vZGlmaWVkIGFzIGxvbmcgYXMgTE9DSyBsZXZlbCAxIGhhcyBiZWVuIHByb2dyYW1tZWQuICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBub3RlIFRoaXMgYml0LWZpZWxkIGNhbiBub3QgYmUgbW9kaWZpZWQgYXMgbG9uZyBhcyBMT0NLIGxldmVsIDEgaGFzIGJlZW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvZ3JhbW1lZC4gKi8KIAogICB1aW50MzJfdCBBdXRvbWF0aWNPdXRwdXQ7ICAgICAgLyohPCBTcGVjaWZpZXMgd2hldGhlciB0aGUgVElNIEF1dG9tYXRpYyBPdXRwdXQgZmVhdHVyZSBpcyBlbmFibGVkIG9yIG5vdC4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGEgdmFsdWUgb2YgQHJlZiBUSU1fTExfRUNfQVVUT01BVElDT1VUUFVUX0VOQUJMRQogCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgZmVhdHVyZSBjYW4gYmUgbW9kaWZpZWQgYWZ0ZXJ3YXJkcyB1c2luZyB1bml0YXJ5IGZ1bmN0aW9ucyBAcmVmIExMX1RJTV9FbmFibGVBdXRvbWF0aWNPdXRwdXQoKSBvciBAcmVmIExMX1RJTV9EaXNhYmxlQXV0b21hdGljT3V0cHV0KCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBmZWF0dXJlIGNhbiBiZSBtb2RpZmllZCBhZnRlcndhcmRzIHVzaW5nIHVuaXRhcnkgZnVuY3Rpb25zCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEByZWYgTExfVElNX0VuYWJsZUF1dG9tYXRpY091dHB1dCgpIG9yIEByZWYgTExfVElNX0Rpc2FibGVBdXRvbWF0aWNPdXRwdXQoKQogCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBub3RlIFRoaXMgYml0LWZpZWxkIGNhbiBub3QgYmUgbW9kaWZpZWQgYXMgbG9uZyBhcyBMT0NLIGxldmVsIDEgaGFzIGJlZW4gcHJvZ3JhbW1lZC4gKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQG5vdGUgVGhpcyBiaXQtZmllbGQgY2FuIG5vdCBiZSBtb2RpZmllZCBhcyBsb25nIGFzIExPQ0sgbGV2ZWwgMSBoYXMgYmVlbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9ncmFtbWVkLiAqLwogfSBMTF9USU1fQkRUUl9Jbml0VHlwZURlZjsKIAogLyoqCkBAIC0xMDMyLDEwICsxMDg1LDEwIEBACiAjZGVmaW5lIExMX1RJTV9ETUFCVVJTVF9CQVNFQUREUl9DQ01SMyAgICAgICAgIChUSU1fRENSX0RCQV80IHwgVElNX0RDUl9EQkFfMiB8IFRJTV9EQ1JfREJBXzApICAgICAgICAgICAgICAgICAgLyohPCBUSU14X0NDTVIzIHJlZ2lzdGVyIGlzIHRoZSBETUEgYmFzZSBhZGRyZXNzIGZvciBETUEgYnVyc3QgKi8KICNkZWZpbmUgTExfVElNX0RNQUJVUlNUX0JBU0VBRERSX0NDUjUgICAgICAgICAgKFRJTV9EQ1JfREJBXzQgfCBUSU1fRENSX0RCQV8yIHwgVElNX0RDUl9EQkFfMSkgICAgICAgICAgICAgICAgICAvKiE8IFRJTXhfQ0NSNSByZWdpc3RlciBpcyB0aGUgRE1BIGJhc2UgYWRkcmVzcyBmb3IgRE1BIGJ1cnN0ICovCiAjZGVmaW5lIExMX1RJTV9ETUFCVVJTVF9CQVNFQUREUl9DQ1I2ICAgICAgICAgIChUSU1fRENSX0RCQV80IHwgVElNX0RDUl9EQkFfMiB8IFRJTV9EQ1JfREJBXzEgfCBUSU1fRENSX0RCQV8wKSAgLyohPCBUSU14X0NDUjYgcmVnaXN0ZXIgaXMgdGhlIERNQSBiYXNlIGFkZHJlc3MgZm9yIERNQSBidXJzdCAqLwotI2lmIGRlZmluZWQoVElNX0FGMV9CS0lORSkmJmRlZmluZWQoVElNX0FGMl9CS0lORSkKKyNpZiBkZWZpbmVkKFRJTTFfQUYxX0JLSU5FKSYmZGVmaW5lZChUSU0xX0FGMl9CS0lORSkKICNkZWZpbmUgTExfVElNX0RNQUJVUlNUX0JBU0VBRERSX0FGMSAgICAgICAgICAgKFRJTV9EQ1JfREJBXzQgfCBUSU1fRENSX0RCQV8zKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IFRJTXhfQUYxIHJlZ2lzdGVyIGlzIHRoZSBETUEgYmFzZSBhZGRyZXNzIGZvciBETUEgYnVyc3QgKi8KICNkZWZpbmUgTExfVElNX0RNQUJVUlNUX0JBU0VBRERSX0FGMiAgICAgICAgICAgKFRJTV9EQ1JfREJBXzQgfCBUSU1fRENSX0RCQV8zIHwgVElNX0RDUl9EQkFfMCkgICAgICAgICAgICAgICAgICAvKiE8IFRJTXhfQUYyIHJlZ2lzdGVyIGlzIHRoZSBETUEgYmFzZSBhZGRyZXNzIGZvciBETUEgYnVyc3QgKi8KLSNlbmRpZiAvKiBUSU1fQUYxX0JLSU5FICYmIFRJTV9BRjJfQktJTkUgKi8KKyNlbmRpZiAvKiBUSU0xX0FGMV9CS0lORSAmJiBUSU0xX0FGMl9CS0lORSAqLwogLyoqCiAgICogQH0KICAgKi8KQEAgLTExNjIsMTAgKzEyMTUsMTcgQEAKICAgKiBAcmV0dmFsIERUR1swOjddCiAgICovCiAjZGVmaW5lIF9fTExfVElNX0NBTENfREVBRFRJTUUoX19USU1DTEtfXywgX19DS0RfXywgX19EVF9fKSAgXAotICAoICgoKHVpbnQ2NF90KSgoX19EVF9fKSoxMDAwVSkpIDwgKChEVF9ERUxBWV8xKzFVKSAqIFRJTV9DQUxDX0RUUygoX19USU1DTEtfXyksIChfX0NLRF9fKSkpKSAgICA/ICh1aW50OF90KSgoKHVpbnQ2NF90KSgoX19EVF9fKSoxMDAwVSkgLyBUSU1fQ0FMQ19EVFMoKF9fVElNQ0xLX18pLCAoX19DS0RfXykpKSAgJiBEVF9ERUxBWV8xKSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgKCgodWludDY0X3QpKChfX0RUX18pKjEwMDBVKSkgPCAoKDY0VSArIChEVF9ERUxBWV8yKzFVKSkgKiAyVSAqIFRJTV9DQUxDX0RUUygoX19USU1DTEtfXyksIChfX0NLRF9fKSkpKSAgPyAodWludDhfdCkoRFRfUkFOR0VfMiB8ICgodWludDhfdCkoKHVpbnQ4X3QpKCgoKHVpbnQ2NF90KSgoX19EVF9fKSoxMDAwVSkpLyBUSU1fQ0FMQ19EVFMoKF9fVElNQ0xLX18pLCAoX19DS0RfXykpKSA+PiAxVSkgLSAodWludDhfdCkgNjQpICYgRFRfREVMQVlfMikpIDpcCi0gICAgKCgodWludDY0X3QpKChfX0RUX18pKjEwMDBVKSkgPCAoKDMyVSArIChEVF9ERUxBWV8zKzFVKSkgKiA4VSAqIFRJTV9DQUxDX0RUUygoX19USU1DTEtfXyksIChfX0NLRF9fKSkpKSAgPyAodWludDhfdCkoRFRfUkFOR0VfMyB8ICgodWludDhfdCkoKHVpbnQ4X3QpKCgoKCh1aW50NjRfdCkoX19EVF9fKSoxMDAwVSkpLyBUSU1fQ0FMQ19EVFMoKF9fVElNQ0xLX18pLCAoX19DS0RfXykpKSA+PiAzVSkgLSAodWludDhfdCkgMzIpICYgRFRfREVMQVlfMykpIDpcCi0gICAgKCgodWludDY0X3QpKChfX0RUX18pKjEwMDBVKSkgPCAoKDMyVSArIChEVF9ERUxBWV80KzFVKSkgKiAxNlUgKiBUSU1fQ0FMQ19EVFMoKF9fVElNQ0xLX18pLCAoX19DS0RfXykpKSkgPyAodWludDhfdCkoRFRfUkFOR0VfNCB8ICgodWludDhfdCkoKHVpbnQ4X3QpKCgoKCh1aW50NjRfdCkoX19EVF9fKSoxMDAwVSkpLyBUSU1fQ0FMQ19EVFMoKF9fVElNQ0xLX18pLCAoX19DS0RfXykpKSA+PiA0VSkgLSAodWludDhfdCkgMzIpICYgRFRfREVMQVlfNCkpIDpcCisgICggKCgodWludDY0X3QpKChfX0RUX18pKjEwMDBVKSkgPCAoKERUX0RFTEFZXzErMVUpICogVElNX0NBTENfRFRTKChfX1RJTUNMS19fKSwgKF9fQ0tEX18pKSkpICAgID8gIFwKKyAgICAodWludDhfdCkoKCh1aW50NjRfdCkoKF9fRFRfXykqMTAwMFUpIC8gVElNX0NBTENfRFRTKChfX1RJTUNMS19fKSwgKF9fQ0tEX18pKSkgICYgRFRfREVMQVlfMSkgOiAgICAgIFwKKyAgICAoKCh1aW50NjRfdCkoKF9fRFRfXykqMTAwMFUpKSA8ICgoNjRVICsgKERUX0RFTEFZXzIrMVUpKSAqIDJVICogVElNX0NBTENfRFRTKChfX1RJTUNMS19fKSwgKF9fQ0tEX18pKSkpICA/ICBcCisgICAgKHVpbnQ4X3QpKERUX1JBTkdFXzIgfCAoKHVpbnQ4X3QpKCh1aW50OF90KSgoKCh1aW50NjRfdCkoKF9fRFRfXykqMTAwMFUpKS8gVElNX0NBTENfRFRTKChfX1RJTUNMS19fKSwgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fQ0tEX18pKSkgPj4gMVUpIC0gKHVpbnQ4X3QpIDY0KSAmIERUX0RFTEFZXzIpKSA6XAorICAgICgoKHVpbnQ2NF90KSgoX19EVF9fKSoxMDAwVSkpIDwgKCgzMlUgKyAoRFRfREVMQVlfMysxVSkpICogOFUgKiBUSU1fQ0FMQ19EVFMoKF9fVElNQ0xLX18pLCAoX19DS0RfXykpKSkgID8gIFwKKyAgICAodWludDhfdCkoRFRfUkFOR0VfMyB8ICgodWludDhfdCkoKHVpbnQ4X3QpKCgoKCh1aW50NjRfdCkoX19EVF9fKSoxMDAwVSkpLyBUSU1fQ0FMQ19EVFMoKF9fVElNQ0xLX18pLCAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX0NLRF9fKSkpID4+IDNVKSAtICh1aW50OF90KSAzMikgJiBEVF9ERUxBWV8zKSkgOlwKKyAgICAoKCh1aW50NjRfdCkoKF9fRFRfXykqMTAwMFUpKSA8ICgoMzJVICsgKERUX0RFTEFZXzQrMVUpKSAqIDE2VSAqIFRJTV9DQUxDX0RUUygoX19USU1DTEtfXyksIChfX0NLRF9fKSkpKSA/ICBcCisgICAgKHVpbnQ4X3QpKERUX1JBTkdFXzQgfCAoKHVpbnQ4X3QpKCh1aW50OF90KSgoKCgodWludDY0X3QpKF9fRFRfXykqMTAwMFUpKS8gVElNX0NBTENfRFRTKChfX1RJTUNMS19fKSwgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19DS0RfXykpKSA+PiA0VSkgLSAodWludDhfdCkgMzIpICYgRFRfREVMQVlfNCkpIDpcCiAgICAgMFUpCiAKIC8qKgpAQCAtMTE5MCw3ICsxMjUwLDggQEAKICAgKCgoKF9fVElNQ0xLX18pLygoX19QU0NfXykgKyAxVSkpID49IChfX0ZSRVFfXykpID8gKCgoX19USU1DTEtfXykvKChfX0ZSRVFfXykgKiAoKF9fUFNDX18pICsgMVUpKSkgLSAxVSkgOiAwVSkKIAogLyoqCi0gICogQGJyaWVmICBIRUxQRVIgbWFjcm8gY2FsY3VsYXRpbmcgdGhlIGNvbXBhcmUgdmFsdWUgcmVxdWlyZWQgdG8gYWNoaWV2ZSB0aGUgcmVxdWlyZWQgdGltZXIgb3V0cHV0IGNvbXBhcmUgYWN0aXZlL2luYWN0aXZlIGRlbGF5LgorICAqIEBicmllZiAgSEVMUEVSIG1hY3JvIGNhbGN1bGF0aW5nIHRoZSBjb21wYXJlIHZhbHVlIHJlcXVpcmVkIHRvIGFjaGlldmUgdGhlIHJlcXVpcmVkIHRpbWVyIG91dHB1dCBjb21wYXJlCisgICogICAgICAgICBhY3RpdmUvaW5hY3RpdmUgZGVsYXkuCiAgICogQG5vdGUgZXg6IEByZWYgX19MTF9USU1fQ0FMQ19ERUxBWSAoMTAwMDAwMCwgQHJlZiBMTF9USU1fR2V0UHJlc2NhbGVyICgpLCAxMCk7CiAgICogQHBhcmFtICBfX1RJTUNMS19fIHRpbWVyIGlucHV0IGNsb2NrIGZyZXF1ZW5jeSAoaW4gSHopCiAgICogQHBhcmFtICBfX1BTQ19fIHByZXNjYWxlcgpAQCAtMTIwMiw3ICsxMjYzLDggQEAKICAgICAgICAgICAgICAgLyAoKHVpbnQ2NF90KTEwMDAwMDBVICogKHVpbnQ2NF90KSgoX19QU0NfXykgKyAxVSkpKSkKIAogLyoqCi0gICogQGJyaWVmICBIRUxQRVIgbWFjcm8gY2FsY3VsYXRpbmcgdGhlIGF1dG8tcmVsb2FkIHZhbHVlIHRvIGFjaGlldmUgdGhlIHJlcXVpcmVkIHB1bHNlIGR1cmF0aW9uICh3aGVuIHRoZSB0aW1lciBvcGVyYXRlcyBpbiBvbmUgcHVsc2UgbW9kZSkuCisgICogQGJyaWVmICBIRUxQRVIgbWFjcm8gY2FsY3VsYXRpbmcgdGhlIGF1dG8tcmVsb2FkIHZhbHVlIHRvIGFjaGlldmUgdGhlIHJlcXVpcmVkIHB1bHNlIGR1cmF0aW9uCisgICogICAgICAgICAod2hlbiB0aGUgdGltZXIgb3BlcmF0ZXMgaW4gb25lIHB1bHNlIG1vZGUpLgogICAqIEBub3RlIGV4OiBAcmVmIF9fTExfVElNX0NBTENfUFVMU0UgKDEwMDAwMDAsIEByZWYgTExfVElNX0dldFByZXNjYWxlciAoKSwgMTAsIDIwKTsKICAgKiBAcGFyYW0gIF9fVElNQ0xLX18gdGltZXIgaW5wdXQgY2xvY2sgZnJlcXVlbmN5IChpbiBIeikKICAgKiBAcGFyYW0gIF9fUFNDX18gcHJlc2NhbGVyCkBAIC0xNDU5LDcgKzE1MjEsOCBAQAogfQogCiAvKioKLSAgKiBAYnJpZWYgIFNldCB0aGUgZGl2aXNpb24gcmF0aW8gYmV0d2VlbiB0aGUgdGltZXIgY2xvY2sgIGFuZCB0aGUgc2FtcGxpbmcgY2xvY2sgdXNlZCBieSB0aGUgZGVhZC10aW1lIGdlbmVyYXRvcnMgKHdoZW4gc3VwcG9ydGVkKSBhbmQgdGhlIGRpZ2l0YWwgZmlsdGVycy4KKyAgKiBAYnJpZWYgIFNldCB0aGUgZGl2aXNpb24gcmF0aW8gYmV0d2VlbiB0aGUgdGltZXIgY2xvY2sgIGFuZCB0aGUgc2FtcGxpbmcgY2xvY2sgdXNlZCBieSB0aGUgZGVhZC10aW1lIGdlbmVyYXRvcnMKKyAgKiAgICAgICAgICh3aGVuIHN1cHBvcnRlZCkgYW5kIHRoZSBkaWdpdGFsIGZpbHRlcnMuCiAgICogQG5vdGUgTWFjcm8gSVNfVElNX0NMT0NLX0RJVklTSU9OX0lOU1RBTkNFKFRJTXgpIGNhbiBiZSB1c2VkIHRvIGNoZWNrCiAgICogICAgICAgd2hldGhlciBvciBub3QgdGhlIGNsb2NrIGRpdmlzaW9uIGZlYXR1cmUgaXMgc3VwcG9ydGVkIGJ5IHRoZSB0aW1lcgogICAqICAgICAgIGluc3RhbmNlLgpAQCAtMTQ3Nyw3ICsxNTQwLDggQEAKIH0KIAogLyoqCi0gICogQGJyaWVmICBHZXQgdGhlIGFjdHVhbCBkaXZpc2lvbiByYXRpbyBiZXR3ZWVuIHRoZSB0aW1lciBjbG9jayAgYW5kIHRoZSBzYW1wbGluZyBjbG9jayB1c2VkIGJ5IHRoZSBkZWFkLXRpbWUgZ2VuZXJhdG9ycyAod2hlbiBzdXBwb3J0ZWQpIGFuZCB0aGUgZGlnaXRhbCBmaWx0ZXJzLgorICAqIEBicmllZiAgR2V0IHRoZSBhY3R1YWwgZGl2aXNpb24gcmF0aW8gYmV0d2VlbiB0aGUgdGltZXIgY2xvY2sgIGFuZCB0aGUgc2FtcGxpbmcgY2xvY2sgdXNlZCBieSB0aGUgZGVhZC10aW1lCisgICogICAgICAgICBnZW5lcmF0b3JzICh3aGVuIHN1cHBvcnRlZCkgYW5kIHRoZSBkaWdpdGFsIGZpbHRlcnMuCiAgICogQG5vdGUgTWFjcm8gSVNfVElNX0NMT0NLX0RJVklTSU9OX0lOU1RBTkNFKFRJTXgpIGNhbiBiZSB1c2VkIHRvIGNoZWNrCiAgICogICAgICAgd2hldGhlciBvciBub3QgdGhlIGNsb2NrIGRpdmlzaW9uIGZlYXR1cmUgaXMgc3VwcG9ydGVkIGJ5IHRoZSB0aW1lcgogICAqICAgICAgIGluc3RhbmNlLgpAQCAtMTYxOSw3ICsxNjgzLDggQEAKIAogLyoqCiAgICogQGJyaWVmICBGb3JjZSBhIGNvbnRpbnVvdXMgY29weSBvZiB0aGUgdXBkYXRlIGludGVycnVwdCBmbGFnIChVSUYpIGludG8gdGhlIHRpbWVyIGNvdW50ZXIgcmVnaXN0ZXIgKGJpdCAzMSkuCi0gICogQG5vdGUgVGhpcyBhbGxvd3MgYm90aCB0aGUgY291bnRlciB2YWx1ZSBhbmQgYSBwb3RlbnRpYWwgcm9sbC1vdmVyIGNvbmRpdGlvbiBzaWduYWxsZWQgYnkgdGhlIFVJRkNQWSBmbGFnIHRvIGJlIHJlYWQgaW4gYW4gYXRvbWljIHdheS4KKyAgKiBAbm90ZSBUaGlzIGFsbG93cyBib3RoIHRoZSBjb3VudGVyIHZhbHVlIGFuZCBhIHBvdGVudGlhbCByb2xsLW92ZXIgY29uZGl0aW9uIHNpZ25hbGxlZCBieSB0aGUgVUlGQ1BZIGZsYWcgdG8gYmUgcmVhZAorICAqICAgICAgIGluIGFuIGF0b21pYyB3YXkuCiAgICogQHJtdG9sbCBDUjEgICAgICAgICAgVUlGUkVNQVAgICAgICBMTF9USU1fRW5hYmxlVUlGUmVtYXAKICAgKiBAcGFyYW0gIFRJTXggVGltZXIgaW5zdGFuY2UKICAgKiBAcmV0dmFsIE5vbmUKQEAgLTE5MjQsNyArMTk4OSw3IEBACiB7CiAgIHVpbnQ4X3QgaUNoYW5uZWwgPSBUSU1fR0VUX0NIQU5ORUxfSU5ERVgoQ2hhbm5lbCk7CiAgIF9fSU8gdWludDMyX3QgKnBSZWcgPSAoX19JTyB1aW50MzJfdCAqKSgodWludDMyX3QpKCh1aW50MzJfdCkoJlRJTXgtPkNDTVIxKSArIE9GRlNFVF9UQUJfQ0NNUnhbaUNoYW5uZWxdKSk7Ci0gIE1PRElGWV9SRUcoKnBSZWcsICgoVElNX0NDTVIxX09DMU0gIHwgVElNX0NDTVIxX0NDMVMpIDw8IFNISUZUX1RBQl9PQ3h4W2lDaGFubmVsXSksICBNb2RlIDw8IFNISUZUX1RBQl9PQ3h4W2lDaGFubmVsXSk7CisgIE1PRElGWV9SRUcoKnBSZWcsICgoVElNX0NDTVIxX09DMU0gIHwgVElNX0NDTVIxX0NDMVMpIDw8IFNISUZUX1RBQl9PQ3h4W2lDaGFubmVsXSksIE1vZGUgPDwgU0hJRlRfVEFCX09DeHhbaUNoYW5uZWxdKTsKIH0KIAogLyoqCkBAIC0xOTYzLDcgKzIwMjgsNyBAQAogewogICB1aW50OF90IGlDaGFubmVsID0gVElNX0dFVF9DSEFOTkVMX0lOREVYKENoYW5uZWwpOwogICBjb25zdCBfX0lPIHVpbnQzMl90ICpwUmVnID0gKF9fSU8gdWludDMyX3QgKikoKHVpbnQzMl90KSgodWludDMyX3QpKCZUSU14LT5DQ01SMSkgKyBPRkZTRVRfVEFCX0NDTVJ4W2lDaGFubmVsXSkpOwotICByZXR1cm4gKFJFQURfQklUKCpwUmVnLCAoKFRJTV9DQ01SMV9PQzFNICB8IFRJTV9DQ01SMV9DQzFTKSA8PCBTSElGVF9UQUJfT0N4eFtpQ2hhbm5lbF0pKSA+PiBTSElGVF9UQUJfT0N4eFtpQ2hhbm5lbF0pOworICByZXR1cm4gKFJFQURfQklUKCpwUmVnLCAoKFRJTV9DQ01SMV9PQzFNIHwgVElNX0NDTVIxX0NDMVMpIDw8IFNISUZUX1RBQl9PQ3h4W2lDaGFubmVsXSkpID4+IFNISUZUX1RBQl9PQ3h4W2lDaGFubmVsXSk7CiB9CiAKIC8qKgpAQCAtMjM0MSw3ICsyNDA2LDggQEAKIH0KIAogLyoqCi0gICogQGJyaWVmICBTZXQgdGhlIGRlYWQtdGltZSBkZWxheSAoZGVsYXkgaW5zZXJ0ZWQgYmV0d2VlbiB0aGUgcmlzaW5nIGVkZ2Ugb2YgdGhlIE9DeFJFRiBzaWduYWwgYW5kIHRoZSByaXNpbmcgZWRnZSBvZiB0aGUgT2N4IGFuZCBPQ3hOIHNpZ25hbHMpLgorICAqIEBicmllZiAgU2V0IHRoZSBkZWFkLXRpbWUgZGVsYXkgKGRlbGF5IGluc2VydGVkIGJldHdlZW4gdGhlIHJpc2luZyBlZGdlIG9mIHRoZSBPQ3hSRUYgc2lnbmFsIGFuZCB0aGUgcmlzaW5nIGVkZ2Ugb2YKKyAgKiAgICAgICAgIHRoZSBPY3ggYW5kIE9DeE4gc2lnbmFscykuCiAgICogQG5vdGUgTWFjcm8gSVNfVElNX0JSRUFLX0lOU1RBTkNFKFRJTXgpIGNhbiBiZSB1c2VkIHRvIGNoZWNrIHdoZXRoZXIgb3Igbm90CiAgICogICAgICAgZGVhZC10aW1lIGluc2VydGlvbiBmZWF0dXJlIGlzIHN1cHBvcnRlZCBieSBhIHRpbWVyIGluc3RhbmNlLgogICAqIEBub3RlIEhlbHBlciBtYWNybyBAcmVmIF9fTExfVElNX0NBTENfREVBRFRJTUUgY2FuIGJlIHVzZWQgdG8gY2FsY3VsYXRlIHRoZSBEZWFkVGltZSBwYXJhbWV0ZXIKQEAgLTI2MDgsNyArMjY3NCw4IEBACiAgIHVpbnQ4X3QgaUNoYW5uZWwgPSBUSU1fR0VUX0NIQU5ORUxfSU5ERVgoQ2hhbm5lbCk7CiAgIF9fSU8gdWludDMyX3QgKnBSZWcgPSAoX19JTyB1aW50MzJfdCAqKSgodWludDMyX3QpKCh1aW50MzJfdCkoJlRJTXgtPkNDTVIxKSArIE9GRlNFVF9UQUJfQ0NNUnhbaUNoYW5uZWxdKSk7CiAgIE1PRElGWV9SRUcoKnBSZWcsICgoVElNX0NDTVIxX0lDMUYgfCBUSU1fQ0NNUjFfSUMxUFNDIHwgVElNX0NDTVIxX0NDMVMpIDw8IFNISUZUX1RBQl9JQ3h4W2lDaGFubmVsXSksCi0gICAgICAgICAgICAgKChDb25maWd1cmF0aW9uID4+IDE2VSkgJiAoVElNX0NDTVIxX0lDMUYgfCBUSU1fQ0NNUjFfSUMxUFNDIHwgVElNX0NDTVIxX0NDMVMpKSAgPDwgU0hJRlRfVEFCX0lDeHhbaUNoYW5uZWxdKTsKKyAgICAgICAgICAgICAoKENvbmZpZ3VyYXRpb24gPj4gMTZVKSAmIChUSU1fQ0NNUjFfSUMxRiB8IFRJTV9DQ01SMV9JQzFQU0MgfCBUSU1fQ0NNUjFfQ0MxUykpICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICA8PCBTSElGVF9UQUJfSUN4eFtpQ2hhbm5lbF0pOwogICBNT0RJRllfUkVHKFRJTXgtPkNDRVIsICgoVElNX0NDRVJfQ0MxTlAgfCBUSU1fQ0NFUl9DQzFQKSA8PCBTSElGVF9UQUJfQ0N4UFtpQ2hhbm5lbF0pLAogICAgICAgICAgICAgIChDb25maWd1cmF0aW9uICYgKFRJTV9DQ0VSX0NDMU5QIHwgVElNX0NDRVJfQ0MxUCkpIDw8IFNISUZUX1RBQl9DQ3hQW2lDaGFubmVsXSk7CiB9CkBAIC0zNTU0LDkgKzM2MjEsOSBAQAogICAqICAgICAgICAgQGFyZyBAcmVmIExMX1RJTV9ETUFCVVJTVF9CQVNFQUREUl9DQ1I0CiAgICogICAgICAgICBAYXJnIEByZWYgTExfVElNX0RNQUJVUlNUX0JBU0VBRERSX0JEVFIKICAgKiAgICAgICAgIEBhcmcgQHJlZiBMTF9USU1fRE1BQlVSU1RfQkFTRUFERFJfT1IKLSAgKiAgICAgICAgIEBhcmcgQHJlZiBMTF9USU1fRE1BQlVSU1RfQkFTRUFERFJfQ0NNUjMgCi0gICogICAgICAgICBAYXJnIEByZWYgTExfVElNX0RNQUJVUlNUX0JBU0VBRERSX0NDUjUgIAotICAqICAgICAgICAgQGFyZyBAcmVmIExMX1RJTV9ETUFCVVJTVF9CQVNFQUREUl9DQ1I2ICAKKyAgKiAgICAgICAgIEBhcmcgQHJlZiBMTF9USU1fRE1BQlVSU1RfQkFTRUFERFJfQ0NNUjMKKyAgKiAgICAgICAgIEBhcmcgQHJlZiBMTF9USU1fRE1BQlVSU1RfQkFTRUFERFJfQ0NSNQorICAqICAgICAgICAgQGFyZyBAcmVmIExMX1RJTV9ETUFCVVJTVF9CQVNFQUREUl9DQ1I2CiAgICogICAgICAgICBAYXJnIEByZWYgTExfVElNX0RNQUJVUlNUX0JBU0VBRERSX0FGMSAgKCopCiAgICogICAgICAgICBAYXJnIEByZWYgTExfVElNX0RNQUJVUlNUX0JBU0VBRERSX0FGMiAgKCopCiAgICogICAgICAgICAoKikgdmFsdWUgbm90IGRlZmluZWQgaW4gYWxsIGRldmljZXMKQEAgLTM4OTcsNyArMzk2NCw4IEBACiB9CiAKIC8qKgotICAqIEBicmllZiAgSW5kaWNhdGUgd2hldGhlciBDYXB0dXJlL0NvbXBhcmUgMSBvdmVyLWNhcHR1cmUgaW50ZXJydXB0IGZsYWcgKENDMU9GKSBpcyBzZXQgKENhcHR1cmUvQ29tcGFyZSAxIGludGVycnVwdCBpcyBwZW5kaW5nKS4KKyAgKiBAYnJpZWYgIEluZGljYXRlIHdoZXRoZXIgQ2FwdHVyZS9Db21wYXJlIDEgb3Zlci1jYXB0dXJlIGludGVycnVwdCBmbGFnIChDQzFPRikgaXMgc2V0CisgICogICAgICAgICAoQ2FwdHVyZS9Db21wYXJlIDEgaW50ZXJydXB0IGlzIHBlbmRpbmcpLgogICAqIEBybXRvbGwgU1IgICAgICAgICAgIENDMU9GICAgICAgICAgTExfVElNX0lzQWN0aXZlRmxhZ19DQzFPVlIKICAgKiBAcGFyYW0gIFRJTXggVGltZXIgaW5zdGFuY2UKICAgKiBAcmV0dmFsIFN0YXRlIG9mIGJpdCAoMSBvciAwKS4KQEAgLTM5MTksNyArMzk4Nyw4IEBACiB9CiAKIC8qKgotICAqIEBicmllZiAgSW5kaWNhdGUgd2hldGhlciBDYXB0dXJlL0NvbXBhcmUgMiBvdmVyLWNhcHR1cmUgaW50ZXJydXB0IGZsYWcgKENDMk9GKSBpcyBzZXQgKENhcHR1cmUvQ29tcGFyZSAyIG92ZXItY2FwdHVyZSBpbnRlcnJ1cHQgaXMgcGVuZGluZykuCisgICogQGJyaWVmICBJbmRpY2F0ZSB3aGV0aGVyIENhcHR1cmUvQ29tcGFyZSAyIG92ZXItY2FwdHVyZSBpbnRlcnJ1cHQgZmxhZyAoQ0MyT0YpIGlzIHNldAorICAqICAgICAgICAgKENhcHR1cmUvQ29tcGFyZSAyIG92ZXItY2FwdHVyZSBpbnRlcnJ1cHQgaXMgcGVuZGluZykuCiAgICogQHJtdG9sbCBTUiAgICAgICAgICAgQ0MyT0YgICAgICAgICBMTF9USU1fSXNBY3RpdmVGbGFnX0NDMk9WUgogICAqIEBwYXJhbSAgVElNeCBUaW1lciBpbnN0YW5jZQogICAqIEByZXR2YWwgU3RhdGUgb2YgYml0ICgxIG9yIDApLgpAQCAtMzk0MSw3ICs0MDEwLDggQEAKIH0KIAogLyoqCi0gICogQGJyaWVmICBJbmRpY2F0ZSB3aGV0aGVyIENhcHR1cmUvQ29tcGFyZSAzIG92ZXItY2FwdHVyZSBpbnRlcnJ1cHQgZmxhZyAoQ0MzT0YpIGlzIHNldCAoQ2FwdHVyZS9Db21wYXJlIDMgb3Zlci1jYXB0dXJlIGludGVycnVwdCBpcyBwZW5kaW5nKS4KKyAgKiBAYnJpZWYgIEluZGljYXRlIHdoZXRoZXIgQ2FwdHVyZS9Db21wYXJlIDMgb3Zlci1jYXB0dXJlIGludGVycnVwdCBmbGFnIChDQzNPRikgaXMgc2V0CisgICogICAgICAgICAoQ2FwdHVyZS9Db21wYXJlIDMgb3Zlci1jYXB0dXJlIGludGVycnVwdCBpcyBwZW5kaW5nKS4KICAgKiBAcm10b2xsIFNSICAgICAgICAgICBDQzNPRiAgICAgICAgIExMX1RJTV9Jc0FjdGl2ZUZsYWdfQ0MzT1ZSCiAgICogQHBhcmFtICBUSU14IFRpbWVyIGluc3RhbmNlCiAgICogQHJldHZhbCBTdGF0ZSBvZiBiaXQgKDEgb3IgMCkuCkBAIC0zOTYzLDcgKzQwMzMsOCBAQAogfQogCiAvKioKLSAgKiBAYnJpZWYgIEluZGljYXRlIHdoZXRoZXIgQ2FwdHVyZS9Db21wYXJlIDQgb3Zlci1jYXB0dXJlIGludGVycnVwdCBmbGFnIChDQzRPRikgaXMgc2V0IChDYXB0dXJlL0NvbXBhcmUgNCBvdmVyLWNhcHR1cmUgaW50ZXJydXB0IGlzIHBlbmRpbmcpLgorICAqIEBicmllZiAgSW5kaWNhdGUgd2hldGhlciBDYXB0dXJlL0NvbXBhcmUgNCBvdmVyLWNhcHR1cmUgaW50ZXJydXB0IGZsYWcgKENDNE9GKSBpcyBzZXQKKyAgKiAgICAgICAgIChDYXB0dXJlL0NvbXBhcmUgNCBvdmVyLWNhcHR1cmUgaW50ZXJydXB0IGlzIHBlbmRpbmcpLgogICAqIEBybXRvbGwgU1IgICAgICAgICAgIENDNE9GICAgICAgICAgTExfVElNX0lzQWN0aXZlRmxhZ19DQzRPVlIKICAgKiBAcGFyYW0gIFRJTXggVGltZXIgaW5zdGFuY2UKICAgKiBAcmV0dmFsIFN0YXRlIG9mIGJpdCAoMSBvciAwKS4KQEAgLTQyNzAsNyArNDM0MSw3IEBACiAgICogQH0KICAgKi8KIAotLyoqIEBkZWZncm91cCBUSU1fTExfRUZfRE1BX01hbmFnZW1lbnQgRE1BLU1hbmFnZW1lbnQKKy8qKiBAZGVmZ3JvdXAgVElNX0xMX0VGX0RNQV9NYW5hZ2VtZW50IERNQSBNYW5hZ2VtZW50CiAgICogQHsKICAgKi8KIC8qKgpAQCAtNDY1Niw0ICs0NzI3LDMgQEAKICNlbmRpZgogCiAjZW5kaWYgLyogX19TVE0zMkY3eHhfTExfVElNX0ggKi8KLS8qKioqKioqKioqKioqKioqKioqKioqKiogKEMpIENPUFlSSUdIVCBTVE1pY3JvZWxlY3Ryb25pY3MgKioqKipFTkQgT0YgRklMRSoqKiovCmRpZmYgLS1naXQgYS9JbmMvc3RtMzJmN3h4X2xsX3VzYXJ0LmggYi9JbmMvc3RtMzJmN3h4X2xsX3VzYXJ0LmgKaW5kZXggN2EzY2RhZi4uZWM3MGE1ZCAxMDA2NDQKLS0tIGEvSW5jL3N0bTMyZjd4eF9sbF91c2FydC5oCisrKyBiL0luYy9zdG0zMmY3eHhfbGxfdXNhcnQuaApAQCAtNiwxMyArNiwxMiBAQAogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgKiBAYXR0ZW50aW9uCiAgICoKLSAgKiA8aDI+PGNlbnRlcj4mY29weTsgQ29weXJpZ2h0IChjKSAyMDE3IFNUTWljcm9lbGVjdHJvbmljcy4KLSAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLjwvY2VudGVyPjwvaDI+CisgICogQ29weXJpZ2h0IChjKSAyMDE3IFNUTWljcm9lbGVjdHJvbmljcy4KKyAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAqCi0gICogVGhpcyBzb2Z0d2FyZSBjb21wb25lbnQgaXMgbGljZW5zZWQgYnkgU1QgdW5kZXIgQlNEIDMtQ2xhdXNlIGxpY2Vuc2UsCi0gICogdGhlICJMaWNlbnNlIjsgWW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZQotICAqIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdDoKLSAgKiAgICAgICAgICAgICAgICAgICAgICAgIG9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0JTRC0zLUNsYXVzZQorICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgdW5kZXIgdGVybXMgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZQorICAqIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvZnR3YXJlIGNvbXBvbmVudC4KKyAgKiBJZiBubyBMSUNFTlNFIGZpbGUgY29tZXMgd2l0aCB0aGlzIHNvZnR3YXJlLCBpdCBpcyBwcm92aWRlZCBBUy1JUy4KICAgKgogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgKi8KQEAgLTU5NCw3ICs1OTMsNyBAQAogICAqLwogX19TVEFUSUNfSU5MSU5FIHZvaWQgTExfVVNBUlRfRW5hYmxlSW5TdG9wTW9kZShVU0FSVF9UeXBlRGVmICpVU0FSVHgpCiB7Ci0gIFNFVF9CSVQoVVNBUlR4LT5DUjEsIFVTQVJUX0NSMV9VRVNNKTsKKyAgQVRPTUlDX1NFVF9CSVQoVVNBUlR4LT5DUjEsIFVTQVJUX0NSMV9VRVNNKTsKIH0KIAogLyoqCkBAIC02MDgsNyArNjA3LDcgQEAKICAgKi8KIF9fU1RBVElDX0lOTElORSB2b2lkIExMX1VTQVJUX0Rpc2FibGVJblN0b3BNb2RlKFVTQVJUX1R5cGVEZWYgKlVTQVJUeCkKIHsKLSAgQ0xFQVJfQklUKFVTQVJUeC0+Q1IxLCBVU0FSVF9DUjFfVUVTTSk7CisgIEFUT01JQ19DTEVBUl9CSVQoVVNBUlR4LT5DUjEsIFVTQVJUX0NSMV9VRVNNKTsKIH0KIAogLyoqCkBAIC02MzQsNyArNjMzLDcgQEAKICAgKi8KIF9fU1RBVElDX0lOTElORSB2b2lkIExMX1VTQVJUX0VuYWJsZUNsb2NrSW5TdG9wTW9kZShVU0FSVF9UeXBlRGVmICpVU0FSVHgpCiB7Ci0gIFNFVF9CSVQoVVNBUlR4LT5DUjMsIFVTQVJUX0NSM19VQ0VTTSk7CisgIEFUT01JQ19TRVRfQklUKFVTQVJUeC0+Q1IzLCBVU0FSVF9DUjNfVUNFU00pOwogfQogCiAvKioKQEAgLTY0Niw3ICs2NDUsNyBAQAogICAqLwogX19TVEFUSUNfSU5MSU5FIHZvaWQgTExfVVNBUlRfRGlzYWJsZUNsb2NrSW5TdG9wTW9kZShVU0FSVF9UeXBlRGVmICpVU0FSVHgpCiB7Ci0gIENMRUFSX0JJVChVU0FSVHgtPkNSMywgVVNBUlRfQ1IzX1VDRVNNKTsKKyAgQVRPTUlDX0NMRUFSX0JJVChVU0FSVHgtPkNSMywgVVNBUlRfQ1IzX1VDRVNNKTsKIH0KIAogLyoqCkBAIC02NzAsNyArNjY5LDcgQEAKICAgKi8KIF9fU1RBVElDX0lOTElORSB2b2lkIExMX1VTQVJUX0VuYWJsZURpcmVjdGlvblJ4KFVTQVJUX1R5cGVEZWYgKlVTQVJUeCkKIHsKLSAgU0VUX0JJVChVU0FSVHgtPkNSMSwgVVNBUlRfQ1IxX1JFKTsKKyAgQVRPTUlDX1NFVF9CSVQoVVNBUlR4LT5DUjEsIFVTQVJUX0NSMV9SRSk7CiB9CiAKIC8qKgpAQCAtNjgxLDcgKzY4MCw3IEBACiAgICovCiBfX1NUQVRJQ19JTkxJTkUgdm9pZCBMTF9VU0FSVF9EaXNhYmxlRGlyZWN0aW9uUngoVVNBUlRfVHlwZURlZiAqVVNBUlR4KQogewotICBDTEVBUl9CSVQoVVNBUlR4LT5DUjEsIFVTQVJUX0NSMV9SRSk7CisgIEFUT01JQ19DTEVBUl9CSVQoVVNBUlR4LT5DUjEsIFVTQVJUX0NSMV9SRSk7CiB9CiAKIC8qKgpAQCAtNjkyLDcgKzY5MSw3IEBACiAgICovCiBfX1NUQVRJQ19JTkxJTkUgdm9pZCBMTF9VU0FSVF9FbmFibGVEaXJlY3Rpb25UeChVU0FSVF9UeXBlRGVmICpVU0FSVHgpCiB7Ci0gIFNFVF9CSVQoVVNBUlR4LT5DUjEsIFVTQVJUX0NSMV9URSk7CisgIEFUT01JQ19TRVRfQklUKFVTQVJUeC0+Q1IxLCBVU0FSVF9DUjFfVEUpOwogfQogCiAvKioKQEAgLTcwMyw3ICs3MDIsNyBAQAogICAqLwogX19TVEFUSUNfSU5MSU5FIHZvaWQgTExfVVNBUlRfRGlzYWJsZURpcmVjdGlvblR4KFVTQVJUX1R5cGVEZWYgKlVTQVJUeCkKIHsKLSAgQ0xFQVJfQklUKFVTQVJUeC0+Q1IxLCBVU0FSVF9DUjFfVEUpOworICBBVE9NSUNfQ0xFQVJfQklUKFVTQVJUeC0+Q1IxLCBVU0FSVF9DUjFfVEUpOwogfQogCiAvKioKQEAgLTcyMSw3ICs3MjAsNyBAQAogICAqLwogX19TVEFUSUNfSU5MSU5FIHZvaWQgTExfVVNBUlRfU2V0VHJhbnNmZXJEaXJlY3Rpb24oVVNBUlRfVHlwZURlZiAqVVNBUlR4LCB1aW50MzJfdCBUcmFuc2ZlckRpcmVjdGlvbikKIHsKLSAgTU9ESUZZX1JFRyhVU0FSVHgtPkNSMSwgVVNBUlRfQ1IxX1JFIHwgVVNBUlRfQ1IxX1RFLCBUcmFuc2ZlckRpcmVjdGlvbik7CisgIEFUT01JQ19NT0RJRllfUkVHKFVTQVJUeC0+Q1IxLCBVU0FSVF9DUjFfUkUgfCBVU0FSVF9DUjFfVEUsIFRyYW5zZmVyRGlyZWN0aW9uKTsKIH0KIAogLyoqCkBAIC04NDAsNyArODM5LDcgQEAKICAgKi8KIF9fU1RBVElDX0lOTElORSB2b2lkIExMX1VTQVJUX0VuYWJsZU11dGVNb2RlKFVTQVJUX1R5cGVEZWYgKlVTQVJUeCkKIHsKLSAgU0VUX0JJVChVU0FSVHgtPkNSMSwgVVNBUlRfQ1IxX01NRSk7CisgIEFUT01JQ19TRVRfQklUKFVTQVJUeC0+Q1IxLCBVU0FSVF9DUjFfTU1FKTsKIH0KIAogLyoqCkBAIC04NTEsNyArODUwLDcgQEAKICAgKi8KIF9fU1RBVElDX0lOTElORSB2b2lkIExMX1VTQVJUX0Rpc2FibGVNdXRlTW9kZShVU0FSVF9UeXBlRGVmICpVU0FSVHgpCiB7Ci0gIENMRUFSX0JJVChVU0FSVHgtPkNSMSwgVVNBUlRfQ1IxX01NRSk7CisgIEFUT01JQ19DTEVBUl9CSVQoVVNBUlR4LT5DUjEsIFVTQVJUX0NSMV9NTUUpOwogfQogCiAvKioKQEAgLTE4MjgsNyArMTgyNyw3IEBACiAgICovCiBfX1NUQVRJQ19JTkxJTkUgdm9pZCBMTF9VU0FSVF9TZXRJcmRhUHJlc2NhbGVyKFVTQVJUX1R5cGVEZWYgKlVTQVJUeCwgdWludDMyX3QgUHJlc2NhbGVyVmFsdWUpCiB7Ci0gIE1PRElGWV9SRUcoVVNBUlR4LT5HVFBSLCAodWludDE2X3QpVVNBUlRfR1RQUl9QU0MsICh1aW50MTZfdClQcmVzY2FsZXJWYWx1ZSk7CisgIE1PRElGWV9SRUcoVVNBUlR4LT5HVFBSLCBVU0FSVF9HVFBSX1BTQywgKHVpbnQxNl90KVByZXNjYWxlclZhbHVlKTsKIH0KIAogLyoqCkBAIC0xOTc1LDcgKzE5NzQsNyBAQAogICAqLwogX19TVEFUSUNfSU5MSU5FIHZvaWQgTExfVVNBUlRfU2V0U21hcnRjYXJkUHJlc2NhbGVyKFVTQVJUX1R5cGVEZWYgKlVTQVJUeCwgdWludDMyX3QgUHJlc2NhbGVyVmFsdWUpCiB7Ci0gIE1PRElGWV9SRUcoVVNBUlR4LT5HVFBSLCAodWludDE2X3QpVVNBUlRfR1RQUl9QU0MsICh1aW50MTZfdClQcmVzY2FsZXJWYWx1ZSk7CisgIE1PRElGWV9SRUcoVVNBUlR4LT5HVFBSLCBVU0FSVF9HVFBSX1BTQywgKHVpbnQxNl90KVByZXNjYWxlclZhbHVlKTsKIH0KIAogLyoqCkBAIC0yMDA0LDcgKzIwMDMsNyBAQAogICAqLwogX19TVEFUSUNfSU5MSU5FIHZvaWQgTExfVVNBUlRfU2V0U21hcnRjYXJkR3VhcmRUaW1lKFVTQVJUX1R5cGVEZWYgKlVTQVJUeCwgdWludDMyX3QgR3VhcmRUaW1lKQogewotICBNT0RJRllfUkVHKFVTQVJUeC0+R1RQUiwgKHVpbnQxNl90KVVTQVJUX0dUUFJfR1QsICh1aW50MTZfdCkoR3VhcmRUaW1lIDw8IFVTQVJUX0dUUFJfR1RfUG9zKSk7CisgIE1PRElGWV9SRUcoVVNBUlR4LT5HVFBSLCBVU0FSVF9HVFBSX0dULCAodWludDE2X3QpKEd1YXJkVGltZSA8PCBVU0FSVF9HVFBSX0dUX1BvcykpOwogfQogCiAvKioKQEAgLTMwMjAsNyArMzAxOSw3IEBACiAgICovCiBfX1NUQVRJQ19JTkxJTkUgdm9pZCBMTF9VU0FSVF9FbmFibGVJVF9JRExFKFVTQVJUX1R5cGVEZWYgKlVTQVJUeCkKIHsKLSAgU0VUX0JJVChVU0FSVHgtPkNSMSwgVVNBUlRfQ1IxX0lETEVJRSk7CisgIEFUT01JQ19TRVRfQklUKFVTQVJUeC0+Q1IxLCBVU0FSVF9DUjFfSURMRUlFKTsKIH0KIAogLyoqCkBAIC0zMDMxLDcgKzMwMzAsNyBAQAogICAqLwogX19TVEFUSUNfSU5MSU5FIHZvaWQgTExfVVNBUlRfRW5hYmxlSVRfUlhORShVU0FSVF9UeXBlRGVmICpVU0FSVHgpCiB7Ci0gIFNFVF9CSVQoVVNBUlR4LT5DUjEsIFVTQVJUX0NSMV9SWE5FSUUpOworICBBVE9NSUNfU0VUX0JJVChVU0FSVHgtPkNSMSwgVVNBUlRfQ1IxX1JYTkVJRSk7CiB9CiAKIC8qKgpAQCAtMzA0Miw3ICszMDQxLDcgQEAKICAgKi8KIF9fU1RBVElDX0lOTElORSB2b2lkIExMX1VTQVJUX0VuYWJsZUlUX1RDKFVTQVJUX1R5cGVEZWYgKlVTQVJUeCkKIHsKLSAgU0VUX0JJVChVU0FSVHgtPkNSMSwgVVNBUlRfQ1IxX1RDSUUpOworICBBVE9NSUNfU0VUX0JJVChVU0FSVHgtPkNSMSwgVVNBUlRfQ1IxX1RDSUUpOwogfQogCiAvKioKQEAgLTMwNTMsNyArMzA1Miw3IEBACiAgICovCiBfX1NUQVRJQ19JTkxJTkUgdm9pZCBMTF9VU0FSVF9FbmFibGVJVF9UWEUoVVNBUlRfVHlwZURlZiAqVVNBUlR4KQogewotICBTRVRfQklUKFVTQVJUeC0+Q1IxLCBVU0FSVF9DUjFfVFhFSUUpOworICBBVE9NSUNfU0VUX0JJVChVU0FSVHgtPkNSMSwgVVNBUlRfQ1IxX1RYRUlFKTsKIH0KIAogLyoqCkBAIC0zMDY0LDcgKzMwNjMsNyBAQAogICAqLwogX19TVEFUSUNfSU5MSU5FIHZvaWQgTExfVVNBUlRfRW5hYmxlSVRfUEUoVVNBUlRfVHlwZURlZiAqVVNBUlR4KQogewotICBTRVRfQklUKFVTQVJUeC0+Q1IxLCBVU0FSVF9DUjFfUEVJRSk7CisgIEFUT01JQ19TRVRfQklUKFVTQVJUeC0+Q1IxLCBVU0FSVF9DUjFfUEVJRSk7CiB9CiAKIC8qKgpAQCAtMzA3NSw3ICszMDc0LDcgQEAKICAgKi8KIF9fU1RBVElDX0lOTElORSB2b2lkIExMX1VTQVJUX0VuYWJsZUlUX0NNKFVTQVJUX1R5cGVEZWYgKlVTQVJUeCkKIHsKLSAgU0VUX0JJVChVU0FSVHgtPkNSMSwgVVNBUlRfQ1IxX0NNSUUpOworICBBVE9NSUNfU0VUX0JJVChVU0FSVHgtPkNSMSwgVVNBUlRfQ1IxX0NNSUUpOwogfQogCiAvKioKQEAgLTMwODYsNyArMzA4NSw3IEBACiAgICovCiBfX1NUQVRJQ19JTkxJTkUgdm9pZCBMTF9VU0FSVF9FbmFibGVJVF9SVE8oVVNBUlRfVHlwZURlZiAqVVNBUlR4KQogewotICBTRVRfQklUKFVTQVJUeC0+Q1IxLCBVU0FSVF9DUjFfUlRPSUUpOworICBBVE9NSUNfU0VUX0JJVChVU0FSVHgtPkNSMSwgVVNBUlRfQ1IxX1JUT0lFKTsKIH0KIAogLyoqCkBAIC0zMDk5LDcgKzMwOTgsNyBAQAogICAqLwogX19TVEFUSUNfSU5MSU5FIHZvaWQgTExfVVNBUlRfRW5hYmxlSVRfRU9CKFVTQVJUX1R5cGVEZWYgKlVTQVJUeCkKIHsKLSAgU0VUX0JJVChVU0FSVHgtPkNSMSwgVVNBUlRfQ1IxX0VPQklFKTsKKyAgQVRPTUlDX1NFVF9CSVQoVVNBUlR4LT5DUjEsIFVTQVJUX0NSMV9FT0JJRSk7CiB9CiAKIC8qKgpAQCAtMzEyNyw3ICszMTI2LDcgQEAKICAgKi8KIF9fU1RBVElDX0lOTElORSB2b2lkIExMX1VTQVJUX0VuYWJsZUlUX0VSUk9SKFVTQVJUX1R5cGVEZWYgKlVTQVJUeCkKIHsKLSAgU0VUX0JJVChVU0FSVHgtPkNSMywgVVNBUlRfQ1IzX0VJRSk7CisgIEFUT01JQ19TRVRfQklUKFVTQVJUeC0+Q1IzLCBVU0FSVF9DUjNfRUlFKTsKIH0KIAogLyoqCkBAIC0zMTQwLDcgKzMxMzksNyBAQAogICAqLwogX19TVEFUSUNfSU5MSU5FIHZvaWQgTExfVVNBUlRfRW5hYmxlSVRfQ1RTKFVTQVJUX1R5cGVEZWYgKlVTQVJUeCkKIHsKLSAgU0VUX0JJVChVU0FSVHgtPkNSMywgVVNBUlRfQ1IzX0NUU0lFKTsKKyAgQVRPTUlDX1NFVF9CSVQoVVNBUlR4LT5DUjMsIFVTQVJUX0NSM19DVFNJRSk7CiB9CiAKICNpZiBkZWZpbmVkKFVTQVJUX0NSMV9VRVNNKQpAQCAtMzE1NSw3ICszMTU0LDcgQEAKICAgKi8KIF9fU1RBVElDX0lOTElORSB2b2lkIExMX1VTQVJUX0VuYWJsZUlUX1dLVVAoVVNBUlRfVHlwZURlZiAqVVNBUlR4KQogewotICBTRVRfQklUKFVTQVJUeC0+Q1IzLCBVU0FSVF9DUjNfV1VGSUUpOworICBBVE9NSUNfU0VUX0JJVChVU0FSVHgtPkNSMywgVVNBUlRfQ1IzX1dVRklFKTsKIH0KIAogI2VuZGlmIC8qIFVTQVJUX0NSM19XVUZJRSAqLwpAQCAtMzE3Miw3ICszMTcxLDcgQEAKICAgKi8KIF9fU1RBVElDX0lOTElORSB2b2lkIExMX1VTQVJUX0VuYWJsZUlUX1RDQkdUKFVTQVJUX1R5cGVEZWYgKlVTQVJUeCkKIHsKLSAgU0VUX0JJVChVU0FSVHgtPkNSMywgVVNBUlRfQ1IzX1RDQkdUSUUpOworICBBVE9NSUNfU0VUX0JJVChVU0FSVHgtPkNSMywgVVNBUlRfQ1IzX1RDQkdUSUUpOwogfQogI2VuZGlmIC8qIFVTQVJUX1RDQkdUX1NVUFBPUlQgKi8KIApAQCAtMzE4NCw3ICszMTgzLDcgQEAKICAgKi8KIF9fU1RBVElDX0lOTElORSB2b2lkIExMX1VTQVJUX0Rpc2FibGVJVF9JRExFKFVTQVJUX1R5cGVEZWYgKlVTQVJUeCkKIHsKLSAgQ0xFQVJfQklUKFVTQVJUeC0+Q1IxLCBVU0FSVF9DUjFfSURMRUlFKTsKKyAgQVRPTUlDX0NMRUFSX0JJVChVU0FSVHgtPkNSMSwgVVNBUlRfQ1IxX0lETEVJRSk7CiB9CiAKIC8qKgpAQCAtMzE5NSw3ICszMTk0LDcgQEAKICAgKi8KIF9fU1RBVElDX0lOTElORSB2b2lkIExMX1VTQVJUX0Rpc2FibGVJVF9SWE5FKFVTQVJUX1R5cGVEZWYgKlVTQVJUeCkKIHsKLSAgQ0xFQVJfQklUKFVTQVJUeC0+Q1IxLCBVU0FSVF9DUjFfUlhORUlFKTsKKyAgQVRPTUlDX0NMRUFSX0JJVChVU0FSVHgtPkNSMSwgVVNBUlRfQ1IxX1JYTkVJRSk7CiB9CiAKIC8qKgpAQCAtMzIwNiw3ICszMjA1LDcgQEAKICAgKi8KIF9fU1RBVElDX0lOTElORSB2b2lkIExMX1VTQVJUX0Rpc2FibGVJVF9UQyhVU0FSVF9UeXBlRGVmICpVU0FSVHgpCiB7Ci0gIENMRUFSX0JJVChVU0FSVHgtPkNSMSwgVVNBUlRfQ1IxX1RDSUUpOworICBBVE9NSUNfQ0xFQVJfQklUKFVTQVJUeC0+Q1IxLCBVU0FSVF9DUjFfVENJRSk7CiB9CiAKIC8qKgpAQCAtMzIxNyw3ICszMjE2LDcgQEAKICAgKi8KIF9fU1RBVElDX0lOTElORSB2b2lkIExMX1VTQVJUX0Rpc2FibGVJVF9UWEUoVVNBUlRfVHlwZURlZiAqVVNBUlR4KQogewotICBDTEVBUl9CSVQoVVNBUlR4LT5DUjEsIFVTQVJUX0NSMV9UWEVJRSk7CisgIEFUT01JQ19DTEVBUl9CSVQoVVNBUlR4LT5DUjEsIFVTQVJUX0NSMV9UWEVJRSk7CiB9CiAKIC8qKgpAQCAtMzIyOCw3ICszMjI3LDcgQEAKICAgKi8KIF9fU1RBVElDX0lOTElORSB2b2lkIExMX1VTQVJUX0Rpc2FibGVJVF9QRShVU0FSVF9UeXBlRGVmICpVU0FSVHgpCiB7Ci0gIENMRUFSX0JJVChVU0FSVHgtPkNSMSwgVVNBUlRfQ1IxX1BFSUUpOworICBBVE9NSUNfQ0xFQVJfQklUKFVTQVJUeC0+Q1IxLCBVU0FSVF9DUjFfUEVJRSk7CiB9CiAKIC8qKgpAQCAtMzIzOSw3ICszMjM4LDcgQEAKICAgKi8KIF9fU1RBVElDX0lOTElORSB2b2lkIExMX1VTQVJUX0Rpc2FibGVJVF9DTShVU0FSVF9UeXBlRGVmICpVU0FSVHgpCiB7Ci0gIENMRUFSX0JJVChVU0FSVHgtPkNSMSwgVVNBUlRfQ1IxX0NNSUUpOworICBBVE9NSUNfQ0xFQVJfQklUKFVTQVJUeC0+Q1IxLCBVU0FSVF9DUjFfQ01JRSk7CiB9CiAKIC8qKgpAQCAtMzI1MCw3ICszMjQ5LDcgQEAKICAgKi8KIF9fU1RBVElDX0lOTElORSB2b2lkIExMX1VTQVJUX0Rpc2FibGVJVF9SVE8oVVNBUlRfVHlwZURlZiAqVVNBUlR4KQogewotICBDTEVBUl9CSVQoVVNBUlR4LT5DUjEsIFVTQVJUX0NSMV9SVE9JRSk7CisgIEFUT01JQ19DTEVBUl9CSVQoVVNBUlR4LT5DUjEsIFVTQVJUX0NSMV9SVE9JRSk7CiB9CiAKIC8qKgpAQCAtMzI2Myw3ICszMjYyLDcgQEAKICAgKi8KIF9fU1RBVElDX0lOTElORSB2b2lkIExMX1VTQVJUX0Rpc2FibGVJVF9FT0IoVVNBUlRfVHlwZURlZiAqVVNBUlR4KQogewotICBDTEVBUl9CSVQoVVNBUlR4LT5DUjEsIFVTQVJUX0NSMV9FT0JJRSk7CisgIEFUT01JQ19DTEVBUl9CSVQoVVNBUlR4LT5DUjEsIFVTQVJUX0NSMV9FT0JJRSk7CiB9CiAKIC8qKgpAQCAtMzI5MSw3ICszMjkwLDcgQEAKICAgKi8KIF9fU1RBVElDX0lOTElORSB2b2lkIExMX1VTQVJUX0Rpc2FibGVJVF9FUlJPUihVU0FSVF9UeXBlRGVmICpVU0FSVHgpCiB7Ci0gIENMRUFSX0JJVChVU0FSVHgtPkNSMywgVVNBUlRfQ1IzX0VJRSk7CisgIEFUT01JQ19DTEVBUl9CSVQoVVNBUlR4LT5DUjMsIFVTQVJUX0NSM19FSUUpOwogfQogCiAvKioKQEAgLTMzMDQsNyArMzMwMyw3IEBACiAgICovCiBfX1NUQVRJQ19JTkxJTkUgdm9pZCBMTF9VU0FSVF9EaXNhYmxlSVRfQ1RTKFVTQVJUX1R5cGVEZWYgKlVTQVJUeCkKIHsKLSAgQ0xFQVJfQklUKFVTQVJUeC0+Q1IzLCBVU0FSVF9DUjNfQ1RTSUUpOworICBBVE9NSUNfQ0xFQVJfQklUKFVTQVJUeC0+Q1IzLCBVU0FSVF9DUjNfQ1RTSUUpOwogfQogCiAjaWYgZGVmaW5lZChVU0FSVF9DUjFfVUVTTSkKQEAgLTMzMTksNyArMzMxOCw3IEBACiAgICovCiBfX1NUQVRJQ19JTkxJTkUgdm9pZCBMTF9VU0FSVF9EaXNhYmxlSVRfV0tVUChVU0FSVF9UeXBlRGVmICpVU0FSVHgpCiB7Ci0gIENMRUFSX0JJVChVU0FSVHgtPkNSMywgVVNBUlRfQ1IzX1dVRklFKTsKKyAgQVRPTUlDX0NMRUFSX0JJVChVU0FSVHgtPkNSMywgVVNBUlRfQ1IzX1dVRklFKTsKIH0KIAogI2VuZGlmIC8qIFVTQVJUX0NSM19XVUZJRSAqLwpAQCAtMzMzNiw3ICszMzM1LDcgQEAKICAgKi8KIF9fU1RBVElDX0lOTElORSB2b2lkIExMX1VTQVJUX0Rpc2FibGVJVF9UQ0JHVChVU0FSVF9UeXBlRGVmICpVU0FSVHgpCiB7Ci0gIENMRUFSX0JJVChVU0FSVHgtPkNSMywgVVNBUlRfQ1IzX1RDQkdUSUUpOworICBBVE9NSUNfQ0xFQVJfQklUKFVTQVJUeC0+Q1IzLCBVU0FSVF9DUjNfVENCR1RJRSk7CiB9CiAjZW5kaWYgLyogVVNBUlRfVENCR1RfU1VQUE9SVCAqLwogCkBAIC0zNTE2LDcgKzM1MTUsNyBAQAogICAqLwogX19TVEFUSUNfSU5MSU5FIHZvaWQgTExfVVNBUlRfRW5hYmxlRE1BUmVxX1JYKFVTQVJUX1R5cGVEZWYgKlVTQVJUeCkKIHsKLSAgU0VUX0JJVChVU0FSVHgtPkNSMywgVVNBUlRfQ1IzX0RNQVIpOworICBBVE9NSUNfU0VUX0JJVChVU0FSVHgtPkNSMywgVVNBUlRfQ1IzX0RNQVIpOwogfQogCiAvKioKQEAgLTM1MjcsNyArMzUyNiw3IEBACiAgICovCiBfX1NUQVRJQ19JTkxJTkUgdm9pZCBMTF9VU0FSVF9EaXNhYmxlRE1BUmVxX1JYKFVTQVJUX1R5cGVEZWYgKlVTQVJUeCkKIHsKLSAgQ0xFQVJfQklUKFVTQVJUeC0+Q1IzLCBVU0FSVF9DUjNfRE1BUik7CisgIEFUT01JQ19DTEVBUl9CSVQoVVNBUlR4LT5DUjMsIFVTQVJUX0NSM19ETUFSKTsKIH0KIAogLyoqCkBAIC0zNTQ5LDcgKzM1NDgsNyBAQAogICAqLwogX19TVEFUSUNfSU5MSU5FIHZvaWQgTExfVVNBUlRfRW5hYmxlRE1BUmVxX1RYKFVTQVJUX1R5cGVEZWYgKlVTQVJUeCkKIHsKLSAgU0VUX0JJVChVU0FSVHgtPkNSMywgVVNBUlRfQ1IzX0RNQVQpOworICBBVE9NSUNfU0VUX0JJVChVU0FSVHgtPkNSMywgVVNBUlRfQ1IzX0RNQVQpOwogfQogCiAvKioKQEAgLTM1NjAsNyArMzU1OSw3IEBACiAgICovCiBfX1NUQVRJQ19JTkxJTkUgdm9pZCBMTF9VU0FSVF9EaXNhYmxlRE1BUmVxX1RYKFVTQVJUX1R5cGVEZWYgKlVTQVJUeCkKIHsKLSAgQ0xFQVJfQklUKFVTQVJUeC0+Q1IzLCBVU0FSVF9DUjNfRE1BVCk7CisgIEFUT01JQ19DTEVBUl9CSVQoVVNBUlR4LT5DUjMsIFVTQVJUX0NSM19ETUFUKTsKIH0KIAogLyoqCkBAIC0zNzk2LDQgKzM3OTUsMyBAQAogCiAjZW5kaWYgLyogU1RNMzJGN3h4X0xMX1VTQVJUX0ggKi8KIAotLyoqKioqKioqKioqKioqKioqKioqKioqKiAoQykgQ09QWVJJR0hUIFNUTWljcm9lbGVjdHJvbmljcyAqKioqKkVORCBPRiBGSUxFKioqKi8KZGlmZiAtLWdpdCBhL0luYy9zdG0zMmY3eHhfbGxfdXNiLmggYi9JbmMvc3RtMzJmN3h4X2xsX3VzYi5oCmluZGV4IDk1MDQyYjIuLmJhMzg1NDkgMTAwNjQ0Ci0tLSBhL0luYy9zdG0zMmY3eHhfbGxfdXNiLmgKKysrIGIvSW5jL3N0bTMyZjd4eF9sbF91c2IuaApAQCAtNiwxMyArNiwxMiBAQAogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgKiBAYXR0ZW50aW9uCiAgICoKLSAgKiA8aDI+PGNlbnRlcj4mY29weTsgQ29weXJpZ2h0IChjKSAyMDE3IFNUTWljcm9lbGVjdHJvbmljcy4KLSAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLjwvY2VudGVyPjwvaDI+CisgICogQ29weXJpZ2h0IChjKSAyMDE3IFNUTWljcm9lbGVjdHJvbmljcy4KKyAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAqCi0gICogVGhpcyBzb2Z0d2FyZSBjb21wb25lbnQgaXMgbGljZW5zZWQgYnkgU1QgdW5kZXIgQlNEIDMtQ2xhdXNlIGxpY2Vuc2UsCi0gICogdGhlICJMaWNlbnNlIjsgWW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZQotICAqIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdDoKLSAgKiAgICAgICAgICAgICAgICAgICAgICAgIG9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0JTRC0zLUNsYXVzZQorICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgdW5kZXIgdGVybXMgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZQorICAqIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvZnR3YXJlIGNvbXBvbmVudC4KKyAgKiBJZiBubyBMSUNFTlNFIGZpbGUgY29tZXMgd2l0aCB0aGlzIHNvZnR3YXJlLCBpdCBpcyBwcm92aWRlZCBBUy1JUy4KICAgKgogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgKi8KQEAgLTIzLDcgKzIyLDcgQEAKIAogI2lmZGVmIF9fY3BsdXNwbHVzCiBleHRlcm4gIkMiIHsKLSNlbmRpZgorI2VuZGlmIC8qIF9fY3BsdXNwbHVzICovCiAKIC8qIEluY2x1ZGVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAjaW5jbHVkZSAic3RtMzJmN3h4X2hhbF9kZWYuaCIKQEAgLTgwLDYgKzc5LDcgQEAKICAgSENfREFUQVRHTEVSUgogfSBVU0JfT1RHX0hDU3RhdGVUeXBlRGVmOwogCisKIC8qKgogICAqIEBicmllZiAgVVNCIEluc3RhbmNlIEluaXRpYWxpemF0aW9uIFN0cnVjdHVyZSBkZWZpbml0aW9uCiAgICovCkBAIC05NCwxNCArOTQsMTUgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgbXVzdCBiZSBhIG51bWJlciBiZXR3ZWVuIE1pbl9EYXRhID0gMSBhbmQgTWF4X0RhdGEgPSAxNSAqLwogCiAgIHVpbnQzMl90IHNwZWVkOyAgICAgICAgICAgICAgICAgICAvKiE8IFVTQiBDb3JlIHNwZWVkLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYW55IHZhbHVlIG9mIEByZWYgVVNCX0NvcmVfU3BlZWQgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhbnkgdmFsdWUgb2YgQHJlZiBQQ0RfU3BlZWQvSENEX1NwZWVkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoSENEX1NQRUVEX3h4eCwgSENEX1NQRUVEX3h4eCkgKi8KIAogICB1aW50MzJfdCBkbWFfZW5hYmxlOyAgICAgICAgICAgICAgLyohPCBFbmFibGUgb3IgZGlzYWJsZSBvZiB0aGUgVVNCIGVtYmVkZGVkIERNQSB1c2VkIG9ubHkgZm9yIE9URyBIUy4gICAgICAgICovCiAKICAgdWludDMyX3QgZXAwX21wczsgICAgICAgICAgICAgICAgIC8qITwgU2V0IHRoZSBFbmRwb2ludCAwIE1heCBQYWNrZXQgc2l6ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwogCiAgIHVpbnQzMl90IHBoeV9pdGZhY2U7ICAgICAgICAgICAgICAvKiE8IFNlbGVjdCB0aGUgdXNlZCBQSFkgaW50ZXJmYWNlLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYW55IHZhbHVlIG9mIEByZWYgVVNCX0NvcmVfUEhZICAgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhbnkgdmFsdWUgb2YgQHJlZiBQQ0RfUEhZX01vZHVsZS9IQ0RfUEhZX01vZHVsZSAgKi8KIAogICB1aW50MzJfdCBTb2ZfZW5hYmxlOyAgICAgICAgICAgICAgLyohPCBFbmFibGUgb3IgZGlzYWJsZSB0aGUgb3V0cHV0IG9mIHRoZSBTT0Ygc2lnbmFsLiAgICAgICAgICAgICAgICAgICAgICAgICovCiAKQEAgLTEzMSw3ICsxMzIsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgbXVzdCBiZSBhIG51bWJlciBiZXR3ZWVuIE1pbl9EYXRhID0gMCBhbmQgTWF4X0RhdGEgPSAxICAgICovCiAKICAgdWludDhfdCAgIHR5cGU7ICAgICAgICAgICAgICAgICAvKiE8IEVuZHBvaW50IHR5cGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhbnkgdmFsdWUgb2YgQHJlZiBVU0JfRVBfVHlwZV8gICAgICAgICAgICAgICAgICAgICAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGFueSB2YWx1ZSBvZiBAcmVmIFVTQl9MTF9FUF9UeXBlICAgICAgICAgICAgICAgICAgICovCiAKICAgdWludDhfdCAgIGRhdGFfcGlkX3N0YXJ0OyAgICAgICAvKiE8IEluaXRpYWwgZGF0YSBQSUQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIG11c3QgYmUgYSBudW1iZXIgYmV0d2VlbiBNaW5fRGF0YSA9IDAgYW5kIE1heF9EYXRhID0gMSAgICAqLwpAQCAtMTY4LDE1ICsxNjksMTYgQEAKICAgdWludDhfdCAgIGVwX2lzX2luOyAgICAgICAgICAgLyohPCBFbmRwb2ludCBkaXJlY3Rpb24KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBtdXN0IGJlIGEgbnVtYmVyIGJldHdlZW4gTWluX0RhdGEgPSAwIGFuZCBNYXhfRGF0YSA9IDEgICAgICAqLwogCi0gIHVpbnQ4X3QgICBzcGVlZDsgICAgICAgICAgICAgIC8qITwgVVNCIEhvc3Qgc3BlZWQuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGFueSB2YWx1ZSBvZiBAcmVmIFVTQl9Db3JlX1NwZWVkXyAgICAgICAgICAgICAgICAgICAgKi8KKyAgdWludDhfdCAgIHNwZWVkOyAgICAgICAgICAgICAgLyohPCBVU0IgSG9zdCBDaGFubmVsIHNwZWVkLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhbnkgdmFsdWUgb2YgQHJlZiBIQ0RfRGV2aWNlX1NwZWVkOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoSENEX0RFVklDRV9TUEVFRF94eHgpICAgICAgICAgICAgICovCiAKICAgdWludDhfdCAgIGRvX3Bpbmc7ICAgICAgICAgICAgLyohPCBFbmFibGUgb3IgZGlzYWJsZSB0aGUgdXNlIG9mIHRoZSBQSU5HIHByb3RvY29sIGZvciBIUyBtb2RlLiAgICAgICAgICAgICAgICAqLwogCiAgIHVpbnQ4X3QgICBwcm9jZXNzX3Bpbmc7ICAgICAgIC8qITwgRXhlY3V0ZSB0aGUgUElORyBwcm90b2NvbCBmb3IgSFMgbW9kZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KIAogICB1aW50OF90ICAgZXBfdHlwZTsgICAgICAgICAgICAvKiE8IEVuZHBvaW50IFR5cGUuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGFueSB2YWx1ZSBvZiBAcmVmIFVTQl9FUF9UeXBlXyAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYW55IHZhbHVlIG9mIEByZWYgVVNCX0xMX0VQX1R5cGUgICAgICAgICAgICAgICAgICAgICAqLwogCiAgIHVpbnQxNl90ICBtYXhfcGFja2V0OyAgICAgICAgIC8qITwgRW5kcG9pbnQgTWF4IHBhY2tldCBzaXplLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIG11c3QgYmUgYSBudW1iZXIgYmV0d2VlbiBNaW5fRGF0YSA9IDAgYW5kIE1heF9EYXRhID0gNjRLQiAgICovCkBAIC0yNjUsNyArMjY3LDYgQEAKICNkZWZpbmUgVVNCX09UR19VTFBJX1BIWSAgICAgICAgICAgICAgICAgICAgICAgMVUKICNkZWZpbmUgVVNCX09UR19FTUJFRERFRF9QSFkgICAgICAgICAgICAgICAgICAgMlUKICNkZWZpbmUgVVNCX09UR19IU19FTUJFRERFRF9QSFkgICAgICAgICAgICAgICAgM1UKLQogI2lmICFkZWZpbmVkICAoVVNCX0hTX1BIWUNfVFVORV9WQUxVRSkKICNkZWZpbmUgVVNCX0hTX1BIWUNfVFVORV9WQUxVRSAgICAgICAgMHgwMDAwMEYxM1UgLyohPCBWYWx1ZSBvZiBVU0IgSFMgUEhZIFR1bmUgKi8KICNlbmRpZiAvKiBVU0JfSFNfUEhZQ19UVU5FX1ZBTFVFICovCkBAIC0zMjEsMTAgKzMyMiwxMCBAQAogLyoqIEBkZWZncm91cCBVU0JfTExfRVAwX01QUyBVU0IgTG93IExheWVyIEVQMCBNUFMKICAgKiBAewogICAqLwotI2RlZmluZSBFUF9NUFNfNjQgICAgICAgICAgICAgICAgICAgICAgICAwVQotI2RlZmluZSBFUF9NUFNfMzIgICAgICAgICAgICAgICAgICAgICAgICAxVQotI2RlZmluZSBFUF9NUFNfMTYgICAgICAgICAgICAgICAgICAgICAgICAyVQotI2RlZmluZSBFUF9NUFNfOCAgICAgICAgICAgICAgICAgICAgICAgICAzVQorI2RlZmluZSBFUF9NUFNfNjQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwVQorI2RlZmluZSBFUF9NUFNfMzIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxVQorI2RlZmluZSBFUF9NUFNfMTYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyVQorI2RlZmluZSBFUF9NUFNfOCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzVQogLyoqCiAgICogQH0KICAgKi8KQEAgLTM5OCwyMCArMzk5LDM5IEBACiAjZGVmaW5lIEdSWFNUU19QS1RTVFNfREFUQV9UT0dHTEVfRVJSICAgICAgICAgIDVVCiAjZGVmaW5lIEdSWFNUU19QS1RTVFNfQ0hfSEFMVEVEICAgICAgICAgICAgICAgIDdVCiAKKyNkZWZpbmUgVEVTVF9KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMVUKKyNkZWZpbmUgVEVTVF9LICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMlUKKyNkZWZpbmUgVEVTVF9TRTBfTkFLICAgICAgICAgICAgICAgICAgICAgICAgICAgM1UKKyNkZWZpbmUgVEVTVF9QQUNLRVQgICAgICAgICAgICAgICAgICAgICAgICAgICAgNFUKKyNkZWZpbmUgVEVTVF9GT1JDRV9FTiAgICAgICAgICAgICAgICAgICAgICAgICAgNVUKKwogI2RlZmluZSBVU0J4X1BDR0NDVEwgICAgKihfX0lPIHVpbnQzMl90ICopKCh1aW50MzJfdClVU0J4X0JBU0UgKyBVU0JfT1RHX1BDR0NDVExfQkFTRSkKICNkZWZpbmUgVVNCeF9IUFJUMCAgICAgICooX19JTyB1aW50MzJfdCAqKSgodWludDMyX3QpVVNCeF9CQVNFICsgVVNCX09UR19IT1NUX1BPUlRfQkFTRSkKIAogI2RlZmluZSBVU0J4X0RFVklDRSAgICAgKChVU0JfT1RHX0RldmljZVR5cGVEZWYgKikoVVNCeF9CQVNFICsgVVNCX09UR19ERVZJQ0VfQkFTRSkpCi0jZGVmaW5lIFVTQnhfSU5FUChpKSAgICAoKFVTQl9PVEdfSU5FbmRwb2ludFR5cGVEZWYgKikoVVNCeF9CQVNFICsgVVNCX09UR19JTl9FTkRQT0lOVF9CQVNFICsgKChpKSAqIFVTQl9PVEdfRVBfUkVHX1NJWkUpKSkKLSNkZWZpbmUgVVNCeF9PVVRFUChpKSAgICgoVVNCX09UR19PVVRFbmRwb2ludFR5cGVEZWYgKikoVVNCeF9CQVNFICsgVVNCX09UR19PVVRfRU5EUE9JTlRfQkFTRSArICgoaSkgKiBVU0JfT1RHX0VQX1JFR19TSVpFKSkpCisjZGVmaW5lIFVTQnhfSU5FUChpKSAgICAoKFVTQl9PVEdfSU5FbmRwb2ludFR5cGVEZWYgKikoVVNCeF9CQVNFXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgVVNCX09UR19JTl9FTkRQT0lOVF9CQVNFICsgKChpKSAqIFVTQl9PVEdfRVBfUkVHX1NJWkUpKSkKKworI2RlZmluZSBVU0J4X09VVEVQKGkpICAgKChVU0JfT1RHX09VVEVuZHBvaW50VHlwZURlZiAqKShVU0J4X0JBU0VcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgVVNCX09UR19PVVRfRU5EUE9JTlRfQkFTRSArICgoaSkgKiBVU0JfT1RHX0VQX1JFR19TSVpFKSkpCisKICNkZWZpbmUgVVNCeF9ERklGTyhpKSAgICooX19JTyB1aW50MzJfdCAqKShVU0J4X0JBU0UgKyBVU0JfT1RHX0ZJRk9fQkFTRSArICgoaSkgKiBVU0JfT1RHX0ZJRk9fU0laRSkpCiAKICNkZWZpbmUgVVNCeF9IT1NUICAgICAgICgoVVNCX09UR19Ib3N0VHlwZURlZiAqKShVU0J4X0JBU0UgKyBVU0JfT1RHX0hPU1RfQkFTRSkpCi0jZGVmaW5lIFVTQnhfSEMoaSkgICAgICAoKFVTQl9PVEdfSG9zdENoYW5uZWxUeXBlRGVmICopKFVTQnhfQkFTRSArIFVTQl9PVEdfSE9TVF9DSEFOTkVMX0JBU0UgKyAoKGkpICogVVNCX09UR19IT1NUX0NIQU5ORUxfU0laRSkpKQotI2RlZmluZSBVU0JQSFlDICAgICAgICAgKChVU0JQSFlDX0dsb2JhbFR5cGVEZWYgKikoKHVpbnQzMl90IClVU0JfUEhZX0hTX0NPTlRST0xMRVJfQkFTRSkpCisjZGVmaW5lIFVTQnhfSEMoaSkgICAgICAoKFVTQl9PVEdfSG9zdENoYW5uZWxUeXBlRGVmICopKFVTQnhfQkFTRVwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBVU0JfT1RHX0hPU1RfQ0hBTk5FTF9CQVNFXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArICgoaSkgKiBVU0JfT1RHX0hPU1RfQ0hBTk5FTF9TSVpFKSkpCisKKyNpZmRlZiBVU0JfSFNfUEhZQyAvKiBMZWdhY3kgbmFtZSBmb3IgVVNCUEhZQyBkZWZpbmVkIGluIENNU0lTIGRldmljZSBidXQgVVNCQ1BIWUMgdXNlZCBpbiBVU0IgZHJpdmVyIHRvIGRldGVybWluZSBpZiBwZXJpcGhlcmFsIGlzIHByZXNlbnQgb3Igbm90ICovCisjZGVmaW5lIFVTQlBIWUMgICBVU0JfSFNfUEhZQworI2VuZGlmCiAjZW5kaWYgLyogZGVmaW5lZCAoVVNCX09UR19GUykgfHwgZGVmaW5lZCAoVVNCX09UR19IUykgKi8KIAogI2RlZmluZSBFUF9BRERSX01TSyAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEZVCisKKyNpZm5kZWYgVVNFX1VTQl9ET1VCTEVfQlVGRkVSCisjZGVmaW5lIFVTRV9VU0JfRE9VQkxFX0JVRkZFUiAgICAgICAgICAgICAgICAgIDFVCisjZW5kaWYgLyogVVNFX1VTQl9ET1VCTEVfQlVGRkVSICovCiAvKioKICAgKiBAfQogICAqLwpAQCAtNTExLDkgKzUzMSw3IEBACiAKICNpZmRlZiBfX2NwbHVzcGx1cwogfQotI2VuZGlmCisjZW5kaWYgLyogX19jcGx1c3BsdXMgKi8KIAogCiAjZW5kaWYgLyogU1RNMzJGN3h4X0xMX1VTQl9IICovCi0KLS8qKioqKioqKioqKioqKioqKioqKioqKiogKEMpIENPUFlSSUdIVCBTVE1pY3JvZWxlY3Ryb25pY3MgKioqKipFTkQgT0YgRklMRSoqKiovCmRpZmYgLS1naXQgYS9JbmMvc3RtMzJmN3h4X2xsX3V0aWxzLmggYi9JbmMvc3RtMzJmN3h4X2xsX3V0aWxzLmgKaW5kZXggZmRmOTI1Yy4uNGYxZmI5OSAxMDA2NDQKLS0tIGEvSW5jL3N0bTMyZjd4eF9sbF91dGlscy5oCisrKyBiL0luYy9zdG0zMmY3eHhfbGxfdXRpbHMuaApAQCAtMTgsMTMgKzE4LDEyIEBACiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAqIEBhdHRlbnRpb24KICAgKgotICAqIDxoMj48Y2VudGVyPiZjb3B5OyBDb3B5cmlnaHQgKGMpIDIwMTcgU1RNaWNyb2VsZWN0cm9uaWNzLgotICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuPC9jZW50ZXI+PC9oMj4KKyAgKiBDb3B5cmlnaHQgKGMpIDIwMTcgU1RNaWNyb2VsZWN0cm9uaWNzLgorICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICoKLSAgKiBUaGlzIHNvZnR3YXJlIGNvbXBvbmVudCBpcyBsaWNlbnNlZCBieSBTVCB1bmRlciBCU0QgMy1DbGF1c2UgbGljZW5zZSwKLSAgKiB0aGUgIkxpY2Vuc2UiOyBZb3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlCi0gICogTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0OgotICAqICAgICAgICAgICAgICAgICAgICAgICAgb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvQlNELTMtQ2xhdXNlCisgICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCB1bmRlciB0ZXJtcyB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlCisgICogaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc29mdHdhcmUgY29tcG9uZW50LgorICAqIElmIG5vIExJQ0VOU0UgZmlsZSBjb21lcyB3aXRoIHRoaXMgc29mdHdhcmUsIGl0IGlzIHByb3ZpZGVkIEFTLUlTLgogICAqCiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAqLwpAQCAtMzAzLDQgKzMwMiwzIEBACiAKICNlbmRpZiAvKiBfX1NUTTMyRjd4eF9MTF9VVElMU19IICovCiAKLS8qKioqKioqKioqKioqKioqKioqKioqKiogKEMpIENPUFlSSUdIVCBTVE1pY3JvZWxlY3Ryb25pY3MgKioqKipFTkQgT0YgRklMRSoqKiovCmRpZmYgLS1naXQgYS9JbmMvc3RtMzJmN3h4X2xsX3d3ZGcuaCBiL0luYy9zdG0zMmY3eHhfbGxfd3dkZy5oCmluZGV4IDE2NjE2MzAuLjhkOTA5NmYgMTAwNjQ0Ci0tLSBhL0luYy9zdG0zMmY3eHhfbGxfd3dkZy5oCisrKyBiL0luYy9zdG0zMmY3eHhfbGxfd3dkZy5oCkBAIC02LDEzICs2LDEyIEBACiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAqIEBhdHRlbnRpb24KICAgKgotICAqIDxoMj48Y2VudGVyPiZjb3B5OyBDb3B5cmlnaHQgKGMpIDIwMTcgU1RNaWNyb2VsZWN0cm9uaWNzLgotICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuPC9jZW50ZXI+PC9oMj4KKyAgKiBDb3B5cmlnaHQgKGMpIDIwMTcgU1RNaWNyb2VsZWN0cm9uaWNzLgorICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICoKLSAgKiBUaGlzIHNvZnR3YXJlIGNvbXBvbmVudCBpcyBsaWNlbnNlZCBieSBTVCB1bmRlciBCU0QgMy1DbGF1c2UgbGljZW5zZSwKLSAgKiB0aGUgIkxpY2Vuc2UiOyBZb3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlCi0gICogTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0OgotICAqICAgICAgICAgICAgICAgICAgICAgICAgb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvQlNELTMtQ2xhdXNlCisgICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCB1bmRlciB0ZXJtcyB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlCisgICogaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc29mdHdhcmUgY29tcG9uZW50LgorICAqIElmIG5vIExJQ0VOU0UgZmlsZSBjb21lcyB3aXRoIHRoaXMgc29mdHdhcmUsIGl0IGlzIHByb3ZpZGVkIEFTLUlTLgogICAqCiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAqLwpAQCAtMzE1LDUgKzMxNCwzIEBACiAjZW5kaWYKIAogI2VuZGlmIC8qIFNUTTMyRjd4eF9MTF9XV0RHX0ggKi8KLQotLyoqKioqKioqKioqKioqKioqKioqKioqKiAoQykgQ09QWVJJR0hUIFNUTWljcm9lbGVjdHJvbmljcyAqKioqKkVORCBPRiBGSUxFKioqKi8KZGlmZiAtLWdpdCBhL0xpY2Vuc2UubWQgYi9MaWNlbnNlLm1kCmluZGV4IDMzZjJlZmYuLjU0ZDc1MjkgMTAwNjQ0Ci0tLSBhL0xpY2Vuc2UubWQKKysrIGIvTGljZW5zZS5tZApAQCAtMSwzICsxLDExIEBACi0jIENvcHlyaWdodCAoYykgMjAxNyBTVE1pY3JvZWxlY3Ryb25pY3MKK0NvcHlyaWdodCAyMDE3IFNUTWljcm9lbGVjdHJvbmljcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KIAotVGhpcyBzb2Z0d2FyZSBjb21wb25lbnQgaXMgbGljZW5zZWQgYnkgU1RNaWNyb2VsZWN0cm9uaWNzIHVuZGVyIHRoZSAqKkJTRC0zLUNsYXVzZSoqIGxpY2Vuc2UuIFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGlzIGxpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgbGljZW5zZSBbaGVyZV0oaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9CU0QtMy1DbGF1c2UpLgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKK1JlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKKworMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorCisyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisKKzMuIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIGNvcHlyaWdodCBob2xkZXIgbm9yIHRoZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKworVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KZGlmZiAtLWdpdCBhL1JFQURNRS5tZCBiL1JFQURNRS5tZAppbmRleCBjOGEyMDEyLi42YjQxYzNmIDEwMDY0NAotLS0gYS9SRUFETUUubWQKKysrIGIvUkVBRE1FLm1kCkBAIC0xLDMxICsxLDI2IEBACiAjIFNUTTMyQ3ViZUY3IEhBTCBEcml2ZXIgTUNVIENvbXBvbmVudAogCishW2xhdGVzdCB0YWddKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZ2l0aHViL3YvdGFnL1NUTWljcm9lbGVjdHJvbmljcy9zdG0zMmY3eHhfaGFsX2RyaXZlci5zdmc/Y29sb3I9YnJpZ2h0Z3JlZW4pCisKICMjIE92ZXJ2aWV3CiAKLSoqU1RNMzJDdWJlKiogaXMgYW4gU1RNaWNyb2VsZWN0cm9uaWNzIG9yaWdpbmFsIGluaXRpYXRpdmUgdG8gZWFzZSB0aGUgZGV2ZWxvcGVycyBsaWZlIGJ5IHJlZHVjaW5nIGVmZm9ydHMsIHRpbWUgYW5kIGNvc3QuCisqKlNUTTMyQ3ViZSoqIGlzIGFuIFNUTWljcm9lbGVjdHJvbmljcyBvcmlnaW5hbCBpbml0aWF0aXZlIHRvIGVhc2UgZGV2ZWxvcGVycycgbGlmZSBieSByZWR1Y2luZyBlZmZvcnRzLCB0aW1lIGFuZCBjb3N0LgogCi0qKlNUTTMyQ3ViZSoqIGNvdmVycyB0aGUgb3ZlcmFsbCBTVE0zMiBwcm9kdWN0cyBwb3J0Zm9saW8uIEl0IGluY2x1ZGVzIGEgY29tcHJlaGVuc2l2ZSBlbWJlZGRlZCBzb2Z0d2FyZSBwbGF0Zm9ybSwgZGVsaXZlcmVkIGZvciBlYWNoIFNUTTMyIHNlcmllcy4KKyoqU1RNMzJDdWJlKiogY292ZXJzIHRoZSBvdmVyYWxsIFNUTTMyIHByb2R1Y3RzIHBvcnRmb2xpby4gSXQgaW5jbHVkZXMgYSBjb21wcmVoZW5zaXZlIGVtYmVkZGVkIHNvZnR3YXJlIHBsYXRmb3JtIGRlbGl2ZXJlZCBmb3IgZWFjaCBTVE0zMiBzZXJpZXMuCiAgICAqIFRoZSBDTVNJUyBtb2R1bGVzIChjb3JlIGFuZCBkZXZpY2UpIGNvcnJlc3BvbmRpbmcgdG8gdGhlIEFSTSh0bSkgY29yZSBpbXBsZW1lbnRlZCBpbiB0aGlzIFNUTTMyIHByb2R1Y3QuCi0gICAqIFRoZSBTVE0zMiBIQUwtTEwgZHJpdmVycyA6IGFuIGFic3RyYWN0aW9uIGRyaXZlcnMgbGF5ZXIsIHRoZSBBUEkgZW5zdXJpbmcgbWF4aW1pemVkIHBvcnRhYmlsaXR5IGFjcm9zcyB0aGUgU1RNMzIgcG9ydGZvbGlvLgotICAgKiBUaGUgQlNQIERyaXZlcnMgb2YgZWFjaCBldmFsdWF0aW9uIG9yIGRlbW9uc3RyYXRpb24gYm9hcmQgcHJvdmlkZWQgYnkgdGhpcyBTVE0zMiBzZXJpZXMuCi0gICAqIEEgY29uc2lzdGVudCBzZXQgb2YgbWlkZGxld2FyZXMgY29tcG9uZW50cyBzdWNoIGFzIFJUT1MsIFVTQiwgRmF0RlMsIEdyYXBoaWNzLCBTVE0zMl9Ub3VjaFNlbnNpbmdfTGlicmFyeS4uLgotICAgKiBBIGZ1bGwgc2V0IG9mIHNvZnR3YXJlIHByb2plY3RzIChiYXNpYyBleGFtcGxlcywgYXBwbGljYXRpb25zIG9yIGRlbW9uc3RyYXRpb25zKSBmb3IgZWFjaCBib2FyZCBwcm92aWRlZCBieSB0aGlzIFNUTTMyIHNlcmllcy4KKyAgICogVGhlIFNUTTMyIEhBTC1MTCBkcml2ZXJzLCBhbiBhYnN0cmFjdGlvbiBsYXllciBvZmZlcmluZyBhIHNldCBvZiBBUElzIGVuc3VyaW5nIG1heGltaXplZCBwb3J0YWJpbGl0eSBhY3Jvc3MgdGhlIFNUTTMyIHBvcnRmb2xpby4KKyAgICogVGhlIEJTUCBkcml2ZXJzIG9mIGVhY2ggZXZhbHVhdGlvbiwgZGVtb25zdHJhdGlvbiBvciBudWNsZW8gYm9hcmQgcHJvdmlkZWQgZm9yIHRoaXMgU1RNMzIgc2VyaWVzLgorICAgKiBBIGNvbnNpc3RlbnQgc2V0IG9mIG1pZGRsZXdhcmUgbGlicmFyaWVzIHN1Y2ggYXMgUlRPUywgVVNCLCBGYXRGUywgZ3JhcGhpY3MsIHRvdWNoIHNlbnNpbmcgbGlicmFyeS4uLgorICAgKiBBIGZ1bGwgc2V0IG9mIHNvZnR3YXJlIHByb2plY3RzIChiYXNpYyBleGFtcGxlcywgYXBwbGljYXRpb25zLCBhbmQgZGVtb25zdHJhdGlvbnMpIGZvciBlYWNoIGJvYXJkIHByb3ZpZGVkIGZvciB0aGlzIFNUTTMyIHNlcmllcy4KIAogVHdvIG1vZGVscyBvZiBwdWJsaWNhdGlvbiBhcmUgcHJvcG9zZWQgZm9yIHRoZSBTVE0zMkN1YmUgZW1iZWRkZWQgc29mdHdhcmU6Ci0gICAqIFRoZSBtb25vbGl0aGljICoqTUNVIFBhY2thZ2UqKiA6IGFsbCBTVE0zMkN1YmUgc29mdHdhcmUgbW9kdWxlcyBvZiBvbmUgU1RNMzIgc2VyaWVzIGFyZSBwcmVzZW50IChEcml2ZXJzLCBNaWRkbGV3YXJlcywgUHJvamVjdHMsIFV0aWxpdGllcykgaW4gdGhlIHJlcG8gKHVzdWFsIG5hbWUgKipTVE0zMkN1YmV4eCoqLCB4eCBjb3JyZXNwb25kaW5nIHRvIHRoZSBTVE0zMiBzZXJpZXMpLgotICAgKiBUaGUgKipNQ1UgY29tcG9uZW50KiogOiBwcm9ncmVzc2l2ZWx5IGZyb20gTm92ZW1iZXIgMjAxOSwgZWFjaCBTVE0zMkN1YmUgc29mdHdhcmUgbW9kdWxlIGJlaW5nIHBhcnQgb2YgdGhlIFNUTTMyQ3ViZSBNQ1UgUGFja2FnZSwgd2lsbCBiZSBkZWxpdmVyZWQgYXMgYW4gaW5kaXZpZHVhbCByZXBvLCBhbGxvd2luZyB0aGUgdXNlciB0byBzZWxlY3QgYW5kIGdldCBvbmx5IHRoZSByZXF1aXJlZCBzb2Z0d2FyZSBmdW5jdGlvbnMuCisgICAqIFRoZSBtb25vbGl0aGljICoqTUNVIFBhY2thZ2UqKjogYWxsIFNUTTMyQ3ViZSBzb2Z0d2FyZSBtb2R1bGVzIG9mIG9uZSBTVE0zMiBzZXJpZXMgYXJlIHByZXNlbnQgKERyaXZlcnMsIE1pZGRsZXdhcmUsIFByb2plY3RzLCBVdGlsaXRpZXMpIGluIHRoZSByZXBvc2l0b3J5ICh1c3VhbCBuYW1lICoqU1RNMzJDdWJleHgqKiwgeHggY29ycmVzcG9uZGluZyB0byB0aGUgU1RNMzIgc2VyaWVzKS4KKyAgICogVGhlICoqTUNVIGNvbXBvbmVudHMqKjogZWFjaCBTVE0zMkN1YmUgc29mdHdhcmUgbW9kdWxlIGJlaW5nIHBhcnQgb2YgdGhlIFNUTTMyQ3ViZSBNQ1UgUGFja2FnZSwgaXMgZGVsaXZlcmVkIGFzIGFuIGluZGl2aWR1YWwgcmVwb3NpdG9yeSwgYWxsb3dpbmcgdGhlIHVzZXIgdG8gc2VsZWN0IGFuZCBnZXQgb25seSB0aGUgcmVxdWlyZWQgc29mdHdhcmUgZnVuY3Rpb25zLgogCiAjIyBEZXNjcmlwdGlvbgogCiBUaGlzICoqc3RtMzJmN3h4X2hhbF9kcml2ZXIqKiBNQ1UgY29tcG9uZW50IHJlcG8gaXMgb25lIGVsZW1lbnQgb2YgdGhlIFNUTTMyQ3ViZUY3IE1DVSBlbWJlZGRlZCBzb2Z0d2FyZSBwYWNrYWdlLCBwcm92aWRpbmcgdGhlICoqSEFMLUxMIERyaXZlcnMqKiBwYXJ0LgogCi0jIyBMaWNlbnNlCi0KLUNvcHlyaWdodCAoYykgMjAxNyBTVE1pY3JvZWxlY3Ryb25pY3MuCi0KLVRoaXMgc29mdHdhcmUgY29tcG9uZW50IGlzIGxpY2Vuc2VkIGJ5IFNUTWljcm9lbGVjdHJvbmljcyB1bmRlciBCU0QtMy1DbGF1c2UgbGljZW5zZS4gWW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLiAKLVlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBbaGVyZV0oaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9CU0QtMy1DbGF1c2UpLgotCiAjIyBSZWxlYXNlIG5vdGUKIAogRGV0YWlscyBhYm91dCB0aGUgY29udGVudCBvZiB0aGlzIHJlbGVhc2UgYXJlIGF2YWlsYWJsZSBpbiB0aGUgcmVsZWFzZSBub3RlIFtoZXJlXShodHRwczovL2h0bWxwcmV2aWV3LmdpdGh1Yi5pby8/aHR0cHM6Ly9naXRodWIuY29tL1NUTWljcm9lbGVjdHJvbmljcy9zdG0zMmY3eHhfaGFsX2RyaXZlci9ibG9iL21hc3Rlci9SZWxlYXNlX05vdGVzLmh0bWwpLgpAQCAtNDEsMTEgKzM2LDEwIEBACiBUYWcgdjEuMi43ICAgICB8IFRhZyB2MS4yLjQgICAgICB8IFRhZyB2NS40LjBfY203IHwgVGFnIHYxLjE1LjAgKGFuZCBmb2xsb3dpbmcsIGlmIGFueSwgdGlsbCBuZXh0IHRhZykKIFRhZyB2MS4yLjggICAgIHwgVGFnIHYxLjIuNSAgICAgIHwgVGFnIHY1LjQuMF9jbTcgfCBUYWcgdjEuMTYuMCAoYW5kIGZvbGxvd2luZywgaWYgYW55LCB0aWxsIG5leHQgdGFnKQogVGFnIHYxLjIuOSAgICAgfCBUYWcgdjEuMi42ICAgICAgfCBUYWcgdjUuNC4wX2NtNyB8IFRhZyB2MS4xNi4xIChhbmQgZm9sbG93aW5nLCBpZiBhbnksIHRpbGwgbmV4dCB0YWcpCitUYWcgdjEuMi4xMCAgICB8IFRhZyB2MS4yLjcgICAgICB8IFRhZyB2NS40LjBfY203IHwgVGFnIHYxLjE2LjIgKGFuZCBmb2xsb3dpbmcsIGlmIGFueSwgdGlsbCBuZXh0IHRhZykKIAogVGhlIGZ1bGwgKipTVE0zMkN1YmVGNyoqIE1DVSBwYWNrYWdlIGlzIGF2YWlsYWJsZSBbaGVyZV0oaHR0cHM6Ly9naXRodWIuY29tL1NUTWljcm9lbGVjdHJvbmljcy9TVE0zMkN1YmVGNykuCiAKICMjIFRyb3VibGVzaG9vdGluZwogCi1JZiB5b3UgaGF2ZSBhbnkgaXNzdWUgd2l0aCB0aGUgKipTb2Z0d2FyZSBjb250ZW50Kiogb2YgdGhpcyByZXBvc2l0b3J5LCB5b3UgY2FuIGZpbGUgYW4gaXNzdWUgaW50byB0aGUgZmlybXdhcmUgcmVwb3NpdG9yeSBbU1RNMzJDdWJlRjddKGh0dHBzOi8vZ2l0aHViLmNvbS9TVE1pY3JvZWxlY3Ryb25pY3MvU1RNMzJDdWJlRjcvaXNzdWVzL25ldy9jaG9vc2UpLgotCi1Gb3IgYW55IG90aGVyIHF1ZXN0aW9uIHJlbGF0ZWQgdG8gdGhlIHByb2R1Y3QsIHRoZSB0b29scywgdGhlIGVudmlyb25tZW50LCB5b3UgY2FuIHN1Ym1pdCBhIHRvcGljIG9uIHRoZSBbU1QgQ29tbXVuaXR5L1NUTTMyIE1DVXMgZm9ydW1dKGh0dHBzOi8vY29tbXVuaXR5LnN0LmNvbS9zL2dyb3VwLzBGOTBYMDAwMDAwQVhzQVNBVy9zdG0zMi1tY3VzKS4KK1BsZWFzZSByZWZlciB0byB0aGUgW0NPTlRSSUJVVElORy5tZF0oQ09OVFJJQlVUSU5HLm1kKSBndWlkZS4KZGlmZiAtLWdpdCBhL1JlbGVhc2VfTm90ZXMuaHRtbCBiL1JlbGVhc2VfTm90ZXMuaHRtbAppbmRleCA4MTI0YTgzLi5iYTY1NGE1IDEwMDY0NAotLS0gYS9SZWxlYXNlX05vdGVzLmh0bWwKKysrIGIvUmVsZWFzZV9Ob3Rlcy5odG1sCkBAIC0xLDQ2ICsxLDMwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIj4KLTxodG1sIHhtbG5zOnY9InVybjpzY2hlbWFzLW1pY3Jvc29mdC1jb206dm1sIiB4bWxuczpvPSJ1cm46c2NoZW1hcy1taWNyb3NvZnQtY29tOm9mZmljZTpvZmZpY2UiIHhtbG5zOnc9InVybjpzY2hlbWFzLW1pY3Jvc29mdC1jb206b2ZmaWNlOndvcmQiIHhtbG5zOm09Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vb2ZmaWNlLzIwMDQvMTIvb21tbCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnL1RSL1JFQy1odG1sNDAiPjxoZWFkPgotCi0KLQotCi08bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD13aW5kb3dzLTEyNTIiPgotPG1ldGEgbmFtZT0iUHJvZ0lkIiBjb250ZW50PSJXb3JkLkRvY3VtZW50Ij4KLTxtZXRhIG5hbWU9IkdlbmVyYXRvciIgY29udGVudD0iTWljcm9zb2Z0IFdvcmQgMTUiPgotPG1ldGEgbmFtZT0iT3JpZ2luYXRvciIgY29udGVudD0iTWljcm9zb2Z0IFdvcmQgMTUiPgotPGxpbmsgcmVsPSJGaWxlLUxpc3QiIGhyZWY9IlJlbGVhc2VfTm90ZXNfZmlsZXMvZmlsZWxpc3QueG1sIj4KLTxsaW5rIHJlbD0iRWRpdC1UaW1lLURhdGEiIGhyZWY9IlJlbGVhc2VfTm90ZXNfZmlsZXMvZWRpdGRhdGEubXNvIj48IS0tW2lmICFtc29dPgorPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiI+Cis8aHRtbCB4bWxuczp2PSJ1cm46c2NoZW1hcy1taWNyb3NvZnQtY29tOnZtbCIKKyAgeG1sbnM6bz0idXJuOnNjaGVtYXMtbWljcm9zb2Z0LWNvbTpvZmZpY2U6b2ZmaWNlIgorICB4bWxuczp3PSJ1cm46c2NoZW1hcy1taWNyb3NvZnQtY29tOm9mZmljZTp3b3JkIgorICB4bWxuczptPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL29mZmljZS8yMDA0LzEyL29tbWwiCisgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy9UUi9SRUMtaHRtbDQwIj4KKyAgPGhlYWQ+CisgICAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7CisgICAgICBjaGFyc2V0PXdpbmRvd3MtMTI1MiI+CisgICAgPG1ldGEgbmFtZT0iUHJvZ0lkIiBjb250ZW50PSJXb3JkLkRvY3VtZW50Ij4KKyAgICA8bWV0YSBuYW1lPSJHZW5lcmF0b3IiIGNvbnRlbnQ9Ik1pY3Jvc29mdCBXb3JkIDE1Ij4KKyAgICA8bWV0YSBuYW1lPSJPcmlnaW5hdG9yIiBjb250ZW50PSJNaWNyb3NvZnQgV29yZCAxNSI+CisgICAgPGxpbmsgcmVsPSJGaWxlLUxpc3QiIGhyZWY9IlJlbGVhc2VfTm90ZXNfZmlsZXMvZmlsZWxpc3QueG1sIj4KKyAgICA8bGluayByZWw9IkVkaXQtVGltZS1EYXRhIiBocmVmPSJSZWxlYXNlX05vdGVzX2ZpbGVzL2VkaXRkYXRhLm1zbyI+CisgICAgPCEtLVtpZiAhbXNvXT4KIDxzdHlsZT4KIHZcOioge2JlaGF2aW9yOnVybCgjZGVmYXVsdCNWTUwpO30KIG9cOioge2JlaGF2aW9yOnVybCgjZGVmYXVsdCNWTUwpO30KIHdcOioge2JlaGF2aW9yOnVybCgjZGVmYXVsdCNWTUwpO30KIC5zaGFwZSB7YmVoYXZpb3I6dXJsKCNkZWZhdWx0I1ZNTCk7fQogPC9zdHlsZT4KLTwhW2VuZGlmXS0tPjx0aXRsZT5SZWxlYXNlIE5vdGVzIGZvciBTVE0zMkY3eHggSEFMIERyaXZlcnM8L3RpdGxlPjwhLS1baWYgZ3RlIG1zbyA5XT48eG1sPgotIDxvOkRvY3VtZW50UHJvcGVydGllcz4KLSAgPG86QXV0aG9yPlNhbWlyIEJFTiBBQklEPC9vOkF1dGhvcj4KLSAgPG86TGFzdEF1dGhvcj5TYW1pciBCRU4gQUJJRDwvbzpMYXN0QXV0aG9yPgotICA8bzpSZXZpc2lvbj4zPC9vOlJldmlzaW9uPgotICA8bzpUb3RhbFRpbWU+MjwvbzpUb3RhbFRpbWU+Ci0gIDxvOkNyZWF0ZWQ+MjAyMS0wMi0xMlQxMzoyOTowMFo8L286Q3JlYXRlZD4KLSAgPG86TGFzdFNhdmVkPjIwMjEtMDItMTJUMTM6MzE6MDBaPC9vOkxhc3RTYXZlZD4KLSAgPG86UGFnZXM+Mjk8L286UGFnZXM+Ci0gIDxvOldvcmRzPjk3NTg8L286V29yZHM+Ci0gIDxvOkNoYXJhY3RlcnM+NTU2MjU8L286Q2hhcmFjdGVycz4KLSAgPG86TGluZXM+NDYzPC9vOkxpbmVzPgotICA8bzpQYXJhZ3JhcGhzPjEzMDwvbzpQYXJhZ3JhcGhzPgotICA8bzpDaGFyYWN0ZXJzV2l0aFNwYWNlcz42NTI1MzwvbzpDaGFyYWN0ZXJzV2l0aFNwYWNlcz4KLSAgPG86VmVyc2lvbj4xNi4wMDwvbzpWZXJzaW9uPgotIDwvbzpEb2N1bWVudFByb3BlcnRpZXM+Ci0gPG86T2ZmaWNlRG9jdW1lbnRTZXR0aW5ncz4KLSAgPG86QWxsb3dQTkcvPgotIDwvbzpPZmZpY2VEb2N1bWVudFNldHRpbmdzPgotPC94bWw+PCFbZW5kaWZdLS0+Ci0KLQotCi08bGluayByZWw9InRoZW1lRGF0YSIgaHJlZj0iUmVsZWFzZV9Ob3Rlc19maWxlcy90aGVtZWRhdGEudGhteCI+Ci08bGluayByZWw9ImNvbG9yU2NoZW1lTWFwcGluZyIgaHJlZj0iUmVsZWFzZV9Ob3Rlc19maWxlcy9jb2xvcnNjaGVtZW1hcHBpbmcueG1sIj48IS0tW2lmIGd0ZSBtc28gOV0+PHhtbD4KKzwhW2VuZGlmXS0tPgorICAgIDx0aXRsZT5SZWxlYXNlIE5vdGVzIGZvciBTVE0zMkY3eHggSEFMIERyaXZlcnM8L3RpdGxlPgorICAgIDxsaW5rIHJlbD0idGhlbWVEYXRhIiBocmVmPSJSZWxlYXNlX05vdGVzX2ZpbGVzL3RoZW1lZGF0YS50aG14Ij4KKyAgICA8bGluayByZWw9ImNvbG9yU2NoZW1lTWFwcGluZyIKKyAgICAgIGhyZWY9IlJlbGVhc2VfTm90ZXNfZmlsZXMvY29sb3JzY2hlbWVtYXBwaW5nLnhtbCI+CisgICAgPCEtLVtpZiBndGUgbXNvIDldPjx4bWw+CiAgPHc6V29yZERvY3VtZW50PgogICA8dzpWaWV3PlByaW50PC93OlZpZXc+CiAgIDx3OlRyYWNrTW92ZXM+ZmFsc2U8L3c6VHJhY2tNb3Zlcz4KQEAgLTY0OSw4ICs2MzMsNyBAQAogICAgTmFtZT0iU21hcnQgTGluayIvPgogIDwvdzpMYXRlbnRTdHlsZXM+CiA8L3htbD48IVtlbmRpZl0tLT4KLQotPHN0eWxlPgorICAgIDxzdHlsZT4KIDwhLS0KICAvKiBGb250IERlZmluaXRpb25zICovCiAgQGZvbnQtZmFjZQpAQCAtMjQ2NSwyNzA3ICsyNDQ4LDE1MjUyIEBACiAJZm9udC1mYW1pbHk6IlRpbWVzIE5ldyBSb21hbiIsc2VyaWY7fQogPC9zdHlsZT4KIDwhW2VuZGlmXS0tPgotCi08bWV0YSBjb250ZW50PSJNQ0QgQXBwbGljYXRpb24gVGVhbSIgbmFtZT0iYXV0aG9yIj48IS0tW2lmIGd0ZSBtc28gOV0+PHhtbD4KKyAgICA8bWV0YSBjb250ZW50PSJNQ0QgQXBwbGljYXRpb24gVGVhbSIgbmFtZT0iYXV0aG9yIj4KKyAgICA8IS0tW2lmIGd0ZSBtc28gOV0+PHhtbD4KICA8bzpzaGFwZWRlZmF1bHRzIHY6ZXh0PSJlZGl0IiBzcGlkbWF4PSIxMDI2Ii8+CiA8L3htbD48IVtlbmRpZl0tLT48IS0tW2lmIGd0ZSBtc28gOV0+PHhtbD4KICA8bzpzaGFwZWxheW91dCB2OmV4dD0iZWRpdCI+CiAgIDxvOmlkbWFwIHY6ZXh0PSJlZGl0IiBkYXRhPSIxIi8+Ci0gPC9vOnNoYXBlbGF5b3V0PjwveG1sPjwhW2VuZGlmXS0tPjwvaGVhZD48Ym9keSBsYW5nPSJFTi1VUyIgbGluaz0iYmx1ZSIgdmxpbms9ImJsdWUiPgorIDwvbzpzaGFwZWxheW91dD48L3htbD48IVtlbmRpZl0tLT4KKyAgPC9oZWFkPgorICA8Ym9keSBsaW5rPSJibHVlIiBsYW5nPSJFTi1VUyIgdmxpbms9ImJsdWUiPgorICAgIDxkaXYgY2xhc3M9IldvcmRTZWN0aW9uMSI+CisgICAgICA8ZGl2PgorICAgICAgICA8ZGl2PgorICAgICAgICAgIDxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSIiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseToKKyAgICAgICAgICAgICAgJnF1b3Q7QXJpYWwmcXVvdDssc2Fucy1zZXJpZjsiIGxhbmc9IkZSIj48bzpwPiZuYnNwOzwvbzpwPjwvc3Bhbj48L3A+CisgICAgICAgICAgPGRpdiBhbGlnbj0iY2VudGVyIj4KKyAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0iTXNvTm9ybWFsVGFibGUiIHN0eWxlPSJ3aWR0aDogNjc1cHQ7IgorICAgICAgICAgICAgICBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIGJvcmRlcj0iMCIgd2lkdGg9IjkwMCI+CisgICAgICAgICAgICAgIDx0Ym9keT4KKyAgICAgICAgICAgICAgICA8dHIgc3R5bGU9IiI+CisgICAgICAgICAgICAgICAgICA8dGQgc3R5bGU9InBhZGRpbmc6IDBpbjsiIHZhbGlnbj0idG9wIj4KKyAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJNc29Ob3JtYWxUYWJsZSIgc3R5bGU9IndpZHRoOiA2NzVwdDsiCisgICAgICAgICAgICAgICAgICAgICAgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiBib3JkZXI9IjAiCisgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9IjkwMCI+CisgICAgICAgICAgICAgICAgICAgICAgPHRib2R5PgorICAgICAgICAgICAgICAgICAgICAgICAgPHRyIHN0eWxlPSIiPgorICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgc3R5bGU9InBhZGRpbmc6IDBpbiA1LjRwdDsiIHZhbGlnbj0idG9wIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iIj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiA4cHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtBcmlhbCZxdW90OyxzYW5zLXNlcmlmOyBjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmx1ZTsiPjxhCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj0iLi4vLi4vUmVsZWFzZV9Ob3Rlcy5odG1sIj5CYWNrCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gUmVsZWFzZSBwYWdlPC9hPjwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyI+PG86cD48L286cD48L3NwYW4+PC9wPgorICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgorICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KKyAgICAgICAgICAgICAgICAgICAgICAgIDx0ciBzdHlsZT0iIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHN0eWxlPSJwYWRkaW5nOiAxLjVwdDsiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMSBzdHlsZT0ibWFyZ2luLWJvdHRvbTogMC4yNWluOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyOyIgYWxpZ249ImNlbnRlciI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMjBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsgY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJnYig1MSwgMTAyLCAyNTUpOyI+UmVsZWFzZSBOb3RlcyBmb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1RNMzJGN3h4IEhBTCBEcml2ZXJzPC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDIwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij48bzpwPjwvbzpwPjwvc3Bhbj48L2gxPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJ0ZXh0LWFsaWduOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VudGVyOyIgYWxpZ249ImNlbnRlciI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O0FyaWFsJnF1b3Q7LHNhbnMtc2VyaWY7IGNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsiPkNvcHlyaWdodCAyMDE3CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNUTWljcm9lbGVjdHJvbmljczwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iY29sb3I6IGJsYWNrOyI+PHUxOnA+PC91MTpwPjxvOnA+PC9vOnA+PC9zcGFuPjwvcD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0idGV4dC1hbGlnbjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlbnRlcjsiIGFsaWduPSJjZW50ZXIiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtBcmlhbCZxdW90OyxzYW5zLXNlcmlmOyBjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7Ij48aW1nIGlkPSJfeDAwMDBfaTEwNDAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjPSJfaHRtcmVzYy9zdF9sb2dvLnBuZyIgYm9yZGVyPSIwIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD0iODEiIHdpZHRoPSIxMDkiPjwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyI+PG86cD48L286cD48L3NwYW4+PC9wPgorICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgorICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KKyAgICAgICAgICAgICAgICAgICAgICA8L3Rib2R5PgorICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgorICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iIj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7QXJpYWwmcXVvdDssc2Fucy1zZXJpZjsiPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOworICAgICAgICAgICAgICAgICAgICAgICAgVGhlJm5ic3A7aGFyZHdhcmUgYWJzdHJhY3Rpb24gbGF5ZXIgKEhBTCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHByb3ZpZGVzIGxvdyBsZXZlbCBkcml2ZXJzIGFuZCB0aGUgaGFyZHdhcmUKKyAgICAgICAgICAgICAgICAgICAgICAgIGludGVyZmFjaW5nIG1ldGhvZHMgdG8gaW50ZXJhY3Qgd2l0aCB1cHBlcgorICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXImbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsKKyAgICAgICAgICAgICAgICAgICAgICAgIDxicj4KKyAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+PC9wPgorICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luLWxlZnQ6IDBweDsgd2lkdGg6CisgICAgICAgICAgICAgICAgICAgICAgMTU3MXB4OyI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7QXJpYWwmcXVvdDssc2Fucy1zZXJpZjsiPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOworICAgICAgICAgICAgICAgICAgICAgICAgKGFwcGxpY2F0aW9uLCBsaWJyYXJpZXMgYW5kIHN0YWNrcykuICZuYnNwO0l0CisgICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRlcyBhIGNvbXBsZXRlIHNldCBvZiByZWFkeS10by11c2UgQVBJcywKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQgYXJlIGZlYXR1cmUtb3JpZW50ZWQgaW5zdGVhZCBvZiBJUC1PcmllbnRlZAorICAgICAgICAgICAgICAgICAgICAgICAgdG88L3NwYW4+PC9wPgorICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luLWxlZnQ6IDBweDsgd2lkdGg6CisgICAgICAgICAgICAgICAgICAgICAgMTU3MXB4OyI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7QXJpYWwmcXVvdDssc2Fucy1zZXJpZjsiPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOworICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtBcmlhbCZxdW90OyxzYW5zLXNlcmlmOyI+c2ltcGxpZnkgdXNlcgorICAgICAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb24gZGV2ZWxvcG1lbnQuPC9zcGFuPjwvcD4KKyAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbi1sZWZ0OiAwcHg7IHdpZHRoOgorICAgICAgICAgICAgICAgICAgICAgIDE1NzFweDsiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O0FyaWFsJnF1b3Q7LHNhbnMtc2VyaWY7Ij48YnI+CisgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPiA8c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtBcmlhbCZxdW90OyxzYW5zLXNlcmlmOyBkaXNwbGF5OiBub25lOyI+PG86cD48L286cD48L3NwYW4+PC9wPgorICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9Ik1zb05vcm1hbFRhYmxlIiBzdHlsZT0id2lkdGg6IDE1NTFweDsKKyAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tbGVmdDogMzEuNXB0OyBoZWlnaHQ6IDQ0ODg3cHg7IgorICAgICAgICAgICAgICAgICAgICAgIGNlbGxwYWRkaW5nPSIwIiBib3JkZXI9IjAiPgorICAgICAgICAgICAgICAgICAgICAgIDx0Ym9keT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHN0eWxlPSJwYWRkaW5nOiAwaW47IiB2YWxpZ249InRvcCI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgyIHN0eWxlPSJiYWNrZ3JvdW5kOiByZ2IoNTEsIDEwMiwgMjU1KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9uZSByZXBlYXQgc2Nyb2xsIDAlIDUwJTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC1tb3otYmFja2dyb3VuZC1jbGlwOiAtbW96LWluaXRpYWw7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtbW96LWJhY2tncm91bmQtb3JpZ2luOiAtbW96LWluaXRpYWw7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtbW96LWJhY2tncm91bmQtaW5saW5lLXBvbGljeToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC1tb3otaW5pdGlhbDsgbWFyZ2luLWxlZnQ6IDBweDsgd2lkdGg6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMjc3cHg7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMnB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogd2hpdGU7Ij5VcGRhdGUgSGlzdG9yeTwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iY29sb3I6IGJsYWNrOyI+IDwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2gyPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMyBzdHlsZT0iYmFja2dyb3VuZDogcmdiKDUxLCAxMDIsIDI1NSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbmUgcmVwZWF0IHNjcm9sbCAwJSA1MCU7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtbW96LWJhY2tncm91bmQtY2xpcDogLW1vei1pbml0aWFsOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLW1vei1iYWNrZ3JvdW5kLW9yaWdpbjogLW1vei1pbml0aWFsOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLW1vei1iYWNrZ3JvdW5kLWlubGluZS1wb2xpY3k6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtbW96LWluaXRpYWw7IG1hcmdpbi1yaWdodDogNTAwcHQ7IHdpZHRoOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjcycHg7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7QXJpYWwmcXVvdDssc2Fucy1zZXJpZjsgY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaXRlOyI+VjEuMi4xMC8gMjItTm92ZW1iZXItMjAyMTwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2gzPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW46IDQuNXB0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwaW4gNC41cHQgMC4yNWluOyB3aWR0aDogMTQxNnB4OyI+PGI+PHU+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6IGJsYWNrOyI+TWFpbiBDaGFuZ2VzPGJyPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj48L3U+PC9iPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50PSJ0ZXh0L2h0bWw7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJzZXQ9d2luZG93cy0xMjUyIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbjogNC41cHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDBpbiA0LjVwdCAwLjI1aW47IHdpZHRoOiAxNDE2cHg7Ij4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtZXRhIG5hbWU9IlByb2dJZCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudD0iV29yZC5Eb2N1bWVudCI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWV0YSBuYW1lPSJHZW5lcmF0b3IiIGNvbnRlbnQ9Ik1pY3Jvc29mdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXb3JkIDE1Ij4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtZXRhIG5hbWU9Ik9yaWdpbmF0b3IiIGNvbnRlbnQ9Ik1pY3Jvc29mdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXb3JkIDE1Ij4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS1baWYgZ3RlIG1zbyA5XT48eG1sPgorIDxvOk9mZmljZURvY3VtZW50U2V0dGluZ3M+CisgIDxvOkFsbG93UE5HLz4KKyA8L286T2ZmaWNlRG9jdW1lbnRTZXR0aW5ncz4KKzwveG1sPjwhW2VuZGlmXS0tPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLVtpZiBndGUgbXNvIDldPjx4bWw+CisgPHc6V29yZERvY3VtZW50PgorICA8dzpWaWV3Pk5vcm1hbDwvdzpWaWV3PgorICA8dzpab29tPjA8L3c6Wm9vbT4KKyAgPHc6VHJhY2tNb3Zlcy8+CisgIDx3OlRyYWNrRm9ybWF0dGluZy8+CisgIDx3Okh5cGhlbmF0aW9uWm9uZT4yMTwvdzpIeXBoZW5hdGlvblpvbmU+CisgIDx3OlB1bmN0dWF0aW9uS2VybmluZy8+CisgIDx3OlZhbGlkYXRlQWdhaW5zdFNjaGVtYXMvPgorICA8dzpTYXZlSWZYTUxJbnZhbGlkPmZhbHNlPC93OlNhdmVJZlhNTEludmFsaWQ+CisgIDx3Oklnbm9yZU1peGVkQ29udGVudD5mYWxzZTwvdzpJZ25vcmVNaXhlZENvbnRlbnQ+CisgIDx3OkFsd2F5c1Nob3dQbGFjZWhvbGRlclRleHQ+ZmFsc2U8L3c6QWx3YXlzU2hvd1BsYWNlaG9sZGVyVGV4dD4KKyAgPHc6RG9Ob3RQcm9tb3RlUUYvPgorICA8dzpMaWRUaGVtZU90aGVyPkVOLVVTPC93OkxpZFRoZW1lT3RoZXI+CisgIDx3OkxpZFRoZW1lQXNpYW4+WC1OT05FPC93OkxpZFRoZW1lQXNpYW4+CisgIDx3OkxpZFRoZW1lQ29tcGxleFNjcmlwdD5YLU5PTkU8L3c6TGlkVGhlbWVDb21wbGV4U2NyaXB0PgorICA8dzpDb21wYXRpYmlsaXR5PgorICAgPHc6QnJlYWtXcmFwcGVkVGFibGVzLz4KKyAgIDx3OlNuYXBUb0dyaWRJbkNlbGwvPgorICAgPHc6V3JhcFRleHRXaXRoUHVuY3QvPgorICAgPHc6VXNlQXNpYW5CcmVha1J1bGVzLz4KKyAgIDx3OkRvbnRHcm93QXV0b2ZpdC8+CisgICA8dzpTcGxpdFBnQnJlYWtBbmRQYXJhTWFyay8+CisgICA8dzpFbmFibGVPcGVuVHlwZUtlcm5pbmcvPgorICAgPHc6RG9udEZsaXBNaXJyb3JJbmRlbnRzLz4KKyAgIDx3Ok92ZXJyaWRlVGFibGVTdHlsZUhwcy8+CisgIDwvdzpDb21wYXRpYmlsaXR5PgorICA8bTptYXRoUHI+CisgICA8bTptYXRoRm9udCBtOnZhbD0iQ2FtYnJpYSBNYXRoIi8+CisgICA8bTpicmtCaW4gbTp2YWw9ImJlZm9yZSIvPgorICAgPG06YnJrQmluU3ViIG06dmFsPSImIzQ1Oy0iLz4KKyAgIDxtOnNtYWxsRnJhYyBtOnZhbD0ib2ZmIi8+CisgICA8bTpkaXNwRGVmLz4KKyAgIDxtOmxNYXJnaW4gbTp2YWw9IjAiLz4KKyAgIDxtOnJNYXJnaW4gbTp2YWw9IjAiLz4KKyAgIDxtOmRlZkpjIG06dmFsPSJjZW50ZXJHcm91cCIvPgorICAgPG06d3JhcEluZGVudCBtOnZhbD0iMTQ0MCIvPgorICAgPG06aW50TGltIG06dmFsPSJzdWJTdXAiLz4KKyAgIDxtOm5hcnlMaW0gbTp2YWw9InVuZE92ciIvPgorICA8L206bWF0aFByPjwvdzpXb3JkRG9jdW1lbnQ+Cis8L3htbD48IVtlbmRpZl0tLT48IS0tW2lmIGd0ZSBtc28gOV0+PHhtbD4KKyA8dzpMYXRlbnRTdHlsZXMgRGVmTG9ja2VkU3RhdGU9ImZhbHNlIiBEZWZVbmhpZGVXaGVuVXNlZD0iZmFsc2UiCisgIERlZlNlbWlIaWRkZW49ImZhbHNlIiBEZWZRRm9ybWF0PSJmYWxzZSIgRGVmUHJpb3JpdHk9Ijk5IgorICBMYXRlbnRTdHlsZUNvdW50PSIzNzYiPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjAiIFFGb3JtYXQ9InRydWUiIE5hbWU9Ik5vcm1hbCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjkiIFFGb3JtYXQ9InRydWUiIE5hbWU9ImhlYWRpbmcgMSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjkiIFNlbWlIaWRkZW49InRydWUiCisgICBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIgUUZvcm1hdD0idHJ1ZSIgTmFtZT0iaGVhZGluZyAyIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iOSIgU2VtaUhpZGRlbj0idHJ1ZSIKKyAgIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIiBRRm9ybWF0PSJ0cnVlIiBOYW1lPSJoZWFkaW5nIDMiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI5IiBTZW1pSGlkZGVuPSJ0cnVlIgorICAgVW5oaWRlV2hlblVzZWQ9InRydWUiIFFGb3JtYXQ9InRydWUiIE5hbWU9ImhlYWRpbmcgNCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjkiIFNlbWlIaWRkZW49InRydWUiCisgICBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIgUUZvcm1hdD0idHJ1ZSIgTmFtZT0iaGVhZGluZyA1Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iOSIgU2VtaUhpZGRlbj0idHJ1ZSIKKyAgIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIiBRRm9ybWF0PSJ0cnVlIiBOYW1lPSJoZWFkaW5nIDYiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI5IiBTZW1pSGlkZGVuPSJ0cnVlIgorICAgVW5oaWRlV2hlblVzZWQ9InRydWUiIFFGb3JtYXQ9InRydWUiIE5hbWU9ImhlYWRpbmcgNyIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjkiIFNlbWlIaWRkZW49InRydWUiCisgICBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIgUUZvcm1hdD0idHJ1ZSIgTmFtZT0iaGVhZGluZyA4Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iOSIgU2VtaUhpZGRlbj0idHJ1ZSIKKyAgIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIiBRRm9ybWF0PSJ0cnVlIiBOYW1lPSJoZWFkaW5nIDkiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iaW5kZXggMSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJpbmRleCAyIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9ImluZGV4IDMiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iaW5kZXggNCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJpbmRleCA1Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9ImluZGV4IDYiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iaW5kZXggNyIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJpbmRleCA4Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9ImluZGV4IDkiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSIzOSIgU2VtaUhpZGRlbj0idHJ1ZSIKKyAgIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIiBOYW1lPSJ0b2MgMSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjM5IiBTZW1pSGlkZGVuPSJ0cnVlIgorICAgVW5oaWRlV2hlblVzZWQ9InRydWUiIE5hbWU9InRvYyAyIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iMzkiIFNlbWlIaWRkZW49InRydWUiCisgICBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIgTmFtZT0idG9jIDMiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSIzOSIgU2VtaUhpZGRlbj0idHJ1ZSIKKyAgIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIiBOYW1lPSJ0b2MgNCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjM5IiBTZW1pSGlkZGVuPSJ0cnVlIgorICAgVW5oaWRlV2hlblVzZWQ9InRydWUiIE5hbWU9InRvYyA1Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iMzkiIFNlbWlIaWRkZW49InRydWUiCisgICBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIgTmFtZT0idG9jIDYiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSIzOSIgU2VtaUhpZGRlbj0idHJ1ZSIKKyAgIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIiBOYW1lPSJ0b2MgNyIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjM5IiBTZW1pSGlkZGVuPSJ0cnVlIgorICAgVW5oaWRlV2hlblVzZWQ9InRydWUiIE5hbWU9InRvYyA4Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iMzkiIFNlbWlIaWRkZW49InRydWUiCisgICBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIgTmFtZT0idG9jIDkiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iTm9ybWFsIEluZGVudCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJmb290bm90ZSB0ZXh0Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9ImFubm90YXRpb24gdGV4dCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJoZWFkZXIiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iZm9vdGVyIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9ImluZGV4IGhlYWRpbmciLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSIzNSIgU2VtaUhpZGRlbj0idHJ1ZSIKKyAgIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIiBRRm9ybWF0PSJ0cnVlIiBOYW1lPSJjYXB0aW9uIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9InRhYmxlIG9mIGZpZ3VyZXMiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iZW52ZWxvcGUgYWRkcmVzcyIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJlbnZlbG9wZSByZXR1cm4iLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iZm9vdG5vdGUgcmVmZXJlbmNlIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9ImFubm90YXRpb24gcmVmZXJlbmNlIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9ImxpbmUgbnVtYmVyIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9InBhZ2UgbnVtYmVyIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9ImVuZG5vdGUgcmVmZXJlbmNlIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9ImVuZG5vdGUgdGV4dCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJ0YWJsZSBvZiBhdXRob3JpdGllcyIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJtYWNybyIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJ0b2EgaGVhZGluZyIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJMaXN0Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9Ikxpc3QgQnVsbGV0Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9Ikxpc3QgTnVtYmVyIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9Ikxpc3QgMiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJMaXN0IDMiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iTGlzdCA0Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9Ikxpc3QgNSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJMaXN0IEJ1bGxldCAyIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9Ikxpc3QgQnVsbGV0IDMiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iTGlzdCBCdWxsZXQgNCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJMaXN0IEJ1bGxldCA1Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9Ikxpc3QgTnVtYmVyIDIiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iTGlzdCBOdW1iZXIgMyIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJMaXN0IE51bWJlciA0Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9Ikxpc3QgTnVtYmVyIDUiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSIxMCIgUUZvcm1hdD0idHJ1ZSIgTmFtZT0iVGl0bGUiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iQ2xvc2luZyIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJTaWduYXR1cmUiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSIxIiBTZW1pSGlkZGVuPSJ0cnVlIgorICAgVW5oaWRlV2hlblVzZWQ9InRydWUiIE5hbWU9IkRlZmF1bHQgUGFyYWdyYXBoIEZvbnQiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iQm9keSBUZXh0Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9IkJvZHkgVGV4dCBJbmRlbnQiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iTGlzdCBDb250aW51ZSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJMaXN0IENvbnRpbnVlIDIiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iTGlzdCBDb250aW51ZSAzIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9Ikxpc3QgQ29udGludWUgNCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJMaXN0IENvbnRpbnVlIDUiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iTWVzc2FnZSBIZWFkZXIiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSIxMSIgUUZvcm1hdD0idHJ1ZSIgTmFtZT0iU3VidGl0bGUiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iU2FsdXRhdGlvbiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJEYXRlIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9IkJvZHkgVGV4dCBGaXJzdCBJbmRlbnQiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iQm9keSBUZXh0IEZpcnN0IEluZGVudCAyIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9Ik5vdGUgSGVhZGluZyIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJCb2R5IFRleHQgMiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJCb2R5IFRleHQgMyIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJCb2R5IFRleHQgSW5kZW50IDIiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iQm9keSBUZXh0IEluZGVudCAzIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9IkJsb2NrIFRleHQiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iSHlwZXJsaW5rIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9IkZvbGxvd2VkSHlwZXJsaW5rIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iMjIiIFFGb3JtYXQ9InRydWUiIE5hbWU9IlN0cm9uZyIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjIwIiBRRm9ybWF0PSJ0cnVlIiBOYW1lPSJFbXBoYXNpcyIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJEb2N1bWVudCBNYXAiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iUGxhaW4gVGV4dCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJFLW1haWwgU2lnbmF0dXJlIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9IkhUTUwgVG9wIG9mIEZvcm0iLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iSFRNTCBCb3R0b20gb2YgRm9ybSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJOb3JtYWwgKFdlYikiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iSFRNTCBBY3JvbnltIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9IkhUTUwgQWRkcmVzcyIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJIVE1MIENpdGUiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iSFRNTCBDb2RlIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9IkhUTUwgRGVmaW5pdGlvbiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJIVE1MIEtleWJvYXJkIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9IkhUTUwgUHJlZm9ybWF0dGVkIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9IkhUTUwgU2FtcGxlIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9IkhUTUwgVHlwZXdyaXRlciIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJIVE1MIFZhcmlhYmxlIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9Ik5vcm1hbCBUYWJsZSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJhbm5vdGF0aW9uIHN1YmplY3QiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iTm8gTGlzdCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJPdXRsaW5lIExpc3QgMSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJPdXRsaW5lIExpc3QgMiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJPdXRsaW5lIExpc3QgMyIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJUYWJsZSBTaW1wbGUgMSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJUYWJsZSBTaW1wbGUgMiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJUYWJsZSBTaW1wbGUgMyIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJUYWJsZSBDbGFzc2ljIDEiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iVGFibGUgQ2xhc3NpYyAyIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9IlRhYmxlIENsYXNzaWMgMyIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJUYWJsZSBDbGFzc2ljIDQiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iVGFibGUgQ29sb3JmdWwgMSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJUYWJsZSBDb2xvcmZ1bCAyIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9IlRhYmxlIENvbG9yZnVsIDMiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iVGFibGUgQ29sdW1ucyAxIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9IlRhYmxlIENvbHVtbnMgMiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJUYWJsZSBDb2x1bW5zIDMiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iVGFibGUgQ29sdW1ucyA0Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9IlRhYmxlIENvbHVtbnMgNSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJUYWJsZSBHcmlkIDEiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iVGFibGUgR3JpZCAyIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9IlRhYmxlIEdyaWQgMyIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJUYWJsZSBHcmlkIDQiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iVGFibGUgR3JpZCA1Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9IlRhYmxlIEdyaWQgNiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJUYWJsZSBHcmlkIDciLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iVGFibGUgR3JpZCA4Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9IlRhYmxlIExpc3QgMSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJUYWJsZSBMaXN0IDIiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iVGFibGUgTGlzdCAzIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9IlRhYmxlIExpc3QgNCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJUYWJsZSBMaXN0IDUiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iVGFibGUgTGlzdCA2Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9IlRhYmxlIExpc3QgNyIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJUYWJsZSBMaXN0IDgiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iVGFibGUgM0QgZWZmZWN0cyAxIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9IlRhYmxlIDNEIGVmZmVjdHMgMiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJUYWJsZSAzRCBlZmZlY3RzIDMiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iVGFibGUgQ29udGVtcG9yYXJ5Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9IlRhYmxlIEVsZWdhbnQiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iVGFibGUgUHJvZmVzc2lvbmFsIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9IlRhYmxlIFN1YnRsZSAxIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9IlRhYmxlIFN1YnRsZSAyIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9IlRhYmxlIFdlYiAxIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9IlRhYmxlIFdlYiAyIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9IlRhYmxlIFdlYiAzIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9IkJhbGxvb24gVGV4dCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjM5IiBOYW1lPSJUYWJsZSBHcmlkIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9IlRhYmxlIFRoZW1lIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBOYW1lPSJQbGFjZWhvbGRlciBUZXh0Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iMSIgUUZvcm1hdD0idHJ1ZSIgTmFtZT0iTm8gU3BhY2luZyIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjYwIiBOYW1lPSJMaWdodCBTaGFkaW5nIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjEiIE5hbWU9IkxpZ2h0IExpc3QiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2MiIgTmFtZT0iTGlnaHQgR3JpZCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjYzIiBOYW1lPSJNZWRpdW0gU2hhZGluZyAxIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjQiIE5hbWU9Ik1lZGl1bSBTaGFkaW5nIDIiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2NSIgTmFtZT0iTWVkaXVtIExpc3QgMSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjY2IiBOYW1lPSJNZWRpdW0gTGlzdCAyIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjciIE5hbWU9Ik1lZGl1bSBHcmlkIDEiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2OCIgTmFtZT0iTWVkaXVtIEdyaWQgMiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjY5IiBOYW1lPSJNZWRpdW0gR3JpZCAzIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNzAiIE5hbWU9IkRhcmsgTGlzdCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjcxIiBOYW1lPSJDb2xvcmZ1bCBTaGFkaW5nIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNzIiIE5hbWU9IkNvbG9yZnVsIExpc3QiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI3MyIgTmFtZT0iQ29sb3JmdWwgR3JpZCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjYwIiBOYW1lPSJMaWdodCBTaGFkaW5nIEFjY2VudCAxIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjEiIE5hbWU9IkxpZ2h0IExpc3QgQWNjZW50IDEiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2MiIgTmFtZT0iTGlnaHQgR3JpZCBBY2NlbnQgMSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjYzIiBOYW1lPSJNZWRpdW0gU2hhZGluZyAxIEFjY2VudCAxIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjQiIE5hbWU9Ik1lZGl1bSBTaGFkaW5nIDIgQWNjZW50IDEiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2NSIgTmFtZT0iTWVkaXVtIExpc3QgMSBBY2NlbnQgMSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgTmFtZT0iUmV2aXNpb24iLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSIzNCIgUUZvcm1hdD0idHJ1ZSIKKyAgIE5hbWU9Ikxpc3QgUGFyYWdyYXBoIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iMjkiIFFGb3JtYXQ9InRydWUiIE5hbWU9IlF1b3RlIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iMzAiIFFGb3JtYXQ9InRydWUiCisgICBOYW1lPSJJbnRlbnNlIFF1b3RlIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjYiIE5hbWU9Ik1lZGl1bSBMaXN0IDIgQWNjZW50IDEiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2NyIgTmFtZT0iTWVkaXVtIEdyaWQgMSBBY2NlbnQgMSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjY4IiBOYW1lPSJNZWRpdW0gR3JpZCAyIEFjY2VudCAxIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjkiIE5hbWU9Ik1lZGl1bSBHcmlkIDMgQWNjZW50IDEiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI3MCIgTmFtZT0iRGFyayBMaXN0IEFjY2VudCAxIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNzEiIE5hbWU9IkNvbG9yZnVsIFNoYWRpbmcgQWNjZW50IDEiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI3MiIgTmFtZT0iQ29sb3JmdWwgTGlzdCBBY2NlbnQgMSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjczIiBOYW1lPSJDb2xvcmZ1bCBHcmlkIEFjY2VudCAxIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjAiIE5hbWU9IkxpZ2h0IFNoYWRpbmcgQWNjZW50IDIiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2MSIgTmFtZT0iTGlnaHQgTGlzdCBBY2NlbnQgMiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjYyIiBOYW1lPSJMaWdodCBHcmlkIEFjY2VudCAyIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjMiIE5hbWU9Ik1lZGl1bSBTaGFkaW5nIDEgQWNjZW50IDIiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2NCIgTmFtZT0iTWVkaXVtIFNoYWRpbmcgMiBBY2NlbnQgMiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjY1IiBOYW1lPSJNZWRpdW0gTGlzdCAxIEFjY2VudCAyIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjYiIE5hbWU9Ik1lZGl1bSBMaXN0IDIgQWNjZW50IDIiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2NyIgTmFtZT0iTWVkaXVtIEdyaWQgMSBBY2NlbnQgMiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjY4IiBOYW1lPSJNZWRpdW0gR3JpZCAyIEFjY2VudCAyIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjkiIE5hbWU9Ik1lZGl1bSBHcmlkIDMgQWNjZW50IDIiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI3MCIgTmFtZT0iRGFyayBMaXN0IEFjY2VudCAyIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNzEiIE5hbWU9IkNvbG9yZnVsIFNoYWRpbmcgQWNjZW50IDIiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI3MiIgTmFtZT0iQ29sb3JmdWwgTGlzdCBBY2NlbnQgMiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjczIiBOYW1lPSJDb2xvcmZ1bCBHcmlkIEFjY2VudCAyIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjAiIE5hbWU9IkxpZ2h0IFNoYWRpbmcgQWNjZW50IDMiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2MSIgTmFtZT0iTGlnaHQgTGlzdCBBY2NlbnQgMyIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjYyIiBOYW1lPSJMaWdodCBHcmlkIEFjY2VudCAzIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjMiIE5hbWU9Ik1lZGl1bSBTaGFkaW5nIDEgQWNjZW50IDMiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2NCIgTmFtZT0iTWVkaXVtIFNoYWRpbmcgMiBBY2NlbnQgMyIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjY1IiBOYW1lPSJNZWRpdW0gTGlzdCAxIEFjY2VudCAzIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjYiIE5hbWU9Ik1lZGl1bSBMaXN0IDIgQWNjZW50IDMiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2NyIgTmFtZT0iTWVkaXVtIEdyaWQgMSBBY2NlbnQgMyIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjY4IiBOYW1lPSJNZWRpdW0gR3JpZCAyIEFjY2VudCAzIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjkiIE5hbWU9Ik1lZGl1bSBHcmlkIDMgQWNjZW50IDMiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI3MCIgTmFtZT0iRGFyayBMaXN0IEFjY2VudCAzIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNzEiIE5hbWU9IkNvbG9yZnVsIFNoYWRpbmcgQWNjZW50IDMiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI3MiIgTmFtZT0iQ29sb3JmdWwgTGlzdCBBY2NlbnQgMyIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjczIiBOYW1lPSJDb2xvcmZ1bCBHcmlkIEFjY2VudCAzIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjAiIE5hbWU9IkxpZ2h0IFNoYWRpbmcgQWNjZW50IDQiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2MSIgTmFtZT0iTGlnaHQgTGlzdCBBY2NlbnQgNCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjYyIiBOYW1lPSJMaWdodCBHcmlkIEFjY2VudCA0Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjMiIE5hbWU9Ik1lZGl1bSBTaGFkaW5nIDEgQWNjZW50IDQiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2NCIgTmFtZT0iTWVkaXVtIFNoYWRpbmcgMiBBY2NlbnQgNCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjY1IiBOYW1lPSJNZWRpdW0gTGlzdCAxIEFjY2VudCA0Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjYiIE5hbWU9Ik1lZGl1bSBMaXN0IDIgQWNjZW50IDQiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2NyIgTmFtZT0iTWVkaXVtIEdyaWQgMSBBY2NlbnQgNCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjY4IiBOYW1lPSJNZWRpdW0gR3JpZCAyIEFjY2VudCA0Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjkiIE5hbWU9Ik1lZGl1bSBHcmlkIDMgQWNjZW50IDQiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI3MCIgTmFtZT0iRGFyayBMaXN0IEFjY2VudCA0Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNzEiIE5hbWU9IkNvbG9yZnVsIFNoYWRpbmcgQWNjZW50IDQiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI3MiIgTmFtZT0iQ29sb3JmdWwgTGlzdCBBY2NlbnQgNCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjczIiBOYW1lPSJDb2xvcmZ1bCBHcmlkIEFjY2VudCA0Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjAiIE5hbWU9IkxpZ2h0IFNoYWRpbmcgQWNjZW50IDUiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2MSIgTmFtZT0iTGlnaHQgTGlzdCBBY2NlbnQgNSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjYyIiBOYW1lPSJMaWdodCBHcmlkIEFjY2VudCA1Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjMiIE5hbWU9Ik1lZGl1bSBTaGFkaW5nIDEgQWNjZW50IDUiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2NCIgTmFtZT0iTWVkaXVtIFNoYWRpbmcgMiBBY2NlbnQgNSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjY1IiBOYW1lPSJNZWRpdW0gTGlzdCAxIEFjY2VudCA1Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjYiIE5hbWU9Ik1lZGl1bSBMaXN0IDIgQWNjZW50IDUiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2NyIgTmFtZT0iTWVkaXVtIEdyaWQgMSBBY2NlbnQgNSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjY4IiBOYW1lPSJNZWRpdW0gR3JpZCAyIEFjY2VudCA1Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjkiIE5hbWU9Ik1lZGl1bSBHcmlkIDMgQWNjZW50IDUiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI3MCIgTmFtZT0iRGFyayBMaXN0IEFjY2VudCA1Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNzEiIE5hbWU9IkNvbG9yZnVsIFNoYWRpbmcgQWNjZW50IDUiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI3MiIgTmFtZT0iQ29sb3JmdWwgTGlzdCBBY2NlbnQgNSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjczIiBOYW1lPSJDb2xvcmZ1bCBHcmlkIEFjY2VudCA1Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjAiIE5hbWU9IkxpZ2h0IFNoYWRpbmcgQWNjZW50IDYiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2MSIgTmFtZT0iTGlnaHQgTGlzdCBBY2NlbnQgNiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjYyIiBOYW1lPSJMaWdodCBHcmlkIEFjY2VudCA2Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjMiIE5hbWU9Ik1lZGl1bSBTaGFkaW5nIDEgQWNjZW50IDYiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2NCIgTmFtZT0iTWVkaXVtIFNoYWRpbmcgMiBBY2NlbnQgNiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjY1IiBOYW1lPSJNZWRpdW0gTGlzdCAxIEFjY2VudCA2Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjYiIE5hbWU9Ik1lZGl1bSBMaXN0IDIgQWNjZW50IDYiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2NyIgTmFtZT0iTWVkaXVtIEdyaWQgMSBBY2NlbnQgNiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjY4IiBOYW1lPSJNZWRpdW0gR3JpZCAyIEFjY2VudCA2Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjkiIE5hbWU9Ik1lZGl1bSBHcmlkIDMgQWNjZW50IDYiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI3MCIgTmFtZT0iRGFyayBMaXN0IEFjY2VudCA2Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNzEiIE5hbWU9IkNvbG9yZnVsIFNoYWRpbmcgQWNjZW50IDYiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI3MiIgTmFtZT0iQ29sb3JmdWwgTGlzdCBBY2NlbnQgNiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjczIiBOYW1lPSJDb2xvcmZ1bCBHcmlkIEFjY2VudCA2Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iMTkiIFFGb3JtYXQ9InRydWUiCisgICBOYW1lPSJTdWJ0bGUgRW1waGFzaXMiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSIyMSIgUUZvcm1hdD0idHJ1ZSIKKyAgIE5hbWU9IkludGVuc2UgRW1waGFzaXMiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSIzMSIgUUZvcm1hdD0idHJ1ZSIKKyAgIE5hbWU9IlN1YnRsZSBSZWZlcmVuY2UiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSIzMiIgUUZvcm1hdD0idHJ1ZSIKKyAgIE5hbWU9IkludGVuc2UgUmVmZXJlbmNlIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iMzMiIFFGb3JtYXQ9InRydWUiIE5hbWU9IkJvb2sgVGl0bGUiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSIzNyIgU2VtaUhpZGRlbj0idHJ1ZSIKKyAgIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIiBOYW1lPSJCaWJsaW9ncmFwaHkiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSIzOSIgU2VtaUhpZGRlbj0idHJ1ZSIKKyAgIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIiBRRm9ybWF0PSJ0cnVlIiBOYW1lPSJUT0MgSGVhZGluZyIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQxIiBOYW1lPSJQbGFpbiBUYWJsZSAxIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDIiIE5hbWU9IlBsYWluIFRhYmxlIDIiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI0MyIgTmFtZT0iUGxhaW4gVGFibGUgMyIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQ0IiBOYW1lPSJQbGFpbiBUYWJsZSA0Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDUiIE5hbWU9IlBsYWluIFRhYmxlIDUiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI0MCIgTmFtZT0iR3JpZCBUYWJsZSBMaWdodCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQ2IiBOYW1lPSJHcmlkIFRhYmxlIDEgTGlnaHQiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI0NyIgTmFtZT0iR3JpZCBUYWJsZSAyIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDgiIE5hbWU9IkdyaWQgVGFibGUgMyIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQ5IiBOYW1lPSJHcmlkIFRhYmxlIDQiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI1MCIgTmFtZT0iR3JpZCBUYWJsZSA1IERhcmsiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI1MSIgTmFtZT0iR3JpZCBUYWJsZSA2IENvbG9yZnVsIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNTIiIE5hbWU9IkdyaWQgVGFibGUgNyBDb2xvcmZ1bCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQ2IgorICAgTmFtZT0iR3JpZCBUYWJsZSAxIExpZ2h0IEFjY2VudCAxIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDciIE5hbWU9IkdyaWQgVGFibGUgMiBBY2NlbnQgMSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQ4IiBOYW1lPSJHcmlkIFRhYmxlIDMgQWNjZW50IDEiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI0OSIgTmFtZT0iR3JpZCBUYWJsZSA0IEFjY2VudCAxIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNTAiIE5hbWU9IkdyaWQgVGFibGUgNSBEYXJrIEFjY2VudCAxIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNTEiCisgICBOYW1lPSJHcmlkIFRhYmxlIDYgQ29sb3JmdWwgQWNjZW50IDEiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI1MiIKKyAgIE5hbWU9IkdyaWQgVGFibGUgNyBDb2xvcmZ1bCBBY2NlbnQgMSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQ2IgorICAgTmFtZT0iR3JpZCBUYWJsZSAxIExpZ2h0IEFjY2VudCAyIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDciIE5hbWU9IkdyaWQgVGFibGUgMiBBY2NlbnQgMiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQ4IiBOYW1lPSJHcmlkIFRhYmxlIDMgQWNjZW50IDIiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI0OSIgTmFtZT0iR3JpZCBUYWJsZSA0IEFjY2VudCAyIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNTAiIE5hbWU9IkdyaWQgVGFibGUgNSBEYXJrIEFjY2VudCAyIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNTEiCisgICBOYW1lPSJHcmlkIFRhYmxlIDYgQ29sb3JmdWwgQWNjZW50IDIiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI1MiIKKyAgIE5hbWU9IkdyaWQgVGFibGUgNyBDb2xvcmZ1bCBBY2NlbnQgMiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQ2IgorICAgTmFtZT0iR3JpZCBUYWJsZSAxIExpZ2h0IEFjY2VudCAzIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDciIE5hbWU9IkdyaWQgVGFibGUgMiBBY2NlbnQgMyIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQ4IiBOYW1lPSJHcmlkIFRhYmxlIDMgQWNjZW50IDMiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI0OSIgTmFtZT0iR3JpZCBUYWJsZSA0IEFjY2VudCAzIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNTAiIE5hbWU9IkdyaWQgVGFibGUgNSBEYXJrIEFjY2VudCAzIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNTEiCisgICBOYW1lPSJHcmlkIFRhYmxlIDYgQ29sb3JmdWwgQWNjZW50IDMiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI1MiIKKyAgIE5hbWU9IkdyaWQgVGFibGUgNyBDb2xvcmZ1bCBBY2NlbnQgMyIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQ2IgorICAgTmFtZT0iR3JpZCBUYWJsZSAxIExpZ2h0IEFjY2VudCA0Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDciIE5hbWU9IkdyaWQgVGFibGUgMiBBY2NlbnQgNCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQ4IiBOYW1lPSJHcmlkIFRhYmxlIDMgQWNjZW50IDQiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI0OSIgTmFtZT0iR3JpZCBUYWJsZSA0IEFjY2VudCA0Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNTAiIE5hbWU9IkdyaWQgVGFibGUgNSBEYXJrIEFjY2VudCA0Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNTEiCisgICBOYW1lPSJHcmlkIFRhYmxlIDYgQ29sb3JmdWwgQWNjZW50IDQiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI1MiIKKyAgIE5hbWU9IkdyaWQgVGFibGUgNyBDb2xvcmZ1bCBBY2NlbnQgNCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQ2IgorICAgTmFtZT0iR3JpZCBUYWJsZSAxIExpZ2h0IEFjY2VudCA1Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDciIE5hbWU9IkdyaWQgVGFibGUgMiBBY2NlbnQgNSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQ4IiBOYW1lPSJHcmlkIFRhYmxlIDMgQWNjZW50IDUiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI0OSIgTmFtZT0iR3JpZCBUYWJsZSA0IEFjY2VudCA1Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNTAiIE5hbWU9IkdyaWQgVGFibGUgNSBEYXJrIEFjY2VudCA1Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNTEiCisgICBOYW1lPSJHcmlkIFRhYmxlIDYgQ29sb3JmdWwgQWNjZW50IDUiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI1MiIKKyAgIE5hbWU9IkdyaWQgVGFibGUgNyBDb2xvcmZ1bCBBY2NlbnQgNSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQ2IgorICAgTmFtZT0iR3JpZCBUYWJsZSAxIExpZ2h0IEFjY2VudCA2Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDciIE5hbWU9IkdyaWQgVGFibGUgMiBBY2NlbnQgNiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQ4IiBOYW1lPSJHcmlkIFRhYmxlIDMgQWNjZW50IDYiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI0OSIgTmFtZT0iR3JpZCBUYWJsZSA0IEFjY2VudCA2Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNTAiIE5hbWU9IkdyaWQgVGFibGUgNSBEYXJrIEFjY2VudCA2Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNTEiCisgICBOYW1lPSJHcmlkIFRhYmxlIDYgQ29sb3JmdWwgQWNjZW50IDYiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI1MiIKKyAgIE5hbWU9IkdyaWQgVGFibGUgNyBDb2xvcmZ1bCBBY2NlbnQgNiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQ2IiBOYW1lPSJMaXN0IFRhYmxlIDEgTGlnaHQiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI0NyIgTmFtZT0iTGlzdCBUYWJsZSAyIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDgiIE5hbWU9Ikxpc3QgVGFibGUgMyIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQ5IiBOYW1lPSJMaXN0IFRhYmxlIDQiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI1MCIgTmFtZT0iTGlzdCBUYWJsZSA1IERhcmsiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI1MSIgTmFtZT0iTGlzdCBUYWJsZSA2IENvbG9yZnVsIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNTIiIE5hbWU9Ikxpc3QgVGFibGUgNyBDb2xvcmZ1bCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQ2IgorICAgTmFtZT0iTGlzdCBUYWJsZSAxIExpZ2h0IEFjY2VudCAxIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDciIE5hbWU9Ikxpc3QgVGFibGUgMiBBY2NlbnQgMSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQ4IiBOYW1lPSJMaXN0IFRhYmxlIDMgQWNjZW50IDEiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI0OSIgTmFtZT0iTGlzdCBUYWJsZSA0IEFjY2VudCAxIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNTAiIE5hbWU9Ikxpc3QgVGFibGUgNSBEYXJrIEFjY2VudCAxIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNTEiCisgICBOYW1lPSJMaXN0IFRhYmxlIDYgQ29sb3JmdWwgQWNjZW50IDEiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI1MiIKKyAgIE5hbWU9Ikxpc3QgVGFibGUgNyBDb2xvcmZ1bCBBY2NlbnQgMSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQ2IgorICAgTmFtZT0iTGlzdCBUYWJsZSAxIExpZ2h0IEFjY2VudCAyIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDciIE5hbWU9Ikxpc3QgVGFibGUgMiBBY2NlbnQgMiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQ4IiBOYW1lPSJMaXN0IFRhYmxlIDMgQWNjZW50IDIiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI0OSIgTmFtZT0iTGlzdCBUYWJsZSA0IEFjY2VudCAyIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNTAiIE5hbWU9Ikxpc3QgVGFibGUgNSBEYXJrIEFjY2VudCAyIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNTEiCisgICBOYW1lPSJMaXN0IFRhYmxlIDYgQ29sb3JmdWwgQWNjZW50IDIiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI1MiIKKyAgIE5hbWU9Ikxpc3QgVGFibGUgNyBDb2xvcmZ1bCBBY2NlbnQgMiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQ2IgorICAgTmFtZT0iTGlzdCBUYWJsZSAxIExpZ2h0IEFjY2VudCAzIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDciIE5hbWU9Ikxpc3QgVGFibGUgMiBBY2NlbnQgMyIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQ4IiBOYW1lPSJMaXN0IFRhYmxlIDMgQWNjZW50IDMiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI0OSIgTmFtZT0iTGlzdCBUYWJsZSA0IEFjY2VudCAzIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNTAiIE5hbWU9Ikxpc3QgVGFibGUgNSBEYXJrIEFjY2VudCAzIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNTEiCisgICBOYW1lPSJMaXN0IFRhYmxlIDYgQ29sb3JmdWwgQWNjZW50IDMiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI1MiIKKyAgIE5hbWU9Ikxpc3QgVGFibGUgNyBDb2xvcmZ1bCBBY2NlbnQgMyIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQ2IgorICAgTmFtZT0iTGlzdCBUYWJsZSAxIExpZ2h0IEFjY2VudCA0Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDciIE5hbWU9Ikxpc3QgVGFibGUgMiBBY2NlbnQgNCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQ4IiBOYW1lPSJMaXN0IFRhYmxlIDMgQWNjZW50IDQiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI0OSIgTmFtZT0iTGlzdCBUYWJsZSA0IEFjY2VudCA0Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNTAiIE5hbWU9Ikxpc3QgVGFibGUgNSBEYXJrIEFjY2VudCA0Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNTEiCisgICBOYW1lPSJMaXN0IFRhYmxlIDYgQ29sb3JmdWwgQWNjZW50IDQiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI1MiIKKyAgIE5hbWU9Ikxpc3QgVGFibGUgNyBDb2xvcmZ1bCBBY2NlbnQgNCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQ2IgorICAgTmFtZT0iTGlzdCBUYWJsZSAxIExpZ2h0IEFjY2VudCA1Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDciIE5hbWU9Ikxpc3QgVGFibGUgMiBBY2NlbnQgNSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQ4IiBOYW1lPSJMaXN0IFRhYmxlIDMgQWNjZW50IDUiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI0OSIgTmFtZT0iTGlzdCBUYWJsZSA0IEFjY2VudCA1Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNTAiIE5hbWU9Ikxpc3QgVGFibGUgNSBEYXJrIEFjY2VudCA1Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNTEiCisgICBOYW1lPSJMaXN0IFRhYmxlIDYgQ29sb3JmdWwgQWNjZW50IDUiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI1MiIKKyAgIE5hbWU9Ikxpc3QgVGFibGUgNyBDb2xvcmZ1bCBBY2NlbnQgNSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQ2IgorICAgTmFtZT0iTGlzdCBUYWJsZSAxIExpZ2h0IEFjY2VudCA2Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDciIE5hbWU9Ikxpc3QgVGFibGUgMiBBY2NlbnQgNiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQ4IiBOYW1lPSJMaXN0IFRhYmxlIDMgQWNjZW50IDYiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI0OSIgTmFtZT0iTGlzdCBUYWJsZSA0IEFjY2VudCA2Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNTAiIE5hbWU9Ikxpc3QgVGFibGUgNSBEYXJrIEFjY2VudCA2Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNTEiCisgICBOYW1lPSJMaXN0IFRhYmxlIDYgQ29sb3JmdWwgQWNjZW50IDYiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI1MiIKKyAgIE5hbWU9Ikxpc3QgVGFibGUgNyBDb2xvcmZ1bCBBY2NlbnQgNiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJNZW50aW9uIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9IlNtYXJ0IEh5cGVybGluayIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJIYXNodGFnIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9IlVucmVzb2x2ZWQgTWVudGlvbiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJTbWFydCBMaW5rIi8+CisgPC93OkxhdGVudFN0eWxlcz4KKzwveG1sPjwhW2VuZGlmXS0tPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN0eWxlPgorPCEtLQorIC8qIEZvbnQgRGVmaW5pdGlvbnMgKi8KKyBAZm9udC1mYWNlCisJe2ZvbnQtZmFtaWx5OldpbmdkaW5nczsKKwlwYW5vc2UtMTo1IDAgMCAwIDAgMCAwIDAgMCAwOworCW1zby1mb250LWNoYXJzZXQ6MjsKKwltc28tZ2VuZXJpYy1mb250LWZhbWlseTphdXRvOworCW1zby1mb250LXBpdGNoOnZhcmlhYmxlOworCW1zby1mb250LXNpZ25hdHVyZTowIDI2ODQzNTQ1NiAwIDAgLTIxNDc0ODM2NDggMDt9CitAZm9udC1mYWNlCisJe2ZvbnQtZmFtaWx5OiJDYW1icmlhIE1hdGgiOworCXBhbm9zZS0xOjIgNCA1IDMgNSA0IDYgMyAyIDQ7CisJbXNvLWZvbnQtY2hhcnNldDowOworCW1zby1nZW5lcmljLWZvbnQtZmFtaWx5OnJvbWFuOworCW1zby1mb250LXBpdGNoOnZhcmlhYmxlOworCW1zby1mb250LXNpZ25hdHVyZTotNTM2ODY5MTIxIDExMDczMDU3MjcgMzM1NTQ0MzIgMCA0MTUgMDt9CitAZm9udC1mYWNlCisJe2ZvbnQtZmFtaWx5OlZlcmRhbmE7CisJcGFub3NlLTE6MiAxMSA2IDQgMyA1IDQgNCAyIDQ7CisJbXNvLWZvbnQtY2hhcnNldDowOworCW1zby1nZW5lcmljLWZvbnQtZmFtaWx5OnN3aXNzOworCW1zby1mb250LXBpdGNoOnZhcmlhYmxlOworCW1zby1mb250LXNpZ25hdHVyZTotMTYxMDYxMDk0NSAxMDczNzUwMTA3IDE2IDAgNDE1IDA7fQorQGZvbnQtZmFjZQorCXtmb250LWZhbWlseToiU2Vnb2UgVUkiOworCXBhbm9zZS0xOjIgMTEgNSAyIDQgMiA0IDIgMiAzOworCW1zby1mb250LWNoYXJzZXQ6MDsKKwltc28tZ2VuZXJpYy1mb250LWZhbWlseTpzd2lzczsKKwltc28tZm9udC1waXRjaDp2YXJpYWJsZTsKKwltc28tZm9udC1zaWduYXR1cmU6LTQ2OTc1MDAxNyAtMTA3MzY4MzMyOSA5IDAgNTExIDA7fQorIC8qIFN0eWxlIERlZmluaXRpb25zICovCisgcC5Nc29Ob3JtYWwsIGxpLk1zb05vcm1hbCwgZGl2Lk1zb05vcm1hbAorCXttc28tc3R5bGUtdW5oaWRlOm5vOworCW1zby1zdHlsZS1wYXJlbnQ6IiI7CisJbWFyZ2luOjBpbjsKKwlsaW5lLWhlaWdodDoxMTUlOworCW1zby1wYWdpbmF0aW9uOndpZG93LW9ycGhhbjsKKwlmb250LXNpemU6MTEuMHB0OworCWZvbnQtZmFtaWx5OiJBcmlhbCIsc2Fucy1zZXJpZjsKKwltc28tZmFyZWFzdC1mb250LWZhbWlseTpBcmlhbDsKKwltc28tZmFyZWFzdC10aGVtZS1mb250Om1pbm9yLWxhdGluOworCW1zby1iaWRpLWZvbnQtZmFtaWx5OiJUaW1lcyBOZXcgUm9tYW4iOworCW1zby1iaWRpLXRoZW1lLWZvbnQ6bWlub3ItYmlkaTsKKwljb2xvcjojMDAyMDUyOworCW1zby1hbnNpLWxhbmd1YWdlOkVOLVVTOworCW1zby1mYXJlYXN0LWxhbmd1YWdlOkVOLVVTO30KKy5Nc29DaHBEZWZhdWx0CisJe21zby1zdHlsZS10eXBlOmV4cG9ydC1vbmx5OworCW1zby1kZWZhdWx0LXByb3BzOnllczsKKwlmb250LWZhbWlseToiQXJpYWwiLHNhbnMtc2VyaWY7CisJbXNvLWFzY2lpLWZvbnQtZmFtaWx5OkFyaWFsOworCW1zby1mYXJlYXN0LWZvbnQtZmFtaWx5OkFyaWFsOworCW1zby1mYXJlYXN0LXRoZW1lLWZvbnQ6bWlub3ItbGF0aW47CisJbXNvLWhhbnNpLWZvbnQtZmFtaWx5OkFyaWFsOworCW1zby1iaWRpLWZvbnQtZmFtaWx5OiJUaW1lcyBOZXcgUm9tYW4iOworCW1zby1iaWRpLXRoZW1lLWZvbnQ6bWlub3ItYmlkaTsKKwljb2xvcjojMDAyMDUyOworCW1zby1hbnNpLWxhbmd1YWdlOkVOLVVTOworCW1zby1mYXJlYXN0LWxhbmd1YWdlOkVOLVVTO30KKy5Nc29QYXBEZWZhdWx0CisJe21zby1zdHlsZS10eXBlOmV4cG9ydC1vbmx5OworCWxpbmUtaGVpZ2h0OjExNSU7fQorQHBhZ2UgV29yZFNlY3Rpb24xCisJe3NpemU6NTk1LjNwdCA4NDEuOXB0OworCW1hcmdpbjoxLjBpbiAxLjBpbiAxLjBpbiAxLjBpbjsKKwltc28taGVhZGVyLW1hcmdpbjouNWluOworCW1zby1mb290ZXItbWFyZ2luOi41aW47CisJbXNvLXBhcGVyLXNvdXJjZTowO30KK2Rpdi5Xb3JkU2VjdGlvbjEKKwl7cGFnZTpXb3JkU2VjdGlvbjE7fQorIC8qIExpc3QgRGVmaW5pdGlvbnMgKi8KKyBAbGlzdCBsMAorCXttc28tbGlzdC1pZDoxMjU1NTUwOTEwOworCW1zby1saXN0LXRlbXBsYXRlLWlkczotMTkxNTIxNDIwNDt9CitAbGlzdCBsMDpsZXZlbDEKKwl7bXNvLWxldmVsLW51bWJlci1mb3JtYXQ6YnVsbGV0OworCW1zby1sZXZlbC10ZXh0OiYjNjE2MjM7OworCW1zby1sZXZlbC10YWItc3RvcDouNWluOworCW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246bGVmdDsKKwl0ZXh0LWluZGVudDotLjI1aW47CisJbXNvLWFuc2ktZm9udC1zaXplOjEwLjBwdDsKKwlmb250LWZhbWlseTpTeW1ib2w7fQorQGxpc3QgbDA6bGV2ZWwyCisJe21zby1sZXZlbC1udW1iZXItZm9ybWF0OmJ1bGxldDsKKwltc28tbGV2ZWwtdGV4dDpvOworCW1zby1sZXZlbC10YWItc3RvcDoxLjBpbjsKKwltc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7CisJdGV4dC1pbmRlbnQ6LS4yNWluOworCW1zby1hbnNpLWZvbnQtc2l6ZToxMC4wcHQ7CisJZm9udC1mYW1pbHk6IkNvdXJpZXIgTmV3IjsKKwltc28tYmlkaS1mb250LWZhbWlseToiVGltZXMgTmV3IFJvbWFuIjt9CitAbGlzdCBsMDpsZXZlbDMKKwl7bXNvLWxldmVsLW51bWJlci1mb3JtYXQ6YnVsbGV0OworCW1zby1sZXZlbC10ZXh0OiYjNjE2MDc7OworCW1zby1sZXZlbC10YWItc3RvcDoxLjVpbjsKKwltc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7CisJdGV4dC1pbmRlbnQ6LS4yNWluOworCW1zby1hbnNpLWZvbnQtc2l6ZToxMC4wcHQ7CisJZm9udC1mYW1pbHk6V2luZ2RpbmdzO30KK0BsaXN0IGwwOmxldmVsNAorCXttc28tbGV2ZWwtbnVtYmVyLWZvcm1hdDpidWxsZXQ7CisJbXNvLWxldmVsLXRleHQ6JiM2MTYwNzs7CisJbXNvLWxldmVsLXRhYi1zdG9wOjIuMGluOworCW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246bGVmdDsKKwl0ZXh0LWluZGVudDotLjI1aW47CisJbXNvLWFuc2ktZm9udC1zaXplOjEwLjBwdDsKKwlmb250LWZhbWlseTpXaW5nZGluZ3M7fQorQGxpc3QgbDA6bGV2ZWw1CisJe21zby1sZXZlbC1udW1iZXItZm9ybWF0OmJ1bGxldDsKKwltc28tbGV2ZWwtdGV4dDomIzYxNjA3OzsKKwltc28tbGV2ZWwtdGFiLXN0b3A6Mi41aW47CisJbXNvLWxldmVsLW51bWJlci1wb3NpdGlvbjpsZWZ0OworCXRleHQtaW5kZW50Oi0uMjVpbjsKKwltc28tYW5zaS1mb250LXNpemU6MTAuMHB0OworCWZvbnQtZmFtaWx5OldpbmdkaW5nczt9CitAbGlzdCBsMDpsZXZlbDYKKwl7bXNvLWxldmVsLW51bWJlci1mb3JtYXQ6YnVsbGV0OworCW1zby1sZXZlbC10ZXh0OiYjNjE2MDc7OworCW1zby1sZXZlbC10YWItc3RvcDozLjBpbjsKKwltc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7CisJdGV4dC1pbmRlbnQ6LS4yNWluOworCW1zby1hbnNpLWZvbnQtc2l6ZToxMC4wcHQ7CisJZm9udC1mYW1pbHk6V2luZ2RpbmdzO30KK0BsaXN0IGwwOmxldmVsNworCXttc28tbGV2ZWwtbnVtYmVyLWZvcm1hdDpidWxsZXQ7CisJbXNvLWxldmVsLXRleHQ6JiM2MTYwNzs7CisJbXNvLWxldmVsLXRhYi1zdG9wOjMuNWluOworCW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246bGVmdDsKKwl0ZXh0LWluZGVudDotLjI1aW47CisJbXNvLWFuc2ktZm9udC1zaXplOjEwLjBwdDsKKwlmb250LWZhbWlseTpXaW5nZGluZ3M7fQorQGxpc3QgbDA6bGV2ZWw4CisJe21zby1sZXZlbC1udW1iZXItZm9ybWF0OmJ1bGxldDsKKwltc28tbGV2ZWwtdGV4dDomIzYxNjA3OzsKKwltc28tbGV2ZWwtdGFiLXN0b3A6NC4waW47CisJbXNvLWxldmVsLW51bWJlci1wb3NpdGlvbjpsZWZ0OworCXRleHQtaW5kZW50Oi0uMjVpbjsKKwltc28tYW5zaS1mb250LXNpemU6MTAuMHB0OworCWZvbnQtZmFtaWx5OldpbmdkaW5nczt9CitAbGlzdCBsMDpsZXZlbDkKKwl7bXNvLWxldmVsLW51bWJlci1mb3JtYXQ6YnVsbGV0OworCW1zby1sZXZlbC10ZXh0OiYjNjE2MDc7OworCW1zby1sZXZlbC10YWItc3RvcDo0LjVpbjsKKwltc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7CisJdGV4dC1pbmRlbnQ6LS4yNWluOworCW1zby1hbnNpLWZvbnQtc2l6ZToxMC4wcHQ7CisJZm9udC1mYW1pbHk6V2luZ2RpbmdzO30KK29sCisJe21hcmdpbi1ib3R0b206MGluO30KK3VsCisJe21hcmdpbi1ib3R0b206MGluO30KKy0tPgorPC9zdHlsZT48IS0tW2lmIGd0ZSBtc28gMTBdPgorPHN0eWxlPgorIC8qIFN0eWxlIERlZmluaXRpb25zICovCisgdGFibGUuTXNvTm9ybWFsVGFibGUKKwl7bXNvLXN0eWxlLW5hbWU6IlRhYmxlIE5vcm1hbCI7CisJbXNvLXRzdHlsZS1yb3diYW5kLXNpemU6MDsKKwltc28tdHN0eWxlLWNvbGJhbmQtc2l6ZTowOworCW1zby1zdHlsZS1ub3Nob3c6eWVzOworCW1zby1zdHlsZS1wcmlvcml0eTo5OTsKKwltc28tc3R5bGUtcGFyZW50OiIiOworCW1zby1wYWRkaW5nLWFsdDowaW4gNS40cHQgMGluIDUuNHB0OworCW1zby1wYXJhLW1hcmdpbjowaW47CisJbGluZS1oZWlnaHQ6MTE1JTsKKwltc28tcGFnaW5hdGlvbjp3aWRvdy1vcnBoYW47CisJZm9udC1zaXplOjExLjBwdDsKKwlmb250LWZhbWlseToiQXJpYWwiLHNhbnMtc2VyaWY7CisJbXNvLWJpZGktZm9udC1mYW1pbHk6IlRpbWVzIE5ldyBSb21hbiI7CisJbXNvLWJpZGktdGhlbWUtZm9udDptaW5vci1iaWRpOworCWNvbG9yOiMwMDIwNTI7CisJbXNvLWFuc2ktbGFuZ3VhZ2U6RU4tVVM7CisJbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6RU4tVVM7fQorPC9zdHlsZT4KKzwhW2VuZGlmXS0tPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50PSJ0ZXh0L2h0bWw7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJzZXQ9d2luZG93cy0xMjUyIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbjogNC41cHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDBpbiA0LjVwdCAwLjI1aW47IHdpZHRoOiAxNDE2cHg7Ij4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtZXRhIG5hbWU9IlByb2dJZCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudD0iV29yZC5Eb2N1bWVudCI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWV0YSBuYW1lPSJHZW5lcmF0b3IiIGNvbnRlbnQ9Ik1pY3Jvc29mdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXb3JkIDE1Ij4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtZXRhIG5hbWU9Ik9yaWdpbmF0b3IiIGNvbnRlbnQ9Ik1pY3Jvc29mdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXb3JkIDE1Ij4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS1baWYgZ3RlIG1zbyA5XT48eG1sPgorIDx3OldvcmREb2N1bWVudD4KKyAgPHc6Vmlldz5Ob3JtYWw8L3c6Vmlldz4KKyAgPHc6Wm9vbT4wPC93Olpvb20+CisgIDx3OlRyYWNrTW92ZXMvPgorICA8dzpUcmFja0Zvcm1hdHRpbmcvPgorICA8dzpIeXBoZW5hdGlvblpvbmU+MjE8L3c6SHlwaGVuYXRpb25ab25lPgorICA8dzpQdW5jdHVhdGlvbktlcm5pbmcvPgorICA8dzpWYWxpZGF0ZUFnYWluc3RTY2hlbWFzLz4KKyAgPHc6U2F2ZUlmWE1MSW52YWxpZD5mYWxzZTwvdzpTYXZlSWZYTUxJbnZhbGlkPgorICA8dzpJZ25vcmVNaXhlZENvbnRlbnQ+ZmFsc2U8L3c6SWdub3JlTWl4ZWRDb250ZW50PgorICA8dzpBbHdheXNTaG93UGxhY2Vob2xkZXJUZXh0PmZhbHNlPC93OkFsd2F5c1Nob3dQbGFjZWhvbGRlclRleHQ+CisgIDx3OkRvTm90UHJvbW90ZVFGLz4KKyAgPHc6TGlkVGhlbWVPdGhlcj5FTi1VUzwvdzpMaWRUaGVtZU90aGVyPgorICA8dzpMaWRUaGVtZUFzaWFuPlgtTk9ORTwvdzpMaWRUaGVtZUFzaWFuPgorICA8dzpMaWRUaGVtZUNvbXBsZXhTY3JpcHQ+WC1OT05FPC93OkxpZFRoZW1lQ29tcGxleFNjcmlwdD4KKyAgPHc6Q29tcGF0aWJpbGl0eT4KKyAgIDx3OkJyZWFrV3JhcHBlZFRhYmxlcy8+CisgICA8dzpTbmFwVG9HcmlkSW5DZWxsLz4KKyAgIDx3OldyYXBUZXh0V2l0aFB1bmN0Lz4KKyAgIDx3OlVzZUFzaWFuQnJlYWtSdWxlcy8+CisgICA8dzpEb250R3Jvd0F1dG9maXQvPgorICAgPHc6U3BsaXRQZ0JyZWFrQW5kUGFyYU1hcmsvPgorICAgPHc6RW5hYmxlT3BlblR5cGVLZXJuaW5nLz4KKyAgIDx3OkRvbnRGbGlwTWlycm9ySW5kZW50cy8+CisgICA8dzpPdmVycmlkZVRhYmxlU3R5bGVIcHMvPgorICA8L3c6Q29tcGF0aWJpbGl0eT4KKyAgPG06bWF0aFByPgorICAgPG06bWF0aEZvbnQgbTp2YWw9IkNhbWJyaWEgTWF0aCIvPgorICAgPG06YnJrQmluIG06dmFsPSJiZWZvcmUiLz4KKyAgIDxtOmJya0JpblN1YiBtOnZhbD0iJiM0NTstIi8+CisgICA8bTpzbWFsbEZyYWMgbTp2YWw9Im9mZiIvPgorICAgPG06ZGlzcERlZi8+CisgICA8bTpsTWFyZ2luIG06dmFsPSIwIi8+CisgICA8bTpyTWFyZ2luIG06dmFsPSIwIi8+CisgICA8bTpkZWZKYyBtOnZhbD0iY2VudGVyR3JvdXAiLz4KKyAgIDxtOndyYXBJbmRlbnQgbTp2YWw9IjE0NDAiLz4KKyAgIDxtOmludExpbSBtOnZhbD0ic3ViU3VwIi8+CisgICA8bTpuYXJ5TGltIG06dmFsPSJ1bmRPdnIiLz4KKyAgPC9tOm1hdGhQcj48L3c6V29yZERvY3VtZW50PgorPC94bWw+PCFbZW5kaWZdLS0+PCEtLVtpZiBndGUgbXNvIDldPjx4bWw+CisgPHc6TGF0ZW50U3R5bGVzIERlZkxvY2tlZFN0YXRlPSJmYWxzZSIgRGVmVW5oaWRlV2hlblVzZWQ9ImZhbHNlIgorICBEZWZTZW1pSGlkZGVuPSJmYWxzZSIgRGVmUUZvcm1hdD0iZmFsc2UiIERlZlByaW9yaXR5PSI5OSIKKyAgTGF0ZW50U3R5bGVDb3VudD0iMzc2Ij4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSIwIiBRRm9ybWF0PSJ0cnVlIiBOYW1lPSJOb3JtYWwiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI5IiBRRm9ybWF0PSJ0cnVlIiBOYW1lPSJoZWFkaW5nIDEiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI5IiBTZW1pSGlkZGVuPSJ0cnVlIgorICAgVW5oaWRlV2hlblVzZWQ9InRydWUiIFFGb3JtYXQ9InRydWUiIE5hbWU9ImhlYWRpbmcgMiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjkiIFNlbWlIaWRkZW49InRydWUiCisgICBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIgUUZvcm1hdD0idHJ1ZSIgTmFtZT0iaGVhZGluZyAzIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iOSIgU2VtaUhpZGRlbj0idHJ1ZSIKKyAgIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIiBRRm9ybWF0PSJ0cnVlIiBOYW1lPSJoZWFkaW5nIDQiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI5IiBTZW1pSGlkZGVuPSJ0cnVlIgorICAgVW5oaWRlV2hlblVzZWQ9InRydWUiIFFGb3JtYXQ9InRydWUiIE5hbWU9ImhlYWRpbmcgNSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjkiIFNlbWlIaWRkZW49InRydWUiCisgICBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIgUUZvcm1hdD0idHJ1ZSIgTmFtZT0iaGVhZGluZyA2Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iOSIgU2VtaUhpZGRlbj0idHJ1ZSIKKyAgIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIiBRRm9ybWF0PSJ0cnVlIiBOYW1lPSJoZWFkaW5nIDciLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI5IiBTZW1pSGlkZGVuPSJ0cnVlIgorICAgVW5oaWRlV2hlblVzZWQ9InRydWUiIFFGb3JtYXQ9InRydWUiIE5hbWU9ImhlYWRpbmcgOCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjkiIFNlbWlIaWRkZW49InRydWUiCisgICBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIgUUZvcm1hdD0idHJ1ZSIgTmFtZT0iaGVhZGluZyA5Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9ImluZGV4IDEiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iaW5kZXggMiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJpbmRleCAzIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9ImluZGV4IDQiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iaW5kZXggNSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJpbmRleCA2Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9ImluZGV4IDciLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iaW5kZXggOCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJpbmRleCA5Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iMzkiIFNlbWlIaWRkZW49InRydWUiCisgICBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIgTmFtZT0idG9jIDEiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSIzOSIgU2VtaUhpZGRlbj0idHJ1ZSIKKyAgIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIiBOYW1lPSJ0b2MgMiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjM5IiBTZW1pSGlkZGVuPSJ0cnVlIgorICAgVW5oaWRlV2hlblVzZWQ9InRydWUiIE5hbWU9InRvYyAzIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iMzkiIFNlbWlIaWRkZW49InRydWUiCisgICBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIgTmFtZT0idG9jIDQiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSIzOSIgU2VtaUhpZGRlbj0idHJ1ZSIKKyAgIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIiBOYW1lPSJ0b2MgNSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjM5IiBTZW1pSGlkZGVuPSJ0cnVlIgorICAgVW5oaWRlV2hlblVzZWQ9InRydWUiIE5hbWU9InRvYyA2Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iMzkiIFNlbWlIaWRkZW49InRydWUiCisgICBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIgTmFtZT0idG9jIDciLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSIzOSIgU2VtaUhpZGRlbj0idHJ1ZSIKKyAgIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIiBOYW1lPSJ0b2MgOCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjM5IiBTZW1pSGlkZGVuPSJ0cnVlIgorICAgVW5oaWRlV2hlblVzZWQ9InRydWUiIE5hbWU9InRvYyA5Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9Ik5vcm1hbCBJbmRlbnQiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iZm9vdG5vdGUgdGV4dCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJhbm5vdGF0aW9uIHRleHQiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iaGVhZGVyIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9ImZvb3RlciIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJpbmRleCBoZWFkaW5nIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iMzUiIFNlbWlIaWRkZW49InRydWUiCisgICBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIgUUZvcm1hdD0idHJ1ZSIgTmFtZT0iY2FwdGlvbiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJ0YWJsZSBvZiBmaWd1cmVzIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9ImVudmVsb3BlIGFkZHJlc3MiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iZW52ZWxvcGUgcmV0dXJuIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9ImZvb3Rub3RlIHJlZmVyZW5jZSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJhbm5vdGF0aW9uIHJlZmVyZW5jZSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJsaW5lIG51bWJlciIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJwYWdlIG51bWJlciIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJlbmRub3RlIHJlZmVyZW5jZSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJlbmRub3RlIHRleHQiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0idGFibGUgb2YgYXV0aG9yaXRpZXMiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0ibWFjcm8iLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0idG9hIGhlYWRpbmciLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iTGlzdCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJMaXN0IEJ1bGxldCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJMaXN0IE51bWJlciIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJMaXN0IDIiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iTGlzdCAzIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9Ikxpc3QgNCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJMaXN0IDUiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iTGlzdCBCdWxsZXQgMiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJMaXN0IEJ1bGxldCAzIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9Ikxpc3QgQnVsbGV0IDQiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iTGlzdCBCdWxsZXQgNSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJMaXN0IE51bWJlciAyIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9Ikxpc3QgTnVtYmVyIDMiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iTGlzdCBOdW1iZXIgNCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJMaXN0IE51bWJlciA1Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iMTAiIFFGb3JtYXQ9InRydWUiIE5hbWU9IlRpdGxlIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9IkNsb3NpbmciLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iU2lnbmF0dXJlIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iMSIgU2VtaUhpZGRlbj0idHJ1ZSIKKyAgIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIiBOYW1lPSJEZWZhdWx0IFBhcmFncmFwaCBGb250Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9IkJvZHkgVGV4dCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJCb2R5IFRleHQgSW5kZW50Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9Ikxpc3QgQ29udGludWUiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iTGlzdCBDb250aW51ZSAyIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9Ikxpc3QgQ29udGludWUgMyIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJMaXN0IENvbnRpbnVlIDQiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iTGlzdCBDb250aW51ZSA1Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9Ik1lc3NhZ2UgSGVhZGVyIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iMTEiIFFGb3JtYXQ9InRydWUiIE5hbWU9IlN1YnRpdGxlIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9IlNhbHV0YXRpb24iLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iRGF0ZSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJCb2R5IFRleHQgRmlyc3QgSW5kZW50Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9IkJvZHkgVGV4dCBGaXJzdCBJbmRlbnQgMiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJOb3RlIEhlYWRpbmciLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iQm9keSBUZXh0IDIiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iQm9keSBUZXh0IDMiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iQm9keSBUZXh0IEluZGVudCAyIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9IkJvZHkgVGV4dCBJbmRlbnQgMyIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJCbG9jayBUZXh0Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9Ikh5cGVybGluayIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJGb2xsb3dlZEh5cGVybGluayIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjIyIiBRRm9ybWF0PSJ0cnVlIiBOYW1lPSJTdHJvbmciLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSIyMCIgUUZvcm1hdD0idHJ1ZSIgTmFtZT0iRW1waGFzaXMiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iRG9jdW1lbnQgTWFwIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9IlBsYWluIFRleHQiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iRS1tYWlsIFNpZ25hdHVyZSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJIVE1MIFRvcCBvZiBGb3JtIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9IkhUTUwgQm90dG9tIG9mIEZvcm0iLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iTm9ybWFsIChXZWIpIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9IkhUTUwgQWNyb255bSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJIVE1MIEFkZHJlc3MiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iSFRNTCBDaXRlIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9IkhUTUwgQ29kZSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJIVE1MIERlZmluaXRpb24iLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iSFRNTCBLZXlib2FyZCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJIVE1MIFByZWZvcm1hdHRlZCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJIVE1MIFNhbXBsZSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJIVE1MIFR5cGV3cml0ZXIiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iSFRNTCBWYXJpYWJsZSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJOb3JtYWwgVGFibGUiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iYW5ub3RhdGlvbiBzdWJqZWN0Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9Ik5vIExpc3QiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iT3V0bGluZSBMaXN0IDEiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iT3V0bGluZSBMaXN0IDIiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iT3V0bGluZSBMaXN0IDMiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iVGFibGUgU2ltcGxlIDEiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iVGFibGUgU2ltcGxlIDIiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iVGFibGUgU2ltcGxlIDMiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iVGFibGUgQ2xhc3NpYyAxIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9IlRhYmxlIENsYXNzaWMgMiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJUYWJsZSBDbGFzc2ljIDMiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iVGFibGUgQ2xhc3NpYyA0Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9IlRhYmxlIENvbG9yZnVsIDEiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iVGFibGUgQ29sb3JmdWwgMiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJUYWJsZSBDb2xvcmZ1bCAzIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9IlRhYmxlIENvbHVtbnMgMSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJUYWJsZSBDb2x1bW5zIDIiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iVGFibGUgQ29sdW1ucyAzIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9IlRhYmxlIENvbHVtbnMgNCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJUYWJsZSBDb2x1bW5zIDUiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iVGFibGUgR3JpZCAxIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9IlRhYmxlIEdyaWQgMiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJUYWJsZSBHcmlkIDMiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iVGFibGUgR3JpZCA0Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9IlRhYmxlIEdyaWQgNSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJUYWJsZSBHcmlkIDYiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iVGFibGUgR3JpZCA3Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9IlRhYmxlIEdyaWQgOCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJUYWJsZSBMaXN0IDEiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iVGFibGUgTGlzdCAyIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9IlRhYmxlIExpc3QgMyIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJUYWJsZSBMaXN0IDQiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iVGFibGUgTGlzdCA1Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9IlRhYmxlIExpc3QgNiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJUYWJsZSBMaXN0IDciLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iVGFibGUgTGlzdCA4Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9IlRhYmxlIDNEIGVmZmVjdHMgMSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJUYWJsZSAzRCBlZmZlY3RzIDIiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iVGFibGUgM0QgZWZmZWN0cyAzIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9IlRhYmxlIENvbnRlbXBvcmFyeSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJUYWJsZSBFbGVnYW50Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9IlRhYmxlIFByb2Zlc3Npb25hbCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJUYWJsZSBTdWJ0bGUgMSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJUYWJsZSBTdWJ0bGUgMiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJUYWJsZSBXZWIgMSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJUYWJsZSBXZWIgMiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJUYWJsZSBXZWIgMyIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJCYWxsb29uIFRleHQiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSIzOSIgTmFtZT0iVGFibGUgR3JpZCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJUYWJsZSBUaGVtZSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgTmFtZT0iUGxhY2Vob2xkZXIgVGV4dCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjEiIFFGb3JtYXQ9InRydWUiIE5hbWU9Ik5vIFNwYWNpbmciLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2MCIgTmFtZT0iTGlnaHQgU2hhZGluZyIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjYxIiBOYW1lPSJMaWdodCBMaXN0Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjIiIE5hbWU9IkxpZ2h0IEdyaWQiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2MyIgTmFtZT0iTWVkaXVtIFNoYWRpbmcgMSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjY0IiBOYW1lPSJNZWRpdW0gU2hhZGluZyAyIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjUiIE5hbWU9Ik1lZGl1bSBMaXN0IDEiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2NiIgTmFtZT0iTWVkaXVtIExpc3QgMiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjY3IiBOYW1lPSJNZWRpdW0gR3JpZCAxIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjgiIE5hbWU9Ik1lZGl1bSBHcmlkIDIiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2OSIgTmFtZT0iTWVkaXVtIEdyaWQgMyIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjcwIiBOYW1lPSJEYXJrIExpc3QiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI3MSIgTmFtZT0iQ29sb3JmdWwgU2hhZGluZyIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjcyIiBOYW1lPSJDb2xvcmZ1bCBMaXN0Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNzMiIE5hbWU9IkNvbG9yZnVsIEdyaWQiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2MCIgTmFtZT0iTGlnaHQgU2hhZGluZyBBY2NlbnQgMSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjYxIiBOYW1lPSJMaWdodCBMaXN0IEFjY2VudCAxIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjIiIE5hbWU9IkxpZ2h0IEdyaWQgQWNjZW50IDEiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2MyIgTmFtZT0iTWVkaXVtIFNoYWRpbmcgMSBBY2NlbnQgMSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjY0IiBOYW1lPSJNZWRpdW0gU2hhZGluZyAyIEFjY2VudCAxIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjUiIE5hbWU9Ik1lZGl1bSBMaXN0IDEgQWNjZW50IDEiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIE5hbWU9IlJldmlzaW9uIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iMzQiIFFGb3JtYXQ9InRydWUiCisgICBOYW1lPSJMaXN0IFBhcmFncmFwaCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjI5IiBRRm9ybWF0PSJ0cnVlIiBOYW1lPSJRdW90ZSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjMwIiBRRm9ybWF0PSJ0cnVlIgorICAgTmFtZT0iSW50ZW5zZSBRdW90ZSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjY2IiBOYW1lPSJNZWRpdW0gTGlzdCAyIEFjY2VudCAxIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjciIE5hbWU9Ik1lZGl1bSBHcmlkIDEgQWNjZW50IDEiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2OCIgTmFtZT0iTWVkaXVtIEdyaWQgMiBBY2NlbnQgMSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjY5IiBOYW1lPSJNZWRpdW0gR3JpZCAzIEFjY2VudCAxIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNzAiIE5hbWU9IkRhcmsgTGlzdCBBY2NlbnQgMSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjcxIiBOYW1lPSJDb2xvcmZ1bCBTaGFkaW5nIEFjY2VudCAxIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNzIiIE5hbWU9IkNvbG9yZnVsIExpc3QgQWNjZW50IDEiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI3MyIgTmFtZT0iQ29sb3JmdWwgR3JpZCBBY2NlbnQgMSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjYwIiBOYW1lPSJMaWdodCBTaGFkaW5nIEFjY2VudCAyIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjEiIE5hbWU9IkxpZ2h0IExpc3QgQWNjZW50IDIiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2MiIgTmFtZT0iTGlnaHQgR3JpZCBBY2NlbnQgMiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjYzIiBOYW1lPSJNZWRpdW0gU2hhZGluZyAxIEFjY2VudCAyIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjQiIE5hbWU9Ik1lZGl1bSBTaGFkaW5nIDIgQWNjZW50IDIiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2NSIgTmFtZT0iTWVkaXVtIExpc3QgMSBBY2NlbnQgMiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjY2IiBOYW1lPSJNZWRpdW0gTGlzdCAyIEFjY2VudCAyIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjciIE5hbWU9Ik1lZGl1bSBHcmlkIDEgQWNjZW50IDIiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2OCIgTmFtZT0iTWVkaXVtIEdyaWQgMiBBY2NlbnQgMiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjY5IiBOYW1lPSJNZWRpdW0gR3JpZCAzIEFjY2VudCAyIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNzAiIE5hbWU9IkRhcmsgTGlzdCBBY2NlbnQgMiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjcxIiBOYW1lPSJDb2xvcmZ1bCBTaGFkaW5nIEFjY2VudCAyIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNzIiIE5hbWU9IkNvbG9yZnVsIExpc3QgQWNjZW50IDIiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI3MyIgTmFtZT0iQ29sb3JmdWwgR3JpZCBBY2NlbnQgMiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjYwIiBOYW1lPSJMaWdodCBTaGFkaW5nIEFjY2VudCAzIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjEiIE5hbWU9IkxpZ2h0IExpc3QgQWNjZW50IDMiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2MiIgTmFtZT0iTGlnaHQgR3JpZCBBY2NlbnQgMyIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjYzIiBOYW1lPSJNZWRpdW0gU2hhZGluZyAxIEFjY2VudCAzIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjQiIE5hbWU9Ik1lZGl1bSBTaGFkaW5nIDIgQWNjZW50IDMiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2NSIgTmFtZT0iTWVkaXVtIExpc3QgMSBBY2NlbnQgMyIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjY2IiBOYW1lPSJNZWRpdW0gTGlzdCAyIEFjY2VudCAzIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjciIE5hbWU9Ik1lZGl1bSBHcmlkIDEgQWNjZW50IDMiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2OCIgTmFtZT0iTWVkaXVtIEdyaWQgMiBBY2NlbnQgMyIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjY5IiBOYW1lPSJNZWRpdW0gR3JpZCAzIEFjY2VudCAzIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNzAiIE5hbWU9IkRhcmsgTGlzdCBBY2NlbnQgMyIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjcxIiBOYW1lPSJDb2xvcmZ1bCBTaGFkaW5nIEFjY2VudCAzIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNzIiIE5hbWU9IkNvbG9yZnVsIExpc3QgQWNjZW50IDMiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI3MyIgTmFtZT0iQ29sb3JmdWwgR3JpZCBBY2NlbnQgMyIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjYwIiBOYW1lPSJMaWdodCBTaGFkaW5nIEFjY2VudCA0Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjEiIE5hbWU9IkxpZ2h0IExpc3QgQWNjZW50IDQiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2MiIgTmFtZT0iTGlnaHQgR3JpZCBBY2NlbnQgNCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjYzIiBOYW1lPSJNZWRpdW0gU2hhZGluZyAxIEFjY2VudCA0Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjQiIE5hbWU9Ik1lZGl1bSBTaGFkaW5nIDIgQWNjZW50IDQiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2NSIgTmFtZT0iTWVkaXVtIExpc3QgMSBBY2NlbnQgNCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjY2IiBOYW1lPSJNZWRpdW0gTGlzdCAyIEFjY2VudCA0Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjciIE5hbWU9Ik1lZGl1bSBHcmlkIDEgQWNjZW50IDQiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2OCIgTmFtZT0iTWVkaXVtIEdyaWQgMiBBY2NlbnQgNCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjY5IiBOYW1lPSJNZWRpdW0gR3JpZCAzIEFjY2VudCA0Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNzAiIE5hbWU9IkRhcmsgTGlzdCBBY2NlbnQgNCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjcxIiBOYW1lPSJDb2xvcmZ1bCBTaGFkaW5nIEFjY2VudCA0Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNzIiIE5hbWU9IkNvbG9yZnVsIExpc3QgQWNjZW50IDQiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI3MyIgTmFtZT0iQ29sb3JmdWwgR3JpZCBBY2NlbnQgNCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjYwIiBOYW1lPSJMaWdodCBTaGFkaW5nIEFjY2VudCA1Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjEiIE5hbWU9IkxpZ2h0IExpc3QgQWNjZW50IDUiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2MiIgTmFtZT0iTGlnaHQgR3JpZCBBY2NlbnQgNSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjYzIiBOYW1lPSJNZWRpdW0gU2hhZGluZyAxIEFjY2VudCA1Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjQiIE5hbWU9Ik1lZGl1bSBTaGFkaW5nIDIgQWNjZW50IDUiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2NSIgTmFtZT0iTWVkaXVtIExpc3QgMSBBY2NlbnQgNSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjY2IiBOYW1lPSJNZWRpdW0gTGlzdCAyIEFjY2VudCA1Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjciIE5hbWU9Ik1lZGl1bSBHcmlkIDEgQWNjZW50IDUiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2OCIgTmFtZT0iTWVkaXVtIEdyaWQgMiBBY2NlbnQgNSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjY5IiBOYW1lPSJNZWRpdW0gR3JpZCAzIEFjY2VudCA1Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNzAiIE5hbWU9IkRhcmsgTGlzdCBBY2NlbnQgNSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjcxIiBOYW1lPSJDb2xvcmZ1bCBTaGFkaW5nIEFjY2VudCA1Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNzIiIE5hbWU9IkNvbG9yZnVsIExpc3QgQWNjZW50IDUiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI3MyIgTmFtZT0iQ29sb3JmdWwgR3JpZCBBY2NlbnQgNSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjYwIiBOYW1lPSJMaWdodCBTaGFkaW5nIEFjY2VudCA2Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjEiIE5hbWU9IkxpZ2h0IExpc3QgQWNjZW50IDYiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2MiIgTmFtZT0iTGlnaHQgR3JpZCBBY2NlbnQgNiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjYzIiBOYW1lPSJNZWRpdW0gU2hhZGluZyAxIEFjY2VudCA2Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjQiIE5hbWU9Ik1lZGl1bSBTaGFkaW5nIDIgQWNjZW50IDYiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2NSIgTmFtZT0iTWVkaXVtIExpc3QgMSBBY2NlbnQgNiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjY2IiBOYW1lPSJNZWRpdW0gTGlzdCAyIEFjY2VudCA2Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjciIE5hbWU9Ik1lZGl1bSBHcmlkIDEgQWNjZW50IDYiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2OCIgTmFtZT0iTWVkaXVtIEdyaWQgMiBBY2NlbnQgNiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjY5IiBOYW1lPSJNZWRpdW0gR3JpZCAzIEFjY2VudCA2Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNzAiIE5hbWU9IkRhcmsgTGlzdCBBY2NlbnQgNiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjcxIiBOYW1lPSJDb2xvcmZ1bCBTaGFkaW5nIEFjY2VudCA2Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNzIiIE5hbWU9IkNvbG9yZnVsIExpc3QgQWNjZW50IDYiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI3MyIgTmFtZT0iQ29sb3JmdWwgR3JpZCBBY2NlbnQgNiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjE5IiBRRm9ybWF0PSJ0cnVlIgorICAgTmFtZT0iU3VidGxlIEVtcGhhc2lzIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iMjEiIFFGb3JtYXQ9InRydWUiCisgICBOYW1lPSJJbnRlbnNlIEVtcGhhc2lzIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iMzEiIFFGb3JtYXQ9InRydWUiCisgICBOYW1lPSJTdWJ0bGUgUmVmZXJlbmNlIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iMzIiIFFGb3JtYXQ9InRydWUiCisgICBOYW1lPSJJbnRlbnNlIFJlZmVyZW5jZSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjMzIiBRRm9ybWF0PSJ0cnVlIiBOYW1lPSJCb29rIFRpdGxlIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iMzciIFNlbWlIaWRkZW49InRydWUiCisgICBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIgTmFtZT0iQmlibGlvZ3JhcGh5Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iMzkiIFNlbWlIaWRkZW49InRydWUiCisgICBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIgUUZvcm1hdD0idHJ1ZSIgTmFtZT0iVE9DIEhlYWRpbmciLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI0MSIgTmFtZT0iUGxhaW4gVGFibGUgMSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQyIiBOYW1lPSJQbGFpbiBUYWJsZSAyIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDMiIE5hbWU9IlBsYWluIFRhYmxlIDMiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI0NCIgTmFtZT0iUGxhaW4gVGFibGUgNCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQ1IiBOYW1lPSJQbGFpbiBUYWJsZSA1Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDAiIE5hbWU9IkdyaWQgVGFibGUgTGlnaHQiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI0NiIgTmFtZT0iR3JpZCBUYWJsZSAxIExpZ2h0Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDciIE5hbWU9IkdyaWQgVGFibGUgMiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQ4IiBOYW1lPSJHcmlkIFRhYmxlIDMiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI0OSIgTmFtZT0iR3JpZCBUYWJsZSA0Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNTAiIE5hbWU9IkdyaWQgVGFibGUgNSBEYXJrIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNTEiIE5hbWU9IkdyaWQgVGFibGUgNiBDb2xvcmZ1bCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjUyIiBOYW1lPSJHcmlkIFRhYmxlIDcgQ29sb3JmdWwiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI0NiIKKyAgIE5hbWU9IkdyaWQgVGFibGUgMSBMaWdodCBBY2NlbnQgMSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQ3IiBOYW1lPSJHcmlkIFRhYmxlIDIgQWNjZW50IDEiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI0OCIgTmFtZT0iR3JpZCBUYWJsZSAzIEFjY2VudCAxIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDkiIE5hbWU9IkdyaWQgVGFibGUgNCBBY2NlbnQgMSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjUwIiBOYW1lPSJHcmlkIFRhYmxlIDUgRGFyayBBY2NlbnQgMSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjUxIgorICAgTmFtZT0iR3JpZCBUYWJsZSA2IENvbG9yZnVsIEFjY2VudCAxIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNTIiCisgICBOYW1lPSJHcmlkIFRhYmxlIDcgQ29sb3JmdWwgQWNjZW50IDEiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI0NiIKKyAgIE5hbWU9IkdyaWQgVGFibGUgMSBMaWdodCBBY2NlbnQgMiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQ3IiBOYW1lPSJHcmlkIFRhYmxlIDIgQWNjZW50IDIiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI0OCIgTmFtZT0iR3JpZCBUYWJsZSAzIEFjY2VudCAyIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDkiIE5hbWU9IkdyaWQgVGFibGUgNCBBY2NlbnQgMiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjUwIiBOYW1lPSJHcmlkIFRhYmxlIDUgRGFyayBBY2NlbnQgMiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjUxIgorICAgTmFtZT0iR3JpZCBUYWJsZSA2IENvbG9yZnVsIEFjY2VudCAyIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNTIiCisgICBOYW1lPSJHcmlkIFRhYmxlIDcgQ29sb3JmdWwgQWNjZW50IDIiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI0NiIKKyAgIE5hbWU9IkdyaWQgVGFibGUgMSBMaWdodCBBY2NlbnQgMyIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQ3IiBOYW1lPSJHcmlkIFRhYmxlIDIgQWNjZW50IDMiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI0OCIgTmFtZT0iR3JpZCBUYWJsZSAzIEFjY2VudCAzIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDkiIE5hbWU9IkdyaWQgVGFibGUgNCBBY2NlbnQgMyIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjUwIiBOYW1lPSJHcmlkIFRhYmxlIDUgRGFyayBBY2NlbnQgMyIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjUxIgorICAgTmFtZT0iR3JpZCBUYWJsZSA2IENvbG9yZnVsIEFjY2VudCAzIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNTIiCisgICBOYW1lPSJHcmlkIFRhYmxlIDcgQ29sb3JmdWwgQWNjZW50IDMiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI0NiIKKyAgIE5hbWU9IkdyaWQgVGFibGUgMSBMaWdodCBBY2NlbnQgNCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQ3IiBOYW1lPSJHcmlkIFRhYmxlIDIgQWNjZW50IDQiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI0OCIgTmFtZT0iR3JpZCBUYWJsZSAzIEFjY2VudCA0Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDkiIE5hbWU9IkdyaWQgVGFibGUgNCBBY2NlbnQgNCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjUwIiBOYW1lPSJHcmlkIFRhYmxlIDUgRGFyayBBY2NlbnQgNCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjUxIgorICAgTmFtZT0iR3JpZCBUYWJsZSA2IENvbG9yZnVsIEFjY2VudCA0Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNTIiCisgICBOYW1lPSJHcmlkIFRhYmxlIDcgQ29sb3JmdWwgQWNjZW50IDQiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI0NiIKKyAgIE5hbWU9IkdyaWQgVGFibGUgMSBMaWdodCBBY2NlbnQgNSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQ3IiBOYW1lPSJHcmlkIFRhYmxlIDIgQWNjZW50IDUiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI0OCIgTmFtZT0iR3JpZCBUYWJsZSAzIEFjY2VudCA1Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDkiIE5hbWU9IkdyaWQgVGFibGUgNCBBY2NlbnQgNSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjUwIiBOYW1lPSJHcmlkIFRhYmxlIDUgRGFyayBBY2NlbnQgNSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjUxIgorICAgTmFtZT0iR3JpZCBUYWJsZSA2IENvbG9yZnVsIEFjY2VudCA1Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNTIiCisgICBOYW1lPSJHcmlkIFRhYmxlIDcgQ29sb3JmdWwgQWNjZW50IDUiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI0NiIKKyAgIE5hbWU9IkdyaWQgVGFibGUgMSBMaWdodCBBY2NlbnQgNiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQ3IiBOYW1lPSJHcmlkIFRhYmxlIDIgQWNjZW50IDYiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI0OCIgTmFtZT0iR3JpZCBUYWJsZSAzIEFjY2VudCA2Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDkiIE5hbWU9IkdyaWQgVGFibGUgNCBBY2NlbnQgNiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjUwIiBOYW1lPSJHcmlkIFRhYmxlIDUgRGFyayBBY2NlbnQgNiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjUxIgorICAgTmFtZT0iR3JpZCBUYWJsZSA2IENvbG9yZnVsIEFjY2VudCA2Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNTIiCisgICBOYW1lPSJHcmlkIFRhYmxlIDcgQ29sb3JmdWwgQWNjZW50IDYiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI0NiIgTmFtZT0iTGlzdCBUYWJsZSAxIExpZ2h0Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDciIE5hbWU9Ikxpc3QgVGFibGUgMiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQ4IiBOYW1lPSJMaXN0IFRhYmxlIDMiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI0OSIgTmFtZT0iTGlzdCBUYWJsZSA0Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNTAiIE5hbWU9Ikxpc3QgVGFibGUgNSBEYXJrIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNTEiIE5hbWU9Ikxpc3QgVGFibGUgNiBDb2xvcmZ1bCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjUyIiBOYW1lPSJMaXN0IFRhYmxlIDcgQ29sb3JmdWwiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI0NiIKKyAgIE5hbWU9Ikxpc3QgVGFibGUgMSBMaWdodCBBY2NlbnQgMSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQ3IiBOYW1lPSJMaXN0IFRhYmxlIDIgQWNjZW50IDEiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI0OCIgTmFtZT0iTGlzdCBUYWJsZSAzIEFjY2VudCAxIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDkiIE5hbWU9Ikxpc3QgVGFibGUgNCBBY2NlbnQgMSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjUwIiBOYW1lPSJMaXN0IFRhYmxlIDUgRGFyayBBY2NlbnQgMSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjUxIgorICAgTmFtZT0iTGlzdCBUYWJsZSA2IENvbG9yZnVsIEFjY2VudCAxIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNTIiCisgICBOYW1lPSJMaXN0IFRhYmxlIDcgQ29sb3JmdWwgQWNjZW50IDEiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI0NiIKKyAgIE5hbWU9Ikxpc3QgVGFibGUgMSBMaWdodCBBY2NlbnQgMiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQ3IiBOYW1lPSJMaXN0IFRhYmxlIDIgQWNjZW50IDIiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI0OCIgTmFtZT0iTGlzdCBUYWJsZSAzIEFjY2VudCAyIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDkiIE5hbWU9Ikxpc3QgVGFibGUgNCBBY2NlbnQgMiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjUwIiBOYW1lPSJMaXN0IFRhYmxlIDUgRGFyayBBY2NlbnQgMiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjUxIgorICAgTmFtZT0iTGlzdCBUYWJsZSA2IENvbG9yZnVsIEFjY2VudCAyIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNTIiCisgICBOYW1lPSJMaXN0IFRhYmxlIDcgQ29sb3JmdWwgQWNjZW50IDIiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI0NiIKKyAgIE5hbWU9Ikxpc3QgVGFibGUgMSBMaWdodCBBY2NlbnQgMyIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQ3IiBOYW1lPSJMaXN0IFRhYmxlIDIgQWNjZW50IDMiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI0OCIgTmFtZT0iTGlzdCBUYWJsZSAzIEFjY2VudCAzIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDkiIE5hbWU9Ikxpc3QgVGFibGUgNCBBY2NlbnQgMyIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjUwIiBOYW1lPSJMaXN0IFRhYmxlIDUgRGFyayBBY2NlbnQgMyIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjUxIgorICAgTmFtZT0iTGlzdCBUYWJsZSA2IENvbG9yZnVsIEFjY2VudCAzIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNTIiCisgICBOYW1lPSJMaXN0IFRhYmxlIDcgQ29sb3JmdWwgQWNjZW50IDMiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI0NiIKKyAgIE5hbWU9Ikxpc3QgVGFibGUgMSBMaWdodCBBY2NlbnQgNCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQ3IiBOYW1lPSJMaXN0IFRhYmxlIDIgQWNjZW50IDQiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI0OCIgTmFtZT0iTGlzdCBUYWJsZSAzIEFjY2VudCA0Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDkiIE5hbWU9Ikxpc3QgVGFibGUgNCBBY2NlbnQgNCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjUwIiBOYW1lPSJMaXN0IFRhYmxlIDUgRGFyayBBY2NlbnQgNCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjUxIgorICAgTmFtZT0iTGlzdCBUYWJsZSA2IENvbG9yZnVsIEFjY2VudCA0Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNTIiCisgICBOYW1lPSJMaXN0IFRhYmxlIDcgQ29sb3JmdWwgQWNjZW50IDQiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI0NiIKKyAgIE5hbWU9Ikxpc3QgVGFibGUgMSBMaWdodCBBY2NlbnQgNSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQ3IiBOYW1lPSJMaXN0IFRhYmxlIDIgQWNjZW50IDUiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI0OCIgTmFtZT0iTGlzdCBUYWJsZSAzIEFjY2VudCA1Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDkiIE5hbWU9Ikxpc3QgVGFibGUgNCBBY2NlbnQgNSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjUwIiBOYW1lPSJMaXN0IFRhYmxlIDUgRGFyayBBY2NlbnQgNSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjUxIgorICAgTmFtZT0iTGlzdCBUYWJsZSA2IENvbG9yZnVsIEFjY2VudCA1Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNTIiCisgICBOYW1lPSJMaXN0IFRhYmxlIDcgQ29sb3JmdWwgQWNjZW50IDUiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI0NiIKKyAgIE5hbWU9Ikxpc3QgVGFibGUgMSBMaWdodCBBY2NlbnQgNiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQ3IiBOYW1lPSJMaXN0IFRhYmxlIDIgQWNjZW50IDYiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI0OCIgTmFtZT0iTGlzdCBUYWJsZSAzIEFjY2VudCA2Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDkiIE5hbWU9Ikxpc3QgVGFibGUgNCBBY2NlbnQgNiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjUwIiBOYW1lPSJMaXN0IFRhYmxlIDUgRGFyayBBY2NlbnQgNiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjUxIgorICAgTmFtZT0iTGlzdCBUYWJsZSA2IENvbG9yZnVsIEFjY2VudCA2Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNTIiCisgICBOYW1lPSJMaXN0IFRhYmxlIDcgQ29sb3JmdWwgQWNjZW50IDYiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iTWVudGlvbiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJTbWFydCBIeXBlcmxpbmsiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iSGFzaHRhZyIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJVbnJlc29sdmVkIE1lbnRpb24iLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iU21hcnQgTGluayIvPgorIDwvdzpMYXRlbnRTdHlsZXM+Cis8L3htbD48IVtlbmRpZl0tLT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdHlsZT4KKzwhLS0KKyAvKiBGb250IERlZmluaXRpb25zICovCisgQGZvbnQtZmFjZQorCXtmb250LWZhbWlseTpXaW5nZGluZ3M7CisJcGFub3NlLTE6NSAwIDAgMCAwIDAgMCAwIDAgMDsKKwltc28tZm9udC1jaGFyc2V0OjI7CisJbXNvLWdlbmVyaWMtZm9udC1mYW1pbHk6YXV0bzsKKwltc28tZm9udC1waXRjaDp2YXJpYWJsZTsKKwltc28tZm9udC1zaWduYXR1cmU6MCAyNjg0MzU0NTYgMCAwIC0yMTQ3NDgzNjQ4IDA7fQorQGZvbnQtZmFjZQorCXtmb250LWZhbWlseToiQ2FtYnJpYSBNYXRoIjsKKwlwYW5vc2UtMToyIDQgNSAzIDUgNCA2IDMgMiA0OworCW1zby1mb250LWNoYXJzZXQ6MDsKKwltc28tZ2VuZXJpYy1mb250LWZhbWlseTpyb21hbjsKKwltc28tZm9udC1waXRjaDp2YXJpYWJsZTsKKwltc28tZm9udC1zaWduYXR1cmU6LTUzNjg2OTEyMSAxMTA3MzA1NzI3IDMzNTU0NDMyIDAgNDE1IDA7fQorQGZvbnQtZmFjZQorCXtmb250LWZhbWlseTpWZXJkYW5hOworCXBhbm9zZS0xOjIgMTEgNiA0IDMgNSA0IDQgMiA0OworCW1zby1mb250LWNoYXJzZXQ6MDsKKwltc28tZ2VuZXJpYy1mb250LWZhbWlseTpzd2lzczsKKwltc28tZm9udC1waXRjaDp2YXJpYWJsZTsKKwltc28tZm9udC1zaWduYXR1cmU6LTE2MTA2MTA5NDUgMTA3Mzc1MDEwNyAxNiAwIDQxNSAwO30KK0Bmb250LWZhY2UKKwl7Zm9udC1mYW1pbHk6IlNlZ29lIFVJIjsKKwlwYW5vc2UtMToyIDExIDUgMiA0IDIgNCAyIDIgMzsKKwltc28tZm9udC1jaGFyc2V0OjA7CisJbXNvLWdlbmVyaWMtZm9udC1mYW1pbHk6c3dpc3M7CisJbXNvLWZvbnQtcGl0Y2g6dmFyaWFibGU7CisJbXNvLWZvbnQtc2lnbmF0dXJlOi00Njk3NTAwMTcgLTEwNzM2ODMzMjkgOSAwIDUxMSAwO30KKyAvKiBTdHlsZSBEZWZpbml0aW9ucyAqLworIHAuTXNvTm9ybWFsLCBsaS5Nc29Ob3JtYWwsIGRpdi5Nc29Ob3JtYWwKKwl7bXNvLXN0eWxlLXVuaGlkZTpubzsKKwltc28tc3R5bGUtcGFyZW50OiIiOworCW1hcmdpbjowaW47CisJbGluZS1oZWlnaHQ6MTE1JTsKKwltc28tcGFnaW5hdGlvbjp3aWRvdy1vcnBoYW47CisJZm9udC1zaXplOjExLjBwdDsKKwlmb250LWZhbWlseToiQXJpYWwiLHNhbnMtc2VyaWY7CisJbXNvLWZhcmVhc3QtZm9udC1mYW1pbHk6QXJpYWw7CisJbXNvLWZhcmVhc3QtdGhlbWUtZm9udDptaW5vci1sYXRpbjsKKwltc28tYmlkaS1mb250LWZhbWlseToiVGltZXMgTmV3IFJvbWFuIjsKKwltc28tYmlkaS10aGVtZS1mb250Om1pbm9yLWJpZGk7CisJY29sb3I6IzAwMjA1MjsKKwltc28tYW5zaS1sYW5ndWFnZTpFTi1VUzsKKwltc28tZmFyZWFzdC1sYW5ndWFnZTpFTi1VUzt9CisuTXNvQ2hwRGVmYXVsdAorCXttc28tc3R5bGUtdHlwZTpleHBvcnQtb25seTsKKwltc28tZGVmYXVsdC1wcm9wczp5ZXM7CisJZm9udC1mYW1pbHk6IkFyaWFsIixzYW5zLXNlcmlmOworCW1zby1hc2NpaS1mb250LWZhbWlseTpBcmlhbDsKKwltc28tZmFyZWFzdC1mb250LWZhbWlseTpBcmlhbDsKKwltc28tZmFyZWFzdC10aGVtZS1mb250Om1pbm9yLWxhdGluOworCW1zby1oYW5zaS1mb250LWZhbWlseTpBcmlhbDsKKwltc28tYmlkaS1mb250LWZhbWlseToiVGltZXMgTmV3IFJvbWFuIjsKKwltc28tYmlkaS10aGVtZS1mb250Om1pbm9yLWJpZGk7CisJY29sb3I6IzAwMjA1MjsKKwltc28tYW5zaS1sYW5ndWFnZTpFTi1VUzsKKwltc28tZmFyZWFzdC1sYW5ndWFnZTpFTi1VUzt9CisuTXNvUGFwRGVmYXVsdAorCXttc28tc3R5bGUtdHlwZTpleHBvcnQtb25seTsKKwlsaW5lLWhlaWdodDoxMTUlO30KK0BwYWdlIFdvcmRTZWN0aW9uMQorCXtzaXplOjguNWluIDExLjBpbjsKKwltYXJnaW46NzAuODVwdCA3MC44NXB0IDcwLjg1cHQgNzAuODVwdDsKKwltc28taGVhZGVyLW1hcmdpbjouNWluOworCW1zby1mb290ZXItbWFyZ2luOi41aW47CisJbXNvLXBhcGVyLXNvdXJjZTowO30KK2Rpdi5Xb3JkU2VjdGlvbjEKKwl7cGFnZTpXb3JkU2VjdGlvbjE7fQorIC8qIExpc3QgRGVmaW5pdGlvbnMgKi8KKyBAbGlzdCBsMAorCXttc28tbGlzdC1pZDoxMjU1NTUwOTEwOworCW1zby1saXN0LXRlbXBsYXRlLWlkczotMTkxNTIxNDIwNDt9CitAbGlzdCBsMDpsZXZlbDEKKwl7bXNvLWxldmVsLW51bWJlci1mb3JtYXQ6YnVsbGV0OworCW1zby1sZXZlbC10ZXh0OiYjNjE2MjM7OworCW1zby1sZXZlbC10YWItc3RvcDouNWluOworCW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246bGVmdDsKKwl0ZXh0LWluZGVudDotLjI1aW47CisJbXNvLWFuc2ktZm9udC1zaXplOjEwLjBwdDsKKwlmb250LWZhbWlseTpTeW1ib2w7fQorQGxpc3QgbDA6bGV2ZWwyCisJe21zby1sZXZlbC1udW1iZXItZm9ybWF0OmJ1bGxldDsKKwltc28tbGV2ZWwtdGV4dDpvOworCW1zby1sZXZlbC10YWItc3RvcDoxLjBpbjsKKwltc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7CisJdGV4dC1pbmRlbnQ6LS4yNWluOworCW1zby1hbnNpLWZvbnQtc2l6ZToxMC4wcHQ7CisJZm9udC1mYW1pbHk6IkNvdXJpZXIgTmV3IjsKKwltc28tYmlkaS1mb250LWZhbWlseToiVGltZXMgTmV3IFJvbWFuIjt9CitAbGlzdCBsMDpsZXZlbDMKKwl7bXNvLWxldmVsLW51bWJlci1mb3JtYXQ6YnVsbGV0OworCW1zby1sZXZlbC10ZXh0OiYjNjE2MDc7OworCW1zby1sZXZlbC10YWItc3RvcDoxLjVpbjsKKwltc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7CisJdGV4dC1pbmRlbnQ6LS4yNWluOworCW1zby1hbnNpLWZvbnQtc2l6ZToxMC4wcHQ7CisJZm9udC1mYW1pbHk6V2luZ2RpbmdzO30KK0BsaXN0IGwwOmxldmVsNAorCXttc28tbGV2ZWwtbnVtYmVyLWZvcm1hdDpidWxsZXQ7CisJbXNvLWxldmVsLXRleHQ6JiM2MTYwNzs7CisJbXNvLWxldmVsLXRhYi1zdG9wOjIuMGluOworCW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246bGVmdDsKKwl0ZXh0LWluZGVudDotLjI1aW47CisJbXNvLWFuc2ktZm9udC1zaXplOjEwLjBwdDsKKwlmb250LWZhbWlseTpXaW5nZGluZ3M7fQorQGxpc3QgbDA6bGV2ZWw1CisJe21zby1sZXZlbC1udW1iZXItZm9ybWF0OmJ1bGxldDsKKwltc28tbGV2ZWwtdGV4dDomIzYxNjA3OzsKKwltc28tbGV2ZWwtdGFiLXN0b3A6Mi41aW47CisJbXNvLWxldmVsLW51bWJlci1wb3NpdGlvbjpsZWZ0OworCXRleHQtaW5kZW50Oi0uMjVpbjsKKwltc28tYW5zaS1mb250LXNpemU6MTAuMHB0OworCWZvbnQtZmFtaWx5OldpbmdkaW5nczt9CitAbGlzdCBsMDpsZXZlbDYKKwl7bXNvLWxldmVsLW51bWJlci1mb3JtYXQ6YnVsbGV0OworCW1zby1sZXZlbC10ZXh0OiYjNjE2MDc7OworCW1zby1sZXZlbC10YWItc3RvcDozLjBpbjsKKwltc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7CisJdGV4dC1pbmRlbnQ6LS4yNWluOworCW1zby1hbnNpLWZvbnQtc2l6ZToxMC4wcHQ7CisJZm9udC1mYW1pbHk6V2luZ2RpbmdzO30KK0BsaXN0IGwwOmxldmVsNworCXttc28tbGV2ZWwtbnVtYmVyLWZvcm1hdDpidWxsZXQ7CisJbXNvLWxldmVsLXRleHQ6JiM2MTYwNzs7CisJbXNvLWxldmVsLXRhYi1zdG9wOjMuNWluOworCW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246bGVmdDsKKwl0ZXh0LWluZGVudDotLjI1aW47CisJbXNvLWFuc2ktZm9udC1zaXplOjEwLjBwdDsKKwlmb250LWZhbWlseTpXaW5nZGluZ3M7fQorQGxpc3QgbDA6bGV2ZWw4CisJe21zby1sZXZlbC1udW1iZXItZm9ybWF0OmJ1bGxldDsKKwltc28tbGV2ZWwtdGV4dDomIzYxNjA3OzsKKwltc28tbGV2ZWwtdGFiLXN0b3A6NC4waW47CisJbXNvLWxldmVsLW51bWJlci1wb3NpdGlvbjpsZWZ0OworCXRleHQtaW5kZW50Oi0uMjVpbjsKKwltc28tYW5zaS1mb250LXNpemU6MTAuMHB0OworCWZvbnQtZmFtaWx5OldpbmdkaW5nczt9CitAbGlzdCBsMDpsZXZlbDkKKwl7bXNvLWxldmVsLW51bWJlci1mb3JtYXQ6YnVsbGV0OworCW1zby1sZXZlbC10ZXh0OiYjNjE2MDc7OworCW1zby1sZXZlbC10YWItc3RvcDo0LjVpbjsKKwltc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7CisJdGV4dC1pbmRlbnQ6LS4yNWluOworCW1zby1hbnNpLWZvbnQtc2l6ZToxMC4wcHQ7CisJZm9udC1mYW1pbHk6V2luZ2RpbmdzO30KK29sCisJe21hcmdpbi1ib3R0b206MGluO30KK3VsCisJe21hcmdpbi1ib3R0b206MGluO30KKy0tPgorPC9zdHlsZT48IS0tW2lmIGd0ZSBtc28gMTBdPgorPHN0eWxlPgorIC8qIFN0eWxlIERlZmluaXRpb25zICovCisgdGFibGUuTXNvTm9ybWFsVGFibGUKKwl7bXNvLXN0eWxlLW5hbWU6IlRhYmxlIE5vcm1hbCI7CisJbXNvLXRzdHlsZS1yb3diYW5kLXNpemU6MDsKKwltc28tdHN0eWxlLWNvbGJhbmQtc2l6ZTowOworCW1zby1zdHlsZS1ub3Nob3c6eWVzOworCW1zby1zdHlsZS1wcmlvcml0eTo5OTsKKwltc28tc3R5bGUtcGFyZW50OiIiOworCW1zby1wYWRkaW5nLWFsdDowaW4gNS40cHQgMGluIDUuNHB0OworCW1zby1wYXJhLW1hcmdpbjowaW47CisJbGluZS1oZWlnaHQ6MTE1JTsKKwltc28tcGFnaW5hdGlvbjp3aWRvdy1vcnBoYW47CisJZm9udC1zaXplOjExLjBwdDsKKwlmb250LWZhbWlseToiQXJpYWwiLHNhbnMtc2VyaWY7CisJbXNvLWJpZGktZm9udC1mYW1pbHk6IlRpbWVzIE5ldyBSb21hbiI7CisJbXNvLWJpZGktdGhlbWUtZm9udDptaW5vci1iaWRpOworCWNvbG9yOiMwMDIwNTI7CisJbXNvLWFuc2ktbGFuZ3VhZ2U6RU4tVVM7CisJbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6RU4tVVM7fQorPC9zdHlsZT4KKzwhW2VuZGlmXS0tPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIHR5cGU9ImRpc2MiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iY29sb3I6IzExMTExMTttc28tbWFyZ2luLXRvcC1hbHQ6YXV0bzttc28tbWFyZ2luLWJvdHRvbS1hbHQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0bztsaW5lLWhlaWdodDpub3JtYWw7bXNvLWxpc3Q6bDAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbDEgbGZvMTt0YWItc3RvcHM6bGlzdCAuNWluIj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZToxMC4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOwogCi08ZGl2IGNsYXNzPSJXb3JkU2VjdGlvbjEiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNvLWZhcmVhc3QtZm9udC1mYW1pbHk6JnF1b3Q7VGltZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUm9tYW4mcXVvdDs7bXNvLWJpZGktZm9udC1mYW1pbHk6JnF1b3Q7U2Vnb2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVJJnF1b3Q7OyBtc28tZmFyZWFzdC1sYW5ndWFnZTpGUiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhbmc9IkVOLVVTIj5HZW5lcmFsIHVwZGF0ZXMgdG8gZml4CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrbm93biBkZWZlY3RzIGFuZCBlbmhhbmNlbWVudHMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltcGxlbWVudGF0aW9uLjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJjb2xvcjojMTExMTExO21zby1tYXJnaW4tdG9wLWFsdDphdXRvO21zby1tYXJnaW4tYm90dG9tLWFsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvO2xpbmUtaGVpZ2h0Om5vcm1hbDttc28tbGlzdDpsMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVsMSBsZm8xO3RhYi1zdG9wczpsaXN0IC41aW4iPjxiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6MTAuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsKIAotPGRpdj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNvLWZhcmVhc3QtZm9udC1mYW1pbHk6JnF1b3Q7VGltZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV3CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJvbWFuJnF1b3Q7O21zby1iaWRpLWZvbnQtZmFtaWx5OiZxdW90O1NlZ29lCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVJJnF1b3Q7OyBtc28tZmFyZWFzdC1sYW5ndWFnZTpGUiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFuZz0iRU4tVVMiPkhBTCBHUElPPC9zcGFuPjwvYj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZToxMC4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmO21zby1mYXJlYXN0LWZvbnQtZmFtaWx5OgogCi08ZGl2PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VGltZXMgTmV3CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSb21hbiZxdW90Ozttc28tYmlkaS1mb250LWZhbWlseTomcXVvdDtTZWdvZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUkmcXVvdDs7bXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IEZSIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFuZz0iRU4tVVMiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCB0eXBlPSJjaXJjbGUiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImNvbG9yOiMxMTExMTE7bXNvLW1hcmdpbi10b3AtYWx0OmF1dG87bXNvLW1hcmdpbi1ib3R0b20tYWx0OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0bztsaW5lLWhlaWdodDpub3JtYWw7bXNvLWxpc3Q6bDAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVsMiBsZm8xO3RhYi1zdG9wczpsaXN0IDEuMGluIj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOjEwLjBwdDtmb250LWZhbWlseTomcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7CiAKLTxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSIiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJnF1b3Q7QXJpYWwmcXVvdDssc2Fucy1zZXJpZjsiIGxhbmc9IkZSIj48bzpwPiZuYnNwOzwvbzpwPjwvc3Bhbj48L3A+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zby1mYXJlYXN0LWZvbnQtZmFtaWx5OiZxdW90O1RpbWVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSb21hbiZxdW90Ozttc28tYmlkaS1mb250LWZhbWlseTomcXVvdDtTZWdvZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVSSZxdW90OzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6RlIiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhbmc9IkVOLVVTIj5VcGRhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFMX0dQSU9fSW5pdCgpIEFQSSB0byBhdm9pZCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbiBvZiBQVVBEUiByZWdpc3RlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGVuIEFuYWxvZyBtb2RlIGlzIHNlbGVjdGVkLjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iY29sb3I6IzExMTExMTttc28tbWFyZ2luLXRvcC1hbHQ6YXV0bzttc28tbWFyZ2luLWJvdHRvbS1hbHQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvO2xpbmUtaGVpZ2h0Om5vcm1hbDttc28tbGlzdDpsMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWwyIGxmbzE7dGFiLXN0b3BzOmxpc3QgMS4waW4iPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6MTAuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsKIAotPGRpdiBhbGlnbj0iY2VudGVyIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNvLWZhcmVhc3QtZm9udC1mYW1pbHk6JnF1b3Q7VGltZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV3CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJvbWFuJnF1b3Q7O21zby1iaWRpLWZvbnQtZmFtaWx5OiZxdW90O1NlZ29lCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVJJnF1b3Q7OyBtc28tZmFyZWFzdC1sYW5ndWFnZTpGUiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFuZz0iRU4tVVMiPk9wdGltaXplIGFzc2VydGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250cm9sIGZvciBHUElPIFB1bGwgbW9kZSBpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQUxfR1BJT19Jbml0PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJjb2xvcjojMTExMTExO21zby1tYXJnaW4tdG9wLWFsdDphdXRvO21zby1tYXJnaW4tYm90dG9tLWFsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG87bGluZS1oZWlnaHQ6bm9ybWFsO21zby1saXN0OmwwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbDIgbGZvMTt0YWItc3RvcHM6bGlzdCAxLjBpbiI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZToxMC4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOwogCi08dGFibGUgY2xhc3M9Ik1zb05vcm1hbFRhYmxlIiBzdHlsZT0id2lkdGg6IDY3NXB0OyIgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIHdpZHRoPSI5MDAiPgotIDx0Ym9keT48dHI+Ci0gIDx0ZCBzdHlsZT0icGFkZGluZzogMGluOyIgdmFsaWduPSJ0b3AiPgotICA8dGFibGUgY2xhc3M9Ik1zb05vcm1hbFRhYmxlIiBzdHlsZT0id2lkdGg6IDY3NXB0OyIgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIHdpZHRoPSI5MDAiPgotICAgPHRib2R5Pjx0ciBzdHlsZT0iIj4KLSAgICA8dGQgc3R5bGU9InBhZGRpbmc6IDBpbiA1LjRwdDsiIHZhbGlnbj0idG9wIj4KLSAgICA8cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiA4cHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtBcmlhbCZxdW90OyxzYW5zLXNlcmlmOyBjb2xvcjogYmx1ZTsiPjxhIGhyZWY9Ii4uLy4uL1JlbGVhc2VfTm90ZXMuaHRtbCI+QmFjayB0byBSZWxlYXNlIHBhZ2U8L2E+PC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7Ij48bzpwPjwvbzpwPjwvc3Bhbj48L3A+Ci0gICAgPC90ZD4KLSAgIDwvdHI+Ci0gICA8dHIgc3R5bGU9IiI+Ci0gICAgPHRkIHN0eWxlPSJwYWRkaW5nOiAxLjVwdDsiPgotICAgIDxoMSBzdHlsZT0ibWFyZ2luLWJvdHRvbTogMC4yNWluOyB0ZXh0LWFsaWduOiBjZW50ZXI7IiBhbGlnbj0iY2VudGVyIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAyMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyBjb2xvcjogcmdiKDUxLCAxMDIsIDI1NSk7Ij5SZWxlYXNlIE5vdGVzIGZvciBTVE0zMkY3eHggSEFMIERyaXZlcnM8L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMjBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPjxvOnA+PC9vOnA+PC9zcGFuPjwvaDE+Ci0gICAgPHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9InRleHQtYWxpZ246IGNlbnRlcjsiIGFsaWduPSJjZW50ZXIiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtBcmlhbCZxdW90OyxzYW5zLXNlcmlmOyBjb2xvcjogYmxhY2s7Ij5Db3B5cmlnaHQgMjAxNyBTVE1pY3JvZWxlY3Ryb25pY3M8L3NwYW4+PHNwYW4gc3R5bGU9ImNvbG9yOiBibGFjazsiPjx1MTpwPjwvdTE6cD48bzpwPjwvbzpwPjwvc3Bhbj48L3A+Ci0gICAgPHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9InRleHQtYWxpZ246IGNlbnRlcjsiIGFsaWduPSJjZW50ZXIiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtBcmlhbCZxdW90OyxzYW5zLXNlcmlmOyBjb2xvcjogYmxhY2s7Ij48aW1nIGlkPSJfeDAwMDBfaTEwNDAiIHNyYz0iX2h0bXJlc2Mvc3RfbG9nby5wbmciIGJvcmRlcj0iMCIgaGVpZ2h0PSI4MSIgd2lkdGg9IjEwOSI+PC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7Ij48bzpwPjwvbzpwPjwvc3Bhbj48L3A+Ci0gICAgPC90ZD4KLSAgIDwvdHI+Ci0gIDwvdGJvZHk+PC90YWJsZT4KLSAgPHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9IiI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtBcmlhbCZxdW90OyxzYW5zLXNlcmlmOyI+VGhlJm5ic3A7aGFyZHdhcmUgYWJzdHJhY3Rpb24gbGF5ZXIKLSAgKEhBTCkgcHJvdmlkZXMgbG93IGxldmVsIGRyaXZlcnMgYW5kIHRoZSBoYXJkd2FyZSBpbnRlcmZhY2luZyBtZXRob2RzIHRvCi0gIGludGVyYWN0IHdpdGggdXBwZXIgbGF5ZXIgKGFwcGxpY2F0aW9uLCBsaWJyYXJpZXMgYW5kIHN0YWNrcykuICZuYnNwO0l0Ci0gIGluY2x1ZGVzIGEgY29tcGxldGUgc2V0IG9mIHJlYWR5LXRvLXVzZSBBUElzLCB0aGF0IGFyZSBmZWF0dXJlLW9yaWVudGVkCi0gIGluc3RlYWQgb2YgSVAtT3JpZW50ZWQgdG8gc2ltcGxpZnkgdXNlciBhcHBsaWNhdGlvbiBkZXZlbG9wbWVudC48L3NwYW4+IDxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJnF1b3Q7QXJpYWwmcXVvdDssc2Fucy1zZXJpZjsgZGlzcGxheTogbm9uZTsiPjxvOnA+PC9vOnA+PC9zcGFuPjwvcD4KLSAgPHRhYmxlIGNsYXNzPSJNc29Ob3JtYWxUYWJsZSIgc3R5bGU9IndpZHRoOiA2NzVwdDsgbWFyZ2luLWxlZnQ6IDMxLjVwdDsiIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjAiIHdpZHRoPSI5MDAiPgotICAgPHRib2R5Pjx0ciBzdHlsZT0iIj4KLSAgICA8dGQgc3R5bGU9InBhZGRpbmc6IDBpbjsiIHZhbGlnbj0idG9wIj4KLSAgICA8aDIgc3R5bGU9ImJhY2tncm91bmQ6IHJnYig1MSwgMTAyLCAyNTUpIG5vbmUgcmVwZWF0IHNjcm9sbCAwJSA1MCU7IC1tb3otYmFja2dyb3VuZC1jbGlwOiAtbW96LWluaXRpYWw7IC1tb3otYmFja2dyb3VuZC1vcmlnaW46IC1tb3otaW5pdGlhbDsgLW1vei1iYWNrZ3JvdW5kLWlubGluZS1wb2xpY3k6IC1tb3otaW5pdGlhbDsiPjxhIG5hbWU9Ikhpc3RvcnkiPjwvYT48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMnB0OyBjb2xvcjogd2hpdGU7Ij5VcGRhdGUKLSAgICBIaXN0b3J5PC9zcGFuPjxzcGFuIHN0eWxlPSJjb2xvcjogYmxhY2s7Ij4gPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvaDI+Ci0gICAgPGgzIHN0eWxlPSJiYWNrZ3JvdW5kOiByZ2IoNTEsIDEwMiwgMjU1KSBub25lIHJlcGVhdCBzY3JvbGwgMCUgNTAlOyBtYXJnaW4tcmlnaHQ6IDUwMHB0OyAtbW96LWJhY2tncm91bmQtY2xpcDogLW1vei1pbml0aWFsOyAtbW96LWJhY2tncm91bmQtb3JpZ2luOiAtbW96LWluaXRpYWw7IC1tb3otYmFja2dyb3VuZC1pbmxpbmUtcG9saWN5OiAtbW96LWluaXRpYWw7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7QXJpYWwmcXVvdDssc2Fucy1zZXJpZjsgY29sb3I6IHdoaXRlOyI+djEuMi45LwotICAgIDEyLUZlYnJ1YXJ5LTIwMjE8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9oMz4KLSAgICA8cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luOiA0LjVwdCAwaW4gNC41cHQgMC4yNWluOyI+PGI+PHU+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsgY29sb3I6IGJsYWNrOyI+TWFpbiBDaGFuZ2VzPG86cD48L286cD48L3NwYW4+PC91PjwvYj48L3A+Ci0gICAgPHAgc3R5bGU9Im1hcmdpbi1sZWZ0OiAwLjVpbjsgdGV4dC1pbmRlbnQ6IC0wLjI1aW47Ij48IS0tW2lmICFzdXBwb3J0TGlzdHNdLS0+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6IFN5bWJvbDsgY29sb3I6IHJnYigxNywgMTcsIDE3KTsiPjxzcGFuIHN0eWxlPSIiPrc8c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O1RpbWVzIE5ldyBSb21hbiZxdW90OzsgZm9udC1zdHlsZTogbm9ybWFsOyBmb250LXZhcmlhbnQ6IG5vcm1hbDsgZm9udC13ZWlnaHQ6IG5vcm1hbDsgZm9udC1zaXplOiA3cHQ7IGxpbmUtaGVpZ2h0OiBub3JtYWw7IGZvbnQtc2l6ZS1hZGp1c3Q6IG5vbmU7IGZvbnQtc3RyZXRjaDogbm9ybWFsOyI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Ci0gICAgPC9zcGFuPjwvc3Bhbj48L3NwYW4+PCEtLVtlbmRpZl0tLT48c3BhbiBkaXI9Imx0ciI+PC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7IGNvbG9yOiByZ2IoMTcsIDE3LCAxNyk7Ij5HZW5lcmFsIHVwZGF0ZXMgdG8gZml4IGtub3duIGRlZmVjdHMgYW5kIGVuaGFuY2VtZW50cwotICAgIGltcGxlbWVudGF0aW9uLjxvOnA+PC9vOnA+PC9zcGFuPjwvcD4KLSAgICA8dWwgdHlwZT0iZGlzYyI+Ci0gICAgIDx1bCB0eXBlPSJjaXJjbGUiPgotICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogcmdiKDE3LCAxNywgMTcpOyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVwZGF0ZSBoYWxfZGVmLmgKLSAgICAgICAgICB0byBzdXBwb3J0IG5ldyBBUk0gY29tcGlsZXIgS2VpbCBWNi48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogcmdiKDE3LCAxNywgMTcpOyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkFkZCBuZXcgZGVmaW5lcwotICAgICAgICAgIGZvciBBUk0gY29tcGlsZXIgVjY6PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgIDx1bCB0eXBlPSJzcXVhcmUiPgotICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IHJnYigxNywgMTcsIDE3KTsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5fX3dlYWs8bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IHJnYigxNywgMTcsIDE3KTsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5fX3BhY2tlZDxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogcmdiKDE3LCAxNywgMTcpOyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPl9fTk9JTkxJTkU8bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgPC91bD4KLSAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IHJnYigxNywgMTcsIDE3KTsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5VcGRhdGUgSEFMCi0gICAgICAgICAgVGltZUJhc2UgVElNLCBSVEMgYWxhcm0gYW5kIFJUQyBXYWtlVXAgdGVtcGxhdGVzIGZvciBtb3JlIHJvYnVzdG5lc3MuPG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgIDx1bCB0eXBlPSJzcXVhcmUiPgotICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IHJnYigxNywgMTcsIDE3KTsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5VcGRhdGVkIEhhbF9Jbml0XzxzcGFuIGNsYXNzPSJncmFtZSI+VGljayg8L3NwYW4+KSBBUEkgdG8gcHJvcGVybHkgc3RvcmUgdGhlIHByaW9yaXR5IHdoZW4KLSAgICAgICAgICAgdXNpbmcgdGhlIG5vbi1kZWZhdWx0IHRpbWUgYmFzZS48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgPC91bD4KLSAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IHJnYigxNywgMTcsIDE3KTsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij6RcmVnaXN0ZXKSIGtleXdvcmQKLSAgICAgICAgICByZXRpcmVkIHRvIGJlIGNvbXBsaWFudCB3aXRoIEMrKzE3IChhbHJlYWR5IGRlcHJlY2F0ZWQgaW4gQysrMTEpLjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiByZ2IoMTcsIDE3LCAxNyk7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+QWRkIExpY2Vuc2UubWQKLSAgICAgICAgICBhbmQgUmVhZG1lLm1kIGZpbGVzIHJlcXVpcmVkIGZvciBHaXRIdWIgcHVibGljYXRpb24uPG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IHJnYigxNywgMTcsIDE3KTsiPjxzdHJvbmcgc3R5bGU9IiI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTC9MTAotICAgICAgICAgIFRJTTwvc3Bhbj48L3N0cm9uZz48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+Jm5ic3A7dXBkYXRlPG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgIDx1bCB0eXBlPSJzcXVhcmUiPgotICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IHJnYigxNywgMTcsIDE3KTsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5TdXBwb3J0IG11bHRpcGxlCi0gICAgICAgICAgIHNpbXVsdGFuZW91cyBETUEgcmVxdWVzdHMgd2l0aCBkaWZmZXJlbnQgY2hhbm5lbHM6PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgICA8dWwgdHlwZT0ic3F1YXJlIj4KLSAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogcmdiKDE3LCAxNywgMTcpOyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkltcGxlbWVudCBETUEgYnVyc3Qgc3RhdGUgbWFuYWdlbWVudCBtZWNoYW5pc20uPG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogcmdiKDE3LCAxNywgMTcpOyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkltcGxlbWVudCBUSU0gY2hhbm5lbCBzdGF0ZSBtYW5hZ2VtZW50IG1lY2hhbmlzbS48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgIDwvdWw+Ci0gICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogcmdiKDE3LCAxNywgMTcpOyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVwZGF0ZSBIQUxfVElNX0lDX1N0b3BfRE1BIGltcGxlbWVudGF0aW9uIHRvIGRpc2FibGUgdGhlIFRJTSBjaGFubmVsIGJlZm9yZQotICAgICAgICAgICBkaXNhYmxpbmcgRE1BIHRyYW5zZmVyLjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogcmdiKDE3LCAxNywgMTcpOyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVwZGF0ZSBIQUxfVElNX3h4eF9TdGFydC0gZnVuY3Rpb25zIHRvIHN5c3RlbWF0aWNhbGx5IGFjY2VzcyB0byB0aGUKLSAgICAgICAgICAgVElNeF9TTUNSIHJlZ2lzdGVyIGV2ZW4gaWYgdGhlIFRJTXggaW5zdGFuY2UgY2Fubm90IGJlIHVzZWQgYXMgc2xhdmUKLSAgICAgICAgICAgdGltZXIuPG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiByZ2IoMTcsIDE3LCAxNyk7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+TWFrZQotICAgICAgICAgICBUSU1fRE1BRGVsYXlQdWxzZUNwbHQgY2FsbGJhY2sgYXMgYSBwcml2YXRlIGZ1bmN0aW9uLjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogcmdiKDE3LCAxNywgMTcpOyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVwZGF0ZQotICAgICAgICAgICBIQUxfVElNRXhfT25lUHVsc2VOX1N0YXJ0IGFuZCBIQUxfVElNRXhfT25lUHVsc2VOX1N0b3AgKHBvb2xpbmcgYW5kCi0gICAgICAgICAgIElUIG1vZGUpIHRvIHRha2UgaW50byBjb25zaWRlcmF0aW9uIGFsbCBPdXRwdXRDaGFubmVsIHBhcmFtZXRlcnMuPG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiByZ2IoMTcsIDE3LCAxNyk7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+Q29ycmVjdGUKLSAgICAgICAgICAgcmV2ZXJzZWQgZGVzY3JpcHRpb24gb2YgVElNX0xMX0VDX09ORVBVTFNFTU9ERSBPbmUgUHVsc2UgTW9kZS48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IHJnYigxNywgMTcsIDE3KTsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5VcGRhdGUgTExfVElNXzxzcGFuIGNsYXNzPSJncmFtZSI+R2V0Q291bnRlck1vZGUoPC9zcGFuPikgQVBJIHRvIHJldHVybiB0aGUgY29ycmVjdAotICAgICAgICAgICBjb3VudGVyIG1vZGUuPG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgIDwvdWw+Ci0gICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiByZ2IoMTcsIDE3LCAxNyk7Ij48c3Ryb25nIHN0eWxlPSIiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwKLSAgICAgICAgICBMUFRJTTwvc3Bhbj48L3N0cm9uZz48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+Jm5ic3A7dXBkYXRlPG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgIDx1bCB0eXBlPSJzcXVhcmUiPgotICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IHJnYigxNywgMTcsIDE3KTsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5VcGRhdGUgSEFMX0xQVElNX0luaXQgaW1wbGVtZW50YXRpb24gdG8gY29uZmlndXJlIGRpZ2l0YWwgZmlsdGVyIGZvcgotICAgICAgICAgICBleHRlcm5hbCBjbG9jayB3aGVuIExQVElNIGlzIGNsb2NrZWQgYnkgYW4gaW50ZXJuYWwgY2xvY2sgc291cmNlLjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICA8L3VsPgotICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogcmdiKDE3LCAxNywgMTcpOyI+PHN0cm9uZyBzdHlsZT0iIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMCi0gICAgICAgICAgVUFSVDwvc3Bhbj48L3N0cm9uZz48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+Jm5ic3A7dXBkYXRlPG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgIDx1bCB0eXBlPSJzcXVhcmUiPgotICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IHJnYigxNywgMTcsIDE3KTsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5SZXdvcmsgQlJSCi0gICAgICAgICAgIHJlZ2lzdGVyIGNhbGN1bGF0aW9uIGFsZ29yaXRobSBpbiBVQVJUXzxzcGFuIGNsYXNzPSJncmFtZSI+U2V0Q29uZmlnKDwvc3Bhbj4pCi0gICAgICAgICAgIHRvIG9wdGltaXplIFJPTSBzaXplLjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogcmdiKDE3LCAxNywgMTcpOyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVwZGF0ZSBIQUxfVUFSVF88c3BhbiBjbGFzcz0iZ3JhbWUiPklSUUhhbmRsZXIoPC9zcGFuPikgdG8gaGFuZGxlIHJlY2VpdmVyIHRpbWVvdXQKLSAgICAgICAgICAgaW50ZXJydXB0aW9uLjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogcmdiKDE3LCAxNywgMTcpOyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkVuaGFuY2UgcmVjZXB0aW9uCi0gICAgICAgICAgIGZvciBpZGxlIHNlcnZpY2VzIChSZWNlcHRpb25Ub0lkbGUpOjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICAgPHVsIHR5cGU9InNxdWFyZSI+Ci0gICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IHJnYigxNywgMTcsIDE3KTsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5BZGQgYSBuZXcgZmllbGQgKEhBTF9VQVJUX1J4VHlwZVR5cGVEZWYpIHRvIHRoZQotICAgICAgICAgICAgVUFSVF9IYW5kbGVUeXBlRGVmIHN0cnVjdHVyZSB0byBpZGVudGlmeSB0aGUgdHlwZSBvZiBvbmdvaW5nCi0gICAgICAgICAgICByZWNlcHRpb24uPG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogcmdiKDE3LCAxNywgMTcpOyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkFkZCBVQVJUIFJlY2VwdGlvbiBFdmVudCBDYWxsYmFjayByZWdpc3RyYXRpb24uPG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgICA8L3VsPgotICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IHJnYigxNywgMTcsIDE3KTsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5BZGQgcmVjZXB0aW9uCi0gICAgICAgICAgIHNwZWNpZmljIEFQSXMgc3BlY2lmaWMgdG8gcmVjZXB0aW9uIGZvciBJZGxlIHRyYW5zZmVyIGluIGRpZmZlcmVudAotICAgICAgICAgICBtb2Rlczo8bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgIDx1bCB0eXBlPSJzcXVhcmUiPgotICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiByZ2IoMTcsIDE3LCAxNyk7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMX1VBUlRFeF88c3BhbiBjbGFzcz0iZ3JhbWUiPlJlY2VpdmVUb0lkbGUoPC9zcGFuPik6Ci0gICAgICAgICAgICBSZWNlaXZlIGFuIGFtb3VudCBvZiBkYXRhIGluIGJsb2NraW5nIG1vZGUgdW50aWwgZWl0aGVyIHRoZQotICAgICAgICAgICAgZXhwZWN0ZWQgbnVtYmVyIG9mIGRhdGEgaXMgcmVjZWl2ZWQgb3IgYW4gSURMRSBldmVudCBvY2N1cnMuPG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogcmdiKDE3LCAxNywgMTcpOyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTF9VQVJURXhfUmVjZWl2ZVRvSWRsZV88c3BhbiBjbGFzcz0iZ3JhbWUiPklUKDwvc3Bhbj4pOgotICAgICAgICAgICAgUmVjZWl2ZSBhbiBhbW91bnQgb2YgZGF0YSBpbiBpbnRlcnJ1cHQgbW9kZSB1bnRpbCBlaXRoZXIgdGhlCi0gICAgICAgICAgICBleHBlY3RlZCBudW1iZXIgb2YgZGF0YSBpcyByZWNlaXZlZCBvciBhbiBJRExFIGV2ZW50IG9jY3Vycy48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiByZ2IoMTcsIDE3LCAxNyk7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMX1VBUlRFeF9SZWNlaXZlVG9JZGxlXzxzcGFuIGNsYXNzPSJncmFtZSI+RE1BKDwvc3Bhbj4pOgotICAgICAgICAgICAgUmVjZWl2ZSBhbiBhbW91bnQgb2YgZGF0YSBpbiBETUEgbW9kZSB1bnRpbCBlaXRoZXIgdGhlIGV4cGVjdGVkCi0gICAgICAgICAgICBudW1iZXIgb2YgZGF0YSBpcyByZWNlaXZlZCBvciBhbiBJRExFIGV2ZW50IG9jY3Vycy48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgIDwvdWw+Ci0gICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogcmdiKDE3LCAxNywgMTcpOyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVwZGF0ZSBIQUxfVUFSVF88c3BhbiBjbGFzcz0iZ3JhbWUiPlJlY2VpdmUoPC9zcGFuPiksIEhBTF9VQVJUX1JlY2VpdmVfSVQoKSBhbmQKLSAgICAgICAgICAgSEFMX1VBUlRfUmVjZWl2ZV9ETUEoKSBBUElzIHRvIHN1cHBvcnQgdGhlIG5ldyBlbmhhbmNlbWVudCBvZgotICAgICAgICAgICBSZWNlcHRpb25Ub0lkbGUuPG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiByZ2IoMTcsIDE3LCAxNyk7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlIEhBTF9VQVJUXzxzcGFuIGNsYXNzPSJncmFtZSI+SVJRSGFuZGxlcig8L3NwYW4+KSB0byBoYW5kbGUgcmVjZWl2ZXIgdGltZW91dAotICAgICAgICAgICBpbnRlcnJ1cHQuPG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiByZ2IoMTcsIDE3LCAxNyk7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlIFVBUlQKLSAgICAgICAgICAgcmVjZWl2ZSBwcm9jZXNzZXMgKElUIGFuZCBETUEpIHRvIGhhbmRsZSB0aGUgVUFSVCByZWNlaXZlknMgdGltZW91dAotICAgICAgICAgICBpbnRlcnJ1cHQuPG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgIDwvdWw+Ci0gICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiByZ2IoMTcsIDE3LCAxNyk7Ij48c3Ryb25nIHN0eWxlPSIiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwKLSAgICAgICAgICBTTUFSVENBUkQ8L3NwYW4+PC9zdHJvbmc+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPiZuYnNwO3VwZGF0ZTxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICA8dWwgdHlwZT0ic3F1YXJlIj4KLSAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiByZ2IoMTcsIDE3LCAxNyk7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+QWRkIHN1cHBvcnQgZm9yCi0gICAgICAgICAgIGRhdGEgcmUtdHJhbnNtaXNzaW9uIHdoZW4gYSBOQUNLIGlzIHJlY2VpdmVkIGluIFNtYXJ0Q2FyZCBUPTAuPG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiByZ2IoMTcsIDE3LCAxNyk7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+Rml4IHR5cG9zIGluCi0gICAgICAgICAgIHRoZSBTTUFSVENBUkQgU3RhdGUgZGVmaW5pdGlvbiBkZXNjcmlwdGlvbi48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgPC91bD4KLSAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IHJnYigxNywgMTcsIDE3KTsiPjxzdHJvbmcgc3R5bGU9IiI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTAotICAgICAgICAgIFBXUjwvc3Bhbj48L3N0cm9uZz48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+Jm5ic3A7dXBkYXRlPG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgIDx1bCB0eXBlPSJzcXVhcmUiPgotICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IHJnYigxNywgMTcsIDE3KTsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5VcGRhdGUgX19IQUxfUFdSX0NMRUFSX09EUlVEUl88c3BhbiBjbGFzcz0iZ3JhbWUiPkZMQUcoPC9zcGFuPikgbWFjcm8gaW4KLSAgICAgICAgICAgb3JkZXIgdG8gYmUgYWJsZSB0byBzZXQgdGhlIEVuYWJsZSBJbnRlcm5hbCBXYWtldXAgKEVJV1VQKSBiaXQuPG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgIDwvdWw+Ci0gICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiByZ2IoMTcsIDE3LCAxNyk7Ij48c3Ryb25nIHN0eWxlPSIiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwKLSAgICAgICAgICBTUEk8L3NwYW4+PC9zdHJvbmc+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPiZuYnNwO3VwZGF0ZTxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICA8dWwgdHlwZT0ic3F1YXJlIj4KLSAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiByZ2IoMTcsIDE3LCAxNyk7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlIFNQSV88c3BhbiBjbGFzcz0iZ3JhbWUiPkRNQVJlY2VpdmVDcGx0KDwvc3Bhbj4pIEFQSSB0byBoYW5kbGUgZWZmaWNpZW50bHkgdGhlCi0gICAgICAgICAgIHJlcGVhdGVkIHRyYW5zZmVycy48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgIDx1bCB0eXBlPSJzcXVhcmUiPgotICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiByZ2IoMTcsIDE3LCAxNyk7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+RGlzYWJsZSBUWCBETUEgcmVxdWVzdCBvbmx5IGluIGJpZGlyZWN0aW9uYWwgcmVjZWl2ZQotICAgICAgICAgICAgbW9kZS48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgIDwvdWw+Ci0gICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogcmdiKDE3LCAxNywgMTcpOyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVwZGF0ZSBIQUxfU1BJXzxzcGFuIGNsYXNzPSJncmFtZSI+SW5pdCg8L3NwYW4+KSBBUEk6PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgICA8dWwgdHlwZT0ic3F1YXJlIj4KLSAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogcmdiKDE3LCAxNywgMTcpOyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkF2b2lkIHNldHRpbmcgdGhlIEJhdWRSYXRlUHJlc2NhbGVyIGluIGNhc2Ugb2YgU2xhdmUKLSAgICAgICAgICAgIE1vdG9yb2xhIE1vZGUuPG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogcmdiKDE3LCAxNywgMTcpOyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVzZSB0aGUgPHNwYW4gY2xhc3M9ImdyYW1lIj5iaXQtbWFzazwvc3Bhbj4gZm9yIFNQSQotICAgICAgICAgICAgY29uZmlndXJhdGlvbi48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgIDwvdWw+Ci0gICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogcmdiKDE3LCAxNywgMTcpOyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVwZGF0ZSBUcmFuc21pdC9SZWNlaXZlIHByb2Nlc3NlcyBpbiBoYWxmLWR1cGxleCBtb2RlLjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICAgPHVsIHR5cGU9InNxdWFyZSI+Ci0gICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IHJnYigxNywgMTcsIDE3KTsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5EaXNhYmxlIHRoZSBTUEkgaW5zdGFuY2UgYmVmb3JlIHNldHRpbmcgQkRJT0UgYml0LjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICAgPC91bD4KLSAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiByZ2IoMTcsIDE3LCAxNyk7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+Rml4IHdyb25nCi0gICAgICAgICAgIHRpbWVvdXQgbWFuYWdlbWVudC48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgIDx1bCB0eXBlPSJzcXVhcmUiPgotICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiByZ2IoMTcsIDE3LCAxNyk7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+Q2FsY3VsYXRlIHRoZSB0aW1lb3V0IGJhc2VkIG9uIGEgc29mdHdhcmUgbG9vcCBpbiBvcmRlcgotICAgICAgICAgICAgdG8gYXZvaWQgYSBibG9ja2luZyBpc3N1ZSBpZiBzeXN0aWNrIGlzIGRpc2FibGVkLjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICAgPC91bD4KLSAgICAgIDwvdWw+Ci0gICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiByZ2IoMTcsIDE3LCAxNyk7Ij48c3Ryb25nIHN0eWxlPSIiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwKLSAgICAgICAgICBSQ0M8L3NwYW4+PC9zdHJvbmc+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPiZuYnNwO3VwZGF0ZTxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICA8dWwgdHlwZT0ic3F1YXJlIj4KLSAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiByZ2IoMTcsIDE3LCAxNyk7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlIEhBTF9SQ0NFeF88c3BhbiBjbGFzcz0iZ3JhbWUiPlBlcmlwaENMS0NvbmZpZyg8L3NwYW4+KSB0byBhbGxvdyBQTExJMlMKLSAgICAgICAgICAgY29uZmlndXJhdGlvbiBpbmRlcGVuZGVudGx5IGZyb20gcGVyaXBoZXJhbHMuPG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgIDwvdWw+Ci0gICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiByZ2IoMTcsIDE3LCAxNyk7Ij48c3Ryb25nIHN0eWxlPSIiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwKLSAgICAgICAgICBJUkRBPC9zcGFuPjwvc3Ryb25nPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij4mbmJzcDt1cGRhdGU8bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgPHVsIHR5cGU9InNxdWFyZSI+Ci0gICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogcmdiKDE3LCAxNywgMTcpOyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkZpeCB0eXBvcyBpbgotICAgICAgICAgICB0aGUgSVJEQSBTdGF0ZSBkZWZpbml0aW9uIGRlc2NyaXB0aW9uLjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICA8L3VsPgotICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogcmdiKDE3LCAxNywgMTcpOyI+PHN0cm9uZyBzdHlsZT0iIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMCi0gICAgICAgICAgUlRDX0JLUDwvc3Bhbj48L3N0cm9uZz48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+Jm5ic3A7dXBkYXRlPG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgIDx1bCB0eXBlPSJzcXVhcmUiPgotICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IHJnYigxNywgMTcsIDE3KTsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5OZXcgQVBJcyB0bwotICAgICAgICAgICBzdWJ0cmFjdCBvciBhZGQgb25lIGhvdXIgdG8gdGhlIGNhbGVuZGFyIGluIG9uZSBzaW5nbGUgb3BlcmF0aW9uCi0gICAgICAgICAgIHdpdGhvdXQgZ29pbmcgdGhyb3VnaCB0aGUgaW5pdGlhbGl6YXRpb24gcHJvY2VkdXJlIChEYXlsaWdodAotICAgICAgICAgICBTYXZpbmcpOjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICAgPHVsIHR5cGU9InNxdWFyZSI+Ci0gICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IHJnYigxNywgMTcsIDE3KTsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5BZGQgSEFMX1JUQ19EU1RfQWRkMTxzcGFuIGNsYXNzPSJncmFtZSI+SG91cig8L3NwYW4+KTxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IHJnYigxNywgMTcsIDE3KTsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUxfUlRDX0RTVF9TdWIxPHNwYW4gY2xhc3M9ImdyYW1lIj5Ib3VyKDwvc3Bhbj4pPG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogcmdiKDE3LCAxNywgMTcpOyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTF9SVENfRFNUXzxzcGFuIGNsYXNzPSJncmFtZSI+U2V0U3RvcmVPcGVyYXRpb24oPC9zcGFuPik8bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiByZ2IoMTcsIDE3LCAxNyk7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMX1JUQ19EU1RfPHNwYW4gY2xhc3M9ImdyYW1lIj5DbGVhclN0b3JlT3BlcmF0aW9uKDwvc3Bhbj4pPG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogcmdiKDE3LCAxNywgMTcpOyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTF9SVENfRFNUXzxzcGFuIGNsYXNzPSJncmFtZSI+UmVhZFN0b3JlT3BlcmF0aW9uKDwvc3Bhbj4pPG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgICA8L3VsPgotICAgICAgPC91bD4KLSAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IHJnYigxNywgMTcsIDE3KTsiPjxzdHJvbmcgc3R5bGU9IiI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTAotICAgICAgICAgIENSWVA8L3NwYW4+PC9zdHJvbmc+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPiZuYnNwO3VwZGF0ZTxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICA8dWwgdHlwZT0ic3F1YXJlIj4KLSAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiByZ2IoMTcsIDE3LCAxNyk7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlIEhBTF9DUllQXzxzcGFuIGNsYXNzPSJncmFtZSI+U2V0Q29uZmlnKDwvc3Bhbj4pIGFuZCBIQUxfQ1JZUF9HZXRDb25maWcoKSBBUElzIHRvIHNldC9nZXQKLSAgICAgICAgICAgdGhlIGNvbnRpbmVudCBvZiBLZXlJVkNvbmZpZ1NraXAgY29ycmVjdGx5Ljwvc3Bhbj48L2xpPgotICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogcmdiKDE3LCAxNywgMTcpOyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlN1cHBvcnQgb2YgbWVzc2FnZSBoZWFkIG5vIG11bHRpcGxlIG9mIHdvcmQgZm9yIEdDTSBhbmQgQ0NNIGFsZ29yaXRobXMuPGJyPgotPC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zby1mYXJlYXN0LWZvbnQtZmFtaWx5OiZxdW90O1RpbWVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSb21hbiZxdW90Ozttc28tYmlkaS1mb250LWZhbWlseTomcXVvdDtTZWdvZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVSSZxdW90OzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6RlIiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhbmc9IkVOLVVTIj5GaXggdW5leHBlY3RlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXRlY3Rpb24gYnkgcmVvcmRlcmluZyBFWFRJCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZy48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iY29sb3I6IzExMTExMTttc28tbWFyZ2luLXRvcC1hbHQ6YXV0bzttc28tbWFyZ2luLWJvdHRvbS1hbHQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0bztsaW5lLWhlaWdodDpub3JtYWw7bXNvLWxpc3Q6bDAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbDEgbGZvMTt0YWItc3RvcHM6bGlzdCAuNWluIj48Yj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOjEwLjBwdDtmb250LWZhbWlseTomcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7bXNvLWZhcmVhc3QtZm9udC1mYW1pbHk6CiAKLSAgICAgIDwvdWw+Ci0gICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiByZ2IoMTcsIDE3LCAxNyk7Ij48c3Ryb25nIHN0eWxlPSIiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwKLSAgICAgICAgICBTQUk8L3NwYW4+PC9zdHJvbmc+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPiZuYnNwO3VwZGF0ZTxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICA8dWwgdHlwZT0ic3F1YXJlIj4KLSAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiByZ2IoMTcsIDE3LCAxNyk7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlIEhBTF9TQUlfPHNwYW4gY2xhc3M9ImdyYW1lIj5Jbml0KDwvc3Bhbj4pIEFQSSB0byBjb3JyZWN0IHRoZSBmb3JtdWxhIGluIGNhc2Ugb2YKLSAgICAgICAgICAgU1BESUYgaXMgd3JvbmcuPG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiByZ2IoMTcsIDE3LCAxNyk7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlIEhBTF9TQUlfPHNwYW4gY2xhc3M9ImdyYW1lIj5JUlFIYW5kbGVyKDwvc3Bhbj4pIEFQSTo8bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgIDx1bCB0eXBlPSJzcXVhcmUiPgotICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiByZ2IoMTcsIDE3LCAxNyk7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+Q2xlYXIgaW50ZXJydXB0IGZsYWdzOiBBRlNERVQsIExGU0RFVCBhbmQgV0NLQ0ZHLjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICAgPC91bD4KLSAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiByZ2IoMTcsIDE3LCAxNyk7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlCi0gICAgICAgICAgIEhBTF9TQUlfUmVjZWl2ZV88c3BhbiBjbGFzcz0iZ3JhbWUiPkRNQSg8L3NwYW4+KSBBUEkgdG8gZm9sbG93IHRoZQotICAgICAgICAgICBzZXF1ZW5jZSBkZXNjcmliZWQgaW4gdGhlIHJlZmVyZW5jZSBtYW51YWwuPG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiByZ2IoMTcsIDE3LCAxNyk7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlIHRvIGF2b2lkCi0gICAgICAgICAgIHRoZSBpbmNvcnJlY3QgbGVmdC9yaWdodCBzeW5jaHJvbml6YXRpb24uPG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgICA8dWwgdHlwZT0ic3F1YXJlIj4KLSAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogcmdiKDE3LCAxNywgMTcpOyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVwZGF0ZSBIQUxfU0FJX1RyYW5zbWl0XzxzcGFuIGNsYXNzPSJncmFtZSI+RE1BKDwvc3Bhbj4pCi0gICAgICAgICAgICBBUEkgdG8gZm9sbG93IHRoZSBzZXF1ZW5jZSBkZXNjcmliZWQgaW4gdGhlIHJlZmVyZW5jZSBtYW51YWwgZm9yCi0gICAgICAgICAgICBzbGF2ZSB0cmFuc21pdHRlciBtb2RlLjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICAgPC91bD4KLSAgICAgIDwvdWw+Ci0gICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiByZ2IoMTcsIDE3LCAxNyk7Ij48c3Ryb25nIHN0eWxlPSIiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwKLSAgICAgICAgICBHUElPPC9zcGFuPjwvc3Ryb25nPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij4mbmJzcDt1cGRhdGU8bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgPHVsIHR5cGU9InNxdWFyZSI+Ci0gICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogcmdiKDE3LCAxNywgMTcpOyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVwZGF0ZSBMTC9IQUwKLSAgICAgICAgICAgR1BJT188c3BhbiBjbGFzcz0iZ3JhbWUiPlRvZ2dsZVBpbig8L3NwYW4+KSBBUElzIHRvIGFsbG93IG11bHRpIFBpbpJzCi0gICAgICAgICAgIHRvZ2dsaW5nLjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICA8L3VsPgotICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogcmdiKDE3LCAxNywgMTcpOyI+PHN0cm9uZyBzdHlsZT0iIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMCi0gICAgICAgICAgSTJDPC9zcGFuPjwvc3Ryb25nPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij4mbmJzcDt1cGRhdGU8bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgPHVsIHR5cGU9InNxdWFyZSI+Ci0gICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogcmdiKDE3LCAxNywgMTcpOyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVwZGF0ZSBTVE0zMkY3NDV4eCwgU1RNMzJGNzQ2eHgsIFNUTTMyRjc1MHh4LCBTVE0zMkY3NTZ4eCBoZWFkZXJzIGZpbGVzIHRvCi0gICAgICAgICAgIHN1cHBvcnQgSTJDIEZhc3QgbW9kZSBwbHVzLjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICA8L3VsPgotICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogcmdiKDE3LCAxNywgMTcpOyI+PHN0cm9uZyBzdHlsZT0iIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMCi0gICAgICAgICAgREFDPC9zcGFuPjwvc3Ryb25nPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij4mbmJzcDt1cGRhdGU8bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgPHVsIHR5cGU9InNxdWFyZSI+Ci0gICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogcmdiKDE3LCAxNywgMTcpOyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVwZGF0ZSBIQUxfREFDRXhfPHNwYW4gY2xhc3M9ImdyYW1lIj5EdWFsU3RhcnQoPC9zcGFuPikgQVBJIHdoZW4gY2hlY2tpbmcgdGhlCi0gICAgICAgICAgIHNvZnR3YXJlIHRyaWdnZXIgd2l0aCB0aGUgcmlnaHQgdmFsdWVzOjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICAgPHVsIHR5cGU9InNxdWFyZSI+Ci0gICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IHJnYigxNywgMTcsIDE3KTsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5EQUNfVFJJR0dFUl9TT0ZUV0FSRSBpbnN0ZWFkIG9mIERBQ19DUl9URU4xLjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IHJnYigxNywgMTcsIDE3KTsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij4oREFDX1RSSUdHRVJfU09GVFdBUkUgJmx0OyZsdDsgKERBQ19DSEFOTkVMXzIgJmFtcDsKLSAgICAgICAgICAgIDB4MTBVTCkpIGluc3RlYWQgb2YgREFDX0NSX1RFTjIuPG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgICA8L3VsPgotICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IHJnYigxNywgMTcsIDE3KTsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5VcGRhdGUgZHJpdmVyIHRvCi0gICAgICAgICAgIHN1cHBvcnQgZHVhbCBtb2RlLiBUd28gbmV3IEFQSXMgYWRkZWQ6PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgICA8dWwgdHlwZT0ic3F1YXJlIj4KLSAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogcmdiKDE3LCAxNywgMTcpOyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTF9EQUNFeF88c3BhbiBjbGFzcz0iZ3JhbWUiPkR1YWxTdGFydCg8L3NwYW4+KTxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IHJnYigxNywgMTcsIDE3KTsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUxfREFDRXhfPHNwYW4gY2xhc3M9ImdyYW1lIj5EdWFsU3RvcCg8L3NwYW4+KTxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICAgPC91bD4KLSAgICAgIDwvdWw+Ci0gICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiByZ2IoMTcsIDE3LCAxNyk7Ij48c3Ryb25nIHN0eWxlPSIiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwvTEwKLSAgICAgICAgICBBREM8L3NwYW4+PC9zdHJvbmc+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPiZuYnNwO3VwZGF0ZTxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICA8dWwgdHlwZT0ic3F1YXJlIj4KLSAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiByZ2IoMTcsIDE3LCAxNyk7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlIHRoZQotICAgICAgICAgICBmb2xsb3dpbmcgQVBJcyB0byBzZXQgc3RhdHVzIEhBTF9BRENfU1RBVEVfRVJST1JfSU5URVJOQUwgYW5kIGVycm9yCi0gICAgICAgICAgIGNvZGUgSEFMX0FEQ19FUlJPUl9JTlRFUk5BTCB3aGVuIGVycm9yIG9jY3Vyczo8bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgIDx1bCB0eXBlPSJzcXVhcmUiPgotICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiByZ2IoMTcsIDE3LCAxNyk7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMX0FEQ188c3BhbiBjbGFzcz0iZ3JhbWUiPlN0YXJ0KDwvc3Bhbj4pPG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogcmdiKDE3LCAxNywgMTcpOyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTF9BRENfU3RhcnRfPHNwYW4gY2xhc3M9ImdyYW1lIj5JVCg8L3NwYW4+KTxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IHJnYigxNywgMTcsIDE3KTsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUxfQURDX1N0YXJ0XzxzcGFuIGNsYXNzPSJncmFtZSI+RE1BKDwvc3Bhbj4pPG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogcmdiKDE3LCAxNywgMTcpOyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTF9BRENFeF88c3BhbiBjbGFzcz0iZ3JhbWUiPkluamVjdGVkU3RhcnQoPC9zcGFuPik8bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiByZ2IoMTcsIDE3LCAxNyk7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMX0FEQ0V4X0luamVjdGVkU3RhcnRfPHNwYW4gY2xhc3M9ImdyYW1lIj5JVCg8L3NwYW4+KTxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IHJnYigxNywgMTcsIDE3KTsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUxfQURDRXhfTXVsdGlNb2RlU3RhcnRfPHNwYW4gY2xhc3M9ImdyYW1lIj5ETUEoPC9zcGFuPik8bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgIDwvdWw+Ci0gICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogcmdiKDE3LCAxNywgMTcpOyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVwZGF0ZQotICAgICAgICAgICBIQUxfQURDX1N0b3BfPHNwYW4gY2xhc3M9ImdyYW1lIj5ETUEoPC9zcGFuPikgQVBJIHRvIGNoZWNrIGlmIERNQQotICAgICAgICAgICBzdGF0ZSBpcyBCdXN5IGJlZm9yZSBjYWxsaW5nIEhBTF9ETUFfQWJvcnQoKSBBUEkgdG8gYXZvaWQgRE1BCi0gICAgICAgICAgIGludGVybmFsIGVycm9yLjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogcmdiKDE3LCAxNywgMTcpOyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVwZGF0ZSBMTF9BRENfUkVHXzxzcGFuIGNsYXNzPSJncmFtZSI+SW5pdCg8L3NwYW4+KSBBUEkgdG8gYXZvaWQgZW5hYmxpbmcgY29udGludW91cyBtb2RlIGFuZAotICAgICAgICAgICBkaXNjb250aW51b3VzIG1vZGUgc2ltdWx0YW5lb3VzbHkuPG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgIDwvdWw+Ci0gICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiByZ2IoMTcsIDE3LCAxNyk7Ij48c3Ryb25nIHN0eWxlPSIiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwKLSAgICAgICAgICBJMlM8L3NwYW4+PC9zdHJvbmc+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPiZuYnNwO3VwZGF0ZTxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICA8dWwgdHlwZT0ic3F1YXJlIj4KLSAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiByZ2IoMTcsIDE3LCAxNyk7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlIEhBTF9JMlNfPHNwYW4gY2xhc3M9ImdyYW1lIj5ETUFTdG9wKDwvc3Bhbj4pIEFQSSB0byBiZSBtb3JlIHNhZmUuPG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgICA8dWwgdHlwZT0ic3F1YXJlIj4KLSAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogcmdiKDE3LCAxNywgMTcpOyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkFkZCBhIGNoZWNrIG9uIEJTWSwgVFhFIGFuZCBSWE5FIGZsYWdzIGJlZm9yZSBkaXNhYmxpbmcKLSAgICAgICAgICAgIHRoZSBJMlMuPG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgICA8L3VsPgotICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IHJnYigxNywgMTcsIDE3KTsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5VcGRhdGUgSEFMX0kyU188c3BhbiBjbGFzcz0iZ3JhbWUiPkRNQVN0b3AoPC9zcGFuPikgQVBJIHRvIGZpeCBtdWx0aS1jYWxsIHRyYW5zZmVyIGlzc3VlKHRvCi0gICAgICAgICAgIGF2b2lkIHJlLWluaXRpYWxpemluZyB0aGUgSTJTIGZvciB0aGUgbmV4dCB0cmFuc2ZlcikuPG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgICA8dWwgdHlwZT0ic3F1YXJlIj4KLSAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogcmdiKDE3LCAxNywgMTcpOyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkFkZCBfX0hBTF9JMlNFWFRfRkxVU0hfUlhfPHNwYW4gY2xhc3M9ImdyYW1lIj5EUig8L3NwYW4+KQotICAgICAgICAgICAgYW5kIF9fSEFMX0kyU19GTFVTSF9SWF9EUigpIG1hY3JvcyB0byBmbHVzaCB0aGUgcmVtYWluaW5nIGRhdGEKLSAgICAgICAgICAgIGluc2lkZSBEUiByZWdpc3RlcnMuPG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogcmdiKDE3LCAxNywgMTcpOyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkFkZCBuZXcgRXJyb3JDb2RlIGRlZmluZTogSEFMX0kyU19FUlJPUl9CVVNZX0xJTkVfUlguPG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgICA8L3VsPgotICAgICAgPC91bD4KLSAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IHJnYigxNywgMTcsIDE3KTsiPjxzdHJvbmcgc3R5bGU9IiI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTAotICAgICAgICAgIFVUSUxTPC9zcGFuPjwvc3Ryb25nPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij4mbmJzcDt1cGRhdGU8bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgPHVsIHR5cGU9InNxdWFyZSI+Ci0gICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogcmdiKDE3LCAxNywgMTcpOyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVUSUxTXzxzcGFuIGNsYXNzPSJncmFtZSI+U2V0Rmxhc2hMYXRlbmN5KDwvc3Bhbj4pIEFQSSByZW5hbWVkIHRvCi0gICAgICAgICAgIExMX1NldEZsYXNoTGF0ZW5jeSgpIGFuZCBtYWRlIHB1YmxpYy48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgPC91bD4KLSAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IHJnYigxNywgMTcsIDE3KTsiPjxzdHJvbmcgc3R5bGU9IiI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTAotICAgICAgICAgIFdXREc8L3NwYW4+PC9zdHJvbmc+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPiZuYnNwO3VwZGF0ZTxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICA8dWwgdHlwZT0ic3F1YXJlIj4KLSAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiByZ2IoMTcsIDE3LCAxNyk7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlIEhBTAotICAgICAgICAgICBkcml2ZXIgZGVzY3JpcHRpb24uPG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgIDwvdWw+Ci0gICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiByZ2IoMTcsIDE3LCAxNyk7Ij48c3Ryb25nIHN0eWxlPSIiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwKLSAgICAgICAgICBJV0RHPC9zcGFuPjwvc3Ryb25nPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij4mbmJzcDt1cGRhdGU8bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgPHVsIHR5cGU9InNxdWFyZSI+Ci0gICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogcmdiKDE3LCAxNywgMTcpOyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTF9JV0RHX0RFRkFVTFRfVElNRU9VVAotICAgICAgICAgICBoYXMgYmVjb21lIGNvbmZpZ3VyYWJsZSB2aWEgTFNJX1ZBTFVFIChkZWZpbmVkIGluCi0gICAgICAgICAgIHN0bTMyZjd4eF9oYWxfY29uZi5oKS48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgPC91bD4KLSAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IHJnYigxNywgMTcsIDE3KTsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwgRVhUSTwvc3Bhbj48L2I+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPiB1cGRhdGU8bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgPHVsIHR5cGU9InNxdWFyZSI+Ci0gICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogcmdiKDE3LCAxNywgMTcpOyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVwZGF0ZSBtYWNyb3MKLSAgICAgICAgICAgdXNpbmcgX19MSU5FX18gYXMgYSBtYWNybyBwYXJhbWV0ZXIgaW4gb3JkZXIgdG8gdXNlIEVYVElfTElORQotICAgICAgICAgICBpbnN0ZWFkIHRvIHJlc29sdmUgcGFyYW1ldGVyIGNvbmZsaWN0cyB3aXRoIHN0YW5kYXJkIEMgdXNhZ2UuPG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgIDwvdWw+Ci0gICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiByZ2IoMTcsIDE3LCAxNyk7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMIFVTQjwvc3Bhbj48L2I+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPiB1cGRhdGU8bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgPHVsIHR5cGU9InNxdWFyZSI+Ci0gICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogcmdiKDE3LCAxNywgMTcpOyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkVuaGFuY2UgSEFMIEhDRAotICAgICAgICAgICBkcml2ZXIgd2hlbiBVU0IgRE1BIGlzIGVuYWJsZWQ6PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgICAKLSAgICAgICAgICAgICAgICAgIDx1bD4KLSAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogcmdiKDE3LCAxNywgMTcpOyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkZpeCBwaW5nIGFuZAotICAgICAgICAgICBkYXRhIHRvZ2dsZSBpc3N1ZS48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgICAgICAgICAgICAgPC91bD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VGltZXMgTmV3CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJvbWFuJnF1b3Q7O21zby1iaWRpLWZvbnQtZmFtaWx5OiZxdW90O1NlZ29lCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVJJnF1b3Q7O21zby1hbnNpLWxhbmd1YWdlOkZSOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc28tZmFyZWFzdC1sYW5ndWFnZTpGUiI+SEFMIEVYVEk8L3NwYW4+PC9iPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOjEwLjBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OiZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjttc28tZmFyZWFzdC1mb250LWZhbWlseTomcXVvdDtUaW1lcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV3IFJvbWFuJnF1b3Q7OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNvLWJpZGktZm9udC1mYW1pbHk6JnF1b3Q7U2Vnb2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVJJnF1b3Q7O21zby1hbnNpLWxhbmd1YWdlOkZSO21zby1mYXJlYXN0LWxhbmd1YWdlOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCB0eXBlPSJjaXJjbGUiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImNvbG9yOiMxMTExMTE7bXNvLW1hcmdpbi10b3AtYWx0OmF1dG87bXNvLW1hcmdpbi1ib3R0b20tYWx0OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0bztsaW5lLWhlaWdodDpub3JtYWw7bXNvLWxpc3Q6bDAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVsMiBsZm8xO3RhYi1zdG9wczpsaXN0IDEuMGluIj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOjEwLjBwdDtmb250LWZhbWlseTomcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7CiAKLSAgICAgICAKLSAgICAgICAgICAgICAgICAgIDx1bD4KLSAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogcmdiKDE3LCAxNywgMTcpOyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlJld29yayBDaGFubmVsCi0gICAgICAgICAgIGVycm9yIHJlcG9ydCBtYW5hZ2VtZW50LjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICAgICAgICAgICAgICA8L3VsPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc28tZmFyZWFzdC1mb250LWZhbWlseTomcXVvdDtUaW1lcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUm9tYW4mcXVvdDs7bXNvLWJpZGktZm9udC1mYW1pbHk6JnF1b3Q7U2Vnb2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUkmcXVvdDs7IG1zby1mYXJlYXN0LWxhbmd1YWdlOkZSIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYW5nPSJFTi1VUyI+VXBkYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTF9FWFRJX0dldENvbmZpZ0xpbmUoKSBBUEkgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0IGRlZmF1bHQgY29uZmlndXJhdGlvbiB2YWx1ZSBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUcmlnZ2VyIGFuZCBHUElPU2VsIGJlZm9yZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGVja2luZyBlYWNoIGNvcnJlc3BvbmRpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJzLjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJjb2xvcjojMTExMTExO21zby1tYXJnaW4tdG9wLWFsdDphdXRvO21zby1tYXJnaW4tYm90dG9tLWFsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvO2xpbmUtaGVpZ2h0Om5vcm1hbDttc28tbGlzdDpsMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVsMSBsZm8xO3RhYi1zdG9wczpsaXN0IC41aW4iPjxiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6MTAuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjttc28tZmFyZWFzdC1mb250LWZhbWlseToKIAotICAgICAgPC91bD4KLSAgICAgPC91bD4KLSAgICA8L3VsPgotICAgIDxoMyBzdHlsZT0iYmFja2dyb3VuZDogcmdiKDUxLCAxMDIsIDI1NSkgbm9uZSByZXBlYXQgc2Nyb2xsIDAlIDUwJTsgbWFyZ2luLXJpZ2h0OiA1MDBwdDsgLW1vei1iYWNrZ3JvdW5kLWNsaXA6IC1tb3otaW5pdGlhbDsgLW1vei1iYWNrZ3JvdW5kLW9yaWdpbjogLW1vei1pbml0aWFsOyAtbW96LWJhY2tncm91bmQtaW5saW5lLXBvbGljeTogLW1vei1pbml0aWFsOyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O0FyaWFsJnF1b3Q7LHNhbnMtc2VyaWY7IGNvbG9yOiB3aGl0ZTsiPlYxLjIuOC8gMTMtRmVicnVhcnktMjAyMDwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2gzPgotICAgIDxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW46IDQuNXB0IDBpbiA0LjVwdCAwLjI1aW47Ij48Yj48dT48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyBjb2xvcjogYmxhY2s7Ij5NYWluIENoYW5nZXM8L3NwYW4+PC91PjwvYj48L3A+Ci0gICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJkaXNjIj4KLSAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5HZW5lcmFsIHVwZGF0ZXMgdG8gZml4IGtub3duIGRlZmVjdHMgYW5kCi0gICAgICAgICBlbmhhbmNlbWVudHMgPHNwYW4gY2xhc3M9ImdyYW1lIj5pbXBsZW1lbnRhdGlvbjwvc3Bhbj48L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwvTEwgR1BJTyZuYnNwOzwvc3Bhbj48L2I+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+Ci0gICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVwZGF0ZSZuYnNwO0dQSU8gaW5pdGlhbGl6YXRpb24gc2VxdWVuY2U8Yj4mbmJzcDs8L2I+dG8KLSAgICAgICAgICBhdm9pZCB1bndhbnRlZCBwdWxzZSBvbiBHUElPIDxzcGFuIGNsYXNzPSJncmFtZSI+UGluJ3M8L3NwYW4+PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgIDwvdWw+Ci0gICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMIEkyQyZuYnNwOzwvc3Bhbj48L2I+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICA8dWwgdHlwZT0iY2lyY2xlIj4KLSAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVwZGF0ZSBIQUxfSTJDX0VWXzxzcGFuIGNsYXNzPSJncmFtZSI+SVJRSGFuZGxlcig8L3NwYW4+KQotICAgICAgICAgIEFQSSB0byBmaXggSTJDIHNlbmQgYnJlYWsgaXNzdWUmbmJzcDs8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0ic3F1YXJlIj4KLSAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkFkZCBhZGRpdGlvbmFsIGNoZWNrIG9uIGhpMmMtJmd0O2hkbWF0eCwKLSAgICAgICAgICAgaGRtYXR4LSZndDtYZmVyQ3BsdENhbGxiYWNrLCZuYnNwO2hpMmMtJmd0O2hkbWFyeCwgaGRtYXJ4LSZndDtYZmVyQ3BsdENhbGxiYWNrCi0gICAgICAgICAgIGluIEkyQ19NYXN0ZXJfPHNwYW4gY2xhc3M9ImdyYW1lIj5TQig8L3NwYW4+KSBBUEkgdG8KLSAgICAgICAgICAgYXZvaWQmbmJzcDtlbmFibGluZyBETUEgcmVxdWVzdCZuYnNwO3doZW4gSVQgbW9kZSBpcyB1c2VkLjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgPC91bD4KLSAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlIEhBTF9JMkNfRVJfPHNwYW4gY2xhc3M9ImdyYW1lIj5JUlFIYW5kbGVyKDwvc3Bhbj4pCi0gICAgICAgICAgQVBJIHRvIGZpeCBhY2tub3dsZWRnZSBmYWlsdXJlIGlzc3VlIHdpdGggSTJDJm5ic3A7bWVtb3J5IElUCi0gICAgICAgICAgcHJvY2Vzc2VzPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9InNxdWFyZSI+Ci0gICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij4mbmJzcDtBZGQmbmJzcDtzdG9wIGNvbmRpdGlvbgotICAgICAgICAgICBnZW5lcmF0aW9uJm5ic3A7d2hlbiZuYnNwO05BQ0sgb2NjdXJzLjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgPC91bD4KLSAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlJm5ic3A7SEFMX0kyQ188c3BhbiBjbGFzcz0iZ3JhbWUiPkluaXQoPC9zcGFuPikKLSAgICAgICAgICBBUEkgdG8gZm9yY2Ugc29mdHdhcmUgcmVzZXQgYmVmb3JlIHNldHRpbmcgbmV3IEkyQyBjb25maWd1cmF0aW9uPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVwZGF0ZSBIQUwgSTJDIHByb2Nlc3NlcyB0byByZXBvcnQKLSAgICAgICAgICBFcnJvckNvZGUmbmJzcDt3aGVuIHdyb25nIEkyQyBzdGFydCBjb25kaXRpb24gPHNwYW4gY2xhc3M9ImdyYW1lIj5vY2N1cnM8L3NwYW4+PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9InNxdWFyZSI+Ci0gICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij4mbmJzcDtBZGQgbmV3Jm5ic3A7RXJyb3JDb2RlIGRlZmluZToKLSAgICAgICAgICAgSEFMX0kyQ19XUk9OR19TVEFSVDwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+Jm5ic3A7U2V0Jm5ic3A7RXJyb3JDb2RlIHBhcmFtZXRlciBpbiZuYnNwO0kyQwotICAgICAgICAgICBoYW5kbGUgdG8mbmJzcDtIQUxfSTJDX1dST05HX1NUQVJUPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICA8L3VsPgotICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5VcGRhdGUmbmJzcDtJMkNfPHNwYW4gY2xhc3M9ImdyYW1lIj5ETUFYZmVyQ3BsdCg8L3NwYW4+KSwKLSAgICAgICAgICBJMkNfRE1BRXJyb3IoKSBhbmQgSTJDX0RNQUFib3J0KCkgQVBJcyB0byBmaXggaGFyZGZhdWx0IGlzc3VlIHdoZW4KLSAgICAgICAgICBoZG1hdHggYW5kIGhkbWFyeCZuYnNwO3BhcmFtZXRlcnMgaW4gaTJjIGhhbmRsZSBhcmVuJ3QgaW5pdGlhbGl6ZWQKLSAgICAgICAgICAoTlVMTCBwb2ludGVyKS48L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0ic3F1YXJlIj4KLSAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkFkZCBhZGRpdGlvbmFsIGNoZWNrIG9uIGhpMmMtJmd0O2hkbXR4IGFuZAotICAgICAgICAgICBoaTJjLSZndDtoZG1hcnggYmVmb3JlIHJlc2V0dGluZyZuYnNwO0RNQSBUeC9SeCBjb21wbGV0ZSA8c3BhbiBjbGFzcz0iZ3JhbWUiPmNhbGxiYWNrPC9zcGFuPjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgPC91bD4KLSAgICAgPC91bD4KLSAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwgQURDIDwvc3Bhbj48L2I+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVwZGF0ZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+Ci0gICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkFkZCAiQURDX0lOVEVSTkFMX05PTkUiIGNoYW5uZWwgdG8KLSAgICAgICAgICBkaXNhYmxlIHRoZSBWQkFUICZhbXA7IFRTVlJFRkUgY2hhbm5lbC48L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgPC91bD4KLSAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwgRENNSSA8L3NwYW4+PC9iPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij51cGRhdGU8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgotICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5BZGQgRENNSV9TeW5jVW5tYXNrVHlwZURlZiBzdHJ1Y3R1cmUgYW5kIEhBTF9EQ01JXzxzcGFuIGNsYXNzPSJncmFtZSI+Q29uZmlnU3luY1VubWFzayg8L3NwYW4+KSBBUEkgdG8gbWFuYWdlIGVtYmVkZGVkCi0gICAgICAgICAgc3luY2hyb25pemF0aW9uIGRlbGltaXRlcnMgdW5tYXNrczwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICA8L3VsPgotICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTCBFWFRJPC9zcGFuPjwvYj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+Ci0gICAgICAgICB1cGRhdGU8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgotICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5HZW5lcmFsIHVwZGF0ZSB0byBlbmhhbmNlIEhBTCBFWFRJIGRyaXZlciA8c3BhbiBjbGFzcz0iZ3JhbWUiPnJvYnVzdG5lc3M8L3NwYW4+Jm5ic3A7PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9InNxdWFyZSI+Ci0gICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5BZGQgYWRkaXRpb25hbCBhc3NlcnQgY2hlY2sgb24gRVhUSSBjb25maWcgPHNwYW4gY2xhc3M9ImdyYW1lIj5saW5lczwvc3Bhbj48L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVwZGF0ZSB0byBjb21wdXRlIEVYVEkgbGluZSBtYXNrIGJlZm9yZQotICAgICAgICAgICByZWFkL3dyaXRlIGFjY2VzcyB0byBFWFRJIDxzcGFuIGNsYXNzPSJncmFtZSI+cmVnaXN0ZXJzPC9zcGFuPjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgPC91bD4KLSAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlIEVYVEkgY2FsbGJhY2tzIG1hbmFnZW1lbnQgdG8gYmUgY29tcGxpYW50Ci0gICAgICAgICAgd2l0aCByZWZlcmVuY2UgbWFudWFsOiBvbmx5IG9uZSBQUiByZWdpc3RlciBmb3IgcmlzaW5nIGFuZCBmYWxsaW5nCi0gICAgICAgICAgaW50ZXJydXB0cy48L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0ic3F1YXJlIj4KLSAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVwZGF0ZSBwYXJhbWV0ZXJzIGluIEVYVElfSGFuZGxlVHlwZURlZgotICAgICAgICAgICBzdHJ1Y3R1cmU6IG1lcmdlIEhBTCBFWFRJIFJpc2luZ0NhbGxiYWNrIGFuZCBGYWxsaW5nQ2FsbGJhY2sgaW4gb25seQotICAgICAgICAgICBvbmUgUGVuZGluZ0NhbGxiYWNrLjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+UmVtb3ZlIEhBTF9FWFRJX1JJU0lOR19DQl9JRCBhbmQgSEFMX0VYVElfRkFMTElOR19DQl9JRAotICAgICAgICAgICB2YWx1ZXMgZnJvbSBFWFRJX0NhbGxiYWNrSURUeXBlRGVmIGVudW1lcmF0aW9uLjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgPC91bD4KLSAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlIEhBTF9FWFRJXzxzcGFuIGNsYXNzPSJncmFtZSI+SVJRSGFuZGxlcig8L3NwYW4+KQotICAgICAgICAgIEFQSSB0byBzZXJ2ZSBpbnRlcnJ1cHRzIGNvcnJlY3RseS48L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0ic3F1YXJlIj4KLSAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVwZGF0ZSB0byBjb21wdXRlIEVYVEkgbGluZSBtYXNrIGJlZm9yZSBoYW5kbGUKLSAgICAgICAgICAgRVhUSSBpbnRlcnJ1cHQuPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICA8L3VsPgotICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5VcGRhdGUgdG8gc3VwcG9ydCBHUElPIHBvcnQgaW50ZXJydXB0czo8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0ic3F1YXJlIj4KLSAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkFkZCBuZXcgIkdQSU9TZWwiIHBhcmFtZXRlciBpbgotICAgICAgICAgICBFWFRJX0NvbmZpZ1R5cGVEZWYgc3RydWN0dXJlPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICA8L3VsPgotICAgICA8L3VsPgotICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTCBIQVNIJm5ic3A7PC9zcGFuPjwvYj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+dXBkYXRlPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0iY2lyY2xlIj4KLSAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+TnVsbCBwb2ludGVyIG9uIGhhbmRsZXIgImhoYXNoIiBpcyBub3cKLSAgICAgICAgICBjaGVja2VkIGJlZm9yZSBhY2Nlc3Npbmcgc3RydWN0dXJlIG1lbWJlcgotICAgICAgICAgICJoaGFzaC0mZ3Q7SW5pdC5EYXRhVHlwZSIgaW4gdGhlIGZvbGxvd2luZyBBUEk6PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9InNxdWFyZSI+Ci0gICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUxfSEFTSF88c3BhbiBjbGFzcz0iZ3JhbWUiPkluaXQoPC9zcGFuPik8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgIDwvdWw+Ci0gICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkZvbGxvd2luZyA8Yj5pbnRlcnJ1cHQtYmFzZWQ8L2I+IEFQSXMgaGF2ZSBiZWVuCi0gICAgICAgICAgYWRkZWQuIEludGVycnVwdCBtb2RlIGNvdWxkIGFsbG93IHRoZSBNQ1UgdG8gZW50ZXIgIlNsZWVwIgotICAgICAgICAgIG1vZGUgd2hpbGUgYSBkYXRhIGJsb2NrIGlzIGJlaW5nIHByb2Nlc3NlZC4gUGxlYXNlIHJlZmVyIHRvIHRoZQotICAgICAgICAgICIjIyMjIyBIb3cgdG8gdXNlIHRoaXMgZHJpdmVyICMjIyMjIiBzZWN0aW9uIGZvciBkZXRhaWxzCi0gICAgICAgICAgYWJvdXQgdGhlaXIgdXNlLjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJzcXVhcmUiPgotICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMX0hBU0hfU0hBMV9BY2NtbHRfPHNwYW4gY2xhc3M9ImdyYW1lIj5JVCg8L3NwYW4+KTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMX0hBU0hfTUQ1X0FjY21sdF88c3BhbiBjbGFzcz0iZ3JhbWUiPklUKDwvc3Bhbj4pPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUxfSEFTSEV4X1NIQTIyNF9BY2NtbHRfPHNwYW4gY2xhc3M9ImdyYW1lIj5JVCg8L3NwYW4+KTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMX0hBU0hFeF9TSEEyNTZfQWNjbWx0XzxzcGFuIGNsYXNzPSJncmFtZSI+SVQoPC9zcGFuPik8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgIDwvdWw+Ci0gICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkZvbGxvd2luZyA8Yj5hbGlhc2VzPC9iPiBoYXZlIGJlZW4gYWRkZWQgKGp1c3QgPGI+Zm9yCi0gICAgICAgICAgY2xhcml0eSBzYWtlPC9iPikgYXMgdGhleSBzaGFsbCBiZSB1c2VkIGF0IHRoZSA8Yj5lbmQ8L2I+IG9mIHRoZQotICAgICAgICAgIGNvbXB1dGF0aW9uIG9mIGEgbXVsdGktYnVmZmVycyBtZXNzYWdlIGFuZCBub3QgYXQgdGhlIHN0YXJ0Ojwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJzcXVhcmUiPgotICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMX0hBU0hfU0hBMV9BY2NtbHRfPHNwYW4gY2xhc3M9ImdyYW1lIj5FbmQoPC9zcGFuPikKLSAgICAgICAgICAgdG8gYmUgdXNlZCBpbnN0ZWFkIG9mIEhBTF9IQVNIX1NIQTFfU3RhcnQoKTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMX0hBU0hfTUQ1X0FjY21sdF88c3BhbiBjbGFzcz0iZ3JhbWUiPkVuZCg8L3NwYW4+KQotICAgICAgICAgICB0byBiZSB1c2VkIGluc3RlYWQgb2YgSEFMX0hBU0hfTUQ1X1N0YXJ0KCk8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTF9IQVNIX1NIQTFfQWNjbWx0X0VuZF88c3BhbiBjbGFzcz0iZ3JhbWUiPklUKDwvc3Bhbj4pCi0gICAgICAgICAgIHRvIGJlIHVzZWQgaW5zdGVhZCBvZiBIQUxfSEFTSF9TSEExX1N0YXJ0X0lUKCk8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTF9IQVNIX01ENV9BY2NtbHRfRW5kXzxzcGFuIGNsYXNzPSJncmFtZSI+SVQoPC9zcGFuPikKLSAgICAgICAgICAgdG8gYmUgdXNlZCBpbnN0ZWFkIG9mIEhBTF9IQVNIX01ENV9TdGFydF9JVCgpPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUxfSEFTSEV4X1NIQTIyNF9BY2NtbHRfPHNwYW4gY2xhc3M9ImdyYW1lIj5FbmQoPC9zcGFuPikKLSAgICAgICAgICAgdG8gYmUgdXNlZCBpbnN0ZWFkIG9mIEhBTF9IQVNIRXhfU0hBMjI0X1N0YXJ0KCk8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTF9IQVNIRXhfU0hBMjU2X0FjY21sdF88c3BhbiBjbGFzcz0iZ3JhbWUiPkVuZCg8L3NwYW4+KQotICAgICAgICAgICB0byBiZSB1c2VkIGluc3RlYWQgb2YgSEFMX0hBU0hFeF9TSEEyNTZfU3RhcnQoKTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMX0hBU0hFeF9TSEEyMjRfQWNjbWx0X0VuZF88c3BhbiBjbGFzcz0iZ3JhbWUiPklUKDwvc3Bhbj4pCi0gICAgICAgICAgIHRvIGJlIHVzZWQgaW5zdGVhZCBvZiBIQUxfSEFTSEV4X1NIQTIyNF9TdGFydF9JVCgpPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUxfSEFTSEV4X1NIQTI1Nl9BY2NtbHRfRW5kXzxzcGFuIGNsYXNzPSJncmFtZSI+SVQoPC9zcGFuPikKLSAgICAgICAgICAgdG8gYmUgdXNlZCBpbnN0ZWFkIG9mIEhBTF9IQVNIRXhfU0hBMjU2X1N0YXJ0X0lUKCk8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgIDwvdWw+Ci0gICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPk1JU1JBQy0yMDEyIHJ1bGUgUi41LjEgKGlkZW50aWZpZXJzIHNoYWxsIGJlCi0gICAgICAgICAgZGlzdGluY3QgaW4gdGhlIGZpcnN0IDMxIGNoYXJhY3RlcnMpIGNvbnN0cmFpbmVkIHRoZSBuYW1pbmcgb2YgdGhlCi0gICAgICAgICAgYWJvdmUgbGlzdGVkIGFsaWFzZXMgKGUuZy4gSEFMX0hBU0hFeF9TSEEyNTZfPGI+QWNjbWx0PC9iPl88c3BhbiBjbGFzcz0iZ3JhbWUiPkVuZCg8L3NwYW4+KSBjb3VsZCBub3QgYmUgbmFtZWQgSEFMX0hBU0hFeF9TSEEyNTZfPGI+QWNjdW11bGF0ZTwvYj5fRW5kKCkuCi0gICAgICAgICAgT3RoZXJ3aXNlIHRoZSBuYW1lIHdvdWxkIGhhdmUgY29uZmxpY3RlZCB3aXRoIEhBTF9IQVNIRXhfU0hBMjU2XzxiPkFjY3VtdWxhdGU8L2I+X0VuZF88c3BhbiBjbGFzcz0iZ3JhbWUiPklUKDwvc3Bhbj4pKS4gSW4gb3JkZXIgdG8gaGF2ZSBhbGlnbmVkIG5hbWVzIGZvbGxvd2luZwotICAgICAgICAgIEFQSXMgaGF2ZSBiZWVuIHJlbmFtZWQ6PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9InNxdWFyZSI+Ci0gICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUxfSEFTSF9NRDVfPHNwYW4gY2xhc3M9ImdyYW1lIj5BY2N1bXVsYXRlKDwvc3Bhbj4pCi0gICAgICAgICAgIHJlbmFtZWQgSEFMX0hBU0hfTUQ1X0FjY21sdCgpPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUxfSEFTSF9TSEExXzxzcGFuIGNsYXNzPSJncmFtZSI+QWNjdW11bGF0ZSg8L3NwYW4+KQotICAgICAgICAgICByZW5hbWVkIEhBTF9IQVNIX1NIQTFfQWNjbWx0KCk8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTF9IQVNIRXhfU0hBMjI0XzxzcGFuIGNsYXNzPSJncmFtZSI+QWNjdW11bGF0ZSg8L3NwYW4+KQotICAgICAgICAgICByZW5hbWVkIEhBTF9IQVNIRXhfU0hBMjI0X0FjY21sdCgpPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUxfSEFTSEV4X1NIQTI1Nl88c3BhbiBjbGFzcz0iZ3JhbWUiPkFjY3VtdWxhdGUoPC9zcGFuPikKLSAgICAgICAgICAgcmVuYW1lZCBIQUxfSEFTSEV4X1NIQTI1Nl9BY2NtbHQoKTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgPC91bD4KLSAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFTSCA8Yj5oYW5kbGVyPC9iPiBzdGF0ZSBpcyA8Yj5ubyA8c3BhbiBjbGFzcz0iZ3JhbWUiPm1vcmU8L3NwYW4+PC9iPiByZXNldCB0byBIQUxfSEFTSF9TVEFURV9SRUFEWSA8Yj5vbmNlIERNQQotICAgICAgICAgIGhhcyBiZWVuIHN0YXJ0ZWQ8L2I+IGluIHRoZSBmb2xsb3dpbmcgQVBJczo8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0ic3F1YXJlIj4KLSAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTF9IQVNIX01ENV9TdGFydF88c3BhbiBjbGFzcz0iZ3JhbWUiPkRNQSg8L3NwYW4+KTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMX0hNQUNfTUQ1X1N0YXJ0XzxzcGFuIGNsYXNzPSJncmFtZSI+RE1BKDwvc3Bhbj4pPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUxfSEFTSF9TSEExX1N0YXJ0XzxzcGFuIGNsYXNzPSJncmFtZSI+RE1BKDwvc3Bhbj4pPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUxfSE1BQ19TSEExX1N0YXJ0XzxzcGFuIGNsYXNzPSJncmFtZSI+RE1BKDwvc3Bhbj4pPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICA8L3VsPgotICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQVNIIDxiPnBoYXNlPC9iPiBzdGF0ZSBpcyBub3cgc2V0IHRvCi0gICAgICAgICAgSEFMX0hBU0hfUEhBU0VfUkVBRFk8Yj4gb25jZSB0aGUgZGlnZXN0IGhhcyBiZWVuIHJlYWQ8L2I+IGluIHRoZQotICAgICAgICAgIGZvbGxvd2luZyBBUElzOjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJzcXVhcmUiPgotICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFTSF88c3BhbiBjbGFzcz0iZ3JhbWUiPklUKDwvc3Bhbj4pPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5ITUFDXzxzcGFuIGNsYXNzPSJncmFtZSI+UHJvY2Vzc2luZyg8L3NwYW4+KTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFTSF88c3BhbiBjbGFzcz0iZ3JhbWUiPlN0YXJ0KDwvc3Bhbj4pPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQVNIXzxzcGFuIGNsYXNzPSJncmFtZSI+RmluaXNoKDwvc3Bhbj4pPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICA8L3VsPgotICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5DYXNlIG9mIGEgbGFyZ2UgYnVmZmVyIHNjYXR0ZXJlZCBhcm91bmQgaW4gbWVtb3J5Ci0gICAgICAgICAgZWFjaCBwaWVjZSBvZiB3aGljaCBpcyA8Yj5ub3Q8L2I+IG5lY2Vzc2FyaWx5IGEgPGI+bXVsdGlwbGUgb2YgNDwvYj4KLSAgICAgICAgICBieXRlcyBpbiBsZW5ndGguPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9InNxdWFyZSI+Ci0gICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5JbiBzZWN0aW9uICIjIyMjIyBIb3cgdG8gdXNlIHRoaXMgZHJpdmVyCi0gICAgICAgICAgICMjIyMjIiwgc3ViLXNlY3Rpb24gIioqKiBSZW1hcmtzIG9uIG1lc3NhZ2UgbGVuZ3RoCi0gICAgICAgICAgICoqKiIgYWRkZWQgdG8gcHJvdmlkZSByZWNvbW1lbmRhdGlvbnMgdG8gZm9sbG93IGluIHN1Y2ggY2FzZS48L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPk5vIG1vZGlmaWNhdGlvbiBvZiB0aGUgZHJpdmVyIGFzIHRoZSByb290LWNhdXNlCi0gICAgICAgICAgIGlzIGF0IGRlc2lnbi1sZXZlbC48L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgIDwvdWw+Ci0gICAgIDwvdWw+Ci0gICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMIFNETU1DJm5ic3A7PC9zcGFuPjwvYj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+dXBkYXRlPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0iY2lyY2xlIj4KLSAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+Rml4Jm5ic3A7dHlwbyBpbiAiRmlsZUZvcm1hdEdyb3VwIgotICAgICAgICAgIHBhcmFtZXRlciBpbiB0aGUgSEFMX01NQ19DYXJkQ1NEVHlwZURlZiBhbmQgSEFMX1NEX0NhcmRDU0RUeXBlRGVmCi0gICAgICAgICAgc3RydWN0dXJlcy48L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+Rml4IGFuIGltcHJvdmUgaGFuZGxlIHN0YXRlIGFuZCBlcnJvciA8c3BhbiBjbGFzcz0iZ3JhbWUiPm1hbmFnZW1lbnQ8L3NwYW4+PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlJlbmFtZSB0aGUgZGVmaW5lZCBNTUMgY2FyZCBjYXBhY2l0eSB0eXBlIHRvIGJlCi0gICAgICAgICAgbW9yZSBtZWFuaW5nZnVsOjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJzcXVhcmUiPgotICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlIDxiPk1NQ19ISUdIX1ZPTFRBR0VfQ0FSRDwvYj4gdG8gPGI+TU1DIExPV19DQVBBQ0lUWV9DQVJEPC9iPjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlIDxiPk1NQ19EVUFMX1ZPTFRBR0VfQ1JBRDwvYj4gdG8gPGI+TU1DX0hJR0hfQ0FQQUNJVFlfQ0FSRDwvYj48L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgIDwvdWw+Ci0gICAgIDwvdWw+Ci0gICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMIFFTUEkgPC9zcGFuPjwvYj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+dXBkYXRlPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0iY2lyY2xlIj4KLSAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+UmVtb3ZlIExvY2sgbWVjaGFuaXNtIGZyb20gSEFMX1FTUElfPHNwYW4gY2xhc3M9ImdyYW1lIj5Jbml0KDwvc3Bhbj4pIGFuZCBIQUxfUVNQSV9EZUluaXQoKSBBUElzPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgIDwvdWw+Ci0gICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48YiBzdHlsZT0ib3JwaGFuczogMjsgd2lkb3dzOiAyOyB3b3JkLXNwYWNpbmc6IDBweDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwKLSAgICAgICAgIExQVElNJm5ic3A7PC9zcGFuPjwvYj48c3BhbiBzdHlsZT0ib3JwaGFuczogMjsgd2lkb3dzOiAyOyB3b3JkLXNwYWNpbmc6IDBweDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij51cGRhdGU8L3NwYW4+PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0iY2lyY2xlIj4KLSAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+QWRkIGEgcG9sbGluZyBtZWNoYW5pc20gdG8gY2hlY2sKLSAgICAgICAgICBvbiZuYnNwO0xQVElNX0ZMQUdfWFhPSyZuYnNwO2ZsYWdzIGluIGRpZmZlcmVudCA8c3BhbiBjbGFzcz0iZ3JhbWUiPkFQSTwvc3Bhbj4mbmJzcDs8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0ic3F1YXJlIj4KLSAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkFkZCZuYnNwO0xQVElNXzxzcGFuIGNsYXNzPSJncmFtZSI+V2FpdEZvckZsYWcoPC9zcGFuPikmbmJzcDtBUEkmbmJzcDt0bwotICAgICAgICAgICB3YWl0IGZvciBmbGFnIHNldC48L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlBlcmZvcm0gbmV3IGNoZWNrcyBvbiBIQUxfTFBUSU1fU1RBVEVfVElNRU9VVC48L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgIDwvdWw+Ci0gICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPldvcmthcm91bmQgdG8gZml4IE1DVSBzbGFjayBpbiBzbGVlcCA8c3BhbiBjbGFzcz0iZ3JhbWUiPm1vZGU8L3NwYW4+PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9InNxdWFyZSI+Ci0gICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5VcGRhdGUgX19IQUxfTFBUSU1fRElTQUJMRSAoKSBtYWNybyB1c2VkIHRvCi0gICAgICAgICAgIGRpc2FibGUgTFBUSU0gSFcgaW5zdGFuY2U8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9InNxdWFyZSI+Ci0gICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+UmVtb3ZlIHRoZQotICAgICAgICAgICAgTFBUSU1fQ1JfRU5BQkxFIGJpdCBjbGVhci48L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5BZGQgYSBuZXcgPHNwYW4gY2xhc3M9ImdyYW1lIj5BUEkmbmJzcDsgTFBUSU08L3NwYW4+X0Rpc2FibGUoKSBkZWZpbmVkIGluJm5ic3A7Ci0gICAgICAgICAgICBoYWxfbHB0aW0uYzwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgIDwvdWw+Ci0gICAgICA8L3VsPgotICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5VcGRhdGUgX19IQUxfTFBUSU1fUkVTRVRfSEFORExFX1NUQVRFKF9fSEFORExFX18pCi0gICAgICAgICAgbWFjcm8gYnkgYWRkaW5nIGEgc3BlY2lmaWMgLi4uLiB3aGVuIHVzaW5nIGNhbGxiYWNrIHJlZ2lzdGVyPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPl9fSEFMX0xQVElNX0VOQUJMRTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5SZW1vdmUgdXNzZWxlc3MgY2hlY2sgb24gTFBUSU0yIGluIHRoZSBMTCBkcml2ZXIKLSAgICAgICAgICBzaW5jZSBGNyBzdXBwb3J0IG9ubHkgb25lIGluc3RhbmNlIG9mIExQVElNLjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5VcGRhdGUgPHNwYW4gY2xhc3M9ImdyYW1lIj50aGUmbmJzcDsgTEw8L3NwYW4+X0xQVElNX0RJU0FCTEUoKQotICAgICAgICAgIEFQSSB1c2VkIHRvIGRpc2FibGUgTFBUSU0gSFcgaW5zdGFuY2U8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0ic3F1YXJlIj4KLSAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPk1vdmUgQVBJIGRlZmluaXRpb24gdG8gbGxfbHB0aW0uYzwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgPC91bD4KLSAgICAgPC91bD4KLSAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxiIHN0eWxlPSJvcnBoYW5zOiAyOyB3aWRvd3M6IDI7IHdvcmQtc3BhY2luZzogMHB4OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTCZuYnNwO1RJTSZuYnNwOzwvc3Bhbj48L2I+PHNwYW4gc3R5bGU9Im9ycGhhbnM6IDI7IHdpZG93czogMjsgd29yZC1zcGFjaW5nOiAwcHg7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+dXBkYXRlPC9zcGFuPjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+Ci0gICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkFkZCBuZXcgbWFjcm9zIHRvIGVuYWJsZSBhbmQgZGlzYWJsZSB0aGUgZmFzdCBtb2RlCi0gICAgICAgICAgd2hlbiB1c2luZyB0aGUgb25lIHB1bHNlIG1vZGUgdG8gb3V0cHV0IGEgd2F2ZWZvcm0gd2l0aCBhIG1pbmltdW0gPHNwYW4gY2xhc3M9ImdyYW1lIj5kZWxheTwvc3Bhbj48L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0ic3F1YXJlIj4KLSAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPl88c3BhbiBzdHlsZT0ib3JwaGFuczogMjsgd2lkb3dzOiAyOyBmbG9hdDogbm9uZTsgd29yZC1zcGFjaW5nOiAwcHg7Ij5fSEFMX1RJTV9FTkFCTEVfPHNwYW4gY2xhc3M9ImdyYW1lIj5PQ3hGQVNUKDwvc3Bhbj4pCi0gICAgICAgICAgIGFuZCBfX0hBTF9USU1fRElTQUJMRV9PQ3hGQVNUKCkuPC9zcGFuPjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgPC91bD4KLSAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0ib3JwaGFuczogMjsgd2lkb3dzOiAyOyBmbG9hdDogbm9uZTsgd29yZC1zcGFjaW5nOiAwcHg7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlIEVuY29kZXIgaW50ZXJmYWNlIG1vZGUgdG8ga2VlcCZuYnNwOzxzcGFuIHN0eWxlPSJvcnBoYW5zOiAyOyB3aWRvd3M6IDI7IHdvcmQtc3BhY2luZzogMHB4OyI+VElNX0NDRVJfQ0N4TlAgYml0cyA8c3BhbiBjbGFzcz0iZ3JhbWUiPmxvdzwvc3Bhbj48L3NwYW4+PG86cD48L286cD48L3NwYW4+PC9zcGFuPjwvbGk+Ci0gICAgICAKLSAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0ic3F1YXJlIj4KLSAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkFkZCZuYnNwO1RJTV9FTkNPREVSSU5QVVRQT0xBUklUWV9SSVNJTkcgYW5kCi0gICAgICAgICAgIFRJTV9FTkNPREVSSU5QVVRQT0xBUklUWV9GQUxMSU5HJm5ic3A7ZGVmaW5pdGlvbnMgdG8gZGV0ZXJtaW5lCi0gICAgICAgICAgIGVuY29kZXIgaW5wdXQgcG9sYXJpdHkuPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5BZGQmbmJzcDtJU19USU1fRU5DT0RFUklOUFVUXzxzcGFuIGNsYXNzPSJncmFtZSI+UE9MQVJJVFkoPC9zcGFuPikmbmJzcDttYWNybwotICAgICAgICAgICB0byBjaGVjayZuYnNwO3RoZSBlbmNvZGVyIGlucHV0IHBvbGFyaXR5Ljwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlIEhBTF9USU1fRW5jb2Rlcl88c3BhbiBjbGFzcz0iZ3JhbWUiPkluaXQoPC9zcGFuPikKLSAgICAgICAgICAgQVBJJm5ic3A7PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJzcXVhcmUiPgotICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlJlcGxhY2UgSVNfVElNX0lDXzxzcGFuIGNsYXNzPSJncmFtZSI+UE9MQVJJVFkoPC9zcGFuPikgbWFjcm8gYnkKLSAgICAgICAgICAgIElTX1RJTV9FTkNPREVSSU5QVVRfUE9MQVJJVFkoKSBtYWNyby48L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgICA8L3VsPgotICAgICAgPC91bD4KLSAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+Q29ycmVjdCB3cm9uZyBpbnN0YW5jZSBwYXJhbWV0ZXIgY2hlY2sgaW4gZW5jb2RlciA8c3BhbiBjbGFzcz0iZ3JhbWUiPm1vZGU8L3NwYW4+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0ic3F1YXJlIj4KLSAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlJlcGxhY2UgSVNfVElNX0NDMl9JTlNUQU5DRSBieQotICAgICAgICAgICBJU19USU1fRU5DT0RFUl9JTlRFUkZBQ0VfSU5TVEFOQ0UgaW4gZW5jb2RlciA8c3BhbiBjbGFzcz0iZ3JhbWUiPmludGVyZmFjZQotICAgICAgICAgICA6PC9zcGFuPiZuYnNwOzxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJzcXVhcmUiPgotICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTF9USU1fRW5jb2Rlcl88c3BhbiBjbGFzcz0iZ3JhbWUiPlN0YXJ0KDwvc3Bhbj4pPG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUxfVElNX0VuY29kZXJfPHNwYW4gY2xhc3M9ImdyYW1lIj5TdG9wKDwvc3Bhbj4pPG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUxfVElNX0VuY29kZXJfU3RhcnRfPHNwYW4gY2xhc3M9ImdyYW1lIj5JVCg8L3NwYW4+KTxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMX1RJTV9FbmNvZGVyX1N0b3BfPHNwYW4gY2xhc3M9ImdyYW1lIj5JVCg8L3NwYW4+KTxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICAgPC91bD4KLSAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlJlcGxhY2UgSVNfVElNX0RNQV9DQ19JTlNUQU5DRSBieQotICAgICAgICAgICBJU19USU1fRU5DT0RFUl9JTlRFUkZBQ0VfSU5TVEFOQ0UgaW4gZW5jb2RlciBpbnRlcmZhY2UgaW4gRE1BIDxzcGFuIGNsYXNzPSJncmFtZSI+bW9kZSA6PC9zcGFuPiZuYnNwOzxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJzcXVhcmUiPgotICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTF9USU1fRW5jb2Rlcl9TdGFydF88c3BhbiBjbGFzcz0iZ3JhbWUiPkRNQSg8L3NwYW4+KTxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMX1RJTV9FbmNvZGVyX1N0b3BfPHNwYW4gY2xhc3M9ImdyYW1lIj5ETUEoPC9zcGFuPik8bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgIDwvdWw+Ci0gICAgICA8L3VsPgotICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSIiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5VcGRhdGUgSEFMX1RJTUV4XzxzcGFuIGNsYXNzPSJncmFtZSI+TWFzdGVyQ29uZmlnU3luY2hyb25pemF0aW9uKDwvc3Bhbj4pCi0gICAgICAgICAgQVBJIHRvIGF2b2lkIGZ1bmN0aW9uYWwgZXJyb3JzIGFuZCZuYnNwO2Fzc2VydCBmYWlscyB3aGVuIHVzaW5nIHNvbWUKLSAgICAgICAgICBUSU0gaW5zdGFuY2VzIGFzIGlucHV0IHRyaWdnZXIuPG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0ic3F1YXJlIj4KLSAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlJlcGxhY2UmbmJzcDtJU19USU1fU1lOQ0hST188c3BhbiBjbGFzcz0iZ3JhbWUiPklOU1RBTkNFKDwvc3Bhbj4pCi0gICAgICAgICAgIG1hY3JvIGJ5IElTX1RJTV9NQVNURVJfSU5TVEFOQ0UoKSBtYWNyby4mbmJzcDs8bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+QWRkJm5ic3A7SVNfVElNX1NMQVZFXzxzcGFuIGNsYXNzPSJncmFtZSI+SU5TVEFOQ0UoPC9zcGFuPikKLSAgICAgICAgICAgbWFjcm8gdG8mbmJzcDtjaGVjayBvbiBUSU1fU01DUl9NU00gYml0LjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICA8L3VsPgotICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5Qcm92aWRlIG5ldyBBUEkmbmJzcDt0byBzZXQgYW5kIGNsZWFyIDxzcGFuIGNsYXNzPSJncmFtZSI+VUlGUkVNQVA8L3NwYW4+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0ic3F1YXJlIj4KLSAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkFkZCBuZXcgZGVmaW5pdGlvbiBmb3IgVElNIFVwZGF0ZSBJbnRlcnJ1cHQgRmxhZwotICAgICAgICAgICBSZW1hcDxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJzcXVhcmUiPgotICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlRJTV9VSUZSRU1BUF9ESVNBQkxFPG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5USU1fVUlGUkVNQVBfRU5BQkxFPG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgICA8L3VsPgotICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+QWRkIG5ldyBtYWNybyBpbiBIQUwgZHJpdmVyIHRvIGVuYWJsZSBhbmQgZGVzYWJsZQotICAgICAgICAgICA8c3BhbiBjbGFzcz0iZ3JhbWUiPnRoZSZuYnNwOyBVcGRhdGU8L3NwYW4+IEludGVycnVwdCBGbGFnIFJlbWFwPG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9InNxdWFyZSI+Ci0gICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+Jm5ic3A7X19IQUxfVElNX1VJRlJFTUFQXzxzcGFuIGNsYXNzPSJncmFtZSI+RU5BQkxFKDwvc3Bhbj4pPG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5fX0hBTF9USU1fVUlGUkVNQVBfPHNwYW4gY2xhc3M9ImdyYW1lIj5ESVNBQkxFKDwvc3Bhbj4pL19fSEFMX1RJTV9HRVRfVUlGQ1BZIG1hY3JvPG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgICA8L3VsPgotICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+QWRkIG5ldyBtZWNhbmlzbSB0byBjaGVjayB3aGV0aGVyIHRoZSZuYnNwO3VwZGF0ZQotICAgICAgICAgICBpbnRlcnJ1cHQgZmxhZyAoVUlGKSBjb3B5IGlzIHNldCBvciA8c3BhbiBjbGFzcz0iZ3JhbWUiPm5vdDwvc3Bhbj4mbmJzcDs8bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0ic3F1YXJlIj4KLSAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5BZGQgdGhlIF9fSEFMX1RJTV9HRVRfPHNwYW4gY2xhc3M9ImdyYW1lIj5VSUZDUFkoPC9zcGFuPikgbWFjcm8gaW4gdGhlIEhBTCBkcml2ZXI8bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkFkZCBMTF9USU1fPHNwYW4gY2xhc3M9ImdyYW1lIj5Jc0FjdGl2ZVVJRkNQWSg8L3NwYW4+KSBBUEkgaW4gdGhlIExMIGRyaXZlcjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICAgPC91bD4KLSAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkFkZCBuZXcgbWFjcm8gdG8gY2hlY2sgb24gdGhlJm5ic3A7VXBkYXRlCi0gICAgICAgICAgIEludGVycnVwdCBGbGFnIFJlbWFwIG1vZGU8bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0ic3F1YXJlIj4KLSAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5JU19USU1fVUlGUkVNQVBfPHNwYW4gY2xhc3M9ImdyYW1lIj5NT0RFKDwvc3Bhbj4pPG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgICA8L3VsPgotICAgICAgPC91bD4KLSAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+UmVtb3ZlIHVzc2VsZXNzIGRlZmluZSBpbiB0aGUgTEwgPHNwYW4gY2xhc3M9ImdyYW1lIj5kcml2ZXI8L3NwYW4+Jm5ic3A7PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0ic3F1YXJlIj4KLSAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlRJTXhfQUYxX0JLSU5FIC8gVElNeF9BRjFfQktERkJLRSA8c3BhbiBjbGFzcz0iZ3JhbWUiPi8gJm5ic3A7VElNeDwvc3Bhbj5fQUYyX0JLMklORSAvICZuYnNwO1RJTXhfQUYyX0JLMkRGQktFCi0gICAgICAgICAgIC8gJm5ic3A7VElNeF9BRjJfQksySU5QPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICA8L3VsPgotICAgICA8L3VsPgotICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PGIgc3R5bGU9Im9ycGhhbnM6IDI7IHdpZG93czogMjsgd29yZC1zcGFjaW5nOiAwcHg7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMJm5ic3A7U01BUlRDQVJEPC9zcGFuPjwvYj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+IHVwZGF0ZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+Ci0gICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVwZGF0ZSBTTUFSVENBUkRfPHNwYW4gY2xhc3M9ImdyYW1lIj5TZXRDb25maWcoPC9zcGFuPikKLSAgICAgICAgICBBUEkuPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9InNxdWFyZSI+Ci0gICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5TcGxpdCBIQUxfUkNDX0dldFBDTEsxPHNwYW4gY2xhc3M9ImdyYW1lIj5GcmVxKDwvc3Bhbj4pCi0gICAgICAgICAgIGFuZCBIQUxfUkNDX0dldFBDTEsyRnJlcSgpIG1hY3JvcyBmcm9tIHRoZSBCUlIgY2FsY3VsYXRpb24uPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICA8L3VsPgotICAgICA8L3VsPgotICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTCZuYnNwO0lSREEmbmJzcDs8L3NwYW4+PC9iPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij51cGRhdGU8L3NwYW4+PGI+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9iPjwvbGk+Ci0gICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0iY2lyY2xlIj4KLSAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlIElSREFfPHNwYW4gY2xhc3M9ImdyYW1lIj5TZXRDb25maWcoPC9zcGFuPikKLSAgICAgICAgICBBUEkmbmJzcDs8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0ic3F1YXJlIj4KLSAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlNwbGl0IEhBTF9SQ0NfR2V0UENMSzE8c3BhbiBjbGFzcz0iZ3JhbWUiPkZyZXEoPC9zcGFuPikKLSAgICAgICAgICAgYW5kIEhBTF9SQ0NfR2V0UENMSzJGcmVxKCkgbWFjcm9zIGZyb20gdGhlIElSREFfRElWX1NBTVBMSU5HMTYoKQotICAgICAgICAgICBtYWNyby48L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgIDwvdWw+Ci0gICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVwZGF0ZSBzb21lIEFQSSA8c3BhbiBjbGFzcz0iZ3JhbWUiPmRlc2NpcHRpb248L3NwYW4+PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9InNxdWFyZSI+Ci0gICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUxfSVJEQV88c3BhbiBjbGFzcz0iZ3JhbWUiPlRyYW5zbWl0KDwvc3Bhbj4pCi0gICAgICAgICAgIC8mbmJzcDtIQUxfSVJEQV9UcmFuc21pdF9JVCgpPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUxfSVJEQV88c3BhbiBjbGFzcz0iZ3JhbWUiPlJlY2VpdmUoPC9zcGFuPikKLSAgICAgICAgICAgLyZuYnNwO0hBTF9JUkRBX1JlY2VpdmVfSVQoKTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMX0lSREFfVHJhbnNtaXRfPHNwYW4gY2xhc3M9ImdyYW1lIj5ETUEoPC9zcGFuPikKLSAgICAgICAgICAgLyBIQUxfSVJEQV9SZWNlaXZlX0RNQSgpPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICA8L3VsPgotICAgICA8L3VsPgotICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTCBSQ0MgPC9zcGFuPjwvYj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+dXBkYXRlPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0iY2lyY2xlIj4KLSAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlIHRoZSBIQUxfUkNDXzxzcGFuIGNsYXNzPSJncmFtZSI+Q2xvY2tDb25maWcoPC9zcGFuPikKLSAgICAgICAgICBhbmQgSEFMX1JDQ19EZUluaXQoKSBBUEkgdG8gZG9uJ3Qgb3ZlcndyaXRlIHRoZSBjdXN0b20gdGljayBwcmlvcml0eTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5VcGRhdGUgSEFMX1JDQ188c3BhbiBjbGFzcz0iZ3JhbWUiPk9zY0NvbmZpZyg8L3NwYW4+KQotICAgICAgICAgIEFQSSB0byBkb24ndCByZXR1cm4gSEFMX0VSUk9SIGlmIHJlcXVlc3QgcmVwZWF0cyB0aGUgY3VycmVudCBQTEwKLSAgICAgICAgICBjb25maWd1cmF0aW9uPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgIDwvdWw+Ci0gICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFML0xMIFVTQVJUPC9zcGFuPjwvYj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+Jm5ic3A7dXBkYXRlPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0iY2lyY2xlIj4KLSAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+QWRkIHN1cHBvcnQgdG8gdGhlIFJlY2VpdmVyIFRpbWVvdXQgSW50ZXJydXB0IGluCi0gICAgICAgICAgdGhlIEhBTF9VU0FSVF9JUlFIYW5kbGVyPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVwZGF0ZSBzb21lIEFQSSA8c3BhbiBjbGFzcz0iZ3JhbWUiPmRlc2NpcHRpb248L3NwYW4+Jm5ic3A7PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9InNxdWFyZSI+Ci0gICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDJwdDsgbWFyZ2luLWJvdHRvbTogMnB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTF9VU0FSVF88c3BhbiBjbGFzcz0iZ3JhbWUiPlRyYW5zbWl0KDwvc3Bhbj4pCi0gICAgICAgICAgIC8mbmJzcDtIQUxfVVNBUlRfVHJhbnNtaXRfSVQoKSZuYnNwOzwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiAycHQ7IG1hcmdpbi1ib3R0b206IDJwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUxfVVNBUlRfPHNwYW4gY2xhc3M9ImdyYW1lIj5SZWNlaXZlKDwvc3Bhbj4pCi0gICAgICAgICAgIC8mbmJzcDtIQUxfVVNBUlRfUmVjZWl2ZV9JVCgpJm5ic3A7PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDJwdDsgbWFyZ2luLWJvdHRvbTogMnB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTF9VU0FSVF88c3BhbiBjbGFzcz0iZ3JhbWUiPlRyYW5zbWl0UmVjZWl2ZSg8L3NwYW4+KQotICAgICAgICAgICAvJm5ic3A7SEFMX1VTQVJUX1RyYW5zbWl0UmVjZWl2ZV9JVCgpJm5ic3A7PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDJwdDsgbWFyZ2luLWJvdHRvbTogMnB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTF9VU0FSVF9UcmFuc21pdF88c3BhbiBjbGFzcz0iZ3JhbWUiPkRNQSg8L3NwYW4+KQotICAgICAgICAgICAvIEhBTF9VU0FSVF9SZWNlaXZlX0RNQSgpIC8gSEFMX1VTQVJUX1RyYW5zbWl0UmVjZWl2ZV9ETUEoKTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgPC91bD4KLSAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlIFVTQVJUXzxzcGFuIGNsYXNzPSJncmFtZSI+U2V0Q29uZmlnKDwvc3Bhbj4pCi0gICAgICAgICAgQVBJJm5ic3A7PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlNwbGl0IEhBTF9SQ0NfR2V0UENMSzE8c3BhbiBjbGFzcz0iZ3JhbWUiPkZyZXEoPC9zcGFuPikKLSAgICAgICAgICBhbmQgSEFMX1JDQ19HZXRQQ0xLMkZyZXEoKSBtYWNyb3MgZnJvbSB0aGUgVVNBUlRfRElWX1NBTVBMSU5HOCgpCi0gICAgICAgICAgbWFjcm88L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+U3VwcG9ydCBTdG9wIE1vZGUgZnVuY3Rpb25hbGl0aWVzIGluIHRoZSBVU0FSVCA8c3BhbiBjbGFzcz0iZ3JhbWUiPmRyaXZlcjwvc3Bhbj4mbmJzcDsmbmJzcDs8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBjbGFzcz0iZ3JhbWUiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5BZGQgJm5ic3A7ZGVmaW5pdGlvbjwvc3Bhbj48L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPiBvZiBVU0FSVF9JU1JfUkVBQ0sgVVNBUlQsJm5ic3A7IHJlY2VpdmUgZW5hYmxlCi0gICAgICAgICAgYWNrbm93bGVkZ2UgZmxhZyBpbiB0aGUgSEFMIGRyaXZlcjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5BZGQgbmV3IGZsYWcgZGVmaW5pdGlvbiBpbiB0aGUgTEwgPHNwYW4gY2xhc3M9ImdyYW1lIj5kcml2ZXI8L3NwYW4+Jm5ic3A7PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9InNxdWFyZSI+Ci0gICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDJwdDsgbWFyZ2luLWJvdHRvbTogMnB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkxMX1VTQVJUX0lDUl88c3BhbiBjbGFzcz0iZ3JhbWUiPldVQ0YmbmJzcDsgV2FrZXVwPC9zcGFuPgotICAgICAgICAgICBmcm9tIFN0b3AgbW9kZSBmbGFnJm5ic3A7PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDJwdDsgbWFyZ2luLWJvdHRvbTogMnB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkxMX1VTQVJUX0lTUl9XVUYgV2FrZXVwIGZyb20gU3RvcCBtb2RlIDxzcGFuIGNsYXNzPSJncmFtZSI+ZmxhZzwvc3Bhbj4mbmJzcDs8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogMnB0OyBtYXJnaW4tYm90dG9tOiAycHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+TExfVVNBUlRfSVNSX1JFQUNLIFJlY2VpdmUgZW5hYmxlIGFja25vd2xlZGdlIDxzcGFuIGNsYXNzPSJncmFtZSI+ZmxhZzwvc3Bhbj4mbmJzcDs8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogMnB0OyBtYXJnaW4tYm90dG9tOiAycHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+TExfVVNBUlRfQ1IzX1dVRklFIFdha2V1cCBmcm9tIFN0b3AgbW9kZQotICAgICAgICAgICBpbnRlcnJ1cHQgPHNwYW4gY2xhc3M9ImdyYW1lIj5lbmFibGU8L3NwYW4+PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICA8L3VsPgotICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5BZGQgbmV3IGRlZmluaXRpb24gb2YgdGhlIGRpZmZlcmVudCBldmVudCB3aGljaAotICAgICAgICAgIGFjdGl2YXRlcyB0aGUmbmJzcDt3YWtldXAgZnJvbSBTdG9wIG1vZGUgPHNwYW4gY2xhc3M9ImdyYW1lIj5mbGFnPC9zcGFuPjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJzcXVhcmUiPgotICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+TExfIFVTQVJUX1dBS0VVUF9PTl9BRERSRVNTPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDJwdDsgbWFyZ2luLWJvdHRvbTogMnB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkxMX1VTQVJUX1dBS0VVUF9PTl9TVEFSVEJJVDwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiAycHQ7IG1hcmdpbi1ib3R0b206IDJwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5MTF9VU0FSVF9XQUtFVVBfT05fUlhORTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgPC91bD4KLSAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiAycHQ7IG1hcmdpbi1ib3R0b206IDJwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5BZGQgbmV3IEFQSSBpbiBMTCBkcml2ZXIgdG8gc3VwcG9ydCBzdG9wIDxzcGFuIGNsYXNzPSJncmFtZSI+bW9kZTwvc3Bhbj48L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0ic3F1YXJlIj4KLSAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogMnB0OyBtYXJnaW4tYm90dG9tOiAycHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+TExfVVNBUlRfPHNwYW4gY2xhc3M9ImdyYW1lIj5FbmFibGVJblN0b3BNb2RlKDwvc3Bhbj4pCi0gICAgICAgICAgIHRvIGVuYWJsZSB0aGUgVVNBUlQgaW4gc3RvcCBtb2RlPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDJwdDsgbWFyZ2luLWJvdHRvbTogMnB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkxMX1VTQVJUXzxzcGFuIGNsYXNzPSJncmFtZSI+RGlzYWJsZUluU3RvcE1vZGUoPC9zcGFuPikKLSAgICAgICAgICAgdG8gZGlzYWJsZSB0aGUgVVNBUlQgaW4gc3RvcCBtb2RlPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDJwdDsgbWFyZ2luLWJvdHRvbTogMnB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkxMX1VTQVJUXzxzcGFuIGNsYXNzPSJncmFtZSI+SXNFbmFibGVkSW5TdG9wTW9kZSg8L3NwYW4+KQotICAgICAgICAgICB0byBjaGVjayBpZiB0aGUgVVNBUlQgaXMgZW5hYmxlZCBvciBub3QgaW4gdGhlIHN0b3AgbW9kZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiAycHQ7IG1hcmdpbi1ib3R0b206IDJwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5MTF9VU0FSVF88c3BhbiBjbGFzcz0iZ3JhbWUiPkVuYWJsZUNsb2NrSW5TdG9wTW9kZSg8L3NwYW4+KQotICAgICAgICAgICB0byBlbmFibGUgdGhlIFVTQVJUIGNsb2NrIGluIHRoZSBzdG9wIG1vZGU8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogMnB0OyBtYXJnaW4tYm90dG9tOiAycHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+TExfVVNBUlRfPHNwYW4gY2xhc3M9ImdyYW1lIj5EaXNhYmxlQ2xvY2tJblN0b3BNb2RlKDwvc3Bhbj4pCi0gICAgICAgICAgIHRvIGRpc2FibGUgdGhlIFVTQVJUIGNsb2NrIGluIHRoZSBzdG9wIG1vZGU8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogMnB0OyBtYXJnaW4tYm90dG9tOiAycHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+TExfVVNBUlRfPHNwYW4gY2xhc3M9ImdyYW1lIj5Jc0Nsb2NrRW5hYmxlZEluU3RvcE1vZGUoPC9zcGFuPikKLSAgICAgICAgICAgdG8gY2hlY2sgd2hldGhlciBVU0FSVCBjbG9jayBhcmUgZW5hYmxlZCBvciBub3QgaW4gdGhlIHN0b3AgbW9kZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgPC91bD4KLSAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiAycHQ7IG1hcmdpbi1ib3R0b206IDJwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5BZGQgbmV3IEFQSSBpbiBMTCBkcml2ZXIgdG8gbWFuYWdlIGV2ZW50IHJlbGlzdGVkCi0gICAgICAgICAgdG8gV2FrZSBVUCBJbnRlcnJ1cHQgRmxhZzwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJzcXVhcmUiPgotICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiAycHQ7IG1hcmdpbi1ib3R0b206IDJwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5MTF9VU0FSVF88c3BhbiBjbGFzcz0iZ3JhbWUiPlNldFdLVVBUeXBlKDwvc3Bhbj4pCi0gICAgICAgICAgIHRvIHNlbGVjdCB0aGUgZXZlbnQgdHlwZSBmb3IgV2FrZSBVUCBJbnRlcnJ1cHQgRmxhZzwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiAycHQ7IG1hcmdpbi1ib3R0b206IDJwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5MTF9VU0FSVF88c3BhbiBjbGFzcz0iZ3JhbWUiPkdldFdLVVBUeXBlKDwvc3Bhbj4pCi0gICAgICAgICAgIHRvIGdldCZuYnNwOyB0aGUgZXZlbnQgdHlwZSBmb3IgV2FrZSBVUCBJbnRlcnJ1cHQgRmxhZzwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiAycHQ7IG1hcmdpbi1ib3R0b206IDJwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5MTF9VU0FSVF9Jc0FjdGl2ZUZsYWdfPHNwYW4gY2xhc3M9ImdyYW1lIj5XS1VQKDwvc3Bhbj4pCi0gICAgICAgICAgIHRvIENoZWNrIGlmIHRoZSBVU0FSVCBXYWtlIFVwIGZyb20gc3RvcCBtb2RlIEZsYWcgaXMgc2V0IG9yIG5vdDwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiAycHQ7IG1hcmdpbi1ib3R0b206IDJwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5MTF9VU0FSVF9Jc0FjdGl2ZUZsYWdfPHNwYW4gY2xhc3M9ImdyYW1lIj5SRUFDSyg8L3NwYW4+KQotICAgICAgICAgICB0byBDaGVjayBpZiB0aGUgVVNBUlQgUmVjZWl2ZSBFbmFibGUgQWNrbm93bGVkZ2UgRmxhZyBpcyBzZXQgb3Igbm90PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDJwdDsgbWFyZ2luLWJvdHRvbTogMnB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkxMX1VTQVJUX0NsZWFyRmxhZ188c3BhbiBjbGFzcz0iZ3JhbWUiPldLVVAoPC9zcGFuPikKLSAgICAgICAgICAgQ2xlYXIgV2FrZSBVcCBmcm9tIHN0b3AgbW9kZSBGbGFnPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICA8L3VsPgotICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDJwdDsgbWFyZ2luLWJvdHRvbTogMnB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkFkZCBuZXcgQVBJIGluIExMIGRyaXZlciB0byBtYW5hZ2Ugd2FrZSB1cCBmcm9tCi0gICAgICAgICAgc3RvcCA8c3BhbiBjbGFzcz0iZ3JhbWUiPmludGVycnVwdGlvbjwvc3Bhbj48L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0ic3F1YXJlIj4KLSAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogMnB0OyBtYXJnaW4tYm90dG9tOiAycHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+TExfVVNBUlRfRW5hYmxlSVRfPHNwYW4gY2xhc3M9ImdyYW1lIj5XS1VQKDwvc3Bhbj4pCi0gICAgICAgICAgIHRvIEVuYWJsZSBXYWtlIFVwIGZyb20gU3RvcCBNb2RlIEludGVycnVwdDwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiAycHQ7IG1hcmdpbi1ib3R0b206IDJwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5MTF9VU0FSVF9EaXNhYmxlSVRfPHNwYW4gY2xhc3M9ImdyYW1lIj5XS1VQKDwvc3Bhbj4pCi0gICAgICAgICAgIHRvIERpc2FibGUgV2FrZSBVcCBmcm9tIFN0b3AgTW9kZSBJbnRlcnJ1cHQ8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogMnB0OyBtYXJnaW4tYm90dG9tOiAycHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+TExfVVNBUlRfSXNFbmFibGVkSVRfPHNwYW4gY2xhc3M9ImdyYW1lIj5XS1VQKDwvc3Bhbj4pCi0gICAgICAgICAgIHRvIENoZWNrIGlmIHRoZSBVU0FSVCBXYWtlIFVwIGZyb20gU3RvcCBNb2RlIEludGVycnVwdCBpcyBlbmFibGVkIG9yCi0gICAgICAgICAgIG5vdDwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgPC91bD4KLSAgICAgPC91bD4KLSAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwvTEwgVVNCIDwvc3Bhbj48L2I+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+Ci0gICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPiZuYnNwO0FkZCBoYW5kbGluZyBVU0IgaG9zdCBiYWJibGUgZXJyb3IgPHNwYW4gY2xhc3M9ImdyYW1lIj5pbnRlcnJ1cHQ8L3NwYW4+PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPiZuYnNwO0ZpeCBFbmFibGluZyBVTFBJIGludGVyZmFjZSBmb3IgcGxhdGZvcm1zCi0gICAgICAgICAgdGhhdCBpbnRlZ3JhdGVzIFVTQiBIUyBQSFk8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+Jm5ic3A7Rml4IEhvc3QgZGF0YSB0b2dnbGluZyBmb3IgSU4gSXNvIHRyYW5zZmVyczwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij4mbmJzcDtFbnN1cmUgdG8gZGlzYWJsZSBVU0IgRVAgZHVyaW5nIGVuZHBvaW50IDxzcGFuIGNsYXNzPSJncmFtZSI+ZGVhY3RpdmF0aW9uPC9zcGFuPjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICA8L3VsPgotICAgIDwvdWw+Ci0gICAgPGgzIHN0eWxlPSJiYWNrZ3JvdW5kOiByZ2IoNTEsIDEwMiwgMjU1KSBub25lIHJlcGVhdCBzY3JvbGwgMCUgNTAlOyBtYXJnaW4tcmlnaHQ6IDUwMHB0OyAtbW96LWJhY2tncm91bmQtY2xpcDogLW1vei1pbml0aWFsOyAtbW96LWJhY2tncm91bmQtb3JpZ2luOiAtbW96LWluaXRpYWw7IC1tb3otYmFja2dyb3VuZC1pbmxpbmUtcG9saWN5OiAtbW96LWluaXRpYWw7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7QXJpYWwmcXVvdDssc2Fucy1zZXJpZjsgY29sb3I6IHdoaXRlOyI+VjEuMi43LwotICAgIDA4LUZlYnJ1YXJ5LTIwMTk8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9oMz4KLSAgICA8cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luOiA0LjVwdCAwaW4gNC41cHQgMC4yNWluOyI+PGI+PHU+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsgY29sb3I6IGJsYWNrOyI+TWFpbiBDaGFuZ2VzPC9zcGFuPjwvdT48L2I+PC9wPgotICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0iZGlzYyI+Ci0gICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+R2VuZXJhbCB1cGRhdGVzIHRvIGZpeCBrbm93biBkZWZlY3RzIGFuZAotICAgICAgICAgZW5oYW5jZW1lbnRzIDxzcGFuIGNsYXNzPSJncmFtZSI+aW1wbGVtZW50YXRpb248L3NwYW4+PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+R2VuZXJhbCB1cGRhdGVzIHRvIGZpeCBDb2RlU29uYXIgY29tcGlsYXRpb24gPHNwYW4gY2xhc3M9ImdyYW1lIj53YXJuaW5nczwvc3Bhbj48L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5HZW5lcmFsIHVwZGF0ZXMgdG8gZml4IFNXNFNUTTMyIGNvbXBpbGF0aW9uIGVycm9ycwotICAgICAgICAgdW5kZXIgPHNwYW4gY2xhc3M9ImdyYW1lIj5MaW51eDwvc3Bhbj48L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5HZW5lcmFsIHVwZGF0ZXMgdG8gZml4IHRoZSB1c2VyIG1hbnVhbCAuY2htIDxzcGFuIGNsYXNzPSJncmFtZSI+ZmlsZXM8L3NwYW4+PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+QWRkIHN1cHBvcnQgb2YgSEFMIGNhbGxiYWNrIHJlZ2lzdHJhdGlvbiA8c3BhbiBjbGFzcz0iZ3JhbWUiPmZlYXR1cmU8L3NwYW4+PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+QWRkIG5ldzxzcGFuIGNsYXNzPSJhcHBsZS1jb252ZXJ0ZWQtc3BhY2UiPiA8L3NwYW4+PGI+SEFMCi0gICAgICAgICBFWFRJPC9iPjxzcGFuIGNsYXNzPSJhcHBsZS1jb252ZXJ0ZWQtc3BhY2UiPiA8L3NwYW4+ZHJpdmVyPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VGhlIGZvbGxvd2luZyBjaGFuZ2VzIGRvbmUgb24gdGhlIEhBTCBkcml2ZXJzCi0gICAgICAgICByZXF1aXJlIGFuIHVwZGF0ZSBvbiB0aGUgYXBwbGljYXRpb24gY29kZSBiYXNlZCBvbiBvbGRlciBIQUwgPHNwYW4gY2xhc3M9ImdyYW1lIj52ZXJzaW9uczwvc3Bhbj48L3NwYW4+PC9iPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0iY2lyY2xlIj4KLSAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+UmV3b3JrIG9mIEhBTCBDUllQIGRyaXZlcjxiPiAoY29tcGF0aWJpbGl0eSBicmVhaykKLSAgICAgICAgICA8L2I+PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9InNxdWFyZSI+Ci0gICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwgQ1JZUCBkcml2ZXIgaGFzIGJlZW4gcmVkZXNpZ25lZCB3aXRoIG5ldwotICAgICAgICAgICBBUEkncywgdG8gYnlwYXNzIGxpbWl0YXRpb25zIG9uIGRhdGEgRW5jcnlwdGlvbi9EZWNyeXB0aW9uIG1hbmFnZW1lbnQKLSAgICAgICAgICAgcHJlc2VudCB3aXRoIHByZXZpb3VzIEhBTCBDUllQIGRyaXZlciB2ZXJzaW9uLjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VGhlIG5ldyBIQUwgQ1JZUCBkcml2ZXIgaXMgdGhlIHJlY29tbWVuZGVkCi0gICAgICAgICAgIHZlcnNpb24uIEl0IGlzIGxvY2F0ZWQgYXMgdXN1YWwgaW4gRHJpdmVycy9TVE0zMkY3eHhfSEFMX0RyaXZlci9TcmMKLSAgICAgICAgICAgYW5kIERyaXZlcnMvU1RNMzJmN3h4X0hBTF9Ecml2ZXIvSW5jIGZvbGRlcnMuIEl0IGNhbiBiZSBlbmFibGVkCi0gICAgICAgICAgIHRocm91Z2ggc3dpdGNoIEhBTF9DUllQX01PRFVMRV9FTkFCTEVEIGluIHN0bTMyZjd4eF9oYWxfY29uZi5oPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5UaGUgbGVnYWN5IEhBTCBDUllQIGRyaXZlciBpcyBubyBsb25nZXIKLSAgICAgICAgICAgc3VwcG9ydGVkLjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgPC91bD4KLSAgICAgPC91bD4KLSAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwvTEwgR2VuZXJpYyA8L3NwYW4+PC9iPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij51cGRhdGU8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgotICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5BZGQgc3VwcG9ydCBvZiA8Yj5IQUwgY2FsbGJhY2sgcmVnaXN0cmF0aW9uPC9iPiA8c3BhbiBjbGFzcz0iZ3JhbWUiPmZlYXR1cmU8L3NwYW4+PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9InNxdWFyZSI+Ci0gICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5UaGUgZmVhdHVyZSBkaXNhYmxlZCBieSBkZWZhdWx0IGlzIGF2YWlsYWJsZSBmb3IgdGhlCi0gICAgICAgICAgIGZvbGxvd2luZyBIQUwgZHJpdmVyczo8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9InNxdWFyZSI+Ci0gICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+QURDLCBDQU4sIENFQywgQ1JZUCwKLSAgICAgICAgICAgIERBQywgRENNSSwgREZTRE0sIERNQTJELCBEU0ksIEVUSCwgSEFTSCwgSENELCBJMkMsIFNNQlVTLCBVQVJULAotICAgICAgICAgICAgVVNBUlQsIElSREEsIEpQRUcsIFNNQVJUQ0FSRCwgTFBUSU0sIExUREMsIE1ESU9TLCBNTUMsIE5BTkQsIDxzcGFuIGNsYXNzPSJncmFtZSI+Tk9SLDwvc3Bhbj4gUENELCBRU1BJLCBSTkcsIFJUQywgU0FJLCBTRCwgU0RSQU0sIFNSQU0sCi0gICAgICAgICAgICBTUERJRlJYLCBTUEksIEkyUywgVElNIDwvc3Bhbj48L2I+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPmFuZDxiPgotICAgICAgICAgICAgV1dERzwvYj48L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgICA8L3VsPgotICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VGhlIGZlYXR1cmUgbWF5IGJlIGVuYWJsZWQgaW5kaXZpZHVhbGx5IHBlciBIQUwgPGk+UFBQPC9pPgotICAgICAgICAgICBkcml2ZXIgYnkgc2V0dGluZyB0aGUgY29ycmVzcG9uZGluZyBkZWZpbml0aW9uIFVTRV9IQUxfPGk+UFBQPC9pPl9SRUdJU1RFUl9DQUxMQkFDS1MKLSAgICAgICAgICAgdG8mbmJzcDsxVSBpbiBzdG0zMmY3eHhfaGFsX2NvbmYuaCBwcm9qZWN0IGNvbmZpZ3VyYXRpb24gZmlsZQotICAgICAgICAgICAodGVtcGxhdGUgZmlsZSBzdG0zMmY3eHhfaGFsX2NvbmZfdGVtcGxhdGUuaCBhdmFpbGFibGUgPHNwYW4gY2xhc3M9ImdyYW1lIj5mcm9tJm5ic3A7IERyaXZlcnM8L3NwYW4+L1NUTTMyRjd4eF9IQUxfRHJpdmVyL0luYyk8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPk9uY2UgPHNwYW4gY2xhc3M9ImdyYW1lIj5lbmFibGVkICw8L3NwYW4+IHRoZSB1c2VyCi0gICAgICAgICAgIGFwcGxpY2F0aW9uIG1heSByZXNvcnQgdG8gSEFMX1BQUF9SZWdpc3RlckNhbGxiYWNrKCkgdG8gcmVnaXN0ZXIKLSAgICAgICAgICAgc3BlY2lmaWMgY2FsbGJhY2sgZnVuY3Rpb24ocykgYW5kIHVucmVnaXN0ZXIgaXQodGhlbSkgd2l0aCBIQUxfPGk+UFBQPC9pPl9VblJlZ2lzdGVyQ2FsbGJhY2soKS48L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgIDwvdWw+Ci0gICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkdlbmVyYWwgdXBkYXRlcyB0byBmaXggTUlTUkEgMjAxMiBjb21waWxhdGlvbiA8c3BhbiBjbGFzcz0iZ3JhbWUiPmVycm9yczwvc3Bhbj48L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0ic3F1YXJlIj4KLSAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTF9JU19CSVRfU0VUKCkvSEFMX0lTX0JJVF88c3BhbiBjbGFzcz0iZ3JhbWUiPkNMUig8L3NwYW4+KQotICAgICAgICAgICBtYWNyb3MgaW1wbGVtZW50YXRpb24gdXBkYXRlPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij4ic3RkaW8uaCIgaW5jbHVkZSB1cGRhdGVkIHdpdGgKLSAgICAgICAgICAgInN0ZGRlZi48c3BhbiBjbGFzcz0iZ3JhbWUiPmg8L3NwYW4+Ijwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgPC91bD4KLSAgICAgPC91bD4KLSAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwgR1BJTzwvc3Bhbj48L2I+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPgotICAgICAgICAgVXBkYXRlPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0iY2lyY2xlIj4KLSAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMX0dQSU9fPHNwYW4gY2xhc3M9ImdyYW1lIj5Ub2dnbGVQaW4oPC9zcGFuPikgQVBJCi0gICAgICAgICAgaW1wbGVtZW50YXRpb24gdXBkYXRlOiB0byBpbXByb3ZlIHJvYnVzdG5lc3M8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMX0dQSU9fPHNwYW4gY2xhc3M9ImdyYW1lIj5EZUluaXQoPC9zcGFuPikgQVBJCi0gICAgICAgICAgdXBkYXRlIHRvIGVuc3VyZSBjbGVhciBhbGwgR1BJTyBFWFRJIHBlbmRpbmcgaW50ZXJydXB0cy48L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgPC91bD4KLSAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwgQ1JZUDwvc3Bhbj48L2I+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPgotICAgICAgICAgdXBkYXRlPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0iY2lyY2xlIj4KLSAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VGhlIENSWVBfSW5pdFR5cGVEZWYgPC9zcGFuPjwvYj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+aXMgbm8gbW9yZSBzdXBwb3J0ZWQsIGNoYW5nZWQgYnkgPGI+Q1JZUF9Db25maWdUeXBlZGVmPC9iPgotICAgICAgICAgIHRvIGFsbG93IGNoYW5naW5nIHBhcmFtZXRlcnMgPGJyPgotICAgICAgICAgIHVzaW5nIEhBTF9DUllQXzxzcGFuIGNsYXNzPSJncmFtZSI+c2V0Q29uZmlnKDwvc3Bhbj4pIEFQSSB3aXRob3V0IHJlaW5pdGlhbGl6ZQotICAgICAgICAgIHRoZSBDUllQIElQIHVzaW5nIHRoZSBIQUxfQ1JZUF9Jbml0KCkgQVBJPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPk5ldyBwYXJhbWV0ZXJzIGFkZGVkIGluIHRoZSA8Yj5DUllQX0NvbmZpZ1R5cGVEZWY8L2I+Ci0gICAgICAgICAgc3RydWN0dXJlOiA8Yj5CMDwvYj4gYW5kIDxzcGFuIGNsYXNzPSJncmFtZSI+PGI+RGF0YVdpZHRoVW5pdDwvYj48L3NwYW4+PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPklucHV0IGRhdGEgc2l6ZSBwYXJhbWV0ZXIgaXMgYWRkZWQgaW4gdGhlIDxiPkNSWVBfSGFuZGxlVHlwZURlZjwvYj4KLSAgICAgICAgICBzdHJ1Y3R1cmU8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+QWRkIG5ldyBBUElzIHRvIG1hbmFnZSB0aGUgQ1JZUCBjb25maWd1cmF0aW9uOjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJzcXVhcmUiPgotICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+Jm5ic3A7SEFMX0NSWVBfPHNwYW4gY2xhc3M9ImdyYW1lIj5TZXRDb25maWcoPC9zcGFuPik8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTF9DUllQXzxzcGFuIGNsYXNzPSJncmFtZSI+R2V0Q29uZmlnKDwvc3Bhbj4pPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICA8L3VsPgotICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5BZGQgbmV3IEFQSXMgdG8gbWFuYWdlIHRoZSBLZXkgZGVyaXZhdGlvbjo8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0ic3F1YXJlIj4KLSAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTF9DUllQRXhfPHNwYW4gY2xhc3M9ImdyYW1lIj5FbmFibGVBdXRvS2V5RGVyaXZhdGlvbig8L3NwYW4+KTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMX0NSWVBFeF88c3BhbiBjbGFzcz0iZ3JhbWUiPkRpc2FibGVBdXRvS2V5RGVyaXZhdGlvbig8L3NwYW4+KTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgPC91bD4KLSAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+QWRkIG5ldyBBUElzIHRvIGVuY3J5cHQgYW5kIGRlY3J5cHQgZGF0YTo8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0ic3F1YXJlIj4KLSAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTF9DUllQXzxzcGFuIGNsYXNzPSJncmFtZSI+RW5jeXB0KDwvc3Bhbj4pPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUxfQ1JZUF88c3BhbiBjbGFzcz0iZ3JhbWUiPkRlY3lwdCg8L3NwYW4+KTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMX0NSWVBfRW5jeXB0XzxzcGFuIGNsYXNzPSJncmFtZSI+SVQoPC9zcGFuPik8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTF9DUllQX0RlY3lwdF88c3BhbiBjbGFzcz0iZ3JhbWUiPklUKDwvc3Bhbj4pPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUxfQ1JZUF9FbmN5cHRfPHNwYW4gY2xhc3M9ImdyYW1lIj5ETUEoPC9zcGFuPik8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTF9DUllQX0RlY3lwdF88c3BhbiBjbGFzcz0iZ3JhbWUiPkRNQSg8L3NwYW4+KTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgPC91bD4KLSAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+QWRkIG5ldyBBUElzIHRvIGdlbmVyYXRlIFRBRzo8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0ic3F1YXJlIj4KLSAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTF9DUllQRXhfQUVTPGI+R0NNPC9iPl88c3BhbiBjbGFzcz0iZ3JhbWUiPkdlbmVyYXRlQXV0aFRBRyg8L3NwYW4+KTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMX0NSWVBFeF9BRVM8Yj5DQ008L2I+XzxzcGFuIGNsYXNzPSJncmFtZSI+R2VuZXJhdGVBdXRoVEFHKDwvc3Bhbj4pPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICA8L3VsPgotICAgICA8L3VsPgotICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTCBJMkM8L3NwYW4+PC9iPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij4KLSAgICAgICAgIHVwZGF0ZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+Ci0gICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkkyQyBBUEkgY2hhbmdlcyBmb3IgTUlTUkEtQyAyMDEyIGNvbXBsaWFuY3k6PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9InNxdWFyZSI+Ci0gICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5SZW5hbWUgSEFMX0kyQ19NYXN0ZXJfU2VxdWVudGlhbF9UcmFuc21pdF88c3BhbiBjbGFzcz0iZ3JhbWUiPklUKDwvc3Bhbj4pIHRvIEhBTF9JMkNfTWFzdGVyX1NlcV9UcmFuc21pdF9JVCgpPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5SZW5hbWUgSEFMX0kyQ19NYXN0ZXJfU2VxdWVudGllbF9SZWNlaXZlXzxzcGFuIGNsYXNzPSJncmFtZSI+SVQoPC9zcGFuPikgdG8gSEFMX0kyQ19NYXN0ZXJfU2VxX1JlY2VpdmVfSVQoKTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+UmVuYW1lIEhBTF9JMkNfU2xhdmVfU2VxdWVudGllbF9UcmFuc21pdF88c3BhbiBjbGFzcz0iZ3JhbWUiPklUKDwvc3Bhbj4pIHRvIEhBTF9JMkNfU2xhdmVfU2VxX1RyYW5zbWl0X0lUKCkgPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5SZW5hbWUgSEFMX0kyQ19TbGF2ZV9TZXF1ZW50aWVsX1JlY2VpdmVfPHNwYW4gY2xhc3M9ImdyYW1lIj5ETUEoPC9zcGFuPikgdG8gSEFMX0kyQ19TbGF2ZV9TZXFfUmVjZWl2ZV9ETUEoKTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgPC91bD4KLSAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkFkZCBzdXBwb3J0IG9mIEkyQyByZXBlYXRlZCBzdGFydCBmZWF0dXJlIGluIERNQQotICAgICAgICAgIE1vZGU6PC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEzLjVwdDsiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgIDwvdWw+Ci0gICAgPC91bD4KLSAgICA8cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luLWxlZnQ6IDEuNWluOyB0ZXh0LWluZGVudDogLTAuMjVpbjsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEzLjVwdDsgY29sb3I6IGJsYWNrOyI+MS48L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogN3B0OyBjb2xvcjogYmxhY2s7Ij4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgPC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7IGNvbG9yOiBibGFjazsiPldpdGggdGhlIGZvbGxvd2luZyBuZXcgQVBJJ3M8L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTMuNXB0OyBjb2xvcjogYmxhY2s7Ij48bzpwPjwvbzpwPjwvc3Bhbj48L3A+Ci0gICAgPHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbi1sZWZ0OiAyaW47IHRleHQtaW5kZW50OiAtMC4yNWluOyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTMuNXB0OyBjb2xvcjogYmxhY2s7Ij4xLjwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiA3cHQ7IGNvbG9yOiBibGFjazsiPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyA8L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsgY29sb3I6IGJsYWNrOyI+SEFMX0kyQ19NYXN0ZXJfU2VxX1RyYW5zbWl0XzxzcGFuIGNsYXNzPSJncmFtZSI+RE1BKDwvc3Bhbj4pPC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEzLjVwdDsgY29sb3I6IGJsYWNrOyI+PG86cD48L286cD48L3NwYW4+PC9wPgotICAgIDxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW4tbGVmdDogMmluOyB0ZXh0LWluZGVudDogLTAuMjVpbjsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEzLjVwdDsgY29sb3I6IGJsYWNrOyI+Mi48L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogN3B0OyBjb2xvcjogYmxhY2s7Ij4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgPC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7IGNvbG9yOiBibGFjazsiPkhBTF9JMkNfTWFzdGVyX1NlcV9SZWNlaXZlXzxzcGFuIGNsYXNzPSJncmFtZSI+RE1BKDwvc3Bhbj4pPC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEzLjVwdDsgY29sb3I6IGJsYWNrOyI+PG86cD48L286cD48L3NwYW4+PC9wPgotICAgIDxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW4tbGVmdDogMmluOyB0ZXh0LWluZGVudDogLTAuMjVpbjsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEzLjVwdDsgY29sb3I6IGJsYWNrOyI+My48L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogN3B0OyBjb2xvcjogYmxhY2s7Ij4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgPC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7IGNvbG9yOiBibGFjazsiPkhBTF9JMkNfU2xhdmVfU2VxX1RyYW5zbWl0XzxzcGFuIGNsYXNzPSJncmFtZSI+RE1BKDwvc3Bhbj4pPC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEzLjVwdDsgY29sb3I6IGJsYWNrOyI+PG86cD48L286cD48L3NwYW4+PC9wPgotICAgIDxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW4tbGVmdDogMmluOyB0ZXh0LWluZGVudDogLTAuMjVpbjsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEzLjVwdDsgY29sb3I6IGJsYWNrOyI+NC48L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogN3B0OyBjb2xvcjogYmxhY2s7Ij4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgPC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7IGNvbG9yOiBibGFjazsiPkhBTF9JMkNfU2xhdmVfU2VxX1JlY2VpdmVfPHNwYW4gY2xhc3M9ImdyYW1lIj5ETUEoPC9zcGFuPik8L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTMuNXB0OyBjb2xvcjogYmxhY2s7Ij48bzpwPjwvbzpwPjwvc3Bhbj48L3A+Ci0gICAgPHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbi1sZWZ0OiAxaW47IHRleHQtaW5kZW50OiAtMC4yNWluOyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTMuNXB0OyBjb2xvcjogYmxhY2s7Ij4zLjwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiA3cHQ7IGNvbG9yOiBibGFjazsiPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyA8L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsgY29sb3I6IGJsYWNrOyI+QWRkIG5ldyBJMkMgdHJhbnNmZXIgb3B0aW9ucyB0byBlYXN5IG1hbmFnZQotICAgIHRoZSBzZXF1ZW50aWFsIDxzcGFuIGNsYXNzPSJncmFtZSI+dHJhbnNmZXJzPC9zcGFuPjwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMy41cHQ7IGNvbG9yOiBibGFjazsiPjxvOnA+PC9vOnA+PC9zcGFuPjwvcD4KLSAgICA8cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luLWxlZnQ6IDEuNWluOyB0ZXh0LWluZGVudDogLTAuMjVpbjsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEzLjVwdDsgY29sb3I6IGJsYWNrOyI+MS48L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogN3B0OyBjb2xvcjogYmxhY2s7Ij4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgPC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7IGNvbG9yOiBibGFjazsiPkkyQ19PVEhFUl9GUkFNRTwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMy41cHQ7IGNvbG9yOiBibGFjazsiPjxvOnA+PC9vOnA+PC9zcGFuPjwvcD4KLSAgICA8cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luLWxlZnQ6IDEuNWluOyB0ZXh0LWluZGVudDogLTAuMjVpbjsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEzLjVwdDsgY29sb3I6IGJsYWNrOyI+Mi48L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogN3B0OyBjb2xvcjogYmxhY2s7Ij4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgPC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7IGNvbG9yOiBibGFjazsiPkkyQ19PVEhFUl9BTkRfTEFTVF9GUkFNRTwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMy41cHQ7IGNvbG9yOiBibGFjazsiPjxvOnA+PC9vOnA+PC9zcGFuPjwvcD4KLSAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImRpc2MiPgotICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gY2xhc3M9ImdyYW1lIj48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+TEwmbmJzcDsgUkNDPC9zcGFuPjwvYj48L3NwYW4+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPiA8L3NwYW4+PC9iPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij51cGRhdGU8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgotICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5VcGRhdGUgTExfUkNDXzxzcGFuIGNsYXNzPSJncmFtZSI+R2V0U0FJQ2xvY2tGcmVxKDwvc3Bhbj4pCi0gICAgICAgICAgQVBJIHRvIHJldHVybiB0aGUgcmlnaHQgZnJlcXVlbmN5IGFjY29yZGluZyB0byB0aGUgU0FJIGNsb2NrIHNvdXJjZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICA8L3VsPgotICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTCBSTkcgPC9zcGFuPjwvYj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+dXBkYXRlPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0iY2lyY2xlIj4KLSAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlIHRvIG1hbmFnZSBSTkcgZXJyb3IgY29kZTogPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9InNxdWFyZSI+Ci0gICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5BZGQgRXJyb3JDb2RlIHBhcmFtZXRlciBpbiBIQUwgUk5HIEhhbmRsZXIKLSAgICAgICAgICAgc3RydWN0dXJlPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5BZGQgSEFMX1JOR188c3BhbiBjbGFzcz0iZ3JhbWUiPkdldEVycm9yKDwvc3Bhbj4pCi0gICAgICAgICAgIEFQSTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgPC91bD4KLSAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMIExvY2svVW5sb2NrIG1lY2FuaXNtIDxzcGFuIGNsYXNzPSJncmFtZSI+dXBkYXRlPC9zcGFuPgotICAgICAgICAgIDwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICA8L3VsPgotICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkxMIEFEQyA8L3NwYW4+PC9iPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij51cGRhdGU8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgotICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5GaXggVlJFRklOVC9URU1QU0VOU09SIGNhbGlicmF0aW9uIGFkZHJlc3MKLSAgICAgICAgICByZWdpc3RlcnMgZm9yIFNUTTMyRjc0eC83NXgvRjc2L0Y3NyBkZXZpY2VzPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9InNxdWFyZSI+Ci0gICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5Ob3RlPC9zcGFuPjwvYj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+OgotICAgICAgICAgICBGb3IgU1RNMzJGNzIvRjczIHRoZSBpc3N1ZSB3aWxsIGJlIGZpeGVkIGluIG5leHQgcmVsZWFzZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgPC91bD4KLSAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMX0FEQ188c3BhbiBjbGFzcz0iZ3JhbWUiPlN0YXJ0KDwvc3Bhbj4pLAotICAgICAgICAgIEhBTF9BRENfU3RhcnRfSVQoKSBhbmQgSEFMX0FEQ19TdGFydF9ETUEoKSB1cGRhdGUgdG8gcHJldmVudGlvbiBmcm9tCi0gICAgICAgICAgc3RhcnRpbmcgQURDMiBvciBBREMzIG9uY2UgbXVsdGltb2RlIGlzIGVuYWJsZWQ8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgPC91bD4KLSAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwgPHNwYW4gY2xhc3M9ImdyYW1lIj5ERlNETSZuYnNwOyA8L3NwYW4+PC9zcGFuPjwvYj48c3BhbiBjbGFzcz0iZ3JhbWUiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij51cGRhdGU8L3NwYW4+PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0iY2lyY2xlIj4KLSAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+R2VuZXJhbCB1cGRhdGVzIHRvIGJlIGNvbXBsaWFudCB3aXRoIERGU0RNIGJpdHMKLSAgICAgICAgICBuYW1pbmcgdXNlZCBpbiBDTVNJUyBmaWxlcy48L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgPC91bD4KLSAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwgPHNwYW4gY2xhc3M9ImdyYW1lIj5DQU4mbmJzcDsgPC9zcGFuPjwvc3Bhbj48L2I+PHNwYW4gY2xhc3M9ImdyYW1lIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+dXBkYXRlPC9zcGFuPjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+Ci0gICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVwZGF0ZSBwb3NzaWJsZSB2YWx1ZXMgbGlzdCBmb3IgRmlsdGVyQWN0aXZhdGlvbgotICAgICAgICAgIHBhcmFtZXRlciBpbiBDQU5fRmlsdGVyVHlwZURlZiBzdHJ1Y3R1cmU8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0ic3F1YXJlIj4KLSAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkNBTl9GSUxURVJfRU5BQkxFIGluc3RlYWQgb2YgPHNwYW4gY2xhc3M9ImdyYW1lIj5FTkFCTEU8L3NwYW4+PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5DQU5fRklMVEVSX0RJU0FCTEUgaW5zdGVhZCBvZiA8c3BhbiBjbGFzcz0iZ3JhbWUiPkRJU0FCTEU8L3NwYW4+PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICA8L3VsPgotICAgICA8L3VsPgotICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTCA8c3BhbiBjbGFzcz0iZ3JhbWUiPkNFQyZuYnNwOyA8L3NwYW4+PC9zcGFuPjwvYj48c3BhbiBjbGFzcz0iZ3JhbWUiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij51cGRhdGU8L3NwYW4+PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0iY2lyY2xlIj4KLSAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlIEhBTCBDRUMgU3RhdGUgbWFuYWdlbWVudCBtZXRob2Q6PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9InNxdWFyZSI+Ci0gICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5SZW1vdmUgSEFMX0NFQ19TdGF0ZVR5cGVEZWYgc3RydWN0dXJlIDxzcGFuIGNsYXNzPSJncmFtZSI+cGFyYW1ldGVyczwvc3Bhbj48L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkFkZCBuZXcgZGVmaW5lcyBmb3IgQ0VDIDxzcGFuIGNsYXNzPSJncmFtZSI+c3RhdGVzPC9zcGFuPjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgPC91bD4KLSAgICAgPC91bD4KLSAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwgRE1BMjxzcGFuIGNsYXNzPSJncmFtZSI+RCZuYnNwOyA8L3NwYW4+PC9zcGFuPjwvYj48c3BhbiBjbGFzcz0iZ3JhbWUiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij51cGRhdGU8L3NwYW4+PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0iY2lyY2xlIj4KLSAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+UmVtb3ZlIHVudXNlZCBETUEyRF9Db2xvclR5cGVEZWYgc3RydWN0dXJlIHRvIGJlCi0gICAgICAgICAgY29tcGxpYW50IHdpdGggTUlTUkFDIDIwMTIgUnVsZSAyLjM8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+R2VuZXJhbCB1cGRhdGUgdG8gdXNlIGRlZGljYXRlZCBkZWZpbmVzIGZvcgotICAgICAgICAgIERNQTJEX0JBQ0tHUk9VTkRfTEFZRVIgYW5kIERNQTJEX0ZPUkVHUk9VTkRfTEFZRVIgaW5zdGVhZCBvZgotICAgICAgICAgIG51bWVyaWNhbCB2YWx1ZXM6IDAvMS48L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgPC91bD4KLSAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwvTEwgUlRDPC9zcGFuPjwvYj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+Ci0gICAgICAgICB1cGRhdGU8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgotICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwvIExMIDxzcGFuIGNsYXNzPSJncmFtZSI+ZHJpdmVyczwvc3Bhbj4KLSAgICAgICAgICBvcHRpbWl6YXRpb248L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0ic3F1YXJlIj4KLSAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTCBkcml2ZXI6IHJlbW92ZSB1bnVzZWQgPHNwYW4gY2xhc3M9ImdyYW1lIj52YXJpYWJsZXM8L3NwYW4+PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5MTCBkcml2ZXI6IGdldHRlciBBUElzIG9wdGltaXphdGlvbjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgPC91bD4KLSAgICAgPC91bD4KLSAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwgSlBFRyA8L3NwYW4+PC9iPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij51cGRhdGU8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgotICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5VcGRhdGUgcGFyYW1ldGVycyB0eXBlIGluIEpQRUdfQ29uZlR5cGVEZWYKLSAgICAgICAgICBzdHJ1Y3R1cmUgdG8gYmUgYWxpZ25lZCB3aXRoIDMyLTxzcGFuIGNsYXNzPSJncmFtZSI+Yml0czwvc3Bhbj48L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgPC91bD4KLSAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwgU1BJIDwvc3Bhbj48L2I+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+Ci0gICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPk92ZXJhbGwgcmV3b3JrIG9mIHRoZSBkcml2ZXIgZm9yIGEgbW9yZQotICAgICAgICAgIGVmZmljaWVudCZuYnNwO2ltcGxlbWVudGF0aW9uPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkFkZCB0aGUgZm9sbG93aW5nIG5ldyBtYWNyb3M6PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9InNxdWFyZSI+Ci0gICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5TUElfQ0hFQ0tfPHNwYW4gY2xhc3M9ImdyYW1lIj5GTEFHKDwvc3Bhbj4pIDwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+U1BJX0NIRUNLX0lUXzxzcGFuIGNsYXNzPSJncmFtZSI+U09VUkNFKDwvc3Bhbj4pIDwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgPC91bD4KLSAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+QWRkIEhBTF9TUElFeF88c3BhbiBjbGFzcz0iZ3JhbWUiPkZsdXNoUnhGaWZvKDwvc3Bhbj4pCi0gICAgICAgICAgQVBJIHRvIGZsdXNoIHRoZSBTUEkgRklGTyBSWC48L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlIEhBTF9TUElfPHNwYW4gY2xhc3M9ImdyYW1lIj5BYm9ydCg8L3NwYW4+KSB0bwotICAgICAgICAgIGZpeCBhYm9ydCBpc3N1ZSBpbiBTUEkgVFggb3IgUnggbW9kZSBvbmx5IDwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5VcGRhdGUgSEFMX1NQSV9UcmFuc21pdCgpL0hBTF9TUElfPHNwYW4gY2xhc3M9ImdyYW1lIj5SZWNlaXZlKDwvc3Bhbj4pIEFQSSdzIHRvIGZpeCBtZW1vcnkgb3ZlcmZsb3cgaXNzdWUuPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgIDwvdWw+Ci0gICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMIEkyUyA8L3NwYW4+PC9iPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij51cGRhdGU8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgotICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5PdmVyYWxsIHJld29yayBvZiB0aGUgZHJpdmVyIGZvciBhIG1vcmUKLSAgICAgICAgICBlZmZpY2llbnQmbmJzcDtpbXBsZW1lbnRhdGlvbjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5BZGQgdGhlIGZvbGxvd2luZyBuZXcgbWFjcm9zOjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJzcXVhcmUiPgotICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+STJTX0NIRUNLXzxzcGFuIGNsYXNzPSJncmFtZSI+RkxBRyg8L3NwYW4+KTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+STJTX0NIRUNLX0lUXzxzcGFuIGNsYXNzPSJncmFtZSI+U09VUkNFKDwvc3Bhbj4pPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICA8L3VsPgotICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5VcGRhdGUgSEFMX0kyU19UcmFuc21pdCgpL0hBTF9JMlNfPHNwYW4gY2xhc3M9ImdyYW1lIj5SZWNlaXZlKDwvc3Bhbj4pIEFQSSdzIHRvIGZpeCBtZW1vcnkgb3ZlcmZsb3cgaXNzdWUuPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgIDwvdWw+Ci0gICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFML0xMIFRJTSA8L3NwYW4+PC9iPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij51cGRhdGU8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgotICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5Nb3ZlIHRoZSBmb2xsb3dpbmcgVElNIHN0cnVjdHVyZXMgZnJvbQotICAgICAgICAgIHN0bTMyZjR4eF9oYWxfdGltX2V4LmggaW50byBzdG0zMmY0eHhfaGFsX3RpbS5oPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9InNxdWFyZSI+Ci0gICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5USU1fTWFzdGVyQ29uZmlnVHlwZURlZjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VElNX0JyZWFrRGVhZFRpbWVDb25maWdUeXBlRGVmPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICA8L3VsPgotICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5BZGQgbmV3IFRJTSBDYWxsYmFja3MgQVBJJ3M6PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9InNxdWFyZSI+Ci0gICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUxfVElNXzxzcGFuIGNsYXNzPSJncmFtZSI+UGVyaW9kRWxhcHNlZEhhbGZDcGx0Q2FsbGJhY2soPC9zcGFuPik8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTF9USU1fSUNfPHNwYW4gY2xhc3M9ImdyYW1lIj5DYXB0dXJlSGFsZkNwbHRDYWxsYmFjayg8L3NwYW4+KTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMX1RJTV9QV01fPHNwYW4gY2xhc3M9ImdyYW1lIj5QdWxzZUZpbmlzaGVkSGFsZkNwbHRDYWxsYmFjayg8L3NwYW4+KTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMX1RJTV88c3BhbiBjbGFzcz0iZ3JhbWUiPlRyaWdnZXJIYWxmQ3BsdENhbGxiYWNrKDwvc3Bhbj4pPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICA8L3VsPgotICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5USU0gQVBJIGNoYW5nZXMgZm9yIE1JU1JBLUMgMjAxMiBjb21wbGlhbmN5Ojwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJzcXVhcmUiPgotICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+UmVuYW1lIEhBTF9USU1fU2xhdmVDb25maWdTeW5jaHJvbml6YXRpb24gdG8KLSAgICAgICAgICAgSEFMX1RJTV9TbGF2ZUNvbmZpZ1N5bmNocm88L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlJlbmFtZSBIQUxfVElNX1NsYXZlQ29uZmlnU3luY2hyb25pemF0aW9uX0lUIHRvCi0gICAgICAgICAgIEhBTF9USU1fU2xhdmVDb25maWdTeW5jaHJvX0lUPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5SZW5hbWUgSEFMX1RJTUV4X0NvbmZpZ0NvbW11dGF0aW9uRXZlbnQgdG8KLSAgICAgICAgICAgSEFMX1RJTUV4X0NvbmZpZ0NvbW11dEV2ZW50PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5SZW5hbWUgSEFMX1RJTUV4X0NvbmZpZ0NvbW11dGF0aW9uRXZlbnRfSVQgdG8KLSAgICAgICAgICAgSEFMX1RJTUV4X0NvbmZpZ0NvbW11dEV2ZW50X0lUPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5SZW5hbWUgSEFMX1RJTUV4X0NvbmZpZ0NvbW11dGF0aW9uRXZlbnRfRE1BIHRvCi0gICAgICAgICAgIEhBTF9USU1FeF9Db25maWdDb21tdXRFdmVudF9ETUE8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlJlbmFtZSBIQUxfVElNRXhfQ29tbXV0YXRpb25DYWxsYmFjayB0bwotICAgICAgICAgICBIQUxfVElNRXhfQ29tbXV0Q2FsbGJhY2s8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlJlbmFtZSBIQUxfVElNRXhfRE1BQ29tbXV0YXRpb25DcGx0IHRvCi0gICAgICAgICAgIFRJTUV4X0RNQUNvbW11dGF0aW9uQ3BsdDwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgPC91bD4KLSAgICAgPC91bD4KLSAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwgVUFSVCA8L3NwYW4+PC9iPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij51cGRhdGU8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgotICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5PdmVyYWxsIHJld29yayBvZiB0aGUgZHJpdmVyIGZvciBhIG1vcmUKLSAgICAgICAgICBlZmZpY2llbnQmbmJzcDtpbXBsZW1lbnRhdGlvbjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5BZGQgdGhlIGZvbGxvd2luZyBVQVJUIEFQSSdzIGluIHN0bTMyZjd4eF9oYWxfdWFydF9leC5jOjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJzcXVhcmUiPgotICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+Jm5ic3A7SEFMX1JTNDg1RXhfPHNwYW4gY2xhc3M9ImdyYW1lIj5Jbml0KDwvc3Bhbj4pPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUxfTXVsdGlQcm9jZXNzb3JFeF9BZGRyZXNzTGVuZ3RoXzxzcGFuIGNsYXNzPSJncmFtZSI+U2V0KDwvc3Bhbj4pPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICA8L3VsPgotICAgICA8L3VsPgotICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTC9MTCBVU0I8L3NwYW4+PC9iPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij4KLSAgICAgICAgIHVwZGF0ZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+Ci0gICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlJld29yayBVU0IgaW50ZXJydXB0IGhhbmRsZXIgYW5kIGltcHJvdmUgSFMgRE1BCi0gICAgICAgICAgc3VwcG9ydCBpbiBEZXZpY2UgPHNwYW4gY2xhc3M9ImdyYW1lIj5tb2RlPC9zcGFuPjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5GaXggQkNEIGhhbmRsaW5nIGZvciBPVEcgaW5zdGFuY2UgaW4gZGV2aWNlIDxzcGFuIGNsYXNzPSJncmFtZSI+bW9kZTwvc3Bhbj48L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+Y2xlYW51cCByZWZlcmVuY2UgdG8gbG93IHNwZWVkIGluIGRldmljZSBtb2RlPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPmFsbG93IHdyaXRpbmcgVFggRklGTyBpbiBjYXNlIG9mIHRyYW5zZmVyIGxlbmd0aAotICAgICAgICAgIGlzIGVxdWFsIHRvIGF2YWlsYWJsZSBzcGFjZSBpbiB0aGUgVFggPHNwYW4gY2xhc3M9ImdyYW1lIj5GSUZPPC9zcGFuPjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5GaXggVG9nZ2xlIE9VVCBpbnRlcnJ1cHQgY2hhbm5lbCBpbiBob3N0IDxzcGFuIGNsYXNzPSJncmFtZSI+bW9kZTwvc3Bhbj48L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgPC91bD4KLSAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5MTCBJV0RHIDwvc3Bhbj48L2I+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+Ci0gICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVwZGF0ZSBMTCBpbmxpbmUgbWFjcm9zIHRvIHVzZSBJV0RHeCBwYXJhbWV0ZXIKLSAgICAgICAgICBpbnN0ZWFkIG9mIElXREcgaW5zdGFuY2UgZGVmaW5lZCBpbiBDTVNJUyA8c3BhbiBjbGFzcz0iZ3JhbWUiPmRldmljZTwvc3Bhbj48L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgPC91bD4KLSAgICA8L3VsPgotICAgIDxoMyBzdHlsZT0iYmFja2dyb3VuZDogcmdiKDUxLCAxMDIsIDI1NSkgbm9uZSByZXBlYXQgc2Nyb2xsIDAlIDUwJTsgbWFyZ2luLXJpZ2h0OiA1MDBwdDsgLW1vei1iYWNrZ3JvdW5kLWNsaXA6IC1tb3otaW5pdGlhbDsgLW1vei1iYWNrZ3JvdW5kLW9yaWdpbjogLW1vei1pbml0aWFsOyAtbW96LWJhY2tncm91bmQtaW5saW5lLXBvbGljeTogLW1vei1pbml0aWFsOyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O0FyaWFsJnF1b3Q7LHNhbnMtc2VyaWY7IGNvbG9yOiB3aGl0ZTsiPlYxLjIuNiAvCi0gICAgMjktSnVuZS0yMDE4PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvaDM+Ci0gICAgPHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbjogNC41cHQgMGluIDQuNXB0IDAuMjVpbjsgb3JwaGFuczogMjsgdGV4dC1hbGlnbjogc3RhcnQ7IHdpZG93czogMjsgd29yZC1zcGFjaW5nOiAwcHg7Ij48Yj48dT48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyBjb2xvcjogYmxhY2s7Ij5NYWluIENoYW5nZXM8L3NwYW4+PC91PjwvYj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMy41cHQ7IGNvbG9yOiBibGFjazsiPjxvOnA+PC9vOnA+PC9zcGFuPjwvcD4KLSAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImRpc2MiPgotICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVwZGF0ZSB0byBzdXBwb3J0IFNUTTMyRjczMHh4IGFuZCBTVE0zMkY3NTB4eCB2YWx1ZQotICAgICAgICAgPHNwYW4gY2xhc3M9ImdyYW1lIj5saW5lczwvc3Bhbj48L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwgRE1BJm5ic3A7PC9zcGFuPjwvYj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+dXBkYXRlPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0iY2lyY2xlIj4KLSAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+RE1BX0NIQU5ORUxfOCB0byBETUFfQ0hBTk5FTF8xNSA8c3BhbiBjbGFzcz0iZ3JhbWUiPmFyZTwvc3Bhbj4KLSAgICAgICAgICBhbHNvIGRlZmluZWQgaW4gY2FzZSBvZiZuYnNwO1NUTTMyRjczMHh4IChzYW1lJm5ic3A7ZmVhdHVyZXMgYXMKLSAgICAgICAgICBTVE0zMkY3MzN4eCBsaW5lKTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICA8L3VsPgotICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTCBGTEFTSCZuYnNwOzwvc3Bhbj48L2I+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+Ci0gICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkFkZCBzdXBwb3J0IG9mJm5ic3A7U1RNMzJGNzMweHggd2l0aCA0IEZMYXNoCi0gICAgICAgICAgc2VjdG9ycyBvZiAxNktCIGVhY2guPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkFkZCBzdXBwb3J0IG9mJm5ic3A7U1RNMzJGNzUweHggd2l0aCAyIEZMYXNoCi0gICAgICAgICAgc2VjdG9ycyBvZiAzMktCIGVhY2guPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgIDwvdWw+Ci0gICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMIEdQSU8mbmJzcDs8L3NwYW4+PC9iPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij51cGRhdGU8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgotICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5BZGQgc3VwcG9ydCBvZiZuYnNwO1NUTTMyRjczMHh4IHZhbHVlIDxzcGFuIGNsYXNzPSJncmFtZSI+bGluZSA6PC9zcGFuPiBzYW1lJm5ic3A7ZmVhdHVyZXMgYXMgU1RNMzJGNzMzeHggbGluZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5BZGQgc3VwcG9ydCBvZiZuYnNwO1NUTTMyRjc1MHh4IHZhbHVlIDxzcGFuIGNsYXNzPSJncmFtZSI+bGluZSA6PC9zcGFuPiBzYW1lJm5ic3A7ZmVhdHVyZXMgYXMgU1RNMzJGNzU2eHgmbmJzcDtsaW5lPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgIDwvdWw+Ci0gICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMIFJDQyZuYnNwOzwvc3Bhbj48L2I+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+Ci0gICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkFkZCBzdXBwb3J0IG9mJm5ic3A7U1RNMzJGNzMweHggdmFsdWUgPHNwYW4gY2xhc3M9ImdyYW1lIj5saW5lIDo8L3NwYW4+IHNhbWUmbmJzcDtmZWF0dXJlcyBhcyBTVE0zMkY3MzN4eCZuYnNwO2xpbmU8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+QWRkIHN1cHBvcnQgb2YmbmJzcDtTVE0zMkY3NTB4eCB2YWx1ZSA8c3BhbiBjbGFzcz0iZ3JhbWUiPmxpbmUgOjwvc3Bhbj4gc2FtZSZuYnNwO2ZlYXR1cmVzIGFzIFNUTTMyRjc1Nnh4Jm5ic3A7bGluZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICA8L3VsPgotICAgIDwvdWw+Ci0gICAgPGgzIHN0eWxlPSJiYWNrZ3JvdW5kOiByZ2IoNTEsIDEwMiwgMjU1KSBub25lIHJlcGVhdCBzY3JvbGwgMCUgNTAlOyBtYXJnaW4tcmlnaHQ6IDUwMHB0OyAtbW96LWJhY2tncm91bmQtY2xpcDogLW1vei1pbml0aWFsOyAtbW96LWJhY2tncm91bmQtb3JpZ2luOiAtbW96LWluaXRpYWw7IC1tb3otYmFja2dyb3VuZC1pbmxpbmUtcG9saWN5OiAtbW96LWluaXRpYWw7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7QXJpYWwmcXVvdDssc2Fucy1zZXJpZjsgY29sb3I6IHdoaXRlOyI+VjEuMi41IC8KLSAgICAwMi1GZWJydWFyeS0yMDE4PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvaDM+Ci0gICAgPHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbjogNC41cHQgMGluIDQuNXB0IDAuMjVpbjsiPjxiPjx1PjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7IGNvbG9yOiBibGFjazsiPk1haW4gQ2hhbmdlczwvc3Bhbj48L3U+PC9iPjwvcD4KLSAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImRpc2MiPgotICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkdlbmVyYWwgdXBkYXRlcyB0byBmaXgga25vd24gZGVmZWN0cyBhbmQKLSAgICAgICAgIGVuaGFuY2VtZW50cyA8c3BhbiBjbGFzcz0iZ3JhbWUiPmltcGxlbWVudGF0aW9uPC9zcGFuPjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTCZuYnNwOzwvc3Bhbj48L2I+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+Ci0gICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkFkZCBuZXcgbWFjcm8gdG8gZ2V0IHZhcmlhYmxlIGFsaWduZWQgb24gMzItYnl0ZXMsCi0gICAgICAgICAgcmVxdWlyZWQgZm9yIGNhY2hlIG1haW50ZW5hbmNlIDxzcGFuIGNsYXNzPSJncmFtZSI+cHVycG9zZTwvc3Bhbj48L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlIDxzcGFuIGNsYXNzPSJncmFtZSI+VU5VU0VEKDwvc3Bhbj4pIG1hY3JvCi0gICAgICAgICAgaW1wbGVtZW50YXRpb24gdG8gYXZvaWQgR0NDIHdhcm5pbmc8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0ic3F1YXJlIj4KLSAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlRoZSB3YXJuaW5nIGlzIGRldGVjdGVkIHdoZW4gdGhlIDxzcGFuIGNsYXNzPSJncmFtZSI+VU5VU0VEKDwvc3Bhbj4pIG1hY3JvIGlzIGNhbGxlZCBmcm9tIEMrKyBmaWxlPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICA8L3VsPgotICAgICA8L3VsPgotICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTCBTQUkgPC9zcGFuPjwvYj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+dXBkYXRlPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0iY2lyY2xlIj4KLSAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlIEhBTF9TQUlfPHNwYW4gY2xhc3M9ImdyYW1lIj5ETUFTdG9wKDwvc3Bhbj4pCi0gICAgICAgICAgYW5kIEhBTF9TQUlfQWJvcnQoKSBwcm9jZXNzIHRvIGZpeCB0aGUgbG9jay91bmxvY2sgYXVkaW8gaXNzdWUgPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgIDwvdWw+Ci0gICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMIFBXUiA8L3NwYW4+PC9iPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij51cGRhdGU8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgotICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5VcGRhdGUgSEFMX1BXUl88c3BhbiBjbGFzcz0iZ3JhbWUiPkVudGVyU0xFRVBNb2RlKDwvc3Bhbj4pCi0gICAgICAgICAgYW5kIEhBTF9QV1JfRW50ZXJTVE9QTW9kZSgpIEFQSXMgdG8gZW5zdXJlIHRoYXQgYWxsIGluc3RydWN0aW9ucwotICAgICAgICAgIGZpbmlzaGVkIGJlZm9yZSBlbnRlcmluZyBTVE9QIG1vZGUuIDwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICA8L3VsPgotICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTCBIQ0QgPC9zcGFuPjwvYj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+dXBkYXRlPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0iY2lyY2xlIj4KLSAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+QWRkIG5ldyBjYWxsYmFjayB0byBiZSB1c2VkIHRvIGhhbmRsZSB1c2IgZGV2aWNlCi0gICAgICAgICAgY29ubmVjdGlvbi88c3BhbiBjbGFzcz0iZ3JhbWUiPmRpc2Nvbm5lY3Rpb248L3NwYW4+PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9InNxdWFyZSI+Ci0gICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUxfSENEX1BvcnRFbmFibGVkXzxzcGFuIGNsYXNzPSJncmFtZSI+Q2FsbGJhY2soPC9zcGFuPik8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTF9IQ0RfUG9ydERpc2FibGVkXzxzcGFuIGNsYXNzPSJncmFtZSI+Q2FsbGJhY2soPC9zcGFuPik8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgIDwvdWw+Ci0gICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVwZGF0ZSB0byBwcmV2ZW50IHJlYWN0aXZhdGUgaG9zdCBpbnRlcnJydXB0IDxzcGFuIGNsYXNzPSJncmFtZSI+Y2hhbm5lbDwvc3Bhbj48L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgPC91bD4KLSAgICA8L3VsPgotICAgIDxoMyBzdHlsZT0iYmFja2dyb3VuZDogcmdiKDUxLCAxMDIsIDI1NSkgbm9uZSByZXBlYXQgc2Nyb2xsIDAlIDUwJTsgbWFyZ2luLXJpZ2h0OiA1MDBwdDsgLW1vei1iYWNrZ3JvdW5kLWNsaXA6IC1tb3otaW5pdGlhbDsgLW1vei1iYWNrZ3JvdW5kLW9yaWdpbjogLW1vei1pbml0aWFsOyAtbW96LWJhY2tncm91bmQtaW5saW5lLXBvbGljeTogLW1vei1pbml0aWFsOyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O0FyaWFsJnF1b3Q7LHNhbnMtc2VyaWY7IGNvbG9yOiB3aGl0ZTsiPlYxLjIuNCAvCi0gICAgMjItRGVjZW1iZXItMjAxNzwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2gzPgotICAgIDxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW46IDQuNXB0IDBpbiA0LjVwdCAwLjI1aW47Ij48Yj48dT48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyBjb2xvcjogYmxhY2s7Ij5NYWluIENoYW5nZXM8L3NwYW4+PC91PjwvYj48L3A+Ci0gICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJkaXNjIj4KLSAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5HZW5lcmFsIHVwZGF0ZXMgdG8gZml4IGtub3duIGRlZmVjdHMgYW5kCi0gICAgICAgICBlbmhhbmNlbWVudHMgPHNwYW4gY2xhc3M9ImdyYW1lIj5pbXBsZW1lbnRhdGlvbjwvc3Bhbj48L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5UaGUgZm9sbG93aW5nIGNoYW5nZXMgZG9uZSBvbiB0aGUgSEFMIGRyaXZlcnMKLSAgICAgICAgIHJlcXVpcmUgYW4gdXBkYXRlIG9uIHRoZSBhcHBsaWNhdGlvbiBjb2RlIGJhc2VkIG9uIG9sZGVyIEhBTCA8c3BhbiBjbGFzcz0iZ3JhbWUiPnZlcnNpb25zPC9zcGFuPjwvc3Bhbj48L2I+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgotICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5SZXdvcmsgb2YgSEFMIENBTiBkcml2ZXIgKGNvbXBhdGliaWxpdHkKLSAgICAgICAgICBicmVhaykmbmJzcDs8L3NwYW4+PC9iPjxiPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvYj48L2xpPgotICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJzcXVhcmUiPgotICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+QSBuZXcgSEFMIENBTiBkcml2ZXIgaGFzIGJlZW4gcmVkZXNpZ25lZCB3aXRoIG5ldwotICAgICAgICAgICBBUElzLCB0byBieXBhc3MgbGltaXRhdGlvbnMgb24gQ0FOIFR4L1J4IEZJRk8gbWFuYWdlbWVudCBwcmVzZW50Ci0gICAgICAgICAgIHdpdGggcHJldmlvdXMgSEFMIENBTiBkcml2ZXIgdmVyc2lvbi48L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlRoZSBuZXcgSEFMIENBTiBkcml2ZXIgaXMgdGhlIHJlY29tbWVuZGVkCi0gICAgICAgICAgIHZlcnNpb24uIEl0IGlzIGxvY2F0ZWQgYXMgdXN1YWwgaW4gRHJpdmVycy9TVE0zMkY3eHhfSEFMX0RyaXZlci9TcmMKLSAgICAgICAgICAgYW5kIERyaXZlcnMvU1RNMzJmN3h4X0hBTF9Ecml2ZXIvSW5jIGZvbGRlcnMuIEl0IGNhbiBiZSBlbmFibGVkCi0gICAgICAgICAgIHRocm91Z2ggc3dpdGNoIEhBTF9DQU5fTU9EVUxFX0VOQUJMRUQgaW4gc3RtMzJmN3h4X2hhbF9jb25mLmg8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlRoZSBsZWdhY3kgSEFMIENBTiBkcml2ZXIgaXMgYWxzbyBwcmVzZW50IGluIHRoZQotICAgICAgICAgICByZWxlYXNlIGluIERyaXZlcnMvU1RNMzJGN3h4X0hBTF9Ecml2ZXIvU3JjL0xlZ2FjeSBhbmQKLSAgICAgICAgICAgRHJpdmVycy9TVE0zMkY3eHhfSEFMX0RyaXZlci9JbmMvTGVnYWN5IGZvbGRlcnMgZm9yIHNvZnR3YXJlCi0gICAgICAgICAgIGNvbXBhdGliaWxpdHkgcmVhc29ucy4gSXRzIHVzYWdlIGlzIG5vdCByZWNvbW1lbmRlZCBhcwotICAgICAgICAgICBkZXByZWNhdGVkLiZuYnNwO0l0IGNhbiBob3dldmVyIGJlIGVuYWJsZWQgdGhyb3VnaCBzd2l0Y2gKLSAgICAgICAgICAgSEFMX0NBTl9MRUdBQ1lfTU9EVUxFX0VOQUJMRUQgaW4gc3RtMzJmN3h4X2hhbF9jb25mLmg8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgIDwvdWw+Ci0gICAgIDwvdWw+Ci0gICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMJm5ic3A7PC9zcGFuPjwvYj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+dXBkYXRlPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0iY2lyY2xlIj4KLSAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlIEhBTCBkcml2ZXIgdG8gYWxsb3cgdXNlciB0byBjaGFuZ2Ugc3lzdGljawotICAgICAgICAgIHBlcmlvZCB0byAxPHNwYW4gY2xhc3M9ImdyYW1lIj5tcyAsPC9zcGFuPiAxMCBtcyBvciAxMDAgbXMgOjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJzcXVhcmUiPgotICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+QWRkIHRoZSBmb2xsb3dpbmcgPHNwYW4gY2xhc3M9ImdyYW1lIj5BUEkncyA6PC9zcGFuPiZuYnNwOyZuYnNwOzwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0ic3F1YXJlIj4KLSAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUxfPHNwYW4gY2xhc3M9ImdyYW1lIj5HZXRUaWNrUHJpbyg8L3NwYW4+KQotICAgICAgICAgICAgOiBSZXR1cm5zIGEgdGljayBwcmlvcml0eS48L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUxfPHNwYW4gY2xhc3M9ImdyYW1lIj5TZXRUaWNrRnJlcSg8L3NwYW4+KQotICAgICAgICAgICAgOiBTZXRzIG5ldyB0aWNrJm5ic3A7ZnJlcXVlbmN5Ljwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTF88c3BhbiBjbGFzcz0iZ3JhbWUiPkdldFRpY2tGcmVxKDwvc3Bhbj4pCi0gICAgICAgICAgICA6IFJldHVybnMgdGljayBmcmVxdWVuY3kuPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICAgPC91bD4KLSAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkFkZCBIQUxfVGlja0ZyZXFUeXBlRGVmIGVudW1lcmF0aW9uIGZvciB0aGUKLSAgICAgICAgICAgZGlmZmVyZW50IFRpY2sgPHNwYW4gY2xhc3M9ImdyYW1lIj5GcmVxdWVuY2llcyA6PC9zcGFuPiAxMCBIeiAsIDEwMCBIegotICAgICAgICAgICBhbmQgMUtIeiAoZGVmYXVsdCkuPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICA8L3VsPgotICAgICA8L3VsPgotICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTCBDQU4gPC9zcGFuPjwvYj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+dXBkYXRlPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0iY2lyY2xlIj4KLSAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+RmllbGRzIG9mIENBTl9Jbml0VHlwZURlZiBzdHJ1Y3R1cmUgYXJlIHJld29ya2VkOjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJzcXVhcmUiPgotICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+U0pXIHRvIFN5bmNKdW1wV2lkdGgsIEJTMSB0byBUaW1lU2VnMSwgQlMyIHRvCi0gICAgICAgICAgIFRpbWVTZWcyLCBUVENNIHRvIFRpbWVUcmlnZ2VyZWRNb2RlLCBBQk9NIHRvIEF1dG9CdXNPZmYsIEFXVU0gdG8KLSAgICAgICAgICAgQXV0b1dha2VVcCwgTkFSVCB0byBBdXRvUmV0cmFuc21pc3Npb24gKGludmVyc2VkKSwgUkZMTSB0bwotICAgICAgICAgICBSZWNlaXZlRmlmb0xvY2tlZCBhbmQgVFhGUCB0byBUcmFuc21pdEZpZm9Qcmlvcml0eTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgPC91bD4KLSAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMX0NBTl88c3BhbiBjbGFzcz0iZ3JhbWUiPkluaXQoPC9zcGFuPikgaXMgc3BsaXQKLSAgICAgICAgICBpbnRvIGJvdGggSEFMX0NBTl9Jbml0KCkgYW5kIEhBTF9DQU5fU3RhcnQoKSBBUEknczwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUxfQ0FOXzxzcGFuIGNsYXNzPSJncmFtZSI+VHJhbnNtaXQoPC9zcGFuPikgaXMKLSAgICAgICAgICByZXBsYWNlZCBieSBIQUxfQ0FOX0FkZFR4TWVzc2FnZSgpIHRvIHBsYWNlIFR4IFJlcXVlc3QsIHRoZW4KLSAgICAgICAgICBIQUxfQ0FOX0dldFR4TWFpbGJveGVzRnJlZUxldmVsKCkgZm9yIHBvbGxpbmcgdW50aWwgY29tcGxldGlvbi48L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMX0NBTl9UcmFuc21pdF88c3BhbiBjbGFzcz0iZ3JhbWUiPklUKDwvc3Bhbj4pIGlzCi0gICAgICAgICAgcmVwbGFjZWQgYnkgSEFMX0NBTl9BY3RpdmF0ZU5vdGlmaWNhdGlvbigpIHRvIGVuYWJsZSB0cmFuc21pdCBJVCwKLSAgICAgICAgICB0aGVuIEhBTF9DQU5fQWRkVHhNZXNzYWdlKCkgZm9yIHBsYWNlIFR4IHJlcXVlc3QuPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTF9DQU5fPHNwYW4gY2xhc3M9ImdyYW1lIj5SZWNlaXZlKDwvc3Bhbj4pIGlzCi0gICAgICAgICAgcmVwbGFjZWQgYnkgSEFMX0NBTl9HZXRSeEZpZm9GaWxsTGV2ZWwoKSBmb3IgcG9sbGluZyB1bnRpbCByZWNlcHRpb24sCi0gICAgICAgICAgdGhlbiBIQUxfQ0FOX0dldFJ4TWVzc2FnZSgpIDxicj4KLSAgICAgICAgICB0byBnZXQgUnggbWVzc2FnZS48L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMX0NBTl9SZWNlaXZlXzxzcGFuIGNsYXNzPSJncmFtZSI+SVQoPC9zcGFuPikgaXMKLSAgICAgICAgICByZXBsYWNlZCBieSBIQUxfQ0FOX0FjdGl2YXRlTm90aWZpY2F0aW9uKCkmbmJzcDt0byBlbmFibGUgcmVjZWl2ZSBJVCwKLSAgICAgICAgICB0aGVuIEhBTF9DQU5fR2V0UnhNZXNzYWdlKCk8YnI+Ci0gICAgICAgICAgaW4gdGhlIHJlY2VpdmVjYWxsYmFjayB0byBnZXQgUnggbWVzc2FnZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUxfQ0FOXzxzcGFuIGNsYXNzPSJncmFtZSI+U2xlcHAoPC9zcGFuPikgaXMKLSAgICAgICAgICByZW5hbWVkIGFzIEhBTF9DQU5fUmVxdWVzdFNsZWVwKCk8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMX0NBTl88c3BhbiBjbGFzcz0iZ3JhbWUiPlR4Q3BsdENhbGxiYWNrKDwvc3Bhbj4pCi0gICAgICAgICAgaXMgc3BsaXQgaW50byBIQUxfQ0FOX1R4TWFpbGJveDBDb21wbGV0ZUNhbGxiYWNrKCksCi0gICAgICAgICAgSEFMX0NBTl9UeE1haWxib3gxQ29tcGxldGVDYWxsYmFjaygpIGFuZCZuYnNwO0hBTF9DQU5fVHhNYWlsYm94MkNvbXBsZXRlQ2FsbGJhY2soKS48L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMX0NBTl9SeENwbHRDYWxsYmFjayBpcyBzcGxpdCBpbnRvCi0gICAgICAgICAgSEFMX0NBTl9SeEZpZm8wPHNwYW4gY2xhc3M9ImdyYW1lIj5Nc2dQZW5kaW5nQ2FsbGJhY2soPC9zcGFuPikgYW5kCi0gICAgICAgICAgSEFMX0NBTl9SeEZpZm8xTXNnUGVuZGluZ0NhbGxiYWNrKCkuPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPk1vcmUgY29tcGxldGUgIkhvdyB0byB1c2UgdGhlIG5ldwotICAgICAgICAgIGRyaXZlciIgaXMgZGV0YWlsZWQgaW4gdGhlIGRyaXZlciBoZWFkZXIgc2VjdGlvbiBpdHNlbGYuPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgIDwvdWw+Ci0gICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMIFJDQyZuYnNwOzwvc3Bhbj48L2I+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+Ci0gICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9InNxdWFyZSI+Ci0gICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5BZGQgbmV3IExMIDxzcGFuIGNsYXNzPSJncmFtZSI+bWFjcm88L3NwYW4+IDwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0ic3F1YXJlIj4KLSAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5MTF9SQ0NfUExMXzxzcGFuIGNsYXNzPSJncmFtZSI+U2V0TWFpblNvdXJjZSg8L3NwYW4+KSBhbGxvd2luZyB0byBjb25maWd1cmUgUExMIGNsb2NrCi0gICAgICAgICAgICBzb3VyY2U8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgICA8L3VsPgotICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+QWRkIG5ldyBIQUwgPHNwYW4gY2xhc3M9ImdyYW1lIj5tYWNyb3M8L3NwYW4+PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJzcXVhcmUiPgotICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPl9fSEFMX1JDQ19HRVRfUlRDXzxzcGFuIGNsYXNzPSJncmFtZSI+U09VUkNFKDwvc3Bhbj4pIGFsbG93aW5nIHRvIGdldCB0aGUgUlRDIGNsb2NrIHNvdXJjZTxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+X19IQUxfUkNDX0dFVF9SVENfSFNFXzxzcGFuIGNsYXNzPSJncmFtZSI+UFJFU0NBTEVSKDwvc3Bhbj4pIGFsbG93aW5nIHRvIGdldCB0aGUgSFNFIGNsb2NrIGRpdmlkZXIKLSAgICAgICAgICAgIGZvciBSVEMgcGVyaXBoZXJhbDxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICAgPC91bD4KLSAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkVuc3VyZSByZXNldCBvZiBDSVIgYW5kIENTUiByZWdpc3RlcnMgd2hlbgotICAgICAgICAgICBpc3N1aW5nIEhBTF9SQ0NfPHNwYW4gY2xhc3M9ImdyYW1lIj5EZUluaXQoPC9zcGFuPikvTExfUkNDX0RlSW5pdAotICAgICAgICAgICBmdW5jdGlvbnM8bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlIEhBTF9SQ0NfPHNwYW4gY2xhc3M9ImdyYW1lIj5HZXRTeXNDbG9ja0ZyZXEoPC9zcGFuPikKLSAgICAgICAgICAgdG8gYXZvaWQgcmlzayBvZiByb3VuZGluZyBlcnJvciB3aGljaCBtYXkgbGVhZHMgdG8gYSB3cm9uZyByZXR1cm5lZAotICAgICAgICAgICB2YWx1ZS48L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogN3B0OyI+Jm5ic3A7PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5VcGRhdGUgSEFMX1JDQ188c3BhbiBjbGFzcz0iZ3JhbWUiPkRlSW5pdCg8L3NwYW4+KQotICAgICAgICAgICAmbmJzcDthbmQgTExfUkNDX0RlSW5pdCgpIEFQSXMgdG88L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9InNxdWFyZSI+Ci0gICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+QmUgYWJsZSB0byByZXR1cm4gSEFML0xMCi0gICAgICAgICAgICBzdGF0dXM8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5BZGQgY2hlY2tzIGZvciBIU0ksIFBMTAotICAgICAgICAgICAgYW5kIFBMTEkyPHNwYW4gY2xhc3M9ImdyYW1lIj5TICZuYnNwO3JlYWR5PC9zcGFuPiBiZWZvcmUgbW9kaWZ5aW5nCi0gICAgICAgICAgICBSQ0MgQ0ZHUiByZWdpc3RlcnM8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5DbGVhciBhbGwgaW50ZXJydXB0IDxzcGFuIGNsYXNzPSJncmFtZSI+ZmxhZ3M8L3NwYW4+PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SW5pdGlhbGl6ZSBzeXN0aWNrCi0gICAgICAgICAgICBpbnRlcnJ1cHQgPHNwYW4gY2xhc3M9ImdyYW1lIj5wZXJpb2Q8L3NwYW4+PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICAgPC91bD4KLSAgICAgIDwvdWw+Ci0gICAgIDwvdWw+Ci0gICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMIERNQSA8L3NwYW4+PC9iPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij51cGRhdGU8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgotICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5BZGQgY2xlYW4gb2YgY2FsbGJhY2tzIGluIEhBTF9ETUFfPHNwYW4gY2xhc3M9ImdyYW1lIj5EZUluaXQoPC9zcGFuPikmbmJzcDtBUEk8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+Rml4IHdyb25nIERNQV9GTEFHX0ZFSUZPXzQgYW5kIERNQV9GTEFHRE1BRUlGT180Ci0gICAgICAgICAgZGVmaW5lcyA8c3BhbiBjbGFzcz0iZ3JhbWUiPnZhbHVlczwvc3Bhbj4mbmJzcDs8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgPC91bD4KLSAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwgSTJDIDwvc3Bhbj48L2I+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+Ci0gICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVwZGF0ZSBJbnRlcmZhY2UgQVBJcyBoZWFkZXJzIHRvIHJlbW92ZSBjb25mdXNpbmcKLSAgICAgICAgICBtZXNzYWdlIGFib3V0IGRldmljZSA8c3BhbiBjbGFzcz0iZ3JhbWUiPmFkZHJlc3M8L3NwYW4+PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVwZGF0ZSBJMkNfPHNwYW4gY2xhc3M9ImdyYW1lIj5XYWl0T25SWE5FRmxhZ1VudGlsVGltZW91dCg8L3NwYW4+KQotICAgICAgICAgIHRvIHJlc29sdmUgYSByYWNlIGNvbmRpdGlvbiBiZXR3ZWVuIFNUT1BGIGFuZCBSWE5FIEZsYWdzPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVwZGF0ZSZuYnNwO0kyQ188c3BhbiBjbGFzcz0iZ3JhbWUiPlRyYW5zZmVyQ29uZmlnKDwvc3Bhbj4pCi0gICAgICAgICAgdG8gZml4IHdyb25nIGJpdCBtYW5hZ2VtZW50PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgIDwvdWw+Ci0gICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+TEwgVVNBUlQmbmJzcDs8L3NwYW4+PC9iPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij51cGRhdGU8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgotICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5BZGQgYXNzZXJ0IG1hY3JvcyB0byBjaGVjayBVU0FSVCBCYXVkUmF0ZSByZWdpc3Rlcjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICA8L3VsPgotICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTCBFVEggPC9zcGFuPjwvYj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+dXBkYXRlPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0iY2lyY2xlIj4KLSAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+RG97Li59IDxzcGFuIGNsYXNzPSJncmFtZSI+V2hpbGUoPC9zcGFuPjApJm5ic3A7aW5zdXJlZAotICAgICAgICAgIGluJm5ic3A7bXVsdGkgc3RhdGVtZW50IG1hY3JvcyA6PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9InNxdWFyZSI+Ci0gICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5fX0hBTF9FVEhfV0FLRVVQX0VYVElfRU5BQkxFX0ZBTExJTkdSSVNJTkdfPHNwYW4gY2xhc3M9ImdyYW1lIj5UUklHR0VSKDwvc3Bhbj4pJm5ic3A7PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5fX0hBTF9FVEhfV0FLRVVQX0VYVElfRElTQUJMRV9GQUxMSU5HUklTSU5HXzxzcGFuIGNsYXNzPSJncmFtZSI+VFJJR0dFUig8L3NwYW4+KSA8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgIDwvdWw+Ci0gICAgIDwvdWw+Ci0gICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMIEZMQVNIJm5ic3A7PC9zcGFuPjwvYj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+dXBkYXRlPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0iY2lyY2xlIj4KLSAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMX0ZMQVNIXzxzcGFuIGNsYXNzPSJncmFtZSI+VW5sb2NrKDwvc3Bhbj4pIHVwZGF0ZQotICAgICAgICAgIHRvIHJldHVybiBzdGF0ZSBlcnJvciB3aGVuIHRoZSBGTEFTSCBpcyBhbHJlYWR5IHVubG9ja2VkPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgIDwvdWw+Ci0gICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMIEdQSU8gPC9zcGFuPjwvYj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+dXBkYXRlPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0iY2lyY2xlIj4KLSAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+QWRkIG1pc3NpbmcgZGVmaW5lIG9mIEdQSU9fUElOXzIgaW4KLSAgICAgICAgICBHUElPS19QSU5fQVZBSUxBQkxFIGxpc3Q8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgPC91bD4KLSAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwgUENEIDwvc3Bhbj48L2I+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+Ci0gICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkRvey4ufSA8c3BhbiBjbGFzcz0iZ3JhbWUiPldoaWxlKDwvc3Bhbj4wKQotICAgICAgICAgICZuYnNwO2luc3VyZWQgaW4gbXVsdGkgc3RhdGVtZW50IG1hY3Jvczwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICA8L3VsPgotICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkxMIFVUSUxTIDwvc3Bhbj48L2I+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+Ci0gICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnN0bTMyZjd4eF9sbF91dGlscy48c3BhbiBjbGFzcz0iZ3JhbWUiPmggOjwvc3Bhbj4KLSAgICAgICAgICBVcGRhdGUgTExfR2V0UGFja2FnZVR5cGUgY29tbWFuZCB0byByZXR1cm4gdWludDMyX3QgaW5zdGVhZCBvZgotICAgICAgICAgIHVpbnQxNl90PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgIDwvdWw+Ci0gICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMIFRJTSA8L3NwYW4+PC9iPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij51cGRhdGU8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgotICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5zdG0zMmY3eHhfaGFsX3RpbV9leC48c3BhbiBjbGFzcz0iZ3JhbWUiPmMgOjwvc3Bhbj4KLSAgICAgICAgICBVcGRhdGUgSEFMX1RJTUV4X0NvbmZpZ0JyZWFrRGVhZFRpbWUgQVBJIHRvIGF2b2lkIHRvIGJsb2NrIHRpbWVyCi0gICAgICAgICAgYmVoYXZpb3Igd2hlbiA8YnI+Ci0gICAgICAgICAgcmVtYWlucyBpbiB0aGUgc3RhdGUgSEFMX1RJTV9TVEFURV9CVVNZLjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij4mbmJzcDtzdG0zMmY3eHhfaGFsX3RpbS48c3BhbiBjbGFzcz0iZ3JhbWUiPmggOjwvc3Bhbj4mbmJzcDs8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0ic3F1YXJlIj4KLSAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkZpeCBfX0hBTF9USU1fU0VUXzxzcGFuIGNsYXNzPSJncmFtZSI+UFJFU0NBTEVSKDwvc3Bhbj4pCi0gICAgICAgICAgIG1hY3JvPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5GaXggdHlwb3MgaW4gc29tZSBleHBvcnRlZCBtYWNyb3MgPHNwYW4gY2xhc3M9ImdyYW1lIj5kZXNjcmlwdGlvbjwvc3Bhbj4mbmJzcDs8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgIDwvdWw+Ci0gICAgIDwvdWw+Ci0gICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+TEwgRk1DIDwvc3Bhbj48L2I+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+Ci0gICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTF9TRFJBTV88c3BhbiBjbGFzcz0iZ3JhbWUiPlNlbmRDb21tYW5kKDwvc3Bhbj4pCi0gICAgICAgICAgQVBJOiBSZW1vdmUgdGhlJm5ic3A7dGltZW91dCBjaGVjazwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICA8L3VsPgotICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTCBOQU5EIDwvc3Bhbj48L2I+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+Ci0gICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkZpeCB3cm9uZyBjaGVjayBmb3IgTkFORCA8c3BhbiBjbGFzcz0iZ3JhbWUiPnN0YXR1czwvc3Bhbj48L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgPC91bD4KLSAgICA8L3VsPgotICAgIDxoMyBzdHlsZT0iYmFja2dyb3VuZDogcmdiKDUxLCAxMDIsIDI1NSkgbm9uZSByZXBlYXQgc2Nyb2xsIDAlIDUwJTsgbWFyZ2luLXJpZ2h0OiA1MDBwdDsgLW1vei1iYWNrZ3JvdW5kLWNsaXA6IC1tb3otaW5pdGlhbDsgLW1vei1iYWNrZ3JvdW5kLW9yaWdpbjogLW1vei1pbml0aWFsOyAtbW96LWJhY2tncm91bmQtaW5saW5lLXBvbGljeTogLW1vei1pbml0aWFsOyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O0FyaWFsJnF1b3Q7LHNhbnMtc2VyaWY7IGNvbG9yOiB3aGl0ZTsiPlYxLjIuMyAvCi0gICAgMjUtQXVndXN0LTIwMTc8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9oMz4KLSAgICA8cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luOiA0LjVwdCAwaW4gNC41cHQgMC4yNWluOyI+PGI+PHU+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsgY29sb3I6IGJsYWNrOyI+TWFpbiBDaGFuZ2VzPC9zcGFuPjwvdT48L2I+PC9wPgotICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0iZGlzYyI+Ci0gICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+R2VuZXJhbCB1cGRhdGVzIHRvIGZpeCBrbm93biBkZWZlY3RzIGFuZAotICAgICAgICAgZW5oYW5jZW1lbnRzIDxzcGFuIGNsYXNzPSJncmFtZSI+aW1wbGVtZW50YXRpb248L3NwYW4+PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+UmVtb3ZlIERhdGUgYW5kIFZlcnNpb24gZnJvbSBoZWFkZXIgPHNwYW4gY2xhc3M9ImdyYW1lIj5maWxlczwvc3Bhbj48L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5VcGRhdGUgSEFMIGRyaXZlcnMgdG8gcmVmZXIgdG8gdGhlIG5ldyZuYnNwO0NNU0lTCi0gICAgICAgICBiaXQgcG9zaXRpb24gZGVmaW5lcyBpbnN0ZWFkIG9mIHVzYWdlIHRoZSBQT1NJVElPTl88c3BhbiBjbGFzcz0iZ3JhbWUiPlZBTCg8L3NwYW4+KQotICAgICAgICAgbWFjcm88L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwgQ0FOIDwvc3Bhbj48L2I+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+Ci0gICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkFkZCBtaXNzaW5nIHVubG9jayBpbiBIQUxfQ0FOX1JlY2VpdmVfPHNwYW4gY2xhc3M9ImdyYW1lIj5JVCg8L3NwYW4+KSBwcm9jZXNzPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgIDwvdWw+Ci0gICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMIERDTUkgPC9zcGFuPjwvYj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+dXBkYXRlPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0iY2lyY2xlIj4KLSAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMIERDTUkgZHJpdmVyIGNsZWFuLXVwOiByZW1vdmUgbm9uIHJlZmVyZW5jZWQKLSAgICAgICAgICBjYWxsYmFjayBBUElzOiBIQUxfRENNSV88c3BhbiBjbGFzcz0iZ3JhbWUiPlZzeW5jQ2FsbGJhY2soPC9zcGFuPikgYW5kCi0gICAgICAgICAgSEFMX0RDTUlfSHN5bmNDYWxsYmFjaygpPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgIDwvdWw+Ci0gICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMJm5ic3A7REZTRE0gPC9zcGFuPjwvYj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+dXBkYXRlPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0iY2lyY2xlIj4KLSAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+Rml4IGNhc3QgaXNzdWUgb24gQVBJcyB0aGF0IHJldHVybiBzaWduZWQgaW50ZWdlcgotICAgICAgICAgIHZhbHVlICh1aW50MzJfdCkmbmJzcDs8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgPC91bD4KLSAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwgRE1BIDwvc3Bhbj48L2I+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+Ci0gICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTCBETUEgZHJpdmVyIGNsZWFuLXVwOiByZW1vdmUgbm9uIHJlZmVyZW5jZWQKLSAgICAgICAgICBjYWxsYmFjayBBUElzOiBIQUxfRE1BXzxzcGFuIGNsYXNzPSJncmFtZSI+Q2xlYW5DYWxsYmFja3MoPC9zcGFuPik8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgPC91bD4KLSAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwgRkxBU0ggPC9zcGFuPjwvYj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+dXBkYXRlPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0iY2lyY2xlIj4KLSAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+RkxBU0hfUHJvZ3JhbV88c3BhbiBjbGFzcz0iZ3JhbWUiPkRvdWJsZVdvcmQoPC9zcGFuPikKLSAgICAgICAgICBBUEk6IFJlcGxhY2UgNjQtYml0IGFjY2Vzc2VzIHdpdGggMiBkb3VibGUgd29yZHMgb3BlcmF0aW9uczwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICA8L3VsPgotICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTCBHZW5lcmljIDwvc3Bhbj48L2I+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+Ci0gICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVwZGF0ZSBhc3NlcnRfPHNwYW4gY2xhc3M9ImdyYW1lIj5wYXJhbSg8L3NwYW4+KQotICAgICAgICAgIG1hY3JvIGRlZmluaXRpb24gdG8gYmUgaW4gbGluZSB3aXRoIHN0bTMyX2xsX3V0aWxzLmMgZHJpdmVyPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgIDwvdWw+Ci0gICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMIEdQSU8gPC9zcGFuPjwvYj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+dXBkYXRlPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0iY2lyY2xlIj4KLSAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+R1BJT0tfUElOXzxzcGFuIGNsYXNzPSJncmFtZSI+QVZBSUxBQkxFKDwvc3Bhbj4pCi0gICAgICAgICAgYXNzZXJ0IG1hY3JvIHVwZGF0ZSB0byBhbGxvdyBwb3NzaWJpbGl0eSB0byBjb25maWd1cmUgR1BJT19QSU5fMjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICA8L3VsPgotICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTCBMVERDIDwvc3Bhbj48L2I+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+Ci0gICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlJlbmFtZSBIQUxfTFREQ188c3BhbiBjbGFzcz0iZ3JhbWUiPkxpbmVFdmVuQ2FsbGJhY2soPC9zcGFuPikKLSAgICAgICAgICBBUEkgdG8mbmJzcDtIQUxfTFREQ19MaW5lRXZlbjxiPnQ8L2I+Q2FsbGJhY2soKTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICA8L3VsPgotICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTCBQQ0QgPC9zcGFuPjwvYj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+dXBkYXRlPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0iY2lyY2xlIj4KLSAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlIEhBTF9QQ0RfPHNwYW4gY2xhc3M9ImdyYW1lIj5JUlFIYW5kbGVyKDwvc3Bhbj4pCi0gICAgICAgICAgQVBJIHRvIGZpeCZuYnNwO3RyYW5zZmVyIGlzc3VlcyB3aGVuIFVTQiBIUyBpcyB1c2VkIHdpdGgKLSAgICAgICAgICBETUEmbmJzcDtlbmFibGVkPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgIDwvdWw+Ci0gICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMIFJDQyA8L3NwYW4+PC9iPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij51cGRhdGU8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgotICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5VcGRhdGUgSEFMX1JDQ188c3BhbiBjbGFzcz0iZ3JhbWUiPkdldE9zY0NvbmZpZyg8L3NwYW4+KQotICAgICAgICAgIEFQSSB0bzo8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0ic3F1YXJlIj4KLSAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnNldCBQTExSIGluIHRoZSBSQ0NfT3NjSW5pdFN0cnVjdDwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+Y2hlY2sgb24gbnVsbCA8c3BhbiBjbGFzcz0iZ3JhbWUiPnBvaW50ZXI8L3NwYW4+PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICA8L3VsPgotICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5VcGRhdGUgSEFMX1JDQ188c3BhbiBjbGFzcz0iZ3JhbWUiPkNsb2NrQ29uZmlnKDwvc3Bhbj4pCi0gICAgICAgICAgQVBJIHRvOjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJzcXVhcmUiPgotICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+Y2hlY2sgb24gbnVsbCA8c3BhbiBjbGFzcz0iZ3JhbWUiPnBvaW50ZXI8L3NwYW4+PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5vcHRpbWl6ZSZuYnNwO2NvZGUgc2l6ZSBieSB1cGRhdGluZyB0aGUgaGFuZGxpbmcKLSAgICAgICAgICAgbWV0aG9kIG9mIHRoZSBTV1MgPHNwYW4gY2xhc3M9ImdyYW1lIj5iaXRzPC9zcGFuPjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+dXBkYXRlIHRvIDxzcGFuIGNsYXNzPSJncmFtZSI+dXNlJm5ic3A7IF88L3NwYW4+X0hBTF9GTEFTSF9HRVRfTEFURU5DWSgpCi0gICAgICAgICAgIGZsYXNoIG1hY3JvIGluc3RlYWQgb2YgdXNpbmcgZGlyZWN0IHJlZ2lzdGVyIGFjY2VzcyB0byZuYnNwO0xBVEVOQ1kKLSAgICAgICAgICAgYml0cyBpbiBGTEFTSCBBQ1IgcmVnaXN0ZXI8L3NwYW4+PHNwYW4gc3R5bGU9IiI+LiA8bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgPC91bD4KLSAgICAgPC91bD4KLSAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwgU0FJIDwvc3Bhbj48L2I+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+Ci0gICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVwZGF0ZSBIQUxfU0FJXzxzcGFuIGNsYXNzPSJncmFtZSI+RE1BU3RvcCg8L3NwYW4+KQotICAgICAgICAgIEFQSSB0byBmbHVzaCBmaWZvIGFmdGVyIGRpc2FibGluZyZuYnNwO1NBSTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICA8L3VsPgotICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTCBUSU0gPC9zcGFuPjwvYj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+dXBkYXRlPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0iY2lyY2xlIj4KLSAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlIEhBTF9USU1FeF88c3BhbiBjbGFzcz0iZ3JhbWUiPkNvbmZpZ0JyZWFrSW5wdXQoPC9zcGFuPikKLSAgICAgICAgICBBUEkgdG8mbmJzcDtzdXBwb3J0IEJLSU5QL0JLSU4yUCBwb2xhcml0eSBiaXRzLjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICA8L3VsPgotICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkxMIERNQSA8L3NwYW4+PC9iPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij51cGRhdGU8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgotICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5VcGRhdGUgU0VUXzxzcGFuIGNsYXNzPSJncmFtZSI+QklUKDwvc3Bhbj4pIGFjY2VzcwotICAgICAgICAgIHRvIExJRkNSIGFuZCBISUZDUiByZWdpc3RlcnMgYnkgV1JJVEVfUkVHKCkgdG8gYXZvaWQgcmVhZCBhY2Nlc3MgdGhhdAotICAgICAgICAgIGlzIG5vdCBhbGxvd2VkIHdoZW4gY2xlYXJpbmcgRE1BIGZsYWdzPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgIDwvdWw+Ci0gICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+TEwgSTJDIDwvc3Bhbj48L2I+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+Ci0gICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVwZGF0ZSBMTF9JMkNfPHNwYW4gY2xhc3M9ImdyYW1lIj5Jbml0KDwvc3Bhbj4pIEFQSQotICAgICAgICAgIHRvIGF2b2lkIGVuYWJsaW5nIG93biBhZGRyZXNzMSB3aGVuIE93bkFkZHJlc3MxIHBhcmFtZXRlciB2YWx1ZSBpbgotICAgICAgICAgIHRoZSBJMkNfSW5pdFN0cnVjdCBpcyBlcXVhbCB0byAwLjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICA8L3VsPgotICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkxMIFRJTSA8L3NwYW4+PC9iPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij51cGRhdGU8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgotICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5VcGRhdGUgTExfVElNXzxzcGFuIGNsYXNzPSJncmFtZSI+RW5hYmxlVXBkYXRlRXZlbnQoPC9zcGFuPikKLSAgICAgICAgICBBUEkgdG8gY2xlYXIgVURJUyBiaXQgaW4gQ1IxIHJlZ2lzdGVyIGluc3RlYWQgb2Ygc2V0dGluZyBpdC48L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlIExMX1RJTV88c3BhbiBjbGFzcz0iZ3JhbWUiPkRpc2FibGVVcGRhdGVFdmVudCg8L3NwYW4+KQotICAgICAgICAgIEFQSSB0byBzZXQgVURJUyBiaXQgaW4gQ1IxIHJlZ2lzdGVyIGluc3RlYWQgb2YgY2xlYXJpbmcgaXQuPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgIDwvdWw+Ci0gICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+TEwgVVNCIDwvc3Bhbj48L2I+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+Ci0gICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVwZGF0ZSBVU0JfRVAwPHNwYW4gY2xhc3M9ImdyYW1lIj5TdGFydFhmZXIoPC9zcGFuPikKLSAgICAgICAgICBBUEkgdG8gZml4Jm5ic3A7dHJhbnNmZXIgaXNzdWVzIHdoZW4gVVNCIEhTIGlzIHVzZWQgd2l0aAotICAgICAgICAgIERNQSZuYnNwO2VuYWJsZWQ8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgPC91bD4KLSAgICA8L3VsPgotICAgIDxoMyBzdHlsZT0iYmFja2dyb3VuZDogcmdiKDUxLCAxMDIsIDI1NSkgbm9uZSByZXBlYXQgc2Nyb2xsIDAlIDUwJTsgbWFyZ2luLXJpZ2h0OiA1MDBwdDsgLW1vei1iYWNrZ3JvdW5kLWNsaXA6IC1tb3otaW5pdGlhbDsgLW1vei1iYWNrZ3JvdW5kLW9yaWdpbjogLW1vei1pbml0aWFsOyAtbW96LWJhY2tncm91bmQtaW5saW5lLXBvbGljeTogLW1vei1pbml0aWFsOyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O0FyaWFsJnF1b3Q7LHNhbnMtc2VyaWY7IGNvbG9yOiB3aGl0ZTsiPlYxLjIuMiAvCi0gICAgMTQtQXByaWwtMjAxNzwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2gzPgotICAgIDxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW46IDQuNXB0IDBpbiA0LjVwdCAwLjI1aW47Ij48Yj48dT48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyBjb2xvcjogYmxhY2s7Ij5NYWluIENoYW5nZXM8L3NwYW4+PC91PjwvYj48L3A+Ci0gICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJkaXNjIj4KLSAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5HZW5lcmFsIHVwZGF0ZXMgdG8gZml4IGtub3duIGRlZmVjdHMgYW5kCi0gICAgICAgICBlbmhhbmNlbWVudHMgPHNwYW4gY2xhc3M9ImdyYW1lIj5pbXBsZW1lbnRhdGlvbjwvc3Bhbj48L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwgQ0FOIDwvc3Bhbj48L2I+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+Ci0gICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkFkZCBtYW5hZ2VtZW50IG9mJm5ic3A7b3ZlcnJ1biBlcnJvci4mbmJzcDs8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+QWxsb3cgcG9zc2liaWxpdHkgdG8gcmVjZWl2ZSBtZXNzYWdlcyBmcm9tIHRoZSAyCi0gICAgICAgICAgUlggRklGT3MgaW4gcGFyYWxsZWwgdmlhIGludGVycnVwdC48L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+Rml4Jm5ic3A7bWVzc2FnZSBsb3N0IGlzc3VlIHdpdGggc3BlY2lmaWMgc2VxdWVuY2UKLSAgICAgICAgICBvZiB0cmFuc21pdCByZXF1ZXN0cy48L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SGFuZGxlIHRyYW5zbWlzc2lvbiBmYWlsdXJlIHdpdGggZXJyb3IgY2FsbGJhY2ssCi0gICAgICAgICAgd2hlbiBOQVJUIGlzIGVuYWJsZWQuPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkFkZCBfX0hBTF9DQU5fQ0FOQ0VMXzxzcGFuIGNsYXNzPSJncmFtZSI+VFJBTlNNSVQoPC9zcGFuPikKLSAgICAgICAgICBjYWxsIHRvIGFib3J0IHRyYW5zbWlzc2lvbiB3aGVuIHRpbWVvdXQgaXMgcmVhY2hlZDwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICA8L3VsPgotICAgIDwvdWw+Ci0gICAgPGgzIHN0eWxlPSJiYWNrZ3JvdW5kOiByZ2IoNTEsIDEwMiwgMjU1KSBub25lIHJlcGVhdCBzY3JvbGwgMCUgNTAlOyBtYXJnaW4tcmlnaHQ6IDUwMHB0OyAtbW96LWJhY2tncm91bmQtY2xpcDogLW1vei1pbml0aWFsOyAtbW96LWJhY2tncm91bmQtb3JpZ2luOiAtbW96LWluaXRpYWw7IC1tb3otYmFja2dyb3VuZC1pbmxpbmUtcG9saWN5OiAtbW96LWluaXRpYWw7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7QXJpYWwmcXVvdDssc2Fucy1zZXJpZjsgY29sb3I6IHdoaXRlOyI+VjEuMi4xIC8KLSAgICAyNC1NYXJjaC0yMDE3PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvaDM+Ci0gICAgPHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbjogNC41cHQgMGluIDQuNXB0IDAuMjVpbjsiPjxiPjx1PjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7IGNvbG9yOiBibGFjazsiPk1haW4gQ2hhbmdlczwvc3Bhbj48L3U+PC9iPjxvOnA+PC9vOnA+PC9wPgotICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0iZGlzYyI+Ci0gICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0id2lkb3dzOiAxOyBmbG9hdDogbm9uZTsgd29yZC1zcGFjaW5nOiAwcHg7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlCi0gICAgICAgICBDSE0gVXNlck1hbnVhbHMgdG8gc3VwcG9ydCBMTCA8c3BhbiBjbGFzcz0iZ3JhbWUiPmRyaXZlcnM8L3NwYW4+PC9zcGFuPjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkdlbmVyYWwgdXBkYXRlcyB0byBmaXgga25vd24gZGVmZWN0cyBhbmQKLSAgICAgICAgIGVuaGFuY2VtZW50cyA8c3BhbiBjbGFzcz0iZ3JhbWUiPmltcGxlbWVudGF0aW9uPC9zcGFuPjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTCBETUEgPC9zcGFuPjwvYj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+dXBkYXRlPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0iY2lyY2xlIj4KLSAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlIEhBTF9ETUFfPHNwYW4gY2xhc3M9ImdyYW1lIj5Jbml0KDwvc3Bhbj4pCi0gICAgICAgICAgZnVuY3Rpb24gdG8gYWRqdXN0IHRoZSBjb21wYXRpYmlsaXR5IGNoZWNrIGJldHdlZW4gRklGTyB0aHJlc2hvbGQgYW5kCi0gICAgICAgICAgYnVyc3QgY29uZmlndXJhdGlvbjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICA8L3VsPgotICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTCBNTUMgPC9zcGFuPjwvYj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+dXBkYXRlPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0iY2lyY2xlIj4KLSAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlIEhBTF9NTUNfPHNwYW4gY2xhc3M9ImdyYW1lIj5Jbml0Q2FyZCg8L3NwYW4+KQotICAgICAgICAgIGZ1bmN0aW9uIHdpdGggcHJvcGVyIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlIGFkZGluZyBhIGRlbGF5IGFmdGVyIE1NQwotICAgICAgICAgIGNsb2NrIGVuYWJsZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5VcGRhdGUgTU1DXzxzcGFuIGNsYXNzPSJncmFtZSI+RE1BRXJyb3IoPC9zcGFuPikKLSAgICAgICAgICBmdW5jdGlvbiBpZ25vcmUgRE1BIEZJRk8gZXJyb3IgYXMgbm90IGltcGFjdGluZyB0aGUgZGF0YSB0cmFuc2Zlcjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICA8L3VsPgotICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTCBTRCA8L3NwYW4+PC9iPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij51cGRhdGU8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgotICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5VcGRhdGUgSEFMX1NEXzxzcGFuIGNsYXNzPSJncmFtZSI+SW5pdENhcmQoPC9zcGFuPikKLSAgICAgICAgICBmdW5jdGlvbiB3aXRoIHByb3BlciBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZSBhZGRpbmcgYSBkZWxheSBhZnRlciBTRAotICAgICAgICAgIGNsb2NrIGVuYWJsZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5VcGRhdGUgU0RfPHNwYW4gY2xhc3M9ImdyYW1lIj5ETUFFcnJvcig8L3NwYW4+KQotICAgICAgICAgIGZ1bmN0aW9uIGlnbm9yZSBETUEgRklGTyBlcnJvciBhcyBub3QgaW1wYWN0aW5nIHRoZSBkYXRhIHRyYW5zZmVyPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgIDwvdWw+Ci0gICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMIE5BTkQgPC9zcGFuPjwvYj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+dXBkYXRlPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0iY2lyY2xlIj4KLSAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlIEhBTF9OQU5EX0FkZHJlc3NfPHNwYW4gY2xhc3M9ImdyYW1lIj5JbmMoPC9zcGFuPikKLSAgICAgICAgICBmdW5jdGlvbiBpbXBsZW1lbnRhdGlvbiBmb3IgcHJvcGVyIHBsYW5lIG51bWJlciBjaGVjazwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICA8L3VsPgotICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkxMIFNETU1DIDwvc3Bhbj48L2I+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+Ci0gICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVwZGF0ZSBTRE1NQ19EQVRBVElNRU9VVCB2YWx1ZSB3aXRoIGFwcHJvcHJpYXRlCi0gICAgICAgICAgdmFsdWUgbmVlZGVkIGJ5IHJlYWRpbmcgYW5kIHdyaXRpbmcgb3BlcmF0aW9ucyBvZiBTRCBhbmQgTU1DIGNhcmRzPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgIDwvdWw+Ci0gICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+TEwgUlRDIDwvc3Bhbj48L2I+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+Ci0gICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkxMX1JUQ19USU1FXzxzcGFuIGNsYXNzPSJncmFtZSI+R2V0KDwvc3Bhbj4pIGFuZAotICAgICAgICAgIExMX1JUQ19EQVRFX0dldCgpIGlubGluZSBtYWNyb3Mgb3B0aW1pemF0aW9uPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgIDwvdWw+Ci0gICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+TEwgQURDIDwvc3Bhbj48L2I+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+Ci0gICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkZpeCB3cm9uZyBBREMgZ3JvdXAgaW5qZWN0ZWQgc2VxdWVuY2UgPHNwYW4gY2xhc3M9ImdyYW1lIj5jb25maWd1cmF0aW9uPC9zcGFuPjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJzcXVhcmUiPgotICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+TExfQURDX0lOSl88c3BhbiBjbGFzcz0iZ3JhbWUiPlNldFNlcXVlbmNlclJhbmtzKDwvc3Bhbj4pCi0gICAgICAgICAgIGFuZCBMTF9BRENfSU5KX0dldFNlcXVlbmNlclJhbmtzKCkgQVBJJ3MgdXBkYXRlIHRvIHRha2UgaW4KLSAgICAgICAgICAgY29uc2lkZXJhdGlvbiB0aGUgQURDIG51bWJlciBvZiBjb252ZXJzaW9uczwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlIHRoZSZuYnNwO2RlZmluZWQgdmFsdWVzIGZvciBBREMgZ3JvdXAKLSAgICAgICAgICAgaW5qZWN0ZWQgc2VxZW5jZXIgPHNwYW4gY2xhc3M9ImdyYW1lIj5yYW5rczwvc3Bhbj4mbmJzcDs8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgIDwvdWw+Ci0gICAgIDwvdWw+Ci0gICAgPC91bD4KLSAgICA8aDMgc3R5bGU9ImJhY2tncm91bmQ6IHJnYig1MSwgMTAyLCAyNTUpIG5vbmUgcmVwZWF0IHNjcm9sbCAwJSA1MCU7IG1hcmdpbi1yaWdodDogNTAwcHQ7IC1tb3otYmFja2dyb3VuZC1jbGlwOiAtbW96LWluaXRpYWw7IC1tb3otYmFja2dyb3VuZC1vcmlnaW46IC1tb3otaW5pdGlhbDsgLW1vei1iYWNrZ3JvdW5kLWlubGluZS1wb2xpY3k6IC1tb3otaW5pdGlhbDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtBcmlhbCZxdW90OyxzYW5zLXNlcmlmOyBjb2xvcjogd2hpdGU7Ij5WMS4yLjAgLwotICAgIDMwLURlY2VtYmVyLTIwMTY8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9oMz4KLSAgICA8cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luOiA0LjVwdCAwaW4gNC41cHQgMC4yNWluOyI+PGI+PHU+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsgY29sb3I6IGJsYWNrOyI+TWFpbiBDaGFuZ2VzPC9zcGFuPjwvdT48L2I+PC9wPgotICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0iZGlzYyI+Ci0gICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+T2ZmaWNpYWwgcmVsZWFzZSB0byBhZGQgdGhlIHN1cHBvcnQgb2YgPGI+U1RNMzJGNzIyeHgsCi0gICAgICAgICBTVE0zMkY3MjN4eCwgU1RNMzJGNzMyeHg8L2I+IDxiPmFuZCBTVE0zMkY3MzN4eDwvYj4gZGV2aWNlczwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9IndpZG93czogMTsgZmxvYXQ6IG5vbmU7IHdvcmQtc3BhY2luZzogMHB4OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkFkZCBMb3cgTGF5ZXIgZHJpdmVycyBhbGxvd2luZyBwZXJmb3JtYW5jZSBhbmQKLSAgICAgICAgIGZvb3RwcmludCA8c3BhbiBjbGFzcz0iZ3JhbWUiPm9wdGltaXphdGlvbjwvc3Bhbj48L3NwYW4+PC9iPjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+Ci0gICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkxvdyBMYXllciA8c3BhbiBjbGFzcz0iZ3JhbWUiPmRyaXZlcnM8L3NwYW4+IEFQSXMKLSAgICAgICAgICBwcm92aWRlIHJlZ2lzdGVyIGxldmVsIHByb2dyYW1taW5nOiByZXF1aXJlIGRlZXAga25vd2xlZGdlIG9mCi0gICAgICAgICAgcGVyaXBoZXJhbHMgZGVzY3JpYmVkIGluIFNUTTMyRjd4eCBSZWZlcmVuY2UgTWFudWFsczwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJ3aWRvd3M6IDE7IGZsb2F0OiBub25lOyB3b3JkLXNwYWNpbmc6IDBweDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5Mb3cKLSAgICAgICAgICBMYXllciBkcml2ZXJzIGFyZSBhdmFpbGFibGUgZm9yOiBBREMsJm5ic3A7Q29ydGV4LCBDUkMsIERBQywgRE1BLAotICAgICAgICAgIERNQTJELCBFWFRJLCBHUElPLCBJMkMsIElXREcsIExQVElNLCBQV1IsIFJDQywgUk5HLCBSVEMsIFNQSSwgVElNLAotICAgICAgICAgIFVTQVJULCBXV0RHIHBlcmlwaGVyYWxzIGFuZCBhZGRpdGlvbm5hbCBMb3cgTGV2ZWwgQnVzLCBTeXN0ZW0gYW5kCi0gICAgICAgICAgVXRpbGl0aWVzIEFQSXMuPC9zcGFuPjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5Mb3cgTGF5ZXIgPHNwYW4gY2xhc3M9ImdyYW1lIj5kcml2ZXJzPC9zcGFuPiBBUElzCi0gICAgICAgICAgYXJlIGltcGxlbWVudGVkIGFzIHN0YXRpYyBpbmxpbmUgZnVuY3Rpb24gaW4gbmV3PHNwYW4gY2xhc3M9ImFwcGxlLWNvbnZlcnRlZC1zcGFjZSI+Jm5ic3A7PC9zcGFuPjxpPkluYy9zdG0zMmY3eHhfbGxfcHBwLmg8L2k+PHNwYW4gY2xhc3M9ImFwcGxlLWNvbnZlcnRlZC1zcGFjZSI+Jm5ic3A7PC9zcGFuPmZpbGVzIGZvciBQUFAgcGVyaXBoZXJhbHMsCi0gICAgICAgICAgdGhlcmUgaXMgbm8gY29uZmlndXJhdGlvbiBmaWxlIGFuZCBlYWNoPHNwYW4gY2xhc3M9ImFwcGxlLWNvbnZlcnRlZC1zcGFjZSI+Jm5ic3A7PC9zcGFuPjxpPnN0bTMyZjd4eF9sbF9wcHAuaDwvaT48c3BhbiBjbGFzcz0iYXBwbGUtY29udmVydGVkLXNwYWNlIj4mbmJzcDs8L3NwYW4+ZmlsZSBtdXN0IGJlIGluY2x1ZGVkIGluCi0gICAgICAgICAgdXNlciBjb2RlLjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICA8L3VsPgotICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkdlbmVyYWwgdXBkYXRlcyB0byBmaXgga25vd24gZGVmZWN0cyBhbmQKLSAgICAgICAgIGVuaGFuY2VtZW50cyA8c3BhbiBjbGFzcz0iZ3JhbWUiPmltcGxlbWVudGF0aW9uPC9zcGFuPjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkFkZCBuZXcgSEFMIDxiPk1NQzwvYj4gYW5kIDxiPlNNQlVTPC9iPiBkcml2ZXJzPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMIENvcnRleDwvc3Bhbj48L2I+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPgotICAgICAgICAgdXBkYXRlPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0iY2lyY2xlIj4KLSAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+TW92ZSBIQUxfTVBVXzxzcGFuIGNsYXNzPSJncmFtZSI+RGlzYWJsZSg8L3NwYW4+KQotICAgICAgICAgIGFuZCBIQUxfTVBVX0VuYWJsZSgpIGZyb20gc3RtMzJmN3h4X2hhbF9jb3J0ZXguaCB0bwotICAgICAgICAgIHN0bTMyZjd4eF9oYWxfY29ydGV4LmM8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+Q2xlYXIgdGhlIHdob2xlIE1QVSBjb250cm9sIHJlZ2lzdGVyIGluJm5ic3A7SEFMX01QVV88c3BhbiBjbGFzcz0iZ3JhbWUiPkRpc2FibGUoPC9zcGFuPikgQVBJPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgIDwvdWw+Ci0gICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMIENSWVA8L3NwYW4+PC9iPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij4KLSAgICAgICAgIHVwZGF0ZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+Ci0gICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkFkZCBzdXBwb3J0IG9mIDxzcGFuIGNsYXNzPSJncmFtZSI+QUVTPC9zcGFuPjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICA8L3VsPgotICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTCBETUE8L3NwYW4+PC9iPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij4KLSAgICAgICAgIHVwZGF0ZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+Ci0gICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkFkZCBhIGNoZWNrIG9uIERNQSBzdHJlYW0gaW5zdGFuY2UgaW4gSEFMX0RNQV88c3BhbiBjbGFzcz0iZ3JhbWUiPkRlSW5pdCg8L3NwYW4+KSBBUEk8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgPC91bD4KLSAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwgRVRIPC9zcGFuPjwvYj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+Ci0gICAgICAgICB1cGRhdGUmbmJzcDs8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgotICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5GaXggd3JvbmcgZGVmaW5pdGlvbnMgaW4gZHJpdmVyIGhlYWRlciBmaWxlCi0gICAgICAgICAgc3RtMzJmN19oYWxfZXRoLmg8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgPC91bD4KLSAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwgRkxBU0g8L3NwYW4+PC9iPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij4KLSAgICAgICAgIHVwZGF0ZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+Ci0gICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlN1cHBvcnQgT1RQIHByb2dyYW0gb3BlcmF0aW9uPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkFkZCB0aGUgc3VwcG9ydCBvZiBQQ1JPUCA8c3BhbiBjbGFzcz0iZ3JhbWUiPmZlYXR1cmU8L3NwYW4+PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVwZGF0ZSB0aGUgY2xlYXJpbmcgb2YgZXJyb3IgPHNwYW4gY2xhc3M9ImdyYW1lIj5mbGFnczwvc3Bhbj48L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgPC91bD4KLSAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwgSTJDPC9zcGFuPjwvYj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+Ci0gICAgICAgICB1cGRhdGU8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgotICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5BbGlnbiBkcml2ZXIgc291cmNlIGNvZGUgd2l0aCBvdGhlciBTVE0zMiA8c3BhbiBjbGFzcz0iZ3JhbWUiPmZhbWlsaWVzPC9zcGFuPjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICA8L3VsPgotICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTCBKUEVHPC9zcGFuPjwvYj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+Ci0gICAgICAgICB1cGRhdGUmbmJzcDs8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgotICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5VcGRhdGUgdGhlIG91dHB1dCBkYXRhIG1hbmFnZW1lbnQKLSAgICAgICAgICB3aGVuJm5ic3A7SEFMX0pQRUdfPHNwYW4gY2xhc3M9ImdyYW1lIj5QYXVzZSg8L3NwYW4+KSBpcyBwZXJmb3JtZWQKLSAgICAgICAgICBkdXJpbmcgdGhlIGxhc3QgZGF0YSBzZW5kaW5nPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgIDwvdWw+Ci0gICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMIFJDQyA8L3NwYW4+PC9iPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij51cGRhdGU8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgotICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5FbmFibGUgUFdSIG9ubHkgaWYgbmVjZXNzYXJ5IGZvciBMU0UgY29uZmlndXJhdGlvbgotICAgICAgICAgIGluIEhBTF9SQ0NfPHNwYW4gY2xhc3M9ImdyYW1lIj5Pc2NDb25maWcoPC9zcGFuPikgQVBJPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlJlbmFtZSBSQ0NfTFBUSU0xQ0xLU09VUkNFX1BDTEsgZGVmaW5lIHRvCi0gICAgICAgICAgUkNDX0xQVElNMUNMS1NPVVJDRV9QQ0xLMTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5SZW5hbWUgUkNDX0RGU0RNMUNMS1NPVVJDRV9QQ0xLIGRlZmluZSB0bwotICAgICAgICAgIFJDQ19ERlNETTFDTEtTT1VSQ0VfUENMSzI8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgPC91bD4KLSAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwgU1BJPC9zcGFuPjwvYj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+Ci0gICAgICAgICB1cGRhdGU8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgotICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5DbGVhciBSWCBGSUZPIGF0IHRoZSBlbmQgb2YgZWFjaCB0cmFuc2FjdGlvbjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICA8L3VsPgotICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTCBVQVJUPC9zcGFuPjwvYj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+Ci0gICAgICAgICB1cGRhdGU8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgotICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5SZW1vdmUgVVNBUlRfQ1IyX0xJTkVOIGJpdCBjbGVhcmluZyZuYnNwO3doZW4KLSAgICAgICAgICBpbml0aWFsaXppbmcgaW4gc3luY2hyb25vdXMgPHNwYW4gY2xhc3M9ImdyYW1lIj5tb2RlPC9zcGFuPjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICA8L3VsPgotICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTCBVU0I8L3NwYW4+PC9iPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij4KLSAgICAgICAgIHVwZGF0ZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+Ci0gICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkFkZCBzdXBwb3J0IG9mIGVtYmVkZGVkIFVTQiBQSFkgQ29udHJvbGxlcjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5BZGQgc3VwcG9ydCBvZiBCYXR0ZXJ5IENoYXJnaW5nIERldGVjdG9yIChCQ0QpCi0gICAgICAgICAgZmVhdHVyZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICA8L3VsPgotICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkxMIFNETU1DPC9zcGFuPjwvYj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+Ci0gICAgICAgICB1cGRhdGU8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgotICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5BZGQgbmV3IFNETU1DX0NtZFNERXJhc2VTdGFydEFkZCwKLSAgICAgICAgICBTRE1NQ19DbWRTREVyYXNlRW5kQWRkLCBTRE1NQ19DbWRPcENvbmRpdGlvbiBhbmQgU0RNTUNfQ21kU3dpdGNoCi0gICAgICAgICAgZnVuY3Rpb25zPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgIDwvdWw+Ci0gICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+TEwgVVNCPC9zcGFuPjwvYj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+Ci0gICAgICAgICB1cGRhdGU8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgotICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5VcGRhdGUgUEVOQSBiaXQgY2xlYXJpbmcgaW4gT1RHX0hQUlQwIHJlZ2lzdGVyPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgIDwvdWw+Ci0gICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VGhlIGZvbGxvd2luZyBjaGFuZ2VzIGRvbmUgb24gdGhlIEhBTCBkcml2ZXJzCi0gICAgICAgICByZXF1aXJlIGFuIHVwZGF0ZSBvbiB0aGUgYXBwbGljYXRpb24gY29kZSBiYXNlZCBvbiBvbGRlciBIQUwgPHNwYW4gY2xhc3M9ImdyYW1lIj52ZXJzaW9uczwvc3Bhbj48L3NwYW4+PC9iPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0iY2lyY2xlIj4KLSAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMIFNEPC9zcGFuPjwvYj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+Ci0gICAgICAgICAgdXBkYXRlPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9InNxdWFyZSI+Ci0gICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5PdmVyYWxsIHJld29yayBvZiB0aGUgZHJpdmVyIGZvciBhIG1vcmUKLSAgICAgICAgICAgZWZmaWNpZW50Jm5ic3A7aW1wbGVtZW50YXRpb248L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9InNxdWFyZSI+Ci0gICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+TW9kaWZ5IGluaXRpYWxpemF0aW9uCi0gICAgICAgICAgICBBUEkgYW5kIDxzcGFuIGNsYXNzPSJncmFtZSI+c3RydWN0dXJlczwvc3Bhbj48L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5Nb2RpZnkgUmVhZCAvIFdyaXRlIHNlcXVlbmNlczoKLSAgICAgICAgICAgIHNlcGFyYXRlIHRyYW5zZmVyIHByb2Nlc3MgYW5kIFNEIENhcmRzIHN0YXRlIDxzcGFuIGNsYXNzPSJncmFtZSI+bWFuYWdlbWVudDwvc3Bhbj4mbmJzcDs8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5BZGRpbmcgaW50ZXJydXB0IG1vZGUKLSAgICAgICAgICAgIGZvciBSZWFkIC8gV3JpdGUgb3BlcmF0aW9uczwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVwZGF0ZSB0aGUKLSAgICAgICAgICAgIEhBTF9TRF9JUlFIYW5kbGVyIGZ1bmN0aW9uIGJ5IG9wdGltaXppbmcgdGhlIG1hbmFnZW1lbnQgb2YKLSAgICAgICAgICAgIGludGVycnVwdCA8c3BhbiBjbGFzcz0iZ3JhbWUiPmVycm9yczwvc3Bhbj48L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgICA8L3VsPgotICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+UmVmZXIgdG8gdGhlIGZvbGxvd2luZyBleGFtcGxlIHRvIGlkZW50aWZ5IHRoZQotICAgICAgICAgICBjaGFuZ2VzOiBCU1AgZXhhbXBsZSBhbmQgVVNCX0RldmljZS9NU0NfU3RhbmRhbG9uZSBhcHBsaWNhdGlvbjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgPC91bD4KLSAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMIFRJTTwvc3Bhbj48L2I+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPgotICAgICAgICAgIHVwZGF0ZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJzcXVhcmUiPgotICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+QWRkIG5ldyBBdXRvUmVsb2FkUHJlbG9hZCBmaWVsZCBpbgotICAgICAgICAgICBUSU1fQmFzZV9Jbml0VHlwZURlZiBzdHJ1Y3R1cmU8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlJlZmVyIHRvIHRoZSBUSU0gZXhhbXBsZXMgdG8gaWRlbnRpZnkgdGhlIDxzcGFuIGNsYXNzPSJncmFtZSI+Y2hhbmdlczwvc3Bhbj48Yj4mbmJzcDs8L2I+PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICA8L3VsPgotICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwgTkFORDwvc3Bhbj48L2I+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPgotICAgICAgICAgIHVwZGF0ZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJzcXVhcmUiPgotICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+TW9kaWZ5IE5BTkRfQWRkcmVzc1R5cGVEZWYsCi0gICAgICAgICAgIE5BTkRfRGV2aWNlQ29uZmlnVHlwZURlZiBhbmQgTkFORF9IYW5kbGVUeXBlRGVmIHN0cnVjdHVyZXMgPHNwYW4gY2xhc3M9ImdyYW1lIj5maWVsZHM8L3NwYW4+PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5BZGQgbmV3IEhBTF9OQU5EX0NvbmZpZ0RldmljZSBBUEk8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgIDwvdWw+Ci0gICAgIDwvdWw+Ci0gICAgPC91bD4KLSAgICA8aDMgc3R5bGU9ImJhY2tncm91bmQ6IHJnYig1MSwgMTAyLCAyNTUpIG5vbmUgcmVwZWF0IHNjcm9sbCAwJSA1MCU7IG1hcmdpbi1yaWdodDogNTAwcHQ7IC1tb3otYmFja2dyb3VuZC1jbGlwOiAtbW96LWluaXRpYWw7IC1tb3otYmFja2dyb3VuZC1vcmlnaW46IC1tb3otaW5pdGlhbDsgLW1vei1iYWNrZ3JvdW5kLWlubGluZS1wb2xpY3k6IC1tb3otaW5pdGlhbDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtBcmlhbCZxdW90OyxzYW5zLXNlcmlmOyBjb2xvcjogd2hpdGU7Ij5WMS4xLjEgLwotICAgIDAxLUp1bHktMjAxNjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2gzPgotICAgIDxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW46IDQuNXB0IDBpbiA0LjVwdCAwLjI1aW47Ij48Yj48dT48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyBjb2xvcjogYmxhY2s7Ij5NYWluIENoYW5nZXM8L3NwYW4+PC91PjwvYj48L3A+Ci0gICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJkaXNjIj4KLSAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwgRE1BPC9zcGFuPjwvYj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+Ci0gICAgICAgICB1cGRhdGUmbmJzcDs8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgotICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5VcGRhdGUgSEFMX0RNQV88c3BhbiBjbGFzcz0iZ3JhbWUiPlBvbGxGb3JUcmFuc2Zlcig8L3NwYW4+KQotICAgICAgICAgIGZ1bmN0aW9uIGltcGxlbWVudGF0aW9uIHRvJm5ic3A7YXZvaWQgZWFybHkgVElNRU9VVCBlcnJvci48L3NwYW4+PHNwYW4gc3R5bGU9IiI+IDxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgIDwvdWw+Ci0gICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMIEpQRUc8L3NwYW4+PC9iPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij4KLSAgICAgICAgIHVwZGF0ZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+Ci0gICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVwZGF0ZSBIQUxfSlBFR188c3BhbiBjbGFzcz0iZ3JhbWUiPkNvbmZpZ0VuY29kaW5nKDwvc3Bhbj4pCi0gICAgICAgICAgZnVuY3Rpb24gdG8gcHJvcGVybHkgc2V0IHRoZSBJbWFnZUhlaWdodCBhbmQgSW1hZ2VXaWR0aDwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICA8L3VsPgotICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTCBTUEk8L3NwYW4+PC9iPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij4KLSAgICAgICAgIHVwZGF0ZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+Ci0gICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVwZGF0ZSBTUElfPHNwYW4gY2xhc3M9ImdyYW1lIj5ETUFUcmFuc21pdFJlY2VpdmVDcGx0KDwvc3Bhbj4pCi0gICAgICAgICAgZnVuY3Rpb24gdG8gcHJvcGVybHkgaGFuZGxlIHRoZSBDUkMgYW5kIGF2b2lkIGNvbmRpdGlvbmFsIHN0YXRlbWVudAotICAgICAgICAgIGR1cGxpY2F0aW9uPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgIDwvdWw+Ci0gICAgPC91bD4KLSAgICA8aDMgc3R5bGU9ImJhY2tncm91bmQ6IHJnYig1MSwgMTAyLCAyNTUpIG5vbmUgcmVwZWF0IHNjcm9sbCAwJSA1MCU7IG1hcmdpbi1yaWdodDogNTAwcHQ7IC1tb3otYmFja2dyb3VuZC1jbGlwOiAtbW96LWluaXRpYWw7IC1tb3otYmFja2dyb3VuZC1vcmlnaW46IC1tb3otaW5pdGlhbDsgLW1vei1iYWNrZ3JvdW5kLWlubGluZS1wb2xpY3k6IC1tb3otaW5pdGlhbDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtBcmlhbCZxdW90OyxzYW5zLXNlcmlmOyBjb2xvcjogd2hpdGU7Ij5WMS4xLjAgLwotICAgIDIyLUFwcmlsLTIwMTY8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9oMz4KLSAgICA8cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luOiA0LjVwdCAwaW4gNC41cHQgMC4yNWluOyI+PGI+PHU+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsgY29sb3I6IGJsYWNrOyI+TWFpbiBDaGFuZ2VzPC9zcGFuPjwvdT48L2I+PC9wPgotICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0iZGlzYyI+Ci0gICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+T2ZmaWNpYWwgcmVsZWFzZSB0byBhZGQgdGhlIHN1cHBvcnQgb2YgPGI+U1RNMzJGNzY1eHgsCi0gICAgICAgICBTVE0zMkY3Njd4eCwgU1RNMzJGNzY4eHgsIFNUTTMyRjc2OXh4LCBTVE0zMkY3Nzd4eCwgU1RNMzJGNzc4eHg8L2I+IDxiPmFuZAotICAgICAgICAgU1RNMzJGNzc5eHg8L2I+IGRldmljZXM8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5HZW5lcmFsIHVwZGF0ZXMgdG8gZml4IGtub3duIGRlZmVjdHMgYW5kCi0gICAgICAgICBlbmhhbmNlbWVudHMgPHNwYW4gY2xhc3M9ImdyYW1lIj5pbXBsZW1lbnRhdGlvbjwvc3Bhbj48L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5BZGQgbmV3IEhBTCBkcml2ZXJzIGZvcjxzcGFuIGNsYXNzPSJhcHBsZS1jb252ZXJ0ZWQtc3BhY2UiPiA8L3NwYW4+PGI+REZTRE0sIERTSTxzcGFuIGNsYXNzPSJhcHBsZS1jb252ZXJ0ZWQtc3BhY2UiPiwgSlBFRyA8L3NwYW4+PC9iPmFuZDxzcGFuIGNsYXNzPSJhcHBsZS1jb252ZXJ0ZWQtc3BhY2UiPiA8L3NwYW4+PGI+TURJT1M8c3BhbiBjbGFzcz0iYXBwbGUtY29udmVydGVkLXNwYWNlIj4gPC9zcGFuPjwvYj5wZXJpcGhlcmFsczwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkVuaGFuY2UgSEFMIGRlbGF5IGFuZCB0aW1lYmFzZSA8c3BhbiBjbGFzcz0iZ3JhbWUiPmltcGxlbWVudGF0aW9uPC9zcGFuPjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+Ci0gICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkFkZCBuZXcgZHJpdmVycyBzdG0zMmY3eHhfaGFsX3RpbWViYXNlX3RpbV90ZW1wbGF0ZS5jLAotICAgICAgICAgIHN0bTMyZjd4eF9oYWxfdGltZWJhc2VfcnRjX2FsYXJtX3RlbXBsYXRlLmMgYW5kCi0gICAgICAgICAgc3RtMzJmN3h4X2hhbF90aW1lYmFzZV9ydGNfd2FrZXVwX3RlbXBsYXRlLmMgd2hpY2ggb3ZlcnJpZGUgdGhlCi0gICAgICAgICAgbmF0aXZlIEhBTCB0aW1lIGJhc2UgZnVuY3Rpb25zIChkZWZpbmVkIGFzIHdlYWspIHRvIGVpdGhlciB1c2UgdGhlCi0gICAgICAgICAgVElNIG9yIHRoZSBSVEMgYXMgdGltZSBiYXNlIHRpY2sgc291cmNlLiBGb3IgbW9yZSBkZXRhaWxzIGFib3V0IHRoZQotICAgICAgICAgIHVzYWdlIG9mIHRoZXNlIGRyaXZlcnMsIHBsZWFzZSByZWZlciB0byBIQUxcSEFMX1RpbWVCYXNlIGV4YW1wbGVzJm5ic3A7PHNwYW4gc3R5bGU9IndpZG93czogMTsgZmxvYXQ6IG5vbmU7IHdvcmQtc3BhY2luZzogMHB4OyI+YW5kIEZyZWVSVE9TLWJhc2VkIDxzcGFuIGNsYXNzPSJncmFtZSI+YXBwbGljYXRpb25zPC9zcGFuPjwvc3Bhbj48L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgPC91bD4KLSAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5UaGUgZm9sbG93aW5nIGNoYW5nZXMgZG9uZSBvbiB0aGUgSEFMIGRyaXZlcnMKLSAgICAgICAgIHJlcXVpcmUgYW4gdXBkYXRlIG9uIHRoZSBhcHBsaWNhdGlvbiBjb2RlIGJhc2VkIG9uIEhBTCBWMS4wLjQ8L3NwYW4+PC9iPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0iY2lyY2xlIj4KLSAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48aT48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMIFVBUlQsIFVTQVJULCBJUkRBLCBTTUFSVENBUkQsIFNQSSwKLSAgICAgICAgICBJMkMsJm5ic3A7UVNQSSA8L3NwYW4+PC9pPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij4ocmVmZXJlbmNlZAotICAgICAgICAgIGFzIDxpPlBQUDwvaT4gaGVyZSBiZWxvdyk8aT4gPC9pPjxzcGFuIGNsYXNzPSJncmFtZSI+ZHJpdmVyczwvc3Bhbj48L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0ic3F1YXJlIj4KLSAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkFkZCBQUFAgZXJyb3IgbWFuYWdlbWVudCBkdXJpbmcgRE1BIHByb2Nlc3MuIFRoaXMKLSAgICAgICAgICAgcmVxdWlyZXMgdGhlIGZvbGxvd2luZyB1cGRhdGVzIG9uJm5ic3A7dXNlciBhcHBsaWNhdGlvbjo8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9InNxdWFyZSI+Ci0gICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+Q29uZmlndXJlIGFuZCBlbmFibGUgdGhlCi0gICAgICAgICAgICBQUFAgSVJRIGluIEhBTF9QUFBfPHNwYW4gY2xhc3M9ImdyYW1lIj5Nc3BJbml0KDwvc3Bhbj4pIGZ1bmN0aW9uPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SW4gc3RtMzJmN3h4X2l0LmMgZmlsZSwKLSAgICAgICAgICAgIFBQUF88c3BhbiBjbGFzcz0iZ3JhbWUiPklSUUhhbmRsZXIoPC9zcGFuPikgZnVuY3Rpb246IGFkZCBhIGNhbGwgdG8KLSAgICAgICAgICAgIEhBTF9QUFBfSVJRSGFuZGxlcigpIGZ1bmN0aW9uPC9zcGFuPjxzcGFuIHN0eWxlPSIiPiA8bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkFkZCBhbmQgY3VzdG9taXplIHRoZQotICAgICAgICAgICAgRXJyb3IgQ2FsbGJhY2sgQVBJOiBIQUxfUFBQXzxzcGFuIGNsYXNzPSJncmFtZSI+RXJyb3JDYWxsYmFjayg8L3NwYW4+KTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgIDwvdWw+Ci0gICAgICA8L3VsPgotICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxpPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwgSTJDPC9zcGFuPjwvaT48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+Ci0gICAgICAgICAgKHJlZmVyZW5jZWQgYXMgPGk+UFBQPC9pPiBoZXJlIGJlbG93KTxpPiA8L2k+ZHJpdmVyczo8L3NwYW4+PHNwYW4gc3R5bGU9IiI+IDxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9InNxdWFyZSI+Ci0gICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5VcGRhdGUgdG8gYXZvaWQgd2FpdGluZyBvbiBTVE9QRi9CVEYvQUYgZmxhZwotICAgICAgICAgICB1bmRlciBETUEgSVNSIGJ5IHVzaW5nIHRoZSBQUFAgZW5kIG9mIHRyYW5zZmVyIGludGVycnVwdCBpbiB0aGUgRE1BCi0gICAgICAgICAgIHRyYW5zZmVyIHByb2Nlc3MuIFRoaXMgcmVxdWlyZXMgdGhlIGZvbGxvd2luZyB1cGRhdGVzIG9uJm5ic3A7dXNlcgotICAgICAgICAgICBhcHBsaWNhdGlvbjo8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9InNxdWFyZSI+Ci0gICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+Q29uZmlndXJlIGFuZCBlbmFibGUgdGhlCi0gICAgICAgICAgICBQUFAgSVJRIGluIEhBTF9QUFBfPHNwYW4gY2xhc3M9ImdyYW1lIj5Nc3BJbml0KDwvc3Bhbj4pIGZ1bmN0aW9uPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SW4gc3RtMzJmN3h4X2l0LmMgZmlsZSwKLSAgICAgICAgICAgIFBQUF88c3BhbiBjbGFzcz0iZ3JhbWUiPklSUUhhbmRsZXIoPC9zcGFuPikgZnVuY3Rpb246IGFkZCBhIGNhbGwgdG8KLSAgICAgICAgICAgIEhBTF9QUFBfSVJRSGFuZGxlcigpIGZ1bmN0aW9uPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICAgPC91bD4KLSAgICAgIDwvdWw+Ci0gICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PGk+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTCBJV0RHIDwvc3Bhbj48L2k+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPmRyaXZlcjoKLSAgICAgICAgICByZXdvcmsgb3ZlcmFsbCBkcml2ZXIgZm9yIGJldHRlciBpbXBsZW1lbnRhdGlvbjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJzcXVhcmUiPgotICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+UmVtb3ZlJm5ic3A7SEFMX0lXREdfPHNwYW4gY2xhc3M9ImdyYW1lIj5TdGFydCg8L3NwYW4+KSwKLSAgICAgICAgICAgSEFMX0lXREdfTXNwSW5pdCgpIGFuZCBIQUxfSVdER19HZXRTdGF0ZSgpJm5ic3A7QVBJczwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgPC91bD4KLSAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48aT48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMIFdXREcgPC9zcGFuPjwvaT48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+ZHJpdmVyOgotICAgICAgICAgIHJld29yayBvdmVyYWxsIGRyaXZlciBmb3IgYmV0dGVyIGltcGxlbWVudGF0aW9uPC9zcGFuPjxzcGFuIHN0eWxlPSIiPiA8bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJzcXVhcmUiPgotICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+UmVtb3ZlIEhBTF9XV0RHXzxzcGFuIGNsYXNzPSJncmFtZSI+U3RhcnQoPC9zcGFuPiksCi0gICAgICAgICAgIEhBTF9XV0RHX1N0YXJ0X0lUKCksIEhBTF9XV0RHX01zcERlSW5pdCgpIGFuZCBIQUxfV1dER19HZXRTdGF0ZSgpCi0gICAgICAgICAgIEFQSXMmbmJzcDs8L3NwYW4+PHNwYW4gc3R5bGU9IiI+Ci0gICAgICAgICAgIDxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5VcGRhdGUgdGhlJm5ic3A7PC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDExcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtDYWxpYnJpJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUxfV1dER188c3BhbiBjbGFzcz0iZ3JhbWUiPlJlZnJlc2goPC9zcGFuPldXREdfSGFuZGxlVHlwZURlZgotICAgICAgICAgICAqaHd3ZGcsIHVpbnQzMl90IGNvdW50ZXIpICZuYnNwO2Z1bmN0aW9uIGFuZCBBUEkgJm5ic3A7YnkgcmVtb3ZpbmcKLSAgICAgICAgICAgdGhlICZuYnNwOyJjb3VudGVyIiBwYXJhbWV0ZXI8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgIDwvdWw+Ci0gICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PGk+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTCBRU1BJIGRyaXZlcjogPC9zcGFuPjwvaT48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+Jm5ic3A7RW5oYW5jZSB0aGUgRE1BIHRyYW5zbWl0IHByb2Nlc3MKLSAgICAgICAgICBieSZuYnNwO3VzaW5nJm5ic3A7UFBQIFRDIGludGVycnVwdCBpbnN0ZWFkIG9mIHdhaXRpbmcgb24gVEMgZmxhZwotICAgICAgICAgIHVuZGVyIERNQSBJU1IuJm5ic3A7VGhpcyByZXF1aXJlcyB0aGUgZm9sbG93aW5nIHVwZGF0ZXMgb24mbmJzcDt1c2VyCi0gICAgICAgICAgYXBwbGljYXRpb246PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9InNxdWFyZSI+Ci0gICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5Db25maWd1cmUgYW5kIGVuYWJsZSB0aGUgUVNQSSZuYnNwO0lSUSBpbgotICAgICAgICAgICBIQUxfUVNQSV88c3BhbiBjbGFzcz0iZ3JhbWUiPk1zcEluaXQoPC9zcGFuPikgZnVuY3Rpb248L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkluIHN0bTMyZjd4eF9pdC5jIGZpbGUsIFFTUElfPHNwYW4gY2xhc3M9ImdyYW1lIj5JUlFIYW5kbGVyKDwvc3Bhbj4pCi0gICAgICAgICAgIGZ1bmN0aW9uOiBhZGQgYSBjYWxsIHRvIEhBTF9RU1BJX0lSUUhhbmRsZXIoKSBmdW5jdGlvbjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgPC91bD4KLSAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48aT48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMIENFQyBkcml2ZXI6IDwvc3Bhbj48L2k+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPiZuYnNwO092ZXJhbGwKLSAgICAgICAgICBkcml2ZXIgcmV3b3JrIHdpdGggY29tcGF0aWJpbGl0eSBicmVhayB2ZXJzdXMgcHJldmlvdXMgSEFMIHZlcnNpb248L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0ic3F1YXJlIj4KLSAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlJlbW92ZSBIQUwgQ0VDIHBvbGxpbmcgUHJvY2VzcyBmdW5jdGlvbnM6Ci0gICAgICAgICAgIEhBTF9DRUNfPHNwYW4gY2xhc3M9ImdyYW1lIj5UcmFuc21pdCg8L3NwYW4+KSBhbmQgSEFMX0NFQ19SZWNlaXZlKCk8L3NwYW4+PHNwYW4gc3R5bGU9IiI+IDxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5SZW1vdmUgSEFMIENFQyByZWNlaXZlIGludGVycnVwdCBwcm9jZXNzCi0gICAgICAgICAgIGZ1bmN0aW9uJm5ic3A7SEFMX0NFQ19SZWNlaXZlXzxzcGFuIGNsYXNzPSJncmFtZSI+SVQoPC9zcGFuPikgYW5kCi0gICAgICAgICAgIGVuYWJsZSB0aGUgInJlY2VpdmUiICZuYnNwO21vZGUgZHVyaW5nIHRoZSBJbml0IHBoYXNlPC9zcGFuPjxzcGFuIHN0eWxlPSIiPiA8bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+UmVuYW1lJm5ic3A7SEFMX0NFQ188c3BhbiBjbGFzcz0iZ3JhbWUiPkdldFJlY2VpdmVkRnJhbWVTaXplKDwvc3Bhbj4pCi0gICAgICAgICAgIGZ1bnRpb24gdG8mbmJzcDtIQUxfQ0VDX0dldExhc3RSZWNlaXZlZEZyYW1lU2l6ZSgpPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5BZGQgbmV3IEhBTCBBUElzOiBIQUxfQ0VDXzxzcGFuIGNsYXNzPSJncmFtZSI+U2V0RGV2aWNlQWRkcmVzcyg8L3NwYW4+KQotICAgICAgICAgICBhbmQgSEFMX0NFQ19DaGFuZ2VSeEJ1ZmZlcigpPC9zcGFuPjxzcGFuIHN0eWxlPSIiPiA8bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+UmVtb3ZlIHRoZSZuYnNwOydJbml0aWF0b3JBZGRyZXNzJyBmaWVsZCBmcm9tCi0gICAgICAgICAgIHRoZSZuYnNwO0NFQ19Jbml0VHlwZURlZiBzdHJ1Y3R1cmUmbmJzcDthbmQgbWFuYWdlIGl0Jm5ic3A7YXMgYQotICAgICAgICAgICBwYXJhbWV0ZXIgaW4gdGhlIEhBTF9DRUNfVHJhbnNtaXRfPHNwYW4gY2xhc3M9ImdyYW1lIj5JVCg8L3NwYW4+KQotICAgICAgICAgICBmdW5jdGlvbjwvc3Bhbj48c3BhbiBzdHlsZT0iIj4KLSAgICAgICAgICAgPG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkFkZCBuZXcgcGFyYW1ldGVyICdSeEZyYW1lU2l6ZScgaW4gSEFMX0NFQ188c3BhbiBjbGFzcz0iZ3JhbWUiPlJ4Q3BsdENhbGxiYWNrKDwvc3Bhbj4pIGZ1bmN0aW9uPC9zcGFuPjxzcGFuIHN0eWxlPSIiPiA8bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+TW92ZSBDRUMgUnggYnVmZmVyIHBvaW50ZXImbmJzcDtmcm9tCi0gICAgICAgICAgIENFQ19IYW5kbGVUeXBlRGVmIHN0cnVjdHVyZSB0byBDRUNfSW5pdFR5cGVEZWYgc3RydWN0dXJlPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICA8L3VsPgotICAgICA8L3VsPgotICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTCBDQU48L3NwYW4+PC9iPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij4KLSAgICAgICAgIHVwZGF0ZSZuYnNwOzwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+Ci0gICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkFkZCB0aGUgc3VwcG9ydCBvZiA8c3BhbiBjbGFzcz0iZ3JhbWUiPkNBTjM8L3NwYW4+PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgIDwvdWw+Ci0gICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMIENFQzwvc3Bhbj48L2I+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPgotICAgICAgICAgdXBkYXRlPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0iY2lyY2xlIj4KLSAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+T3ZlcmFsbCBkcml2ZXIgcmV3b3JrIHdpdGgmbmJzcDticmVhayBvZgotICAgICAgICAgIGNvbXBhdGliaWxpdHkgd2l0aCBIQUwgVjEuMC40PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9InNxdWFyZSI+Ci0gICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5SZW1vdmUgdGhlIEhBTCBDRUMgcG9sbGluZyBQcm9jZXNzOiBIQUxfQ0VDXzxzcGFuIGNsYXNzPSJncmFtZSI+VHJhbnNtaXQoPC9zcGFuPikgYW5kIEhBTF9DRUNfUmVjZWl2ZSgpPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5SZW1vdmUgdGhlIEhBTCBDRUMgcmVjZWl2ZSBpbnRlcnJ1cHQgcHJvY2VzcwotICAgICAgICAgICAoSEFMX0NFQ19SZWNlaXZlXzxzcGFuIGNsYXNzPSJncmFtZSI+SVQoPC9zcGFuPikpIGFuZCBtYW5hZ2UgdGhlCi0gICAgICAgICAgICJSZWNlaXZlIiBtb2RlIGVuYWJsZSB3aXRoaW4gdGhlIEluaXQgcGhhc2U8L3NwYW4+PHNwYW4gc3R5bGU9IiI+IDxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5SZW5hbWUgSEFMX0NFQ188c3BhbiBjbGFzcz0iZ3JhbWUiPkdldFJlY2VpdmVkRnJhbWVTaXplKDwvc3Bhbj4pCi0gICAgICAgICAgIGZ1bmN0aW9uIHRvJm5ic3A7SEFMX0NFQ19HZXRMYXN0UmVjZWl2ZWRGcmFtZVNpemUoKSBmdW5jdGlvbjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+QWRkIG5ldyBIQUwgQVBJczogSEFMX0NFQ188c3BhbiBjbGFzcz0iZ3JhbWUiPlNldERldmljZUFkZHJlc3MoPC9zcGFuPikKLSAgICAgICAgICAgYW5kIEhBTF9DRUNfQ2hhbmdlUnhCdWZmZXIoKTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+UmVtb3ZlIHRoZSZuYnNwOydJbml0aWF0b3JBZGRyZXNzJyBmaWVsZCBmcm9tCi0gICAgICAgICAgIHRoZSZuYnNwO0NFQ19Jbml0VHlwZURlZiBzdHJ1Y3R1cmUmbmJzcDthbmQgbWFuYWdlIGl0Jm5ic3A7YXMgYQotICAgICAgICAgICBwYXJhbWV0ZXIgaW4gdGhlIEhBTF9DRUNfVHJhbnNtaXRfPHNwYW4gY2xhc3M9ImdyYW1lIj5JVCg8L3NwYW4+KQotICAgICAgICAgICBmdW5jdGlvbjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+QWRkIG5ldyBwYXJhbWV0ZXIgJ1J4RnJhbWVTaXplJyBpbiBIQUxfQ0VDXzxzcGFuIGNsYXNzPSJncmFtZSI+UnhDcGx0Q2FsbGJhY2soPC9zcGFuPikgZnVuY3Rpb248L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPk1vdmUgQ0VDIFJ4IGJ1ZmZlciBwb2ludGVyJm5ic3A7ZnJvbQotICAgICAgICAgICBDRUNfSGFuZGxlVHlwZURlZiBzdHJ1Y3R1cmUgdG8gQ0VDX0luaXRUeXBlRGVmIHN0cnVjdHVyZSA8bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgPC91bD4KLSAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlIGRyaXZlciB0byBpbXBsZW1lbnQgdGhlIG5ldyBDRUMgc3RhdGUKLSAgICAgICAgICBtYWNoaW5lOiA8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0ic3F1YXJlIj4KLSAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkFkZCBuZXcmbmJzcDsicnhTdGF0ZSIgZmllbGQgaW4gQ0VDX0hhbmRsZVR5cGVEZWYKLSAgICAgICAgICAgc3RydWN0dXJlIHRvIHByb3ZpZGUgdGhlIENFQyBzdGF0ZSBpbmZvcm1hdGlvbiByZWxhdGVkIHRvIFJ4IDxzcGFuIGNsYXNzPSJncmFtZSI+T3BlcmF0aW9uczwvc3Bhbj48L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlJlbmFtZSAic3RhdGUiIGZpZWxkIGluCi0gICAgICAgICAgIENFQ19IYW5kbGVUeXBlRGVmIHN0cnVjdHVyZSB0byAiZ3N0YXRlIjogQ0VDIHN0YXRlCi0gICAgICAgICAgIGluZm9ybWF0aW9uIHJlbGF0ZWQgdG8gZ2xvYmFsIEhhbmRsZSBtYW5hZ2VtZW50IGFuZCBUeCA8c3BhbiBjbGFzcz0iZ3JhbWUiPk9wZXJhdGlvbnM8L3NwYW4+PC9zcGFuPjxzcGFuIHN0eWxlPSIiPiA8bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlIENFQyBwcm9jZXNzIHRvIG1hbmFnZSB0aGUgbmV3IENFQyBzdGF0ZXMuPC9zcGFuPjxzcGFuIHN0eWxlPSIiPiA8bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlIF9fSEFMX0NFQ19SRVNFVF9IQU5ETEVfPHNwYW4gY2xhc3M9ImdyYW1lIj5TVEFURSg8L3NwYW4+KQotICAgICAgICAgICBtYWNybyB0byBoYW5kbGUgdGhlIG5ldyBDRUMgc3RhdGUgcGFyYW1ldGVycyAoZ1N0YXRlLCByeFN0YXRlKTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgPC91bD4KLSAgICAgPC91bD4KLSAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwgRE1BPC9zcGFuPjwvYj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+Ci0gICAgICAgICB1cGRhdGUmbmJzcDs8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgotICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5BZGQgbmV3IEFQSXMgSEFMX0RNQV88c3BhbiBjbGFzcz0iZ3JhbWUiPlJlZ2lzdGVyQ2FsbGJhY2soPC9zcGFuPikKLSAgICAgICAgICBhbmQgSEFMX0RNQV9VblJlZ2lzdGVyQ2FsbGJhY2sgdG8gcmVnaXN0ZXIvdW5yZWdpc3RlciB0aGUgZGlmZmVyZW50Ci0gICAgICAgICAgY2FsbGJhY2tzIGlkZW50aWZpZWQgYnkgdGhlIGVudW0gdHlwZWRlZiBIQUxfRE1BX0NhbGxiYWNrSURUeXBlRGVmPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkFkZCBuZXcgQVBJIEhBTF9ETUFfQWJvcnRfPHNwYW4gY2xhc3M9ImdyYW1lIj5JVCg8L3NwYW4+KQotICAgICAgICAgIHRvIGFib3J0IERNQSB0cmFuc2ZlciB1bmRlciBpbnRlcnJ1cHQgY29udGV4dDwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJzcXVhcmUiPgotICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VGhlIG5ldyByZWdpc3RlcmVkIEFib3J0IGNhbGxiYWNrIGlzIGNhbGxlZCB3aGVuCi0gICAgICAgICAgIERNQSB0cmFuc2ZlciBhYm9ydGlvbiBpcyA8c3BhbiBjbGFzcz0iZ3JhbWUiPmNvbXBsZXRlZDwvc3Bhbj48L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgIDwvdWw+Ci0gICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkFkZCB0aGUgY2hlY2sgb2YgY29tcGF0aWJpbGl0eSBiZXR3ZWVuIEZJRk8KLSAgICAgICAgICB0aHJlc2hvbGQgbGV2ZWwgYW5kIHNpemUgb2YgdGhlIG1lbW9yeSBidXJzdCBpbiB0aGUgSEFMX0RNQV88c3BhbiBjbGFzcz0iZ3JhbWUiPkluaXQoPC9zcGFuPikgQVBJPC9zcGFuPjxzcGFuIHN0eWxlPSIiPiA8bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5BZGQgbmV3IEVycm9yIENvZGVzOiBIQUxfRE1BX0VSUk9SX1BBUkFNLAotICAgICAgICAgIEhBTF9ETUFfRVJST1JfTk9fWEZFUiBhbmQgSEFMX0RNQV9FUlJPUl9OT1RfU1VQUE9SVEVEPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiByZ2IoOTgsIDk4LCA5OCk7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7IGNvbG9yOiBibGFjazsiPlJlbW92ZSBhbGwgRE1BIHN0YXRlcyByZWxhdGVkIHRvCi0gICAgICAgICAgTUVNMC9NRU0xIGluIEhBTF9ETUFfU3RhdGVUeXBlRGVmPC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDkuNXB0OyBmb250LWZhbWlseTogJnF1b3Q7SGVsdmV0aWNhJnF1b3Q7LHNhbnMtc2VyaWY7Ij48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICA8L3VsPgotICAgIDwvdWw+Ci0gICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJkaXNjIj4KLSAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwgRE1BMkQ8L3NwYW4+PC9iPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij4KLSAgICAgICAgIHVwZGF0ZSZuYnNwOzwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+Ci0gICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVwZGF0ZSB0aGUgSEFMX0RNQTJEXzxzcGFuIGNsYXNzPSJncmFtZSI+RGVJbml0KDwvc3Bhbj4pCi0gICAgICAgICAgZnVuY3Rpb24gdG86PC9zcGFuPjxzcGFuIHN0eWxlPSIiPgotICAgICAgICAgIDxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9InNxdWFyZSI+Ci0gICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5BYm9ydCB0cmFuc2ZlciBpbiBjYXNlIG9mIG9uZ29pbmcgRE1BMkQgdHJhbnNmZXI8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5SZXNldCBETUEyRCBjb250cm9sIDxzcGFuIGNsYXNzPSJncmFtZSI+cmVnaXN0ZXJzPC9zcGFuPjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgPC91bD4KLSAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlIEhBTF9ETUEyRF88c3BhbiBjbGFzcz0iZ3JhbWUiPkFib3J0KDwvc3Bhbj4pCi0gICAgICAgICAgdG8gZGlzYWJsZSBETUEyRCBpbnRlcnJ1cHRzIGFmdGVyIHN0b3BwaW5nIHRyYW5zZmVyPC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7Ij48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5PcHRpbWl6ZSBIQUxfRE1BMkRfPHNwYW4gY2xhc3M9ImdyYW1lIj5JUlFIYW5kbGVyKDwvc3Bhbj4pCi0gICAgICAgICAgYnkgcmVhZGluZyBzdGF0dXMgcmVnaXN0ZXJzIG9ubHkgb25jZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj4gPG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlIEhBTF9ETUEyRF88c3BhbiBjbGFzcz0iZ3JhbWUiPlByb2dyYW1MaW5lRXZlbnQoPC9zcGFuPikKLSAgICAgICAgICBmdW5jdGlvbiB0bzo8L3NwYW4+PHNwYW4gc3R5bGU9IiI+Ci0gICAgICAgICAgPG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0ic3F1YXJlIj4KLSAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlJldHVybiBIQUwgZXJyb3Igc3RhdGUgaW4gY2FzZSBvZiB3cm9uZyBsaW5lIDxzcGFuIGNsYXNzPSJncmFtZSI+dmFsdWU8L3NwYW4+PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5FbmFibGUgbGluZSBpbnRlcnJ1cHQgYWZ0ZXIgc2V0dGluZyB0aGUgbGluZQotICAgICAgICAgICB3YXRlcm1hcmsgPHNwYW4gY2xhc3M9ImdyYW1lIj5jb25maWd1cmF0aW9uPC9zcGFuPjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgPC91bD4KLSAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+QWRkIG5ldyBIQUxfRE1BMkRfPHNwYW4gY2xhc3M9ImdyYW1lIj5DTFVUTG9hZCg8L3NwYW4+KQotICAgICAgICAgIGFuZCBIQUxfRE1BMkRfQ0xVVExvYWRfSVQoKSBmdW5jdGlvbnMgdG8gc3RhcnQgRE1BMkQgQ0xVVCBsb2FkaW5nPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9InNxdWFyZSI+Ci0gICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUxfRE1BMkRfQ0xVVExvYWRpbmdfPHNwYW4gY2xhc3M9ImdyYW1lIj5BYm9ydCg8L3NwYW4+KQotICAgICAgICAgICBmdW5jdGlvbiB0byBhYm9ydCB0aGUgRE1BMkQgQ0xVVCBsb2FkaW5nPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUxfRE1BMkRfQ0xVVExvYWRpbmdfPHNwYW4gY2xhc3M9ImdyYW1lIj5TdXNwZW5kKDwvc3Bhbj4pCi0gICAgICAgICAgIGZ1bmN0aW9uIHRvIHN1c3BlbmQgdGhlIERNQTJEIENMVVQgbG9hZGluZzwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMX0RNQTJEX0NMVVRMb2FkaW5nXzxzcGFuIGNsYXNzPSJncmFtZSI+UmVzdW1lKDwvc3Bhbj4pCi0gICAgICAgICAgIGZ1bmN0aW9uIHRvIHJlc3VtZSB0aGUgRE1BMkQgQ0xVVCBsb2FkaW5nPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICA8L3VsPgotICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5BZGQgbmV3IERNQTJEIGRlYWQgdGltZSBtYW5hZ2VtZW50Ojwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJzcXVhcmUiPgotICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMX0RNQTJEXzxzcGFuIGNsYXNzPSJncmFtZSI+RW5hYmxlRGVhZFRpbWUoPC9zcGFuPikKLSAgICAgICAgICAgZnVuY3Rpb24gdG8gZW5hYmxlIERNQTJEIGRlYWQgdGltZSBmZWF0dXJlPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUxfRE1BMkRfPHNwYW4gY2xhc3M9ImdyYW1lIj5EaXNhYmxlRGVhZFRpbWUoPC9zcGFuPikKLSAgICAgICAgICAgZnVuY3Rpb24gdG8gZGlzYWJsZSBETUEyRCBkZWFkIHRpbWUgZmVhdHVyZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMX0RNQTJEXzxzcGFuIGNsYXNzPSJncmFtZSI+Q29uZmlnRGVhZFRpbWUoPC9zcGFuPikKLSAgICAgICAgICAgZnVuY3Rpb24gdG8gY29uZmlndXJlIGRlYWQgdGltZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgPC91bD4KLSAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlIHRoZSBuYW1lIG9mIERNQTJEIElucHV0L091dHB1dCBjb2xvciBtb2RlCi0gICAgICAgICAgZGVmaW5lcyB0byBiZSA8c3BhbiBjbGFzcz0iZ3JhbWUiPm1vcmUgY2xlYXI8L3NwYW4+IGZvciB1c2VyCi0gICAgICAgICAgKERNQTJEX0lOUFVUX1hYWCBmb3IgaW5wdXQgbGF5ZXJzIENvbG9ycywgRE1BMkRfT1VUUFVUX1hYWCBmb3Igb3V0cHV0Ci0gICAgICAgICAgZnJhbWVidWZmZXIgQ29sb3JzKTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICA8L3VsPgotICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTCBEQ01JPC9zcGFuPjwvYj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+Ci0gICAgICAgICB1cGRhdGUmbmJzcDs8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgotICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5SZW5hbWUgRENNSV9ETUFDb252Q3BsdCB0byBEQ01JX0RNQVhmZXJDcGx0PC9zcGFuPjxzcGFuIHN0eWxlPSIiPiA8bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5VcGRhdGUgSEFMX0RDTUlfU3RhcnRfPHNwYW4gY2xhc3M9ImdyYW1lIj5ETUEoPC9zcGFuPikKLSAgICAgICAgICBmdW5jdGlvbiB0byZuYnNwO0VuYWJsZSB0aGUgRENNSSBwZXJpcGhlcmFsPC9zcGFuPjxzcGFuIHN0eWxlPSIiPiA8bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5BZGQgbmV3IHRpbWVvdXQgaW1wbGVtZW50YXRpb24gYmFzZWQgb24gY3B1IGN5Y2xlcwotICAgICAgICAgIGZvciBEQ01JIDxzcGFuIGNsYXNzPSJncmFtZSI+c3RvcDwvc3Bhbj48L3NwYW4+PHNwYW4gc3R5bGU9IiI+IDxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkFkZCBIQUxfRENNSV88c3BhbiBjbGFzcz0iZ3JhbWUiPlN1c3BlbmQoPC9zcGFuPikKLSAgICAgICAgICBmdW5jdGlvbiB0byBzdXNwZW5kIERDTUkgY2FwdHVyZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj4gPG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+QWRkIEhBTF9EQ01JXzxzcGFuIGNsYXNzPSJncmFtZSI+UmVzdW1lKDwvc3Bhbj4pCi0gICAgICAgICAgZnVuY3Rpb24gdG8gcmVzdW1lIGNhcHR1cmUgYWZ0ZXIgRENNSSBzdXNwZW5kPC9zcGFuPjxzcGFuIHN0eWxlPSIiPiA8bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5VcGRhdGUgbG9jayBtZWNoYW5pc20gZm9yIERDTUkgcHJvY2Vzczwvc3Bhbj48c3BhbiBzdHlsZT0iIj4gPG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlIEhBTF9EQ01JXzxzcGFuIGNsYXNzPSJncmFtZSI+SVJRSGFuZGxlcig8L3NwYW4+KQotICAgICAgICAgIGZ1bmN0aW9uIHRvOjwvc3Bhbj48c3BhbiBzdHlsZT0iIj4KLSAgICAgICAgICA8bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJzcXVhcmUiPgotICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+QWRkIGVycm9yIG1hbmFnZW1lbnQgaW4gY2FzZSBETUEgZXJyb3JzIHRocm91Z2ggPHNwYW4gY2xhc3M9ImdyYW1lIj5YZmVyQWJvcnRDYWxsYmFjayg8L3NwYW4+KSBhbmQgSEFMX0RNQV9BYm9ydF9JVCgpPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5PcHRpbWl6ZSBjb2RlIGJ5IHVzaW5nIGRpcmVjdCByZWdpc3RlciA8c3BhbiBjbGFzcz0iZ3JhbWUiPnJlYWQ8L3NwYW4+PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICA8L3VsPgotICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5Nb3ZlIHRoZSBjb250ZW50IG9mIHRoZSBzdG0zMmY3eHhfaGFsX2RjbWlfZXguYy8uaAotICAgICAgICAgIGZpbGVzIHRvIGNvbW1vbiBkcml2ZXIgZmlsZXMgKHRoZSBleHRlbnNpb24gZmlsZXMgYXJlIGtlcHQgZW1wdHkgZm9yCi0gICAgICAgICAgcHJvamVjdHMgY29tcGF0aWJpbGl0eSByZWFzb24pPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgIDwvdWw+Ci0gICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMIEZMQVNIPC9zcGFuPjwvYj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+Ci0gICAgICAgICB1cGRhdGUmbmJzcDs8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgotICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5BZGQgdGhlIHN1cHBvcnQgb2YgRHVhbCBCQU5LIGZlYXR1cmU8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+QWRkIF9fSEFMX0ZMQVNIX0NBTENfQk9PVF9CQVNFXzxzcGFuIGNsYXNzPSJncmFtZSI+QURSKDwvc3Bhbj4pCi0gICAgICAgICAgbWFjcm8gdG8gY2FsY3VsYXRlIHRoZSBGTEFTSCBCb290IEJhc2UgQWRyZXNzPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPk1vdmUgRmxhc2ggdG90YWwgc2VjdG9yIGRlZmluZSB0byBDTVNJUyBoZWFkZXIgPHNwYW4gY2xhc3M9ImdyYW1lIj5maWxlczwvc3Bhbj48L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgPC91bD4KLSAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwgRk1DPC9zcGFuPjwvYj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+Ci0gICAgICAgICB1cGRhdGU8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgotICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5VcGRhdGUgRk1DX05PUlNSQU1fPHNwYW4gY2xhc3M9ImdyYW1lIj5Jbml0KDwvc3Bhbj4pCi0gICAgICAgICAgdG8gcmVtb3ZlIHRoZSBCdXJzdCBhY2Nlc3MgbW9kZSBjb25maWd1cmF0aW9uPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVwZGF0ZSBGTUNfU0RSQU1fVGltaW5nXzxzcGFuIGNsYXNzPSJncmFtZSI+SW5pdCg8L3NwYW4+KQotICAgICAgICAgIHRvIGZpeCBpbml0aWFsaXphdGlvbiBpc3N1ZSB3aGVuIGNvbmZpZ3VyaW5nIDIgU0RSQU0gYmFua3M8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgPC91bD4KLSAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwgSENEPC9zcGFuPjwvYj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+Ci0gICAgICAgICB1cGRhdGU8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgotICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5VcGRhdGUgSENEX1BvcnRfPHNwYW4gY2xhc3M9ImdyYW1lIj5JUlFIYW5kbGVyKDwvc3Bhbj4pCi0gICAgICAgICAgdG8gYmUgY29tcGxpYW50IHdpdGggbmV3IFRpbWUgYmFzZSBpbXBsZW1lbnRhdGlvbjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICA8L3VsPgotICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTCBJMkM8L3NwYW4+PC9iPjxpPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij4KLSAgICAgICAgIDwvc3Bhbj48L2k+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj4gPG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgotICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5BZGQgdGhlIHN1cHBvcnQgb2YgSTJDIGZhc3QgbW9kZSBwbHVzIChGTSspPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVwZGF0ZSBQb2xsaW5nIG1hbmFnZW1lbnQ6PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9InNxdWFyZSI+Ci0gICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5UaGUgVGltZW91dCB2YWx1ZSBtdXN0IGJlIGVzdGltYXRlZCBmb3IgdGhlCi0gICAgICAgICAgIG92ZXJhbGwgcHJvY2VzcyBkdXJhdGlvbjogPHNwYW4gY2xhc3M9ImdyYW1lIj50aGU8L3NwYW4+IFRpbWVvdXQKLSAgICAgICAgICAgbWVhc3VyZW1lbnQgaXMgY3VtdWxhdGl2ZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgPC91bD4KLSAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+QWRkIHRoZSBtYW5hZ2VtZW50IG9mIEFib3J0IHNlcnZpY2U6Jm5ic3A7QWJvcnQKLSAgICAgICAgICBETUEgdHJhbnNmZXIgdGhyb3VnaCA8c3BhbiBjbGFzcz0iZ3JhbWUiPmludGVycnVwdDwvc3Bhbj48L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0ic3F1YXJlIj4KLSAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkluIHRoZSBjYXNlIG9mIE1hc3RlciBBYm9ydCBJVCB0cmFuc2ZlciB1c2FnZTo8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9InNxdWFyZSI+Ci0gICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+QWRkJm5ic3A7bmV3IHVzZXIKLSAgICAgICAgICAgIEhBTF9JMkNfPHNwYW4gY2xhc3M9ImdyYW1lIj5BYm9ydENwbHRDYWxsYmFjayg8L3NwYW4+KSB0byBpbmZvcm0gdXNlcgotICAgICAgICAgICAgb2YgdGhlIGVuZCBvZiBhYm9ydCBwcm9jZXNzPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+QSBuZXcgYWJvcnQgc3RhdGUgaXMKLSAgICAgICAgICAgIGRlZmluZWQgaW4gdGhlIEhBTF9JMkNfU3RhdGVUeXBlRGVmIHN0cnVjdHVyZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgIDwvdWw+Ci0gICAgICA8L3VsPgotICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5BZGQgdGhlIG1hbmFnZW1lbnQgb2YgSTJDIHBlcmlwaGVyYWwgZXJyb3JzLCBBQ0sKLSAgICAgICAgICBmYWlsdXJlIGFuZCBTVE9QIGNvbmRpdGlvbiBkZXRlY3Rpb24gZHVyaW5nIERNQSBwcm9jZXNzLiBUaGlzCi0gICAgICAgICAgcmVxdWlyZXMgdGhlIGZvbGxvd2luZyB1cGRhdGVzIG9uIHVzZXIgYXBwbGljYXRpb246PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9InNxdWFyZSI+Ci0gICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5Db25maWd1cmUgYW5kIGVuYWJsZSB0aGUgSTJDIElSUSBpbiBIQUxfSTJDXzxzcGFuIGNsYXNzPSJncmFtZSI+TXNwSW5pdCg8L3NwYW4+KSBmdW5jdGlvbjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SW4gc3RtMzJmN3h4X2l0LmMgZmlsZSwgSTJDXzxzcGFuIGNsYXNzPSJncmFtZSI+SVJRSGFuZGxlcig8L3NwYW4+KQotICAgICAgICAgICBmdW5jdGlvbjogYWRkIGEgY2FsbCB0byBIQUxfSTJDX0lSUUhhbmRsZXIoKSBmdW5jdGlvbjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+QWRkIGFuZCBjdXN0b21pemUgdGhlIEVycm9yIENhbGxiYWNrIEFQSToKLSAgICAgICAgICAgSEFMX0kyQ188c3BhbiBjbGFzcz0iZ3JhbWUiPkVycm9yQ2FsbGJhY2soPC9zcGFuPik8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlJlZmVyIHRvIHRoZSBJMkNfRUVQUk9NIG9yIEkyQ19Ud29Cb2FyZHNfQ29tRE1BCi0gICAgICAgICAgIHByb2plY3QgZXhhbXBsZXMgdXNhZ2Ugb2YgdGhlIDxzcGFuIGNsYXNzPSJncmFtZSI+QVBJPC9zcGFuPjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgPC91bD4KLSAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkFkZCB0aGUgc3VwcG9ydCBvZiZuYnNwO0kyQyByZXBlYXRlZCBzdGFydAotICAgICAgICAgIGZlYXR1cmU6PC9zcGFuPjxzcGFuIHN0eWxlPSIiPgotICAgICAgICAgIDxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICA8dWwgdHlwZT0ic3F1YXJlIj4KLSAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5XaXRoIHRoZSBmb2xsb3dpbmcgbmV3IEFQSXM8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgICA8dWwgdHlwZT0ic3F1YXJlIj4KLSAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMX0kyQ19NYXN0ZXJfU2VxdWVudGlhbF9UcmFuc21pdF88c3BhbiBjbGFzcz0iZ3JhbWUiPklUKDwvc3Bhbj4pPC9zcGFuPjxzcGFuIHN0eWxlPSIiPiA8bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUxfSTJDX01hc3Rlcl9TZXF1ZW50aWFsX1JlY2VpdmVfPHNwYW4gY2xhc3M9ImdyYW1lIj5JVCg8L3NwYW4+KTwvc3Bhbj48c3BhbiBzdHlsZT0iIj4gPG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMX0kyQ19NYXN0ZXJfQWJvcnRfPHNwYW4gY2xhc3M9ImdyYW1lIj5JVCg8L3NwYW4+KTwvc3Bhbj48c3BhbiBzdHlsZT0iIj4gPG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMX0kyQ19TbGF2ZV9TZXF1ZW50aWFsX1RyYW5zbWl0XzxzcGFuIGNsYXNzPSJncmFtZSI+SVQoPC9zcGFuPik8L3NwYW4+PHNwYW4gc3R5bGU9IiI+IDxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTF9JMkNfU2xhdmVfU2VxdWVudGlhbF9SZWNlaXZlXzxzcGFuIGNsYXNzPSJncmFtZSI+SVQoPC9zcGFuPik8L3NwYW4+PHNwYW4gc3R5bGU9IiI+IDxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTF9JMkNfRW5hYmxlTGlzdGVuXzxzcGFuIGNsYXNzPSJncmFtZSI+SVQoPC9zcGFuPik8L3NwYW4+PHNwYW4gc3R5bGU9IiI+IDxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTF9JMkNfRGlzYWJsZUxpc3Rlbl88c3BhbiBjbGFzcz0iZ3JhbWUiPklUKDwvc3Bhbj4pPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICAgPC91bD4KLSAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5BZGQgbmV3IHVzZXIgY2FsbGJhY2tzOjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgIDx1bCB0eXBlPSJzcXVhcmUiPgotICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUxfSTJDXzxzcGFuIGNsYXNzPSJncmFtZSI+TGlzdGVuQ3BsdENhbGxiYWNrKDwvc3Bhbj4pPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTF9JMkNfPHNwYW4gY2xhc3M9ImdyYW1lIj5BZGRyQ2FsbGJhY2soPC9zcGFuPik8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgICA8L3VsPgotICAgICAgPC91bD4KLSAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlNldmVyYWwgdXBkYXRlcyBvbiBIQUwgSTJDIGRyaXZlciB0byBpbXBsZW1lbnQgdGhlCi0gICAgICAgICAgbmV3IEkyQyBzdGF0ZSBtYWNoaW5lOiA8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgIDx1bCB0eXBlPSJzcXVhcmUiPgotICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkFkZCBuZXcgQVBJIHRvIGdldCB0aGUmbmJzcDtJMkMgbW9kZTogSEFMX0kyQ188c3BhbiBjbGFzcz0iZ3JhbWUiPkdldE1vZGUoPC9zcGFuPik8L3NwYW4+PHNwYW4gc3R5bGU9IiI+IDxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlJm5ic3A7STJDIHByb2Nlc3MgdG8gbWFuYWdlIHRoZQotICAgICAgICAgICBuZXcmbmJzcDtJMkMgPHNwYW4gY2xhc3M9ImdyYW1lIj5zdGF0ZXM8L3NwYW4+PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICA8L3VsPgotICAgICA8L3VsPgotICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTCBJV0RHPC9zcGFuPjwvYj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+Ci0gICAgICAgICB1cGRhdGU8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgotICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5PdmVyYWxsIHJld29yayBvZiB0aGUgZHJpdmVyIGZvciBhIG1vcmUKLSAgICAgICAgICBlZmZpY2llbnQmbmJzcDtpbXBsZW1lbnRhdGlvbjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJzcXVhcmUiPgotICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+UmVtb3ZlIHRoZSBmb2xsb3dpbmcgQVBJczo8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9InNxdWFyZSI+Ci0gICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMX0lXREdfPHNwYW4gY2xhc3M9ImdyYW1lIj5TdGFydCg8L3NwYW4+KTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTF9JV0RHXzxzcGFuIGNsYXNzPSJncmFtZSI+TXNwSW5pdCg8L3NwYW4+KTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTF9JV0RHXzxzcGFuIGNsYXNzPSJncmFtZSI+R2V0U3RhdGUoPC9zcGFuPik8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgICA8L3VsPgotICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlIGltcGxlbWVudGF0aW9uOjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0ic3F1YXJlIj4KLSAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUxfSVdER188c3BhbiBjbGFzcz0iZ3JhbWUiPkluaXQoPC9zcGFuPikgOiB0aGlzIGZ1bmN0aW9uIGluc3VyZXMgdGhlIGNvbmZpZ3VyYXRpb24KLSAgICAgICAgICAgIGFuZCB0aGUgc3RhcnQgb2YgdGhlIElXREcgY291bnRlcjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTF9JV0RHXzxzcGFuIGNsYXNzPSJncmFtZSI+UmVmcmVzaCg8L3NwYW4+KSA6IHRoaXMgZnVuY3Rpb24gaW5zdXJlcyB0aGUgcmVsb2FkIG9mCi0gICAgICAgICAgICB0aGUgSVdERyBjb3VudGVyPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICAgPC91bD4KLSAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlJlZmVyIHRvIHRoZSBmb2xsb3dpbmcgZXhhbXBsZSB0byBpZGVudGlmeSB0aGUKLSAgICAgICAgICAgY2hhbmdlczogSVdER188c3BhbiBjbGFzcz0iZ3JhbWUiPkV4YW1wbGU8L3NwYW4+PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICA8L3VsPgotICAgICA8L3VsPgotICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTCBMUFRJTSA8L3NwYW4+PC9iPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij51cGRhdGU8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgotICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5VcGRhdGUgSEFMX0xQVElNX1RpbWVPdXRfU3RhcnRfPHNwYW4gY2xhc3M9ImdyYW1lIj5JVCg8L3NwYW4+KQotICAgICAgICAgIGFuZCBIQUxfTFBUSU1fQ291bnRlcl9TdGFydF9JVCggKSBBUElzIHRvIGNvbmZpZ3VyZSBXYWtlVXAgVGltZXIgRVhUSQotICAgICAgICAgIGludGVycnVwdCB0byBiZSBhYmxlIHRvIHdha2V1cCBNQ1UgZnJvbSBsb3cgcG93ZXIgbW9kZSBieSBwcmVzc2luZwotICAgICAgICAgIHRoZSBFWFRJIGxpbmUgPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVwZGF0ZSBIQUxfTFBUSU1fVGltZU91dF9TdG9wXzxzcGFuIGNsYXNzPSJncmFtZSI+SVQoPC9zcGFuPikKLSAgICAgICAgICBhbmQgSEFMX0xQVElNX0NvdW50ZXJfU3RvcF9JVCggKSBBUElzIHRvIGRpc2FibGUgV2FrZVVwIFRpbWVyIEVYVEkKLSAgICAgICAgICBpbnRlcnJ1cHQgPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgIDwvdWw+Ci0gICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMIExUREMgPC9zcGFuPjwvYj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+dXBkYXRlPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0iY2lyY2xlIj4KLSAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlIEhBTF9MVERDXzxzcGFuIGNsYXNzPSJncmFtZSI+SVJRSGFuZGxlcig8L3NwYW4+KQotICAgICAgICAgIHRvIG1hbmFnZSB0aGUgY2FzZSBvZiByZWxvYWQgaW50ZXJydXB0PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkFkZCBMVERDIGV4dGVuc2lvbiBkcml2ZXIgbmVlZGVkIHdpdGggPHNwYW4gY2xhc3M9ImdyYW1lIj5EU0k8L3NwYW4+PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkFkZCBIQUxfTFREQ188c3BhbiBjbGFzcz0iZ3JhbWUiPlNldFBpdGNoKDwvc3Bhbj4pCi0gICAgICAgICAgZnVuY3Rpb24gZm9yIHBpdGNoIHJlY29uZmlndXJhdGlvbjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5BZGQgbmV3IGNhbGxiYWNrIEFQSSBIQUxfTFREQ188c3BhbiBjbGFzcz0iZ3JhbWUiPlJlbG9hZEV2ZW50Q2FsbGJhY2soPC9zcGFuPik8L3NwYW4+PHNwYW4gc3R5bGU9IiI+IDxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkFkZCBIQUxfTFREQ188c3BhbiBjbGFzcz0iZ3JhbWUiPlJlbG9hZCg8L3NwYW4+KSB0bwotICAgICAgICAgIGNvbmZpZ3VyZSBMVERDIHJlbG9hZCBmZWF0dXJlPC9zcGFuPjxzcGFuIHN0eWxlPSIiPiA8bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5BZGQgbmV3IE5vIFJlbG9hZCBMVERDIHZhcmlhbnQgPHNwYW4gY2xhc3M9ImdyYW1lIj5BUElzPC9zcGFuPjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJzcXVhcmUiPgotICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMX0xURENfQ29uZmlnTGF5ZXJfPHNwYW4gY2xhc3M9ImdyYW1lIj5Ob1JlbG9hZCg8L3NwYW4+KQotICAgICAgICAgICB0byBjb25maWd1cmUgdGhlIExUREMgTGF5ZXIgYWNjb3JkaW5nIHRvIHRoZSBzcGVjaWZpZWQgd2l0aG91dAotICAgICAgICAgICByZWxvYWRpbmc8L3NwYW4+PHNwYW4gc3R5bGU9IiI+Ci0gICAgICAgICAgIDxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUxfTFREQ19TZXRXaW5kb3dTaXplXzxzcGFuIGNsYXNzPSJncmFtZSI+Tm9SZWxvYWQoPC9zcGFuPikKLSAgICAgICAgICAgdG8gc2V0IHRoZSBMVERDIHdpbmRvdyBzaXplIHdpdGhvdXQgcmVsb2FkaW5nPC9zcGFuPjxzcGFuIHN0eWxlPSIiPiA8bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMX0xURENfU2V0V2luZG93UG9zaXRpb25fPHNwYW4gY2xhc3M9ImdyYW1lIj5Ob1JlbG9hZCg8L3NwYW4+KQotICAgICAgICAgICB0byBzZXQgdGhlIExUREMgd2luZG93IHBvc2l0aW9uIHdpdGhvdXQgcmVsb2FkaW5nPC9zcGFuPjxzcGFuIHN0eWxlPSIiPiA8bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMX0xURENfU2V0UGl4ZWxGb3JtYXRfPHNwYW4gY2xhc3M9ImdyYW1lIj5Ob1JlbG9hZCg8L3NwYW4+KQotICAgICAgICAgICB0byByZWNvbmZpZ3VyZSB0aGUgcGl4ZWwgZm9ybWF0IHdpdGhvdXQgcmVsb2FkaW5nPC9zcGFuPjxzcGFuIHN0eWxlPSIiPiA8bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMX0xURENfU2V0QWxwaGFfPHNwYW4gY2xhc3M9ImdyYW1lIj5Ob1JlbG9hZCg8L3NwYW4+KQotICAgICAgICAgICB0byByZWNvbmZpZ3VyZSB0aGUgbGF5ZXIgYWxwaGEgdmFsdWUgd2l0aG91dCByZWxvYWRpbmc8L3NwYW4+PHNwYW4gc3R5bGU9IiI+IDxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUxfTFREQ19TZXRBZGRyZXNzXzxzcGFuIGNsYXNzPSJncmFtZSI+Tm9SZWxvYWQoPC9zcGFuPikKLSAgICAgICAgICAgdG8gcmVjb25maWd1cmUgdGhlIGZyYW1lIGJ1ZmZlciBBZGRyZXNzIHdpdGhvdXQgcmVsb2FkaW5nPC9zcGFuPjxzcGFuIHN0eWxlPSIiPiA8bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMX0xURENfU2V0UGl0Y2hfPHNwYW4gY2xhc3M9ImdyYW1lIj5Ob1JlbG9hZCg8L3NwYW4+KQotICAgICAgICAgICB0byByZWNvbmZpZ3VyZSB0aGUgcGl0Y2ggZm9yIHNwZWNpZmljIGNhc2VzPC9zcGFuPjxzcGFuIHN0eWxlPSIiPiA8bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMX0xURENfQ29uZmlnQ29sb3JLZXlpbmdfPHNwYW4gY2xhc3M9ImdyYW1lIj5Ob1JlbG9hZCg8L3NwYW4+KQotICAgICAgICAgICB0byBjb25maWd1cmUgdGhlIGNvbG9yIGtleWluZyB3aXRob3V0IHJlbG9hZGluZzwvc3Bhbj48c3BhbiBzdHlsZT0iIj4gPG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTF9MVERDX0VuYWJsZUNvbG9yS2V5aW5nXzxzcGFuIGNsYXNzPSJncmFtZSI+Tm9SZWxvYWQoPC9zcGFuPikKLSAgICAgICAgICAgdG8gZW5hYmxlIHRoZSBjb2xvciBrZXlpbmcgd2l0aG91dCByZWxvYWRpbmc8L3NwYW4+PHNwYW4gc3R5bGU9IiI+IDxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUxfTFREQ19EaXNhYmxlQ29sb3JLZXlpbmdfPHNwYW4gY2xhc3M9ImdyYW1lIj5Ob1JlbG9hZCg8L3NwYW4+KQotICAgICAgICAgICB0byBkaXNhYmxlIHRoZSBjb2xvciBrZXlpbmcgd2l0aG91dCByZWxvYWRpbmc8L3NwYW4+PHNwYW4gc3R5bGU9IiI+IDxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUxfTFREQ19FbmFibGVDTFVUXzxzcGFuIGNsYXNzPSJncmFtZSI+Tm9SZWxvYWQoPC9zcGFuPikKLSAgICAgICAgICAgdG8gZW5hYmxlIHRoZSBjb2xvciBsb29rdXAgdGFibGUgd2l0aG91dCByZWxvYWRpbmc8L3NwYW4+PHNwYW4gc3R5bGU9IiI+IDxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUxfTFREQ19EaXNhYmxlQ0xVVF88c3BhbiBjbGFzcz0iZ3JhbWUiPk5vUmVsb2FkKDwvc3Bhbj4pCi0gICAgICAgICAgIHRvIGRpc2FibGUgdGhlIGNvbG9yIGxvb2t1cCB0YWJsZSB3aXRob3V0IHJlbG9hZGluZzwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48aT48dT48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+Tm90ZTo8L3NwYW4+PC91PjwvaT48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+Ci0gICAgICAgICAgIFZhcmlhbnQgZnVuY3Rpb25zIHdpdGggk19Ob1JlbG9hZJQgcG9zdCBmaXggYWxsb3dzIHRvIHNldCB0aGUgTFREQwotICAgICAgICAgICBjb25maWd1cmF0aW9uL3NldHRpbmdzIHdpdGhvdXQgaW1tZWRpYXRlIHJlbG9hZC4gVGhpcyBpcyB1c2VmdWwgaW4KLSAgICAgICAgICAgY2FzZSB3aGVuIHRoZSBwcm9ncmFtIHJlcXVpcmVzIHRvIG1vZGlmeSBzZXZlcmFsIExUREMgc2V0dGluZ3MgKG9uCi0gICAgICAgICAgIG9uZSBvciBib3RoIGxheWVycykgdGhlbiBhcHBseWluZyAocmVsb2FkKSB0aGVzZSBzZXR0aW5ncyBpbiBvbmUKLSAgICAgICAgICAgc2hvdCBieSBjYWxsaW5nIHRoZSBmdW5jdGlvbiCTSEFMX0xURENfPHNwYW4gY2xhc3M9ImdyYW1lIj5SZWxvYWQ8L3NwYW4+lDwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgPC91bD4KLSAgICAgPC91bD4KLSAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwgTk9SPC9zcGFuPjwvYj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+Ci0gICAgICAgICB1cGRhdGU8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgotICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5VcGRhdGUgTk9SX0FERFJfU0hJRlQgbWFjcm8gPHNwYW4gY2xhc3M9ImdyYW1lIj5pbXBsZW1lbnRhdGlvbjwvc3Bhbj48L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgPC91bD4KLSAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwgUENEPC9zcGFuPjwvYj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+Ci0gICAgICAgICB1cGRhdGU8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgotICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5VcGRhdGUgSEFMX1BDRF88c3BhbiBjbGFzcz0iZ3JhbWUiPklSUUhhbmRsZXIoPC9zcGFuPikKLSAgICAgICAgICB0byBnZXQgSENMSyBmcmVxdWVuY3kgYmVmb3JlIHNldHRpbmcgVFJEVCB2YWx1ZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICA8L3VsPgotICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTCBRU1BJIDwvc3Bhbj48L2I+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+Ci0gICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVwZGF0ZSB0byBtYW5hZ2UgUVNQSSBlcnJvciBtYW5hZ2VtZW50IGR1cmluZyBETUEgPHNwYW4gY2xhc3M9ImdyYW1lIj5wcm9jZXNzPC9zcGFuPjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5JbXByb3ZlIHRoZSBETUEgdHJhbnNtaXQgcHJvY2VzcyBieSB1c2luZyBRU1BJIFRDCi0gICAgICAgICAgaW50ZXJydXB0IGluc3RlYWQgb2Ygd2FpdGluZyBsb29wIG9uIFRDIGZsYWcgdW5kZXIgRE1BIElTUjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5UaGVzZSB0d28gaW1wcm92ZW1lbnRzIHJlcXVpcmUgdGhlIGZvbGxvd2luZwotICAgICAgICAgIHVwZGF0ZXMgb24gdXNlciBhcHBsaWNhdGlvbjo8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0ic3F1YXJlIj4KLSAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkNvbmZpZ3VyZSBhbmQgZW5hYmxlIHRoZSBRU1BJIElSUSBpbiBIQUxfUVNQSV88c3BhbiBjbGFzcz0iZ3JhbWUiPk1zcEluaXQoPC9zcGFuPikgZnVuY3Rpb248L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkluIHN0bTMyZjd4eF9pdC5jIGZpbGUsIFFTUElfPHNwYW4gY2xhc3M9ImdyYW1lIj5JUlFIYW5kbGVyKDwvc3Bhbj4pCi0gICAgICAgICAgIGZ1bmN0aW9uOiBhZGQgYSBjYWxsIHRvIEhBTF9RU1BJX0lSUUhhbmRsZXIoKSBmdW5jdGlvbjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+QWRkIGFuZCBjdXN0b21pemUgdGhlIEVycm9yIENhbGxiYWNrIEFQSToKLSAgICAgICAgICAgSEFMX1FTUElfPHNwYW4gY2xhc3M9ImdyYW1lIj5FcnJvckNhbGxiYWNrKDwvc3Bhbj4pPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICA8L3VsPgotICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5BZGQgdGhlIG1hbmFnZW1lbnQgb2Ygbm9uLWJsb2NraW5nIHRyYW5zZmVyIGFib3J0Ci0gICAgICAgICAgc2VydmljZTombmJzcDtIQUxfUVNQSV9BYm9ydF88c3BhbiBjbGFzcz0iZ3JhbWUiPklUKDwvc3Bhbj4pLiBJbiB0aGlzCi0gICAgICAgICAgY2FzZSB0aGUgdXNlciBtdXN0Ojwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJzcXVhcmUiPgotICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+QWRkIG5ldyBjYWxsYmFjayBIQUxfUVNQSV88c3BhbiBjbGFzcz0iZ3JhbWUiPkFib3J0Q3BsdENhbGxiYWNrKDwvc3Bhbj4pCi0gICAgICAgICAgIHRvIGluZm9ybSB1c2VyIGF0IHRoZSBlbmQgb2YgYWJvcnQgcHJvY2Vzczwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+QSBuZXcgdmFsdWUgb2YgU3RhdGUgaW4gdGhlIEhBTF9RU1BJX1N0YXRlVHlwZURlZgotICAgICAgICAgICBwcm92aWRlcyB0aGUgY3VycmVudCBzdGF0ZSBkdXJpbmcgdGhlIGFib3J0IDxzcGFuIGNsYXNzPSJncmFtZSI+cGhhc2U8L3NwYW4+PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICA8L3VsPgotICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5Qb2xsaW5nIG1hbmFnZW1lbnQgdXBkYXRlOjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJzcXVhcmUiPgotICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VGhlIFRpbWVvdXQgdmFsdWUgdXNlciBtdXN0IGJlIGVzdGltYXRlZCBmb3IgdGhlCi0gICAgICAgICAgIG92ZXJhbGwgcHJvY2VzcyBkdXJhdGlvbjogPHNwYW4gY2xhc3M9ImdyYW1lIj50aGU8L3NwYW4+IFRpbWVvdXQKLSAgICAgICAgICAgbWVhc3VyZW1lbnQgaXMgY3VtdWxhdGl2ZS4mbmJzcDs8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgIDwvdWw+Ci0gICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlJlZmVyIHRvIHRoZSBmb2xsb3dpbmcgZXhhbXBsZXMsIHdoaWNoIGRlc2NyaWJlCi0gICAgICAgICAgdGhlIGNoYW5nZXM6PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9InNxdWFyZSI+Ci0gICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5RU1BJX1JlYWRXcml0ZV9ETUE8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlFTUElfTWVtb3J5TWFwcGVkPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5RU1BJX0V4ZWN1dGVJblBsYWNlPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICA8L3VsPgotICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5BZGQgdHdvIG5ldyBBUElzIGZvciB0aGUgUVNQSSBmaWZvIHRocmVzaG9sZDo8L3NwYW4+PHNwYW4gc3R5bGU9IiI+IDxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9InNxdWFyZSI+Ci0gICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUxfUVNQSV88c3BhbiBjbGFzcz0iZ3JhbWUiPlNldEZpZm9UaHJlc2hvbGQoPC9zcGFuPik6Ci0gICAgICAgICAgIGNvbmZpZ3VyZSB0aGUgRklGTyB0aHJlc2hvbGQgb2YgdGhlIFFTUEk8L3NwYW4+PHNwYW4gc3R5bGU9IiI+IDxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUxfUVNQSV88c3BhbiBjbGFzcz0iZ3JhbWUiPkdldEZpZm9UaHJlc2hvbGQoPC9zcGFuPik6Ci0gICAgICAgICAgIGdpdmUgdGhlIGN1cnJlbnQgRklGTyB0aHJlc2hvbGQ8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgIDwvdWw+Ci0gICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkZpeCB3cm9uZyBkYXRhIHNpemUgbWFuYWdlbWVudCBpbgotICAgICAgICAgIEhBTF9RU1BJX1JlY2VpdmVfPHNwYW4gY2xhc3M9ImdyYW1lIj5ETUEoPC9zcGFuPik8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgPC91bD4KLSAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwgUkNDIDwvc3Bhbj48L2I+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+Ci0gICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVwZGF0ZSBIQUxfUkNDXzxzcGFuIGNsYXNzPSJncmFtZSI+UGVyaXBoQ0xLQ29uZmlnKDwvc3Bhbj4pCi0gICAgICAgICAgZnVuY3Rpb24gdG8gYWRqdXN0IHRoZSBTeXN0ZW1Db3JlQ2xvY2s8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+T3B0aW1pemUgSEFMX1JDQ188c3BhbiBjbGFzcz0iZ3JhbWUiPkNsb2NrQ29uZmlnKDwvc3Bhbj4pCi0gICAgICAgICAgZnVuY3Rpb24gY29kZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5PcHRpbWl6ZSBpbnRlcm5hbCBvc2NpbGxhdG9ycyBhbmQgUExMIHN0YXJ0dXAgPHNwYW4gY2xhc3M9ImdyYW1lIj50aW1lczwvc3Bhbj48L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgPC91bD4KLSAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwgUlRDIDwvc3Bhbj48L2I+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZSZuYnNwOzwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+Ci0gICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVwZGF0ZSBIQUxfUlRDXzxzcGFuIGNsYXNzPSJncmFtZSI+R2V0VGltZSg8L3NwYW4+KSB3aXRoCi0gICAgICAgICAgcHJvcGVyICdTdWJTZWNvbmRzJyBhbmQgJ1NlY29uZEZyYWN0aW9uJyBtYW5hZ2VtZW50PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgIDwvdWw+Ci0gICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMIFNBSSA8L3NwYW4+PC9iPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij51cGRhdGUmbmJzcDs8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgotICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5VcGRhdGUgU0FJIHN0YXRlIGluIGNhc2Ugb2YgVElNRU9VVCBlcnJvciB3aXRoaW4KLSAgICAgICAgICB0aGUgSEFMX1NBSV88c3BhbiBjbGFzcz0iZ3JhbWUiPlRyYW5zbWl0KDwvc3Bhbj4pIC8gSEFMX1NBSV9SZWNlaXZlKCk8L3NwYW4+PHNwYW4gc3R5bGU9IiI+IDxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVwZGF0ZSBIQUxfU0FJX0lSUUhhbmRsZXI6PC9zcGFuPjxzcGFuIHN0eWxlPSIiPiA8bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJzcXVhcmUiPgotICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+QWRkIGVycm9yIG1hbmFnZW1lbnQgaW4gY2FzZSBETUEgZXJyb3JzIHRocm91Z2ggPHNwYW4gY2xhc3M9ImdyYW1lIj5YZmVyQWJvcnRDYWxsYmFjayg8L3NwYW4+KSBhbmQgSEFMX0RNQV9BYm9ydF9JVCgpPC9zcGFuPjxzcGFuIHN0eWxlPSIiPiA8bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+QWRkIGVycm9yIG1hbmFnZW1lbnQgaW4gY2FzZSBvZiA8c3BhbiBjbGFzcz0iZ3JhbWUiPklUPC9zcGFuPjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgPC91bD4KLSAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+TW92ZSBTQUlfPHNwYW4gY2xhc3M9ImdyYW1lIj5CbG9ja1N5bmNocm9Db25maWcoPC9zcGFuPikKLSAgICAgICAgICBhbmQgU0FJX0dldElucHV0Q2xvY2soKSBmdW5jdGlvbnMgdG8gc3RtMzJmN3h4X2hhbF9zYWkuYy8uaCBmaWxlcyAoZXh0ZW5zaW9uCi0gICAgICAgICAgZmlsZXMgYXJlIGtlcHQgZW1wdHkgZm9yIHByb2plY3RzIGNvbXBhdGliaWxpdHkgcmVhc29uKTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICA8L3VsPgotICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTCBTUERJRlJYIDwvc3Bhbj48L2I+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+Ci0gICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPk92ZXJhbGwgPHNwYW4gY2xhc3M9ImdyYW1lIj5kcml2ZXI8L3NwYW4+IHVwZGF0ZSBmb3IKLSAgICAgICAgICB3YWl0IG9uIGZsYWcgbWFuYWdlbWVudCBvcHRpbWl6YXRpb24gPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgIDwvdWw+Ci0gICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMIFNQSSA8L3NwYW4+PC9iPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij51cGRhdGU8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgotICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5PdmVyYWxsIGRyaXZlciBvcHRpbWl6YXRpb24gdG8gaW1wcm92ZSBwZXJmb3JtYW5jZQotICAgICAgICAgIGluIHBvbGxpbmcvaW50ZXJydXB0IG1vZGUgdG8gcmVhY2ggbWF4aW11bSBwZXJpcGhlcmFsIDxzcGFuIGNsYXNzPSJncmFtZSI+ZnJlcXVlbmN5PC9zcGFuPjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJzcXVhcmUiPgotICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+UG9sbGluZyBtb2RlOjwvc3Bhbj48c3BhbiBzdHlsZT0iIj4gPG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgICA8dWwgdHlwZT0ic3F1YXJlIj4KLSAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSIiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5SZXBsYWNlIHRoZSB1c2Ugb2YgU1BJXzxzcGFuIGNsYXNzPSJncmFtZSI+V2FpdE9uRmxhZ1VuaXRUaW1lb3V0KDwvc3Bhbj4pIGZ1bmN0aW9uIGJ5Ci0gICAgICAgICAgICAiaWYiIHN0YXRlbWVudCB0byBjaGVjayBvbiBSWE5FL1RYRSBmbGFnZSB3aGlsZQotICAgICAgICAgICAgdHJhbnNmZXJyaW5nIGRhdGE8L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICAgPC91bD4KLSAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPiZuYnNwO0ludGVycnVwdCBtb2RlOjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgIDx1bCB0eXBlPSJzcXVhcmUiPgotICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9IiI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPk1pbmltaXplIGFjY2VzcyBvbiBTUEkgPHNwYW4gY2xhc3M9ImdyYW1lIj5yZWdpc3RlcnM8L3NwYW4+PC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7Ij4gPG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgICA8L3VsPgotICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+QWxsIG1vZGVzOjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0ic3F1YXJlIj4KLSAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5BZGQgdGhlIFVTRV9TUElfQ1JDCi0gICAgICAgICAgICBzd2l0Y2ggdG8gbWluaW1pemUgdGhlIG51bWJlciBvZiBzdGF0ZW1lbnRzIHdoZW4gQ1JDIGNhbGN1bGF0aW9uIGlzCi0gICAgICAgICAgICA8c3BhbiBjbGFzcz0iZ3JhbWUiPmRpc2FibGVkPC9zcGFuPjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVwZGF0ZSZuYnNwO3RpbWVvdXQKLSAgICAgICAgICAgIG1hbmFnZW1lbnQgdG8gY2hlY2sgb24gZ2xvYmFsIDxzcGFuIGNsYXNzPSJncmFtZSI+cHJvY2Vzc2VzPC9zcGFuPjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVwZGF0ZSBlcnJvciBjb2RlCi0gICAgICAgICAgICBtYW5hZ2VtZW50IGluIGFsbCBwcm9jZXNzZXM8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgICA8L3VsPgotICAgICAgPC91bD4KLSAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlIERNQSBwcm9jZXNzOjwvc3Bhbj48c3BhbiBzdHlsZT0iIj4gPC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJzcXVhcmUiPgotICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+QWRkIHRoZSBtYW5hZ2VtZW50IG9mIFNQSSBwZXJpcGhlcmFsIGVycm9ycwotICAgICAgICAgICBkdXJpbmcgRE1BIHByb2Nlc3MuIFRoaXMgcmVxdWlyZXMgdGhlIGZvbGxvd2luZyB1cGRhdGVzIGluIHRoZSB1c2VyCi0gICAgICAgICAgIGFwcGxpY2F0aW9uOjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0ic3F1YXJlIj4KLSAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5Db25maWd1cmUgYW5kIGVuYWJsZSB0aGUKLSAgICAgICAgICAgIFNQSSBJUlEgaW4gSEFMX1NQSV88c3BhbiBjbGFzcz0iZ3JhbWUiPk1zcEluaXQoPC9zcGFuPikgZnVuY3Rpb248L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5JbiBzdG0zMmY3eHhfaXQuYyBmaWxlLAotICAgICAgICAgICAgU1BJXzxzcGFuIGNsYXNzPSJncmFtZSI+SVJRSGFuZGxlcig8L3NwYW4+KSBmdW5jdGlvbjogYWRkIGEgY2FsbCB0bwotICAgICAgICAgICAgSEFMX1NQSV9JUlFIYW5kbGVyKCkgZnVuY3Rpb248L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5BZGQgYW5kIGN1c3RvbWl6ZSB0aGUKLSAgICAgICAgICAgIEVycm9yIENhbGxiYWNrIEFQSTogSEFMX1NQSV88c3BhbiBjbGFzcz0iZ3JhbWUiPkVycm9yQ2FsbGJhY2soPC9zcGFuPik8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5SZWZlciB0byB0aGUgZm9sbG93aW5nCi0gICAgICAgICAgICBleGFtcGxlIHdoaWNoIGRlc2NyaWJlIHRoZSBjaGFuZ2VzOiBTUElfRnVsbER1cGxleF9Db21ETUE8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgICA8L3VsPgotICAgICAgPC91bD4KLSAgICAgPC91bD4KLSAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwgVElNIDwvc3Bhbj48L2I+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZSZuYnNwOzwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+Ci0gICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVwZGF0ZSBIQUxfVElNXzxzcGFuIGNsYXNzPSJncmFtZSI+Q29uZmlnT0NyZWZDbGVhcig8L3NwYW4+KQotICAgICAgICAgIGZ1bmN0aW9uIGZvciBwcm9wZXIgY29uZmlndXJhdGlvbiBvZiB0aGUgU01DUiByZWdpc3Rlcjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5BZGQgbmV3IGZ1bmN0aW9uIEhBTF9USU1FeF88c3BhbiBjbGFzcz0iZ3JhbWUiPkNvbmZpZ0JyZWFrSW5wdXQoPC9zcGFuPikKLSAgICAgICAgICB0byBjb25maWd1cmUgdGhlIGJyZWFrIGlucHV0IHNvdXJjZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICA8L3VsPgotICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTCBVQVJULCBVU0FSVCwgU01BUlRDQVJEIGFuZCBJUkRBIDwvc3Bhbj48L2I+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPihyZWZlcmVuY2VkIGFzIDxpPlBQUDwvaT4gaGVyZSBiZWxvdyk8aT4gPC9pPjxzcGFuIGNsYXNzPSJncmFtZSI+dXBkYXRlPC9zcGFuPjwvc3Bhbj48c3BhbiBzdHlsZT0iIj4gPC9zcGFuPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij48bzpwPjwvbzpwPjwvc3Bhbj48L2I+PC9saT4KLSAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgotICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5VcGRhdGUgUG9sbGluZyBtYW5hZ2VtZW50Ojwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJzcXVhcmUiPgotICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VGhlIHVzZXIgVGltZW91dCB2YWx1ZSZuYnNwO211c3QgYmUgZXN0aW1hdGVkIGZvcgotICAgICAgICAgICB0aGUgb3ZlcmFsbCBwcm9jZXNzIGR1cmF0aW9uOiA8c3BhbiBjbGFzcz0iZ3JhbWUiPnRoZTwvc3Bhbj4gVGltZW91dAotICAgICAgICAgICBtZWFzdXJlbWVudCBpcyBjdW11bGF0aXZlPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICA8L3VsPgotICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5VcGRhdGUgRE1BIHByb2Nlc3M6PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9InNxdWFyZSI+Ci0gICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5VcGRhdGUgdGhlIG1hbmFnZW1lbnQgb2YgUFBQIHBlcmlwaGVyYWwgZXJyb3JzCi0gICAgICAgICAgIGR1cmluZyBETUEgcHJvY2Vzcy4gVGhpcyByZXF1aXJlcyB0aGUgZm9sbG93aW5nIHVwZGF0ZXMgaW4gdXNlcgotICAgICAgICAgICBhcHBsaWNhdGlvbjo8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9InNxdWFyZSI+Ci0gICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+Q29uZmlndXJlIGFuZCBlbmFibGUgdGhlCi0gICAgICAgICAgICBQUFAgSVJRIGluIEhBTF9QUFBfPHNwYW4gY2xhc3M9ImdyYW1lIj5Nc3BJbml0KDwvc3Bhbj4pIGZ1bmN0aW9uPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SW4gc3RtMzJmN3h4X2l0LmMgZmlsZSwKLSAgICAgICAgICAgIFBQUF88c3BhbiBjbGFzcz0iZ3JhbWUiPklSUUhhbmRsZXIoPC9zcGFuPikgZnVuY3Rpb246IGFkZCBhIGNhbGwgdG8KLSAgICAgICAgICAgIEhBTF9QUFBfSVJRSGFuZGxlcigpIGZ1bmN0aW9uPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+QWRkIGFuZCBjdXN0b21pemUgdGhlCi0gICAgICAgICAgICBFcnJvciBDYWxsYmFjayBBUEk6IEhBTF9QUFBfPHNwYW4gY2xhc3M9ImdyYW1lIj5FcnJvckNhbGxiYWNrKDwvc3Bhbj4pPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICAgPC91bD4KLSAgICAgIDwvdWw+Ci0gICAgIDwvdWw+Ci0gICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMIFdXREcgPC9zcGFuPjwvYj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+dXBkYXRlJm5ic3A7PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0iY2lyY2xlIj4KLSAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+T3ZlcmFsbCByZXdvcmsgb2YgdGhlIGRyaXZlciBmb3IgbW9yZSBlZmZpY2llbnQKLSAgICAgICAgICBpbXBsZW1lbnRhdGlvbjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJzcXVhcmUiPgotICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+UmVtb3ZlIHRoZSBmb2xsb3dpbmcgQVBJczo8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9InNxdWFyZSI+Ci0gICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMX1dXREdfPHNwYW4gY2xhc3M9ImdyYW1lIj5TdGFydCg8L3NwYW4+KTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTF9XV0RHX1N0YXJ0XzxzcGFuIGNsYXNzPSJncmFtZSI+SVQoPC9zcGFuPik8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUxfV1dER188c3BhbiBjbGFzcz0iZ3JhbWUiPk1zcERlSW5pdCg8L3NwYW4+KTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTF9XV0RHXzxzcGFuIGNsYXNzPSJncmFtZSI+R2V0U3RhdGUoPC9zcGFuPik8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgICA8L3VsPgotICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlIGltcGxlbWVudGF0aW9uOjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0ic3F1YXJlIj4KLSAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUxfV1dER188c3BhbiBjbGFzcz0iZ3JhbWUiPkluaXQoPC9zcGFuPik8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJzcXVhcmUiPgotICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5BJm5ic3A7bmV3IHBhcmFtZXRlciBpbgotICAgICAgICAgICAgIHRoZSBJbml0IFN0cnVjdHVyZTombmJzcDtFV0lNb2RlPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICAgIDwvdWw+Ci0gICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMX1dXREdfPHNwYW4gY2xhc3M9ImdyYW1lIj5Nc3BJbml0KDwvc3Bhbj4pPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMX1dXREdfPHNwYW4gY2xhc3M9ImdyYW1lIj5SZWZyZXNoKDwvc3Bhbj4pJm5ic3A7PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0ic3F1YXJlIj4KLSAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VGhpcyBmdW5jdGlvbiBpbnN1cmVzCi0gICAgICAgICAgICAgdGhlIHJlbG9hZCBvZiB0aGUgPHNwYW4gY2xhc3M9ImdyYW1lIj5jb3VudGVyPC9zcGFuPjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5UaGUgImNvdW50ZXIiCi0gICAgICAgICAgICAgcGFyYW1ldGVyIGhhcyBiZWVuIDxzcGFuIGNsYXNzPSJncmFtZSI+cmVtb3ZlZDwvc3Bhbj48L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgICAgPC91bD4KLSAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUxfV1dER188c3BhbiBjbGFzcz0iZ3JhbWUiPklSUUhhbmRsZXIoPC9zcGFuPik8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUxfV1dER188c3BhbiBjbGFzcz0iZ3JhbWUiPkVhcmx5V2FrZXVwQ2FsbGJhY2soPC9zcGFuPikgaXMgdGhlIG5ldyBwcm90b3R5cGUgb2YKLSAgICAgICAgICAgIEhBTF9XV0RHX1dha2V1cENhbGxiYWNrKCk8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgICA8L3VsPgotICAgICAgPC91bD4KLSAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+UmVmZXIgdG8gdGhlIGZvbGxvd2luZyBleGFtcGxlIHRvIGlkZW50aWZ5IHRoZQotICAgICAgICAgIGNoYW5nZXM6IFdXREdfPHNwYW4gY2xhc3M9ImdyYW1lIj5FeGFtcGxlPC9zcGFuPjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICA8L3VsPgotICAgIDwvdWw+Ci0gICAgPGgzIHN0eWxlPSJiYWNrZ3JvdW5kOiByZ2IoNTEsIDEwMiwgMjU1KSBub25lIHJlcGVhdCBzY3JvbGwgMCUgNTAlOyBtYXJnaW4tcmlnaHQ6IDUwMHB0OyAtbW96LWJhY2tncm91bmQtY2xpcDogLW1vei1pbml0aWFsOyAtbW96LWJhY2tncm91bmQtb3JpZ2luOiAtbW96LWluaXRpYWw7IC1tb3otYmFja2dyb3VuZC1pbmxpbmUtcG9saWN5OiAtbW96LWluaXRpYWw7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7QXJpYWwmcXVvdDssc2Fucy1zZXJpZjsgY29sb3I6IHdoaXRlOyI+VjEuMC40IC8KLSAgICAwOS1EZWNlbWJlci0yMDE1PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvaDM+Ci0gICAgPHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbjogNC41cHQgMGluIDQuNXB0IDAuMjVpbjsiPjxiPjx1PjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7IGNvbG9yOiBibGFjazsiPk1haW4gQ2hhbmdlczwvc3Bhbj48L3U+PC9iPjwvcD4KLSAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImRpc2MiPgotICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTCBHZW5lcmljIDwvc3Bhbj48L2I+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+Ci0gICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVwZGF0ZSBIQUwgd2VhayBlbXB0eSBjYWxsYmFja3MgdG8gcHJldmVudCB1bnVzZWQKLSAgICAgICAgICBhcmd1bWVudCBjb21waWxhdGlvbiB3YXJuaW5ncyB3aXRoIHNvbWUgY29tcGlsZXJzIGJ5IGNhbGxpbmcgdGhlCi0gICAgICAgICAgZm9sbG93aW5nIGxpbmU6PC9zcGFuPjxzcGFuIHN0eWxlPSIiPgotICAgICAgICAgIDxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9InNxdWFyZSI+Ci0gICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIGNsYXNzPSJncmFtZSI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVOVVNFRCg8L3NwYW4+PC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5ocHBwKTs8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgIDwvdWw+Ci0gICAgIDwvdWw+Ci0gICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMIEVUSDwvc3Bhbj48L2I+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPgotICAgICAgICAgdXBkYXRlJm5ic3A7PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0iY2lyY2xlIj4KLSAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlIEhBTF9FVEhfPHNwYW4gY2xhc3M9ImdyYW1lIj5Jbml0KDwvc3Bhbj4pCi0gICAgICAgICAgZnVuY3Rpb24gdG8gYWRkIHRpbWVvdXQgb24gdGhlIFNvZnR3YXJlIHJlc2V0IG1hbmFnZW1lbnQ8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgPC91bD4KLSAgICA8L3VsPgotICAgIDxoMyBzdHlsZT0iYmFja2dyb3VuZDogcmdiKDUxLCAxMDIsIDI1NSkgbm9uZSByZXBlYXQgc2Nyb2xsIDAlIDUwJTsgbWFyZ2luLXJpZ2h0OiA1MDBwdDsgLW1vei1iYWNrZ3JvdW5kLWNsaXA6IC1tb3otaW5pdGlhbDsgLW1vei1iYWNrZ3JvdW5kLW9yaWdpbjogLW1vei1pbml0aWFsOyAtbW96LWJhY2tncm91bmQtaW5saW5lLXBvbGljeTogLW1vei1pbml0aWFsOyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O0FyaWFsJnF1b3Q7LHNhbnMtc2VyaWY7IGNvbG9yOiB3aGl0ZTsiPlYxLjAuMyAvCi0gICAgMTMtTm92ZW1iZXItMjAxNTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2gzPgotICAgIDxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW46IDQuNXB0IDBpbiA0LjVwdCAwLjI1aW47Ij48Yj48dT48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyBjb2xvcjogYmxhY2s7Ij5NYWluIENoYW5nZXM8L3NwYW4+PC91PjwvYj48L3A+Ci0gICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJkaXNjIj4KLSAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5HZW5lcmFsIHVwZGF0ZXMgdG8gZml4IGtub3duIGRlZmVjdHMgYW5kCi0gICAgICAgICBlbmhhbmNlbWVudHMgPHNwYW4gY2xhc3M9ImdyYW1lIj5pbXBsZW1lbnRhdGlvbjwvc3Bhbj48L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5PbmUgY2hhbmdlIGRvbmUgb24gdGhlIEhBTCBDUllQIHJlcXVpcmVzIGFuIHVwZGF0ZQotICAgICAgICAgb24gdGhlIGFwcGxpY2F0aW9uIGNvZGUgYmFzZWQgb24gSEFMIFYxLjAuMjwvc3Bhbj48L2I+PHNwYW4gc3R5bGU9IiI+IDxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0iY2lyY2xlIj4KLSAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlIEhBTF9DUllQX0RFU0VDQl88c3BhbiBjbGFzcz0iZ3JhbWUiPkRlY3J5cHQoPC9zcGFuPikKLSAgICAgICAgICBBUEkgdG8gaW52ZXJ0IHBQbGFpbkRhdGEgYW5kIHBDeXBoZXJEYXRhIHBhcmFtZXRlcnM8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgPC91bD4KLSAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwgR2VuZXJpYyA8L3NwYW4+PC9iPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij51cGRhdGU8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgotICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5VcGRhdGUgSEFMIHdlYWsgZW1wdHkgY2FsbGJhY2tzIHRvIHByZXZlbnQgdW51c2VkCi0gICAgICAgICAgYXJndW1lbnQgY29tcGlsYXRpb24gd2FybmluZ3Mgd2l0aCBzb21lIGNvbXBpbGVycyBieSBjYWxsaW5nIHRoZQotICAgICAgICAgIGZvbGxvd2luZyBsaW5lOjwvc3Bhbj48c3BhbiBzdHlsZT0iIj4KLSAgICAgICAgICA8bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJzcXVhcmUiPgotICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBjbGFzcz0iZ3JhbWUiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5VTlVTRUQoPC9zcGFuPjwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+aHBwcCk7PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICA8L3VsPgotICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5SZW1vdmUgcmVmZXJlbmNlcyB0byBTVE0zMkN1YmVNWCBhbmQgTWljcm9YcGxvcmVyCi0gICAgICAgICAgZnJvbSBzdG0zMmY3eHhfaGFsX21zcF90ZW1wbGF0ZS5jIDxzcGFuIGNsYXNzPSJncmFtZSI+ZmlsZTwvc3Bhbj48L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgPC91bD4KLSAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwgQURDPC9zcGFuPjwvYj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+Ci0gICAgICAgICB1cGRhdGU8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgotICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5SZXBsYWNlIEFEQ19DSEFOTkVMX1RFTVBTRU5TT1IgZGVmaW5pdGlvbiBmcm9tCi0gICAgICAgICAgQURDX0NIQU5ORUxfMTYgdG8gQURDX0NIQU5ORUxfMTggJm5ic3A7PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVwZGF0ZSBIQUwgQURDIGRyaXZlciBzdGF0ZSBtYWNoaW5lIGZvciBjb2RlCi0gICAgICAgICAgZWZmaWNpZW5jeTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5BZGQgbmV3IGxpdGVyYWw6IEFEQ19JTkpFQ1RFRF9TT0ZUV0FSRV9TVEFSVCB0byBiZQotICAgICAgICAgIHVzZWQgYXMgcG9zc2libGUgdmFsdWUgZm9yIHRoZSBFeHRlcm5hbFRyaWdJbmplY0NvbnZFZGdlIHBhcmFtZXRlciBpbgotICAgICAgICAgIHRoZSBBRENfSW5pdFR5cGVEZWYgc3RydWN0dXJlIHRvIHNlbGVjdCB0aGUgQURDIHNvZnR3YXJlIHRyaWdnZXIKLSAgICAgICAgICBtb2RlLjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICA8L3VsPgotICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTCBDT1JURVggPC9zcGFuPjwvYj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+dXBkYXRlPC9zcGFuPjxzcGFuIHN0eWxlPSIiPiA8bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+Ci0gICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlJlbW92ZSBkdXBsaWNhdGlvbiBmb3IgX19IQUxfQ09SVEVYX1NZU1RJQ0tDTEtfPHNwYW4gY2xhc3M9ImdyYW1lIj5DT05GSUcoPC9zcGFuPikgbWFjcm88L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgPC91bD4KLSAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwgQ1JZUCA8L3NwYW4+PC9iPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij51cGRhdGU8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgotICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5VcGRhdGUgSEFMX0NSWVBfREVTRUNCXzxzcGFuIGNsYXNzPSJncmFtZSI+RGVjcnlwdCg8L3NwYW4+KQotICAgICAgICAgIEFQSSB0byBmaXggdGhlIGludmVydGVkIHBQbGFpbkRhdGEgYW5kIHBDeXBoZXJEYXRhIHBhcmFtZXRlcnMgaXNzdWUgPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgIDwvdWw+Ci0gICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMIEZMQVNIIDwvc3Bhbj48L2I+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+Ci0gICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVwZGF0ZSBPQl9JV0RHX1NUT1BfQUNUSVZFIGRlZmluaXRpb248L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlIE9CX1JEUF9MRVZFTF94IGRlZmluaXRpb24gYnkgcHJvcGVyIHZhbHVlczwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5VcGRhdGUgRkxBU0hfPHNwYW4gY2xhc3M9ImdyYW1lIj5NYXNzRXJhc2UoPC9zcGFuPikKLSAgICAgICAgICBmdW5jdGlvbiB0byBjb25zaWRlciB0aGUgdm9sdGFnZSByYW5nZSBwYXJhbWV0ZXIgaW4gdGhlIG1hc3MgZXJhc2UKLSAgICAgICAgICBjb25maWd1cmF0aW9uIDwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICA8L3VsPgotICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTCBSQ0M8L3NwYW4+PC9iPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij4KLSAgICAgICAgIHVwZGF0ZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+Ci0gICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZSB2YWx1ZXMgZm9yIExTRSBEcml2ZSBjYXBhYmlsaXR5IDxzcGFuIGNsYXNzPSJncmFtZSI+ZGVmaW5lczwvc3Bhbj48L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+dXBkYXRlIFBMTE4gbWluIHZhbHVlIDUwIGluc3RlYWQgb2YgPHNwYW4gY2xhc3M9ImdyYW1lIj4xMDA8L3NwYW4+PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPmFkZCBSQ0NfUExMSTJTUF9ESVZ4IGRlZmluZXMgZm9yIFBMTEkyU1AgY2xvY2sgPHNwYW4gY2xhc3M9ImdyYW1lIj5kaXZpZGVyPC9zcGFuPjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5VcGRhdGUgX19IQUxfUkNDX1VTQl9PVEdfRlNfQ0xLXzxzcGFuIGNsYXNzPSJncmFtZSI+RElTQUJMRSg8L3NwYW4+KQotICAgICAgICAgIG1hY3JvIHRvIHJlbW92ZSB0aGUgZGlzYWJsZSBvZiB0aGUgU1lTQ0ZHJm5ic3A7PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVwZGF0ZSBIQUxfUkNDRXhfPHNwYW4gY2xhc3M9ImdyYW1lIj5HZXRQZXJpcGhDTEtGcmVxKDwvc3Bhbj4pCi0gICAgICAgICAgZnVuY3Rpb24gZm9yIHByb3BlciBTQUkgY2xvY2sgY29uZmlndXJhdGlvbjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICA8L3VsPgotICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTCBTQUkgPC9zcGFuPjwvYj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+dXBkYXRlPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0iY2lyY2xlIj4KLSAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+dXBkYXRlIGZvciBwcm9wZXIgbWFuYWdlbWVudCBvZiB0aGUgZXh0ZXJuYWwKLSAgICAgICAgICBzeW5jaHJvbml6YXRpb24gaW5wdXQgPHNwYW4gY2xhc3M9ImdyYW1lIj5zZWxlY3Rpb248L3NwYW4+PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9InNxdWFyZSI+Ci0gICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij51cGRhdGUgb2YmbmJzcDtIQUxfU0FJX0luaXQgKCkgZnVuY2l0b248L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZSBkZWZpbml0aW9uIG9mIFNBSV9CbG9ja19TeW5jRXh0IGFuZAotICAgICAgICAgICBTQUlfQmxvY2tfU3luY2hyb25pemF0aW9uIGdyb3Vwczwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgPC91bD4KLSAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+dXBkYXRlIFNBSV9TTE9UQUNUSVZFXzxzcGFuIGNsYXNzPSJncmFtZSI+WAotICAgICAgICAgICZuYnNwO2RlZmluZXM8L3NwYW4+IHZhbHVlczwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij51cGRhdGUmbmJzcDtIQUxfU0FJXzxzcGFuIGNsYXNzPSJncmFtZSI+SW5pdCg8L3NwYW4+KQotICAgICAgICAgIGZ1bmN0aW9uIGZvciBwcm9wZXIgY29tcGFuZGluZyBtb2RlIG1hbmFnZW1lbnQ8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+dXBkYXRlIFNBSV9UcmFuc21pdF88c3BhbiBjbGFzcz0iZ3JhbWUiPklUeHhCaXQoPC9zcGFuPikKLSAgICAgICAgICBmdW5jdGlvbnMgdG8gYWRkIHRoZSBjaGVjayBvbiB0cmFuc2ZlciBjb3VudGVyIGJlZm9yZSB3cml0aW5nIG5ldwotICAgICAgICAgIGRhdGEgdG8gU0FJeF9EUiByZWdpc3RlcnM8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+dXBkYXRlIFNBSV88c3BhbiBjbGFzcz0iZ3JhbWUiPkZpbGxGaWZvKDwvc3Bhbj4pIGZ1bmN0aW9uCi0gICAgICAgICAgdG8gYXZvaWQgaXNzdWUgd2hlbiB0aGUgbnVtYmVyIG9mIGRhdGEgdG8gdHJhbnNtaXQgaXMgc21hbGxlciB0aGFuCi0gICAgICAgICAgdGhlIEZJRk8gc2l6ZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij51cGRhdGUgSEFMX1NBSV88c3BhbiBjbGFzcz0iZ3JhbWUiPkVuYWJsZVJ4TXV0ZU1vZGUoPC9zcGFuPikKLSAgICAgICAgICBmdW5jdGlvbiBmb3IgcHJvcGVyIG11dGUgbWFuYWdlbWVudDwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij51cGRhdGUgU0FJXzxzcGFuIGNsYXNzPSJncmFtZSI+SW5pdFBDTSg8L3NwYW4+KQotICAgICAgICAgIGZ1bmN0aW9uIHRvIHN1cHBvcnQgMjRiaXRzIGNvbmZpZ3VyYXRpb248L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgPC91bD4KLSAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwgU0QgPC9zcGFuPjwvYj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+dXBkYXRlPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0iY2lyY2xlIj4KLSAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+dXBkYXRlIEhBTF9TRF9HZXRfPHNwYW4gY2xhc3M9ImdyYW1lIj5DYXJkSW5mbyg8L3NwYW4+KQotICAgICAgICAgIHRvIHByb3Blcmx5IHN1cHBvcnQgaGlnaCBjYXBhY2l0eSBjYXJkczwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICA8L3VsPgotICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTCBTUERJRlJYIDwvc3Bhbj48L2I+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+Ci0gICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZSBTUERJRlJYXzxzcGFuIGNsYXNzPSJncmFtZSI+RE1BUnhDcGx0KDwvc3Bhbj4pCi0gICAgICAgICAgZnVuY3Rpb24gaW1wbGVtZW50YXRpb24gdG8mbmJzcDtjaGVjayBvbiBjaXJjdWxhciBtb2RlIGJlZm9yZQotICAgICAgICAgIGRpc2FibGluZyB0aGUgRE1BPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgIDwvdWw+Ci0gICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMIFRJTSA8L3NwYW4+PC9iPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij51cGRhdGU8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgotICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5VcGRhdGUgSEFMX1RJTV88c3BhbiBjbGFzcz0iZ3JhbWUiPkNvbmZpZ0Nsb2NrU291cmNlKDwvc3Bhbj4pCi0gICAgICAgICAgZnVuY3Rpb24gaW1wbGVtZW50YXRpb24gZm9yIHByb3BlciBwYXJhbWV0ZXJzIGNoZWNrPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgIDwvdWw+Ci0gICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMIFVBUlQ8L3NwYW4+PC9iPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij4KLSAgICAgICAgIHVwZGF0ZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+Ci0gICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVwZGF0ZSBfX0hBTF9VQVJUX0NMRUFSX0lUIG1hY3JvIGZvciBwcm9wZXIKLSAgICAgICAgICBmdW5jdGlvbm5pbmcmbmJzcDs8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgPC91bD4KLSAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5sbCBGTUM8L3NwYW4+PC9iPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij4KLSAgICAgICAgIHVwZGF0ZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+Ci0gICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPmFkZCBGTUNfUEFHRV9TSVpFXzUxMiBkZWZpbmU8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgPC91bD4KLSAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5sbCBTRE1NQzwvc3Bhbj48L2I+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPgotICAgICAgICAgdXBkYXRlPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0iY2lyY2xlIj4KLSAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+dXBkYXRlIFNETU1DXzxzcGFuIGNsYXNzPSJncmFtZSI+U2V0U0RNTUNSZWFkV2FpdE1vZGUoPC9zcGFuPikKLSAgICAgICAgICBmdW5jdGlvbiBmb3IgcHJvcGVyIGZ1bmN0aW9ubmluZzwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICA8L3VsPgotICAgIDwvdWw+Ci0gICAgPGgzIHN0eWxlPSJiYWNrZ3JvdW5kOiByZ2IoNTEsIDEwMiwgMjU1KSBub25lIHJlcGVhdCBzY3JvbGwgMCUgNTAlOyBtYXJnaW4tcmlnaHQ6IDUwMHB0OyAtbW96LWJhY2tncm91bmQtY2xpcDogLW1vei1pbml0aWFsOyAtbW96LWJhY2tncm91bmQtb3JpZ2luOiAtbW96LWluaXRpYWw7IC1tb3otYmFja2dyb3VuZC1pbmxpbmUtcG9saWN5OiAtbW96LWluaXRpYWw7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7QXJpYWwmcXVvdDssc2Fucy1zZXJpZjsgY29sb3I6IHdoaXRlOyI+VjEuMC4yIC8KLSAgICAyMS1TZXB0ZW1iZXItMjAxNTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2gzPgotICAgIDxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW46IDQuNXB0IDBpbiA0LjVwdCAwLjI1aW47Ij48Yj48dT48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyBjb2xvcjogYmxhY2s7Ij5NYWluIENoYW5nZXM8L3NwYW4+PC91PjwvYj48L3A+Ci0gICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJkaXNjIj4KLSAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwgR2VuZXJpYyA8L3NwYW4+PC9iPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij51cGRhdGU8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgotICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5zdG0zMmY3eHhfaGFsLmNvbmZfdGVtcGxhdGUuaDoKLSAgICAgICAgICB1cGRhdGUmbmJzcDtIU0VfU1RBUlRVUF9USU1FT1VUPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnN0bTMyZjd4eF9oYWxfZGVmLmg6IHVwZGF0ZSB0aGUgcXVvdGF0aW9uIG1hcmtzCi0gICAgICAgICAgdXNlZCBpbiAjZXJyb3IiVVNFX1JUT1Mgc2hvdWxkIGJlIDAgaW4gdGhlIGN1cnJlbnQgSEFMIDxzcGFuIGNsYXNzPSJncmFtZSI+cmVsZWFzZTwvc3Bhbj4iPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgIDwvdWw+Ci0gICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMIERNQTwvc3Bhbj48L2I+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPgotICAgICAgICAgdXBkYXRlPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0iY2lyY2xlIj4KLSAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+T3ZlcmFsbCA8c3BhbiBjbGFzcz0iZ3JhbWUiPmRyaXZlcjwvc3Bhbj4gdXBkYXRlIGZvcgotICAgICAgICAgIGNvZGUgb3B0aW1pemF0aW9uPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9InNxdWFyZSI+Ci0gICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5hZGQgU3RyZWFtQmFzZUFkZHJlc3MgYW5kIFN0cmVhbUluZGV4IG5ldyBmaWVsZHMKLSAgICAgICAgICAgaW4gdGhlIERNQV9IYW5kbGVUeXBlRGVmIHN0cnVjdHVyZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj4gPG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPmFkZCBETUFfQmFzZV9SZWdpc3RlcnMgcHJpdmF0ZSA8c3BhbiBjbGFzcz0iZ3JhbWUiPnN0cnVjdHVyZTwvc3Bhbj48L3NwYW4+PHNwYW4gc3R5bGU9IiI+IDxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5hZGQgc3RhdGljIGZ1bmN0aW9uIERNQV88c3BhbiBjbGFzcz0iZ3JhbWUiPkNhbGNCYXNlQW5kQml0c2hpZnQoPC9zcGFuPik8L3NwYW4+PHNwYW4gc3R5bGU9IiI+IDxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij51cGRhdGUgSEFMX0RNQV88c3BhbiBjbGFzcz0iZ3JhbWUiPkluaXQoPC9zcGFuPikKLSAgICAgICAgICAgZnVuY3Rpb24gdG8gdXNlIHRoZSBuZXcgYWRkZWQgc3RhdGljIGZ1bmN0aW9uPC9zcGFuPjxzcGFuIHN0eWxlPSIiPiA8bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+dXBkYXRlIEhBTF9ETUFfPHNwYW4gY2xhc3M9ImdyYW1lIj5EZUluaXQoPC9zcGFuPikKLSAgICAgICAgICAgZnVuY3Rpb24gdG8gb3B0aW1pemUgY2xlYXIgZmxhZyBvcGVyYXRpb25zPC9zcGFuPjxzcGFuIHN0eWxlPSIiPiA8bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+dXBkYXRlIEhBTF9ETUFfU3RhcnRfPHNwYW4gY2xhc3M9ImdyYW1lIj5JVCg8L3NwYW4+KQotICAgICAgICAgICBmdW5jdGlvbiB0byBvcHRpbWl6ZSBpbnRlcnJ1cHRzIGVuYWJsZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj4gPG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZSBIQUxfRE1BXzxzcGFuIGNsYXNzPSJncmFtZSI+UG9sbEZvclRyYW5zZmVyKDwvc3Bhbj4pCi0gICAgICAgICAgIGZ1bmN0aW9uIHRvIG9wdGltaXplIGNoZWNrIG9uIGZsYWdzPC9zcGFuPjxzcGFuIHN0eWxlPSIiPiA8bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+dXBkYXRlIEhBTF9ETUFfPHNwYW4gY2xhc3M9ImdyYW1lIj5JUlFIYW5kbGVyKDwvc3Bhbj4pCi0gICAgICAgICAgIGZ1bmN0aW9uIHRvIG9wdGltaXplIGludGVycnVwdCBmbGFnIG1hbmFnZW1lbnQ8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgIDwvdWw+Ci0gICAgIDwvdWw+Ci0gICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMIEVUSCZuYnNwOzwvc3Bhbj48L2I+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+Ci0gICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnJlbW92ZSBkdXBsaWNhdGVkIG1hY3JvIElTX0VUSF9SWF88c3BhbiBjbGFzcz0iZ3JhbWUiPk1PREUoPC9zcGFuPik8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgPC91bD4KLSAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwgR1BJTyA8L3NwYW4+PC9iPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij51cGRhdGU8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgotICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5SZW5hbWUgR1BJT19TUEVFRF9MT1cgZGVmaW5lIHRvCi0gICAgICAgICAgR1BJT19TUEVFRF9GUkVRX0xPVzwvc3Bhbj48c3BhbiBzdHlsZT0iIj4KLSAgICAgICAgICA8bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5SZW5hbWUgR1BJT19TUEVFRF9NRURJVU0gZGVmaW5lIHRvCi0gICAgICAgICAgR1BJT19TUEVFRF9GUkVRX01FRElVTTwvc3Bhbj48c3BhbiBzdHlsZT0iIj4gPG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+UmVuYW1lIEdQSU9fU1BFRURfRkFTVCBkZWZpbmUgdG8gR1BJT19TUEVFRF9GUkVRX0hJR0g8L3NwYW4+PHNwYW4gc3R5bGU9IiI+IDxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlJlbmFtZSBHUElPX1NQRUVEX0hJR0ggZGVmaW5lIHRvCi0gICAgICAgICAgR1BJT19TUEVFRF9GUkVRX1ZFUllfSElHSDwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICA8L3VsPgotICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTCBIQVNIIDwvc3Bhbj48L2I+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+Ci0gICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlJlbmFtZSBIQUxfSEFTSF9TVEFURVR5cGVEZWYgdG8KLSAgICAgICAgICBIQUxfSEFTSF9TdGF0ZVR5cGVEZWY8L3NwYW4+PHNwYW4gc3R5bGU9IiI+IDxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlJlbmFtZSBIQUxfSEFTSF9QaGFzZVR5cGVEZWYgdG8KLSAgICAgICAgICBIQUxfSEFTSFBoYXNlVHlwZURlZjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICA8L3VsPgotICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTCBSQ0MgPC9zcGFuPjwvYj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+dXBkYXRlPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0iY2lyY2xlIj4KLSAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+dXBkYXRlIHZhbHVlcyBmb3IgTFNFIERyaXZlIGNhcGFiaWxpdHkgPHNwYW4gY2xhc3M9ImdyYW1lIj5kZWZpbmVzPC9zcGFuPjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij51cGRhdGUgUExMTi9QTExJMlNOL1BMTFNBSSBWQ08gbWluIHZhbHVlIDEwME1IegotICAgICAgICAgIGluc3RlYWQgb2YgPHNwYW4gY2xhc3M9ImdyYW1lIj4xOTJNSHo8L3NwYW4+PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPmFkZCBfX0hBTF9SQ0NfTUNPMV88c3BhbiBjbGFzcz0iZ3JhbWUiPkNPTkZJRyg8L3NwYW4+KQotICAgICAgICAgIGFuZCBfX0hBTF9SQ0NfTUNPMl9DT05GSUcoKSBtYWNyb3M8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+dXBkYXRlIEhBTF9SQ0NFeF88c3BhbiBjbGFzcz0iZ3JhbWUiPlBlcmlwaENMS0NvbmZpZyg8L3NwYW4+KQotICAgICAgICAgIGZ1bmN0aW9uIHRvIHJlc2V0IHRoZSBCYWNrdXAgZG9tYWluIG9ubHkgaWYgdGhlIFJUQyBDbG9jayBzb3VyY2UKLSAgICAgICAgICBzZWxlY3Rpb24gaXMgbW9kaWZpZWQmbmJzcDs8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgPC91bD4KLSAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwgVElNPC9zcGFuPjwvYj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+Ci0gICAgICAgICB1cGRhdGU8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgotICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij51cGRhdGUgdGhlIGltcGxlbWVudGF0aW9uIG9mIF9fSEFMX1RJTV9TRVRfPHNwYW4gY2xhc3M9ImdyYW1lIj5DT01QQVJFKDwvc3Bhbj4pIG1hY3JvPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnJlbW92ZSB1c2VsZXNzIDxzcGFuIGNsYXNzPSJncmFtZSI+YXNzZXJ0KDwvc3Bhbj4pCi0gICAgICAgICAgaW4mbmJzcDtIQUxfVElNX1BXTV9Db25maWdDaGFubmVsKCksIFRJTV9PQzJfU2V0Q29uZmlnKCkgYW5kCi0gICAgICAgICAgSEFMX1RJTV9QV01fQ29uZmlnQ2hhbm5lbCgpIGZ1bmN0aW9uczwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICA8L3VsPgotICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTCBDQU48L3NwYW4+PC9iPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij4KLSAgICAgICAgIHVwZGF0ZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+Ci0gICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPmFkZCB0aGUgY2xlYXIgZmxhZyBFUlJJIGJpdCBpbiBIQUxfQ0FOXzxzcGFuIGNsYXNzPSJncmFtZSI+SVJRSGFuZGxlcig8L3NwYW4+KTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICA8L3VsPgotICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTCBJMlM8L3NwYW4+PC9iPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij4KLSAgICAgICAgIHVwZGF0ZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+Ci0gICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZSBJMlMgSEFMX0kyU188c3BhbiBjbGFzcz0iZ3JhbWUiPlRyYW5zbWl0KDwvc3Bhbj4pCi0gICAgICAgICAgQVBJJm5ic3A7dG8ga2VlcCB0aGUgY2hlY2sgb24gYnVzeSBmbGFnIG9ubHkgZm9yIHRoZSBzbGF2ZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICA8L3VsPgotICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTCBRU1BJPC9zcGFuPjwvYj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+Ci0gICAgICAgICB1cGRhdGU8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgotICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5BZGQgX19IQUxfUVNQSV9DTEVBUl88c3BhbiBjbGFzcz0iZ3JhbWUiPkZMQUcoPC9zcGFuPikKLSAgICAgICAgICBiZWZvcmUgUVNQSV9Db25maWcoKTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICA8L3VsPgotICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTCBVQVJUPC9zcGFuPjwvYj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+Ci0gICAgICAgICB1cGRhdGU8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgotICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5SZW1vdmUgZW5hYmxpbmcgb2YgRVJSIElUIHNvdXJjZSBhbmQgUEUgc291cmNlCi0gICAgICAgICAgZnJvbSBIQUxfVUFSVF9UcmFuc21pdF88c3BhbiBjbGFzcz0iZ3JhbWUiPklUKDwvc3Bhbj4pIGFuZCByZW1vdmUgdGhlCi0gICAgICAgICAgY29ycmVzcG9uZGluZyBkaXNhYmxpbmcgRVJSL1BFIElUIGZyb20gVUFSVF9FbmRUcmFuc21pdF9JVCgpPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgIDwvdWw+Ci0gICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMIFBDRDwvc3Bhbj48L2I+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPgotICAgICAgICAgdXBkYXRlPC9zcGFuPjxiPjxzcGFuIHN0eWxlPSIiPiZuYnNwOzwvc3Bhbj48L2I+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgotICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5DbGVhbiBzdGF0dXMgcGhhc2UgcmVjZWl2ZWQgaW50ZXJydXB0IHdoZW4gRE1BCi0gICAgICAgICAgbW9kZSA8c3BhbiBjbGFzcz0iZ3JhbWUiPmVuYWJsZWQ8L3NwYW4+Jm5ic3A7PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgIDwvdWw+Ci0gICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMIEhDRCA8L3NwYW4+PC9iPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij51cGRhdGU8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgotICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5VcGRhdGUgdG8gdXNlIGxvY2FsIHZhcmlhYmxlIGluIFVTQiBIb3N0IGNoYW5uZWwKLSAgICAgICAgICByZS08c3BhbiBjbGFzcz0iZ3JhbWUiPmFjdGl2YXRpb248L3NwYW4+PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgIDwvdWw+Ci0gICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+bGwgRk1DPC9zcGFuPjwvYj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+Ci0gICAgICAgICB1cGRhdGU8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgotICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij51cGRhdGUgdGhlIGRlZmluZSBGTUMgV3JpdGUgRklGTyBEaXNhYmxlL0VuYWJsZToKLSAgICAgICAgICBGTUNfV1JJVEVfRklGT19ESVNBQkxFIGFuZCBGTUNfV1JJVEVfRklGT19FTkFCTEU8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+cmVtb3ZlIHJldHVybiBIQUxfRVJST1IgZnJvbSBGTUNfU0RSQU1fPHNwYW4gY2xhc3M9ImdyYW1lIj5TZW5kQ29tbWFuZCg8L3NwYW4+KSBmdW5jdGlvbjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICA8L3VsPgotICAgIDwvdWw+Ci0gICAgPGgzIHN0eWxlPSJiYWNrZ3JvdW5kOiByZ2IoNTEsIDEwMiwgMjU1KSBub25lIHJlcGVhdCBzY3JvbGwgMCUgNTAlOyBtYXJnaW4tcmlnaHQ6IDUwMHB0OyAtbW96LWJhY2tncm91bmQtY2xpcDogLW1vei1pbml0aWFsOyAtbW96LWJhY2tncm91bmQtb3JpZ2luOiAtbW96LWluaXRpYWw7IC1tb3otYmFja2dyb3VuZC1pbmxpbmUtcG9saWN5OiAtbW96LWluaXRpYWw7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7QXJpYWwmcXVvdDssc2Fucy1zZXJpZjsgY29sb3I6IHdoaXRlOyI+VjEuMC4xIC8KLSAgICAyNS1KdW5lLTIwMTU8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9oMz4KLSAgICA8cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luOiA0LjVwdCAwaW4gNC41cHQgMC4yNWluOyI+PGI+PHU+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsgY29sb3I6IGJsYWNrOyI+TWFpbiBDaGFuZ2VzPC9zcGFuPjwvdT48L2I+PC9wPgotICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0iZGlzYyI+Ci0gICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+R2VuZXJhbCB1cGRhdGVzIHRvIGZpeCBrbm93biBkZWZlY3RzIGFuZAotICAgICAgICAgZW5oYW5jZW1lbnRzIDxzcGFuIGNsYXNzPSJncmFtZSI+aW1wbGVtZW50YXRpb248L3NwYW4+PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMIENSQyZuYnNwOzwvc3Bhbj48L2I+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+Ci0gICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZSBfX0hBTF9DUkNfU0VUXzxzcGFuIGNsYXNzPSJncmFtZSI+SURSKDwvc3Bhbj4pCi0gICAgICAgICAgbWFjcm8gaW1wbGVtZW50YXRpb24gdG8gdXNlIFdSSVRFX1JFRygpIGluc3RlYWQgb2YgTU9ESUZZX1JFRygpPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgIDwvdWw+Ci0gICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMIENFQyZuYnNwOzwvc3Bhbj48L2I+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+Ci0gICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZSB0aW1lb3V0IG1hbmFnZW1lbnQgaW4gSEFMX0NFQ188c3BhbiBjbGFzcz0iZ3JhbWUiPlRyYW5zbWl0KDwvc3Bhbj4pIGFuZCBIQUxfQ0VDX1JlY2VpdmUoKSBmdW5jdGlvbnM8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgPC91bD4KLSAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwgQ29ydGV4IDwvc3Bhbj48L2I+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+Ci0gICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZSBIQUxfTVBVXzxzcGFuIGNsYXNzPSJncmFtZSI+Q29uZmlnUmVnaW9uKDwvc3Bhbj4pCi0gICAgICAgICAgZnVuY3Rpb24gdG8gYmUgbWlzcmEgY29tcGxpYW50PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgIDwvdWw+Ci0gICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMIEVUSCA8L3NwYW4+PC9iPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij51cGRhdGU8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgotICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5SZW1vdmUgZHVwbGljYXRlZCBJU19FVEhfRFVQTEVYXzxzcGFuIGNsYXNzPSJncmFtZSI+TU9ERSg8L3NwYW4+KQotICAgICAgICAgIGFuZCBJU19FVEhfUlhfTU9ERSgpIG1hY3Jvczwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5SZW1vdmUgaWxsZWdhbCBzcGFjZQotICAgICAgICAgIEVUSF9NQUNfUkVBRENPTlRST0xMRVJfRkxVU0hJTkcgbWFjcm88L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlIEVUSF9NQUNfUkVBRENPTlRST0xMRVJfWFhYIGRlZmluZWQgdmFsdWVzCi0gICAgICAgICAgKFhYWCBjYW4gYmUgSURMRSwgUkVBRElOR19EQVRBIGFuZCBSRUFESU5HX1NUQVRVUyk8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgPC91bD4KLSAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwgRkxBU0ggPC9zcGFuPjwvYj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+dXBkYXRlPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0iY2lyY2xlIj4KLSAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+dXBkYXRlIEZMQVNIX09CXzxzcGFuIGNsYXNzPSJncmFtZSI+R2V0UkRQKDwvc3Bhbj4pCi0gICAgICAgICAgZnVuY3Rpb24gdG8gcmV0dXJuIHVpbnQ4X3QgJm5ic3A7aW5zdGVhZCBvZiBGbGFnU3RhdHVzPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZSBPQl9SRFBfTEVWRUx4IGRlZmluaXRpb248L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+YWRkIF9fSEFMX0ZMQVNIX0dFVF88c3BhbiBjbGFzcz0iZ3JhbWUiPkxBVEVOQ1koPC9zcGFuPikKLSAgICAgICAgICBtYWNybzwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICA8L3VsPgotICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTCBIQVNIIDwvc3Bhbj48L2I+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+Ci0gICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZSBIQVNIXzxzcGFuIGNsYXNzPSJncmFtZSI+RE1BWGZlckNwbHQoPC9zcGFuPikKLSAgICAgICAgICBhbmQgSEFTSEV4X0RNQVhmZXJDcGx0KCkgZnVuY3Rpb25zIHRvIHByb3Blcmx5IGNvbmZpZ3VyZSB0aGUgbnVtYmVyCi0gICAgICAgICAgb2YgdmFsaWQgYml0cyBpbiBsYXN0IHdvcmQgb2YgdGhlIG1lc3NhZ2U8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+dXBkYXRlIEhBTF9IQVNIX1NIQTFfPHNwYW4gY2xhc3M9ImdyYW1lIj5BY2N1bXVsYXRlKDwvc3Bhbj4pCi0gICAgICAgICAgZnVuY3Rpb24gdG8gY2hlY2sgb24gdGhlIGxlbmd0aCBvZiB0aGUgaW5wdXQgYnVmZmVyPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZSBIQUxfSEFTSF88Yj48aT5NT0RFPC9pPjwvYj5fU3RhcnRfPHNwYW4gY2xhc3M9ImdyYW1lIj5JVCg8L3NwYW4+KSBmdW5jdGlvbnMgKDxiPjxpPk1vZGUgPC9pPjwvYj5zdGFuZHMgZm9yIE1ENSwKLSAgICAgICAgICBTSEExLCBTSEEyMjQgYW5kIFNIQTI1NjxiPjxpPiA8L2k+PC9iPikgdG8gOjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJzcXVhcmUiPgotICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+Rml4IHByb2Nlc3NpbmcgZmFpbCBmb3Igc21hbGwgaW5wdXQgPHNwYW4gY2xhc3M9ImdyYW1lIj5idWZmZXJzPC9zcGFuPjwvc3Bhbj48c3BhbiBzdHlsZT0iIj4gPG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnRvIHVubG9jayB0aGUgcHJvY2VzcyBhbmQgY2FsbCByZXR1cm4gSEFMX09LIGF0Ci0gICAgICAgICAgIHRoZSBlbmQgb2YgSEFTSCBwcm9jZXNzaW5nIHRvIGF2b2lkIGluY29ycmVjdCByZXBlYXRpbmcgPHNwYW4gY2xhc3M9ImdyYW1lIj5zb2Z0d2FyZTwvc3Bhbj48L3NwYW4+PHNwYW4gc3R5bGU9IiI+IDxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5wcm9wZXJseSB0byBtYW5hZ2UgdGhlIEhhc2hJVENvdW50ZXIgZWZmaWNpZW5jeSA8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVwZGF0ZSB0byBjYWxsIHRoZSBIQUxfSEFTSF88c3BhbiBjbGFzcz0iZ3JhbWUiPkluQ3BsdENhbGxiYWNrKDwvc3Bhbj4pCi0gICAgICAgICAgIGF0IHRoZSBlbmQgb2YgdGhlIGNvbXBsZXRlIGJ1ZmZlciBpbnN0ZWFkIG9mIGV2ZXJ5IGVhY2ggNTEyIGJpdHMgPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICA8L3VsPgotICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij51cGRhdGUgSEFTSF9JVF9ESU5JIGFuZCBIQVNIX0lUX0RDSSBkZWZpbml0aW9uPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZSBfX0hBTF9IQVNIX0dFVF88c3BhbiBjbGFzcz0iZ3JhbWUiPkZMQUcoPC9zcGFuPikKLSAgICAgICAgICBtYWNybyBkZWZpbml0aW9uPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgIDwvdWw+Ci0gICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMIEkyUyA8L3NwYW4+PC9iPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij51cGRhdGU8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgotICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij51cGRhdGUgSEFMX0kyU188c3BhbiBjbGFzcz0iZ3JhbWUiPlRyYW5zbWl0KDwvc3Bhbj4pCi0gICAgICAgICAgZnVuY3Rpb24gdG8gZW5zdXJlIHRoZSB3YWl0aW5nIG9uIEJ1c3kgZmxhZyBpbiBjYXNlIG9mIHNsYXZlIG1vZGUKLSAgICAgICAgICBzZWxlY3Rpb248L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgPC91bD4KLSAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwgUlRDIDwvc3Bhbj48L2I+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+Ci0gICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZSBIQUxfUlRDRXhfPHNwYW4gY2xhc3M9ImdyYW1lIj5TZXRXYWtlVXBUaW1lcig8L3NwYW4+KQotICAgICAgICAgIGFuZCBIQUxfUlRDRXhfU2V0V2FrZVVwVGltZXJfSVQoKSBmdW5jdGlvbnMgdG8gcHJvcGVybHkgY2hlY2sgb24KLSAgICAgICAgICBXVVRXRiBmbGFnPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnJlbmFtZSBSVENfVElNRVNUQU1QUElOX1BJOCBkZWZpbmUgdG8KLSAgICAgICAgICBSVENfVElNRVNUQU1QUElOX1BPUzE8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+cmVuYW1lIFJUQ19USU1FU1RBTVBQSU5fUEMxIGRlZmluZSB0bwotICAgICAgICAgIFJUQ19USU1FU1RBTVBQSU5fUE9TMjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij51cGRhdGUgX19IQUxfUlRDX1dBS0VVUFRJTUVSX0NMRUFSXzxzcGFuIGNsYXNzPSJncmFtZSI+RkxBRyg8L3NwYW4+KSBtYWNybyBkZWZpbml0aW9uPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZSBfX0hBTF9SVENfVEFNUEVSX0dFVF88c3BhbiBjbGFzcz0iZ3JhbWUiPklUKDwvc3Bhbj4pCi0gICAgICAgICAgbWFjcm8gZGVmaW5pdGlvbjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij51cGRhdGUgX19IQUxfUlRDX1RBTVBFUl9DTEVBUl88c3BhbiBjbGFzcz0iZ3JhbWUiPkZMQUcoPC9zcGFuPikKLSAgICAgICAgICBtYWNybyBkZWZpbml0aW9uPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZSBfX0hBTF9SVENfVElNRVNUQU1QX0NMRUFSXzxzcGFuIGNsYXNzPSJncmFtZSI+RkxBRyg8L3NwYW4+KSBtYWNybyBkZWZpbml0aW9uPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZSBfX0hBTF9SVENfVEFNUEVSX1RJTUVTVEFNUF9FWFRJX0dFVF88c3BhbiBjbGFzcz0iZ3JhbWUiPkZMQUcoPC9zcGFuPikgbWFjcm8gZGVmaW5pdGlvbjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5hZGQgUlRDX1RBTVBDUl9UQU1QWEUgYW5kIFJUQ19UQU1QQ1JfVEFNUFhJRQotICAgICAgICAgIGRlZmluZXM8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgPC91bD4KLSAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwgU01BUlRDQVJEIDwvc3Bhbj48L2I+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+Ci0gICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPmFkZCBTTUFSVENBUkRfRkxBR19JRExFLCBTTUFSVENBUkRfSVRfSURMRSA8c3BhbiBjbGFzcz0iZ3JhbWUiPmFuZCZuYnNwOyBTTUFSVENBUkQ8L3NwYW4+X0NMRUFSX0lETEVGIGRlZmluZXM8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgPC91bD4KLSAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwgVUFSVCA8L3NwYW4+PC9iPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij51cGRhdGU8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgotICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij51cGRhdGUgSEFMX1VBUlRfPHNwYW4gY2xhc3M9ImdyYW1lIj5ETUFSZXN1bWUoPC9zcGFuPikKLSAgICAgICAgICBmdW5jdGlvbiB0byBjbGVhciBvdmVycnVuIGZsYWcgYmVmb3JlIHJlc3VtaW5nIHRoZSBSeCB0cmFuc2Zlcjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij51cGRhdGUgVUFSVF9GTEFHX1NCS0YgZGVmaW5pdGlvbjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICA8L3VsPgotICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTCBVU0FSVCA8L3NwYW4+PC9iPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij51cGRhdGU8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgotICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij51cGRhdGUgSEFMX1VTQVJUXzxzcGFuIGNsYXNzPSJncmFtZSI+RE1BUmVzdW1lKDwvc3Bhbj4pCi0gICAgICAgICAgZnVuY3Rpb24gdG8gY2xlYXIgb3ZlcnJ1biBmbGFnIGJlZm9yZSByZXN1bWluZyB0aGUgUnggdHJhbnNmZXI8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgPC91bD4KLSAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5MTCBGTUMgPC9zcGFuPjwvYj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+dXBkYXRlPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0iY2lyY2xlIj4KLSAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+dXBkYXRlIE5BTkQgdGltaW5nIG1heGltdW0gPHNwYW4gY2xhc3M9ImdyYW1lIj52YWx1ZXM8L3NwYW4+PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgIDwvdWw+Ci0gICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+TEwgVVNCIDwvc3Bhbj48L2I+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj4gPG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgotICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5VU0JfRmx1c2hUeEZpZm8gQVBJOiB1cGRhdGUgdG8gZmx1c2ggYWxsIFR4IDxzcGFuIGNsYXNzPSJncmFtZSI+RklGTzwvc3Bhbj48L3NwYW4+PHNwYW4gc3R5bGU9IiI+IDxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Ci0gICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVwZGF0ZSB0byB1c2UgbG9jYWwgdmFyaWFibGUgaW4gVVNCIEhvc3QgY2hhbm5lbAotICAgICAgICAgIHJlLTxzcGFuIGNsYXNzPSJncmFtZSI+YWN0aXZhdGlvbjwvc3Bhbj48L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgPC91bD4KLSAgICA8L3VsPgotICAgIDxoMyBzdHlsZT0iYmFja2dyb3VuZDogcmdiKDUxLCAxMDIsIDI1NSkgbm9uZSByZXBlYXQgc2Nyb2xsIDAlIDUwJTsgbWFyZ2luLXJpZ2h0OiA1MDBwdDsgLW1vei1iYWNrZ3JvdW5kLWNsaXA6IC1tb3otaW5pdGlhbDsgLW1vei1iYWNrZ3JvdW5kLW9yaWdpbjogLW1vei1pbml0aWFsOyAtbW96LWJhY2tncm91bmQtaW5saW5lLXBvbGljeTogLW1vei1pbml0aWFsOyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O0FyaWFsJnF1b3Q7LHNhbnMtc2VyaWY7IGNvbG9yOiB3aGl0ZTsiPlYxLjAuMCAvIDEyLU1heS0yMDE1PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvaDM+Ci0gICAgPHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbjogNC41cHQgMGluIDQuNXB0IDAuMjVpbjsiPjxiPjx1PjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7IGNvbG9yOiBibGFjazsiPk1haW4gQ2hhbmdlczwvc3Bhbj48L3U+PC9iPjwvcD4KLSAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImRpc2MiPgotICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkZpcnN0IG9mZmljaWFsIHJlbGVhc2UgZm9yPGI+PGk+Ci0gICAgICAgICBTVE0zMkY3NTZ4eC83NDZ4eC83NDV4eDwvaT48L2I+IGRldmljZXM8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICA8L3VsPgotICAgIDxoMiBzdHlsZT0iYmFja2dyb3VuZDogcmdiKDUxLCAxMDIsIDI1NSkgbm9uZSByZXBlYXQgc2Nyb2xsIDAlIDUwJTsgLW1vei1iYWNrZ3JvdW5kLWNsaXA6IC1tb3otaW5pdGlhbDsgLW1vei1iYWNrZ3JvdW5kLW9yaWdpbjogLW1vei1pbml0aWFsOyAtbW96LWJhY2tncm91bmQtaW5saW5lLXBvbGljeTogLW1vei1pbml0aWFsOyI+PGEgbmFtZT0iTGljZW5zZSI+PC9hPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEycHQ7IGNvbG9yOiB3aGl0ZTsiPkxpY2Vuc2U8bzpwPjwvbzpwPjwvc3Bhbj48L2gyPgotICAgIDxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJ0ZXh0LWFsaWduOiBqdXN0aWZ5OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlJlZGlzdHJpYnV0aW9uCi0gICAgYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwgYXJlCi0gICAgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6PC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7Ij48bzpwPjwvbzpwPjwvc3Bhbj48L3A+Ci0gICAgPHVsIHR5cGU9ImRpc2MiPgotICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9InRleHQtYWxpZ246IGp1c3RpZnk7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZQotICAgICAgICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKLSAgICAgICAgIGRpc2NsYWltZXIuPC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7Ij48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgotICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9InRleHQtYWxpZ246IGp1c3RpZnk7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZQotICAgICAgICAgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKLSAgICAgICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoCi0gICAgICAgICB0aGUgZGlzdHJpYnV0aW9uLjwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJ0ZXh0LWFsaWduOiBqdXN0aWZ5OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPk5laXRoZXIgdGhlIG5hbWUgb2YgU1RNaWNyb2VsZWN0cm9uaWNzIG5vciB0aGUKLSAgICAgICAgIG5hbWVzIG9mIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzCi0gICAgICAgICBkZXJpdmVkIDwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyI+PG86cD48L286cD48L3NwYW4+PC9saT4KLSAgICA8L3VsPgotICAgIDxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJ0ZXh0LWFsaWduOiBqdXN0aWZ5OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOwotICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi48L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsiPjxicj4KLSAgICA8YnI+Ci0gICAgPC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5USElTCi0gICAgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTCi0gICAgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVECi0gICAgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAgICBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUiBDT05UUklCVVRPUlMKLSAgICBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gICAgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAgICBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAgICBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICAgIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gICAgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUKLSAgICBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS48L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsiPiA8bzpwPjwvbzpwPjwvc3Bhbj48L3A+Ci0gICAgPGRpdiBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0idGV4dC1hbGlnbjogY2VudGVyOyIgYWxpZ249ImNlbnRlciI+PHNwYW4gc3R5bGU9ImNvbG9yOiBibGFjazsiPgotICAgIDxociBhbGlnbj0iY2VudGVyIiBzaXplPSIxIiB3aWR0aD0iMTAwJSI+Ci0gICAgPC9zcGFuPjwvZGl2PgotICAgIDxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW46IDQuNXB0IDBpbiA0LjVwdCAwLjI1aW47IHRleHQtYWxpZ246IGNlbnRlcjsiIGFsaWduPSJjZW50ZXIiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7IGNvbG9yOiBibGFjazsiPkZvcgotICAgIGNvbXBsZXRlIGRvY3VtZW50YXRpb24gb24gPC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5TVE0zMjxzcGFuIHN0eWxlPSJjb2xvcjogYmxhY2s7Ij4gTWljcm9jb250cm9sbGVycwotICAgIHZpc2l0IDwvc3Bhbj48dT48c3BhbiBzdHlsZT0iY29sb3I6IGJsdWU7Ij48YSBocmVmPSJodHRwOi8vd3d3LnN0LmNvbS9pbnRlcm5ldC9tY3UvZmFtaWx5LzE0MS5qc3AiIHRhcmdldD0iX2JsYW5rIj53d3cuc3QuY29tL1NUTTMyPC9hPjwvc3Bhbj48L3U+PC9zcGFuPjxzcGFuIHN0eWxlPSJjb2xvcjogYmxhY2s7Ij48bzpwPjwvbzpwPjwvc3Bhbj48L3A+Ci0gICAgPC90ZD4KLSAgIDwvdHI+Ci0gICA8dHIgc3R5bGU9IiI+Ci0gICAgPHRkIHN0eWxlPSJwYWRkaW5nOiAwaW47IiB2YWxpZ249InRvcCI+PGJyPgotPC90ZD4KLSAgIDwvdHI+Ci0gIDwvdGJvZHk+PC90YWJsZT4KLSAgPC90ZD4KLSA8L3RyPgotPC90Ym9keT48L3RhYmxlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtUaW1lcyBOZXcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUm9tYW4mcXVvdDs7bXNvLWJpZGktZm9udC1mYW1pbHk6JnF1b3Q7U2Vnb2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUkmcXVvdDs7bXNvLWFuc2ktbGFuZ3VhZ2U6RlI7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zby1mYXJlYXN0LWxhbmd1YWdlOkZSIj5IQUwgRE1BPC9zcGFuPjwvYj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZToxMC4wcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseTomcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7bXNvLWZhcmVhc3QtZm9udC1mYW1pbHk6JnF1b3Q7VGltZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldyBSb21hbiZxdW90OzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zby1iaWRpLWZvbnQtZmFtaWx5OiZxdW90O1NlZ29lCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVSSZxdW90Ozttc28tYW5zaS1sYW5ndWFnZTpGUjttc28tZmFyZWFzdC1sYW5ndWFnZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZSIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgdHlwZT0iY2lyY2xlIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJjb2xvcjojMTExMTExO21zby1tYXJnaW4tdG9wLWFsdDphdXRvO21zby1tYXJnaW4tYm90dG9tLWFsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG87bGluZS1oZWlnaHQ6bm9ybWFsO21zby1saXN0OmwwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbDIgbGZvMTt0YWItc3RvcHM6bGlzdCAxLjBpbiI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZToxMC4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOwogCi08L2Rpdj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNvLWZhcmVhc3QtZm9udC1mYW1pbHk6JnF1b3Q7VGltZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV3CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJvbWFuJnF1b3Q7O21zby1iaWRpLWZvbnQtZmFtaWx5OiZxdW90O1NlZ29lCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVJJnF1b3Q7OyBtc28tZmFyZWFzdC1sYW5ndWFnZTpGUiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFuZz0iRU4tVVMiPlVwZGF0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQUxfRE1BX0lSUUhhbmRsZXIoKSBBUEkgdG8gc2V0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBETUEgc3RhdGUgYmVmb3JlIHVubG9ja2luZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY2Nlc3MgdG8gdGhlIERNQSBoYW5kbGUuPG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJjb2xvcjojMTExMTExO21zby1tYXJnaW4tdG9wLWFsdDphdXRvO21zby1tYXJnaW4tYm90dG9tLWFsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG87bGluZS1oZWlnaHQ6bm9ybWFsO21zby1saXN0OmwwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbDIgbGZvMTt0YWItc3RvcHM6bGlzdCAxLjBpbiI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZToxMC4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOwogCi08cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iIj48c3BhbiBzdHlsZT0iIiBsYW5nPSJGUiI+PG86cD4mbmJzcDs8L286cD48L3NwYW4+PC9wPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc28tZmFyZWFzdC1mb250LWZhbWlseTomcXVvdDtUaW1lcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUm9tYW4mcXVvdDs7bXNvLWJpZGktZm9udC1mYW1pbHk6JnF1b3Q7U2Vnb2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUkmcXVvdDs7IG1zby1mYXJlYXN0LWxhbmd1YWdlOkZSIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYW5nPSJFTi1VUyI+TWFuYWdlIHRoZSBjYXNlIG9mIGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludmFsaWQgdmFsdWUgb2YgQ2FsbGJhY2tJRCBwYXNzZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gdGhlIEhBTF9ETUFfUmVnaXN0ZXJDYWxsYmFjaygpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFQSS48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iY29sb3I6IzExMTExMTttc28tbWFyZ2luLXRvcC1hbHQ6YXV0bzttc28tbWFyZ2luLWJvdHRvbS1hbHQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0bztsaW5lLWhlaWdodDpub3JtYWw7bXNvLWxpc3Q6bDAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbDEgbGZvMTt0YWItc3RvcHM6bGlzdCAuNWluIj48Yj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOjEwLjBwdDtmb250LWZhbWlseTomcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7bXNvLWZhcmVhc3QtZm9udC1mYW1pbHk6CiAKLTwvZGl2PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtUaW1lcyBOZXcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUm9tYW4mcXVvdDs7bXNvLWJpZGktZm9udC1mYW1pbHk6JnF1b3Q7U2Vnb2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUkmcXVvdDs7bXNvLWFuc2ktbGFuZ3VhZ2U6RlI7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zby1mYXJlYXN0LWxhbmd1YWdlOkZSIj5IQUwgQURDPC9zcGFuPjwvYj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZToxMC4wcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseTomcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7bXNvLWZhcmVhc3QtZm9udC1mYW1pbHk6JnF1b3Q7VGltZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldyBSb21hbiZxdW90OzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zby1iaWRpLWZvbnQtZmFtaWx5OiZxdW90O1NlZ29lCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVSSZxdW90Ozttc28tYW5zaS1sYW5ndWFnZTpGUjttc28tZmFyZWFzdC1sYW5ndWFnZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZSIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgdHlwZT0iY2lyY2xlIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJjb2xvcjojMTExMTExO21zby1tYXJnaW4tdG9wLWFsdDphdXRvO21zby1tYXJnaW4tYm90dG9tLWFsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG87bGluZS1oZWlnaHQ6bm9ybWFsO21zby1saXN0OmwwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbDIgbGZvMTt0YWItc3RvcHM6bGlzdCAxLjBpbiI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZToxMC4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOwogCi08L2Rpdj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNvLWZhcmVhc3QtZm9udC1mYW1pbHk6JnF1b3Q7VGltZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV3CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJvbWFuJnF1b3Q7O21zby1iaWRpLWZvbnQtZmFtaWx5OiZxdW90O1NlZ29lCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVJJnF1b3Q7OyBtc28tZmFyZWFzdC1sYW5ndWFnZTpGUiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFuZz0iRU4tVVMiPlVwZGF0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQUxfQURDX0NvbmZpZ0NoYW5uZWwoKSBBUEkgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsb3cgdGhlIHBvc3NpYmlsaXR5IHRvIHN3aXRjaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZXR3ZWVuIFZCQVQgYW5kIFRFTVBFUkFUVVJFCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5uZWxzIGNvbmZpZ3VyYXRpb25zLjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iY29sb3I6IzExMTExMTttc28tbWFyZ2luLXRvcC1hbHQ6YXV0bzttc28tbWFyZ2luLWJvdHRvbS1hbHQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvO2xpbmUtaGVpZ2h0Om5vcm1hbDttc28tbGlzdDpsMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWwyIGxmbzE7dGFiLXN0b3BzOmxpc3QgMS4waW4iPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6MTAuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsKIAotPC9kaXY+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zby1mYXJlYXN0LWZvbnQtZmFtaWx5OiZxdW90O1RpbWVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSb21hbiZxdW90Ozttc28tYmlkaS1mb250LWZhbWlseTomcXVvdDtTZWdvZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVSSZxdW90OzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6RlIiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhbmc9IkVOLVVTIj5CZXR0ZXIgcGVyZm9ybWFuY2UgYnkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3ZpbmcgbXVsdGlwbGUgdm9sYXRpbGUgcmVhZHMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3Igd3JpdGVzIGluIGludGVycnVwdCBoYW5kbGVyLjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJjb2xvcjojMTExMTExO21zby1tYXJnaW4tdG9wLWFsdDphdXRvO21zby1tYXJnaW4tYm90dG9tLWFsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvO2xpbmUtaGVpZ2h0Om5vcm1hbDttc28tbGlzdDpsMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVsMSBsZm8xO3RhYi1zdG9wczpsaXN0IC41aW4iPjxiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6MTAuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjttc28tZmFyZWFzdC1mb250LWZhbWlseToKIAotPC9ib2R5PjwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1RpbWVzIE5ldworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSb21hbiZxdW90Ozttc28tYmlkaS1mb250LWZhbWlseTomcXVvdDtTZWdvZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVSSZxdW90Ozttc28tYW5zaS1sYW5ndWFnZTpGUjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6RlIiPkhBTC9MTAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSTkc8L3NwYW4+PC9iPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOjEwLjBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OiZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjttc28tZmFyZWFzdC1mb250LWZhbWlseTomcXVvdDtUaW1lcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV3IFJvbWFuJnF1b3Q7OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNvLWJpZGktZm9udC1mYW1pbHk6JnF1b3Q7U2Vnb2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVJJnF1b3Q7O21zby1hbnNpLWxhbmd1YWdlOkZSO21zby1mYXJlYXN0LWxhbmd1YWdlOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCB0eXBlPSJjaXJjbGUiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImNvbG9yOiMxMTExMTE7bXNvLW1hcmdpbi10b3AtYWx0OmF1dG87bXNvLW1hcmdpbi1ib3R0b20tYWx0OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0bztsaW5lLWhlaWdodDpub3JtYWw7bXNvLWxpc3Q6bDAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVsMiBsZm8xO3RhYi1zdG9wczpsaXN0IDEuMGluIj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOjEwLjBwdDtmb250LWZhbWlseTomcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNvLWZhcmVhc3QtZm9udC1mYW1pbHk6JnF1b3Q7VGltZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV3CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJvbWFuJnF1b3Q7O21zby1iaWRpLWZvbnQtZmFtaWx5OiZxdW90O1NlZ29lCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVJJnF1b3Q7OyBtc28tZmFyZWFzdC1sYW5ndWFnZTpGUiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFuZz0iRU4tVVMiPlVwZGF0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMTF9STkdfRGVJbml0KCkgQVBJIHRvIGF2b2lkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIJN1bnVzZWQgdmFyaWFibGWUIHdhcm5pbmdzLjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iY29sb3I6IzExMTExMTttc28tbWFyZ2luLXRvcC1hbHQ6YXV0bzttc28tbWFyZ2luLWJvdHRvbS1hbHQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvO2xpbmUtaGVpZ2h0Om5vcm1hbDttc28tbGlzdDpsMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWwyIGxmbzE7dGFiLXN0b3BzOmxpc3QgMS4waW4iPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6MTAuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjttc28tZmFyZWFzdC1mb250LWZhbWlseToKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtUaW1lcyBOZXcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUm9tYW4mcXVvdDs7bXNvLWJpZGktZm9udC1mYW1pbHk6JnF1b3Q7U2Vnb2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUkmcXVvdDs7bXNvLWFuc2ktbGFuZ3VhZ2U6RlI7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zby1mYXJlYXN0LWxhbmd1YWdlOkZSIj5VcGRhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFMX1JOR19HZW5lcmF0ZVJhbmRvbU51bWJlcigpIEFQSTxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIHR5cGU9InNxdWFyZSI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImNvbG9yOiMxMTExMTE7bXNvLW1hcmdpbi10b3AtYWx0OmF1dG87bXNvLW1hcmdpbi1ib3R0b20tYWx0OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvO2xpbmUtaGVpZ2h0Om5vcm1hbDttc28tbGlzdDpsMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbDMgbGZvMTt0YWItc3RvcHM6bGlzdCAxLjVpbiI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOjEwLjBwdDtmb250LWZhbWlseTomcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc28tZmFyZWFzdC1mb250LWZhbWlseTomcXVvdDtUaW1lcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJvbWFuJnF1b3Q7O21zby1iaWRpLWZvbnQtZmFtaWx5OiZxdW90O1NlZ29lCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUkmcXVvdDs7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6RlIiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFuZz0iRU4tVVMiPlVwZGF0ZSB0aW1lb3V0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVjaGFuaXNtIHRvIGF2b2lkIGZhbHNlIHRpbWVvdXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXRlY3Rpb24gaW4gY2FzZSBvZiBwcmVlbXB0aW9uLjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImNvbG9yOiMxMTExMTE7bXNvLW1hcmdpbi10b3AtYWx0OmF1dG87bXNvLW1hcmdpbi1ib3R0b20tYWx0OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG87bGluZS1oZWlnaHQ6bm9ybWFsO21zby1saXN0OmwwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWwxIGxmbzE7dGFiLXN0b3BzOmxpc3QgLjVpbiI+PGI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZToxMC4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmO21zby1mYXJlYXN0LWZvbnQtZmFtaWx5OgorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1RpbWVzIE5ldworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSb21hbiZxdW90Ozttc28tYmlkaS1mb250LWZhbWlseTomcXVvdDtTZWdvZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVSSZxdW90Ozttc28tYW5zaS1sYW5ndWFnZTpGUjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6RlIiPkhBTC9MTAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSVEM8L3NwYW4+PC9iPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOjEwLjBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OiZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjttc28tZmFyZWFzdC1mb250LWZhbWlseTomcXVvdDtUaW1lcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV3IFJvbWFuJnF1b3Q7OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNvLWJpZGktZm9udC1mYW1pbHk6JnF1b3Q7U2Vnb2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVJJnF1b3Q7O21zby1hbnNpLWxhbmd1YWdlOkZSO21zby1mYXJlYXN0LWxhbmd1YWdlOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCB0eXBlPSJjaXJjbGUiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImNvbG9yOiMxMTExMTE7bXNvLW1hcmdpbi10b3AtYWx0OmF1dG87bXNvLW1hcmdpbi1ib3R0b20tYWx0OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0bztsaW5lLWhlaWdodDpub3JtYWw7bXNvLWxpc3Q6bDAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVsMiBsZm8xO3RhYi1zdG9wczpsaXN0IDEuMGluIj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOjEwLjBwdDtmb250LWZhbWlseTomcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNvLWZhcmVhc3QtZm9udC1mYW1pbHk6JnF1b3Q7VGltZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV3CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJvbWFuJnF1b3Q7O21zby1iaWRpLWZvbnQtZmFtaWx5OiZxdW90O1NlZ29lCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVJJnF1b3Q7OyBtc28tZmFyZWFzdC1sYW5ndWFnZTpGUiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFuZz0iRU4tVVMiPlVwZGF0ZSBfX0hBTF9SVENfhSg8Yj5IQU5ETEU8L2I+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICCFKSBtYWNyb3MgdG8gYWNjZXNzIHJlZ2lzdGVycworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdWdoICg8Yj5IQU5ETEU8L2I+KS0mZ3Q7SW5zdGFuY2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9pbnRlciBhbmQgYXZvaWQgInVudXNlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSIgd2FybmluZ3MuPG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJjb2xvcjojMTExMTExO21zby1tYXJnaW4tdG9wLWFsdDphdXRvO21zby1tYXJnaW4tYm90dG9tLWFsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG87bGluZS1oZWlnaHQ6bm9ybWFsO21zby1saXN0OmwwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbDIgbGZvMTt0YWItc3RvcHM6bGlzdCAxLjBpbiI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZToxMC4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zby1mYXJlYXN0LWZvbnQtZmFtaWx5OiZxdW90O1RpbWVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSb21hbiZxdW90Ozttc28tYmlkaS1mb250LWZhbWlseTomcXVvdDtTZWdvZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVSSZxdW90OzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6RlIiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhbmc9IkVOLVVTIj5Db3JyZWN0IG1vbnRoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hbmFnZW1lbnQgaW4gSVNfTExfUlRDX01PTlRIKCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFjcm8uPG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJjb2xvcjojMTExMTExO21zby1tYXJnaW4tdG9wLWFsdDphdXRvO21zby1tYXJnaW4tYm90dG9tLWFsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG87bGluZS1oZWlnaHQ6bm9ybWFsO21zby1saXN0OmwwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbDIgbGZvMTt0YWItc3RvcHM6bGlzdCAxLjBpbiI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZToxMC4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zby1mYXJlYXN0LWZvbnQtZmFtaWx5OiZxdW90O1RpbWVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSb21hbiZxdW90Ozttc28tYmlkaS1mb250LWZhbWlseTomcXVvdDtTZWdvZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVSSZxdW90OzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6RlIiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhbmc9IkVOLVVTIj5GaXggd3JvbmcgcmVmZXJlbmNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIFJUQ3guPG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImNvbG9yOiMxMTExMTE7bXNvLW1hcmdpbi10b3AtYWx0OmF1dG87bXNvLW1hcmdpbi1ib3R0b20tYWx0OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG87bGluZS1oZWlnaHQ6bm9ybWFsO21zby1saXN0OmwwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWwxIGxmbzE7dGFiLXN0b3BzOmxpc3QgLjVpbiI+PGI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZToxMC4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmO21zby1mYXJlYXN0LWZvbnQtZmFtaWx5OgorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1RpbWVzIE5ldworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSb21hbiZxdW90Ozttc28tYmlkaS1mb250LWZhbWlseTomcXVvdDtTZWdvZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVSSZxdW90Ozttc28tYW5zaS1sYW5ndWFnZTpGUjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6RlIiPkhBTCBMUFRJTTwvc3Bhbj48L2I+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6MTAuMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6JnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmO21zby1mYXJlYXN0LWZvbnQtZmFtaWx5OiZxdW90O1RpbWVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXcgUm9tYW4mcXVvdDs7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc28tYmlkaS1mb250LWZhbWlseTomcXVvdDtTZWdvZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUkmcXVvdDs7bXNvLWFuc2ktbGFuZ3VhZ2U6RlI7bXNvLWZhcmVhc3QtbGFuZ3VhZ2U6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGUiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIHR5cGU9ImNpcmNsZSI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iY29sb3I6IzExMTExMTttc28tbWFyZ2luLXRvcC1hbHQ6YXV0bzttc28tbWFyZ2luLWJvdHRvbS1hbHQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvO2xpbmUtaGVpZ2h0Om5vcm1hbDttc28tbGlzdDpsMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWwyIGxmbzE7dGFiLXN0b3BzOmxpc3QgMS4waW4iPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6MTAuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc28tZmFyZWFzdC1mb250LWZhbWlseTomcXVvdDtUaW1lcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUm9tYW4mcXVvdDs7bXNvLWJpZGktZm9udC1mYW1pbHk6JnF1b3Q7U2Vnb2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUkmcXVvdDs7IG1zby1mYXJlYXN0LWxhbmd1YWdlOkZSIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYW5nPSJFTi1VUyI+QWRkIGNoZWNrIG9uIFBSSU1BU0sKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXIgdG8gcHJldmVudCBmcm9tIGVuYWJsaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVud2FudGVkIGdsb2JhbCBpbnRlcnJ1cHRzIHdpdGhpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMUFRJTV9EaXNhYmxlKCkgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExMX0xQVElNX0Rpc2FibGUoKTxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJjb2xvcjojMTExMTExO21zby1tYXJnaW4tdG9wLWFsdDphdXRvO21zby1tYXJnaW4tYm90dG9tLWFsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvO2xpbmUtaGVpZ2h0Om5vcm1hbDttc28tbGlzdDpsMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVsMSBsZm8xO3RhYi1zdG9wczpsaXN0IC41aW4iPjxiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6MTAuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjttc28tZmFyZWFzdC1mb250LWZhbWlseToKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtUaW1lcyBOZXcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUm9tYW4mcXVvdDs7bXNvLWJpZGktZm9udC1mYW1pbHk6JnF1b3Q7U2Vnb2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUkmcXVvdDs7bXNvLWFuc2ktbGFuZ3VhZ2U6RlI7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zby1mYXJlYXN0LWxhbmd1YWdlOkZSIj5IQUwvTEwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVElNPC9zcGFuPjwvYj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZToxMC4wcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseTomcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7bXNvLWZhcmVhc3QtZm9udC1mYW1pbHk6JnF1b3Q7VGltZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldyBSb21hbiZxdW90OzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zby1iaWRpLWZvbnQtZmFtaWx5OiZxdW90O1NlZ29lCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVSSZxdW90Ozttc28tYW5zaS1sYW5ndWFnZTpGUjttc28tZmFyZWFzdC1sYW5ndWFnZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZSIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgdHlwZT0iY2lyY2xlIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJjb2xvcjojMTExMTExO21zby1tYXJnaW4tdG9wLWFsdDphdXRvO21zby1tYXJnaW4tYm90dG9tLWFsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG87bGluZS1oZWlnaHQ6bm9ybWFsO21zby1saXN0OmwwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbDIgbGZvMTt0YWItc3RvcHM6bGlzdCAxLjBpbiI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZToxMC4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zby1mYXJlYXN0LWZvbnQtZmFtaWx5OiZxdW90O1RpbWVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSb21hbiZxdW90Ozttc28tYmlkaS1mb250LWZhbWlseTomcXVvdDtTZWdvZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVSSZxdW90OzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6RlIiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhbmc9IkVOLVVTIj5VcGRhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFMX1RJTUV4X0NvbmZpZ0JyZWFrSW5wdXQgdG8gdXNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENNU0lTIFRJTTFfT1IyX0JLREYxQkswRV9Qb3MKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5pdGlvbiBpbnN0ZWFkIG9mIGl0cyBoYXJkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGVkIHZhbHVlLjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iY29sb3I6IzExMTExMTttc28tbWFyZ2luLXRvcC1hbHQ6YXV0bzttc28tbWFyZ2luLWJvdHRvbS1hbHQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvO2xpbmUtaGVpZ2h0Om5vcm1hbDttc28tbGlzdDpsMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWwyIGxmbzE7dGFiLXN0b3BzOmxpc3QgMS4waW4iPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6MTAuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc28tZmFyZWFzdC1mb250LWZhbWlseTomcXVvdDtUaW1lcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUm9tYW4mcXVvdDs7bXNvLWJpZGktZm9udC1mYW1pbHk6JnF1b3Q7U2Vnb2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUkmcXVvdDs7IG1zby1mYXJlYXN0LWxhbmd1YWdlOkZSIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYW5nPSJFTi1VUyI+Rml4IHdyb25nIGNvbXBpbGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIHVzZWQgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVElNX0xMX0VDX0RNQUJVUlNUX0JBU0VBRERSCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0YW50IGRlZmluaXRpb25zLjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJjb2xvcjojMTExMTExO21zby1tYXJnaW4tdG9wLWFsdDphdXRvO21zby1tYXJnaW4tYm90dG9tLWFsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvO2xpbmUtaGVpZ2h0Om5vcm1hbDttc28tbGlzdDpsMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVsMSBsZm8xO3RhYi1zdG9wczpsaXN0IC41aW4iPjxiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6MTAuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjttc28tZmFyZWFzdC1mb250LWZhbWlseToKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtUaW1lcyBOZXcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUm9tYW4mcXVvdDs7bXNvLWJpZGktZm9udC1mYW1pbHk6JnF1b3Q7U2Vnb2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUkmcXVvdDs7bXNvLWFuc2ktbGFuZ3VhZ2U6RlI7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zby1mYXJlYXN0LWxhbmd1YWdlOkZSIj5IQUwgVUFSVDwvc3Bhbj48L2I+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6MTAuMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6JnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmO21zby1mYXJlYXN0LWZvbnQtZmFtaWx5OiZxdW90O1RpbWVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXcgUm9tYW4mcXVvdDs7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc28tYmlkaS1mb250LWZhbWlseTomcXVvdDtTZWdvZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUkmcXVvdDs7bXNvLWFuc2ktbGFuZ3VhZ2U6RlI7bXNvLWZhcmVhc3QtbGFuZ3VhZ2U6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGUiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIHR5cGU9ImNpcmNsZSI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iY29sb3I6IzExMTExMTttc28tbWFyZ2luLXRvcC1hbHQ6YXV0bzttc28tbWFyZ2luLWJvdHRvbS1hbHQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvO2xpbmUtaGVpZ2h0Om5vcm1hbDttc28tbGlzdDpsMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWwyIGxmbzE7dGFiLXN0b3BzOmxpc3QgMS4waW4iPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6MTAuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc28tZmFyZWFzdC1mb250LWZhbWlseTomcXVvdDtUaW1lcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUm9tYW4mcXVvdDs7bXNvLWJpZGktZm9udC1mYW1pbHk6JnF1b3Q7U2Vnb2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUkmcXVvdDs7IG1zby1mYXJlYXN0LWxhbmd1YWdlOkZSIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYW5nPSJFTi1VUyI+Rml4IGVycm9uZW91cyBVQVJUknMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlIHN0YXRlIGluIGNhc2Ugb2YgZXJyb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuZWQgYWZ0ZXIgRE1BIHJlY2VwdGlvbiBzdGFydAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoaW4gVUFSVF9TdGFydF9SZWNlaXZlX0RNQSgpLjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iY29sb3I6IzExMTExMTttc28tbWFyZ2luLXRvcC1hbHQ6YXV0bzttc28tbWFyZ2luLWJvdHRvbS1hbHQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvO2xpbmUtaGVpZ2h0Om5vcm1hbDttc28tbGlzdDpsMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWwyIGxmbzE7dGFiLXN0b3BzOmxpc3QgMS4waW4iPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6MTAuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc28tZmFyZWFzdC1mb250LWZhbWlseTomcXVvdDtUaW1lcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUm9tYW4mcXVvdDs7bXNvLWJpZGktZm9udC1mYW1pbHk6JnF1b3Q7U2Vnb2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUkmcXVvdDs7IG1zby1mYXJlYXN0LWxhbmd1YWdlOkZSIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYW5nPSJFTi1VUyI+Q29ycmVjdGlvbiBvbiBVQVJUCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlY2VwdGlvblR5cGUgbWFuYWdlbWVudCBpbiBjYXNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mIFJlY2VwdGlvblRvSWRsZSBBUEkgYXJlIGNhbGxlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tIFJ4RXZlbnQgY2FsbGJhY2suPG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJjb2xvcjojMTExMTExO21zby1tYXJnaW4tdG9wLWFsdDphdXRvO21zby1tYXJnaW4tYm90dG9tLWFsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG87bGluZS1oZWlnaHQ6bm9ybWFsO21zby1saXN0OmwwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbDIgbGZvMTt0YWItc3RvcHM6bGlzdCAxLjBpbiI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZToxMC4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zby1mYXJlYXN0LWZvbnQtZmFtaWx5OiZxdW90O1RpbWVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSb21hbiZxdW90Ozttc28tYmlkaS1mb250LWZhbWlseTomcXVvdDtTZWdvZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVSSZxdW90OzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6RlIiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhbmc9IkVOLVVTIj5IYW5kbGluZyBvZiBVQVJUCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmN1cnJlbnQgcmVnaXN0ZXIgYWNjZXNzIGluIGNhc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2YgcmFjZSBjb25kaXRpb24gYmV0d2VlbiBUeCBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUnggdHJhbnNmZXJzIChIQUwgVUFSVCBhbmQgTEwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTFBVQVJUKTxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iY29sb3I6IzExMTExMTttc28tbWFyZ2luLXRvcC1hbHQ6YXV0bzttc28tbWFyZ2luLWJvdHRvbS1hbHQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvO2xpbmUtaGVpZ2h0Om5vcm1hbDttc28tbGlzdDpsMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWwyIGxmbzE7dGFiLXN0b3BzOmxpc3QgMS4waW4iPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6MTAuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc28tZmFyZWFzdC1mb250LWZhbWlseTomcXVvdDtUaW1lcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUm9tYW4mcXVvdDs7bXNvLWJpZGktZm9udC1mYW1pbHk6JnF1b3Q7U2Vnb2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUkmcXVvdDs7IG1zby1mYXJlYXN0LWxhbmd1YWdlOkZSIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYW5nPSJFTi1VUyI+SW1wcm92ZSBoZWFkZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUFSVF9XYWl0T25GbGFnVW50aWxUaW1lb3V0KCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb248bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImNvbG9yOiMxMTExMTE7bXNvLW1hcmdpbi10b3AtYWx0OmF1dG87bXNvLW1hcmdpbi1ib3R0b20tYWx0OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0bztsaW5lLWhlaWdodDpub3JtYWw7bXNvLWxpc3Q6bDAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVsMiBsZm8xO3RhYi1zdG9wczpsaXN0IDEuMGluIj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOjEwLjBwdDtmb250LWZhbWlseTomcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNvLWZhcmVhc3QtZm9udC1mYW1pbHk6JnF1b3Q7VGltZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV3CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJvbWFuJnF1b3Q7O21zby1iaWRpLWZvbnQtZmFtaWx5OiZxdW90O1NlZ29lCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVJJnF1b3Q7OyBtc28tZmFyZWFzdC1sYW5ndWFnZTpGUiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFuZz0iRU4tVVMiPkFkZCBhIGNoZWNrIG9uIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVQVJUIHBhcml0eSBiZWZvcmUgZW5hYmxpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcml0eSBlcnJvciBpbnRlcnJ1cHRpb24uPG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJjb2xvcjojMTExMTExO21zby1tYXJnaW4tdG9wLWFsdDphdXRvO21zby1tYXJnaW4tYm90dG9tLWFsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG87bGluZS1oZWlnaHQ6bm9ybWFsO21zby1saXN0OmwwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbDIgbGZvMTt0YWItc3RvcHM6bGlzdCAxLjBpbiI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZToxMC4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zby1mYXJlYXN0LWZvbnQtZmFtaWx5OiZxdW90O1RpbWVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSb21hbiZxdW90Ozttc28tYmlkaS1mb250LWZhbWlseTomcXVvdDtTZWdvZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVSSZxdW90OzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6RlIiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhbmc9IkVOLVVTIj5BZGQgY29uc3QgcXVhbGlmaWVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciByZWFkIG9ubHkgcG9pbnRlcnMuPG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJjb2xvcjojMTExMTExO21zby1tYXJnaW4tdG9wLWFsdDphdXRvO21zby1tYXJnaW4tYm90dG9tLWFsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG87bGluZS1oZWlnaHQ6bm9ybWFsO21zby1saXN0OmwwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbDIgbGZvMTt0YWItc3RvcHM6bGlzdCAxLjBpbiI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZToxMC4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zby1mYXJlYXN0LWZvbnQtZmFtaWx5OiZxdW90O1RpbWVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSb21hbiZxdW90Ozttc28tYmlkaS1mb250LWZhbWlseTomcXVvdDtTZWdvZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVSSZxdW90OzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6RlIiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhbmc9IkVOLVVTIj5GaXggd3JvbmcgY2FzdCB3aGVuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXB1dGluZyB0aGUgVVNBUlRESVYgdmFsdWUgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUFSVF9TZXRDb25maWcoKS48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iY29sb3I6IzExMTExMTttc28tbWFyZ2luLXRvcC1hbHQ6YXV0bzttc28tbWFyZ2luLWJvdHRvbS1hbHQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0bztsaW5lLWhlaWdodDpub3JtYWw7bXNvLWxpc3Q6bDAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbDEgbGZvMTt0YWItc3RvcHM6bGlzdCAuNWluIj48Yj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOjEwLjBwdDtmb250LWZhbWlseTomcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7bXNvLWZhcmVhc3QtZm9udC1mYW1pbHk6CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VGltZXMgTmV3CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJvbWFuJnF1b3Q7O21zby1iaWRpLWZvbnQtZmFtaWx5OiZxdW90O1NlZ29lCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVJJnF1b3Q7O21zby1hbnNpLWxhbmd1YWdlOkZSOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc28tZmFyZWFzdC1sYW5ndWFnZTpGUiI+SEFML0xMCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVTQVJUPC9zcGFuPjwvYj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwLjBwdDtmb250LWZhbWlseTomcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7bXNvLWZhcmVhc3QtZm9udC1mYW1pbHk6JnF1b3Q7VGltZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldyBSb21hbiZxdW90OzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zby1iaWRpLWZvbnQtZmFtaWx5OiZxdW90O1NlZ29lCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVSSZxdW90Ozttc28tYW5zaS1sYW5ndWFnZTpGUjttc28tZmFyZWFzdC1sYW5ndWFnZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZSIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgdHlwZT0iY2lyY2xlIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJjb2xvcjojMTExMTExO21zby1tYXJnaW4tdG9wLWFsdDphdXRvO21zby1tYXJnaW4tYm90dG9tLWFsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG87bGluZS1oZWlnaHQ6bm9ybWFsO21zby1saXN0OmwwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbDIgbGZvMTt0YWItc3RvcHM6bGlzdCAxLjBpbiI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZToxMC4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zby1mYXJlYXN0LWZvbnQtZmFtaWx5OiZxdW90O1RpbWVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSb21hbiZxdW90Ozttc28tYmlkaS1mb250LWZhbWlseTomcXVvdDtTZWdvZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVSSZxdW90OzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6RlIiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhbmc9IkVOLVVTIj5JbXByb3ZlIGhlYWRlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVU0FSVF9XYWl0T25GbGFnVW50aWxUaW1lb3V0KCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24uPG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJjb2xvcjojMTExMTExO21zby1tYXJnaW4tdG9wLWFsdDphdXRvO21zby1tYXJnaW4tYm90dG9tLWFsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG87bGluZS1oZWlnaHQ6bm9ybWFsO21zby1saXN0OmwwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbDIgbGZvMTt0YWItc3RvcHM6bGlzdCAxLjBpbiI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZToxMC4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zby1mYXJlYXN0LWZvbnQtZmFtaWx5OiZxdW90O1RpbWVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSb21hbiZxdW90Ozttc28tYmlkaS1mb250LWZhbWlseTomcXVvdDtTZWdvZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVSSZxdW90OzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6RlIiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhbmc9IkVOLVVTIj5BZGQgYSBjaGVjayBvbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVVNBUlQgcGFyaXR5IGJlZm9yZSBlbmFibGluZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyaXR5IGVycm9yIGludGVycnVwdC48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImNvbG9yOiMxMTExMTE7bXNvLW1hcmdpbi10b3AtYWx0OmF1dG87bXNvLW1hcmdpbi1ib3R0b20tYWx0OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0bztsaW5lLWhlaWdodDpub3JtYWw7bXNvLWxpc3Q6bDAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVsMiBsZm8xO3RhYi1zdG9wczpsaXN0IDEuMGluIj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOjEwLjBwdDtmb250LWZhbWlseTomcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNvLWZhcmVhc3QtZm9udC1mYW1pbHk6JnF1b3Q7VGltZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV3CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJvbWFuJnF1b3Q7O21zby1iaWRpLWZvbnQtZmFtaWx5OiZxdW90O1NlZ29lCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVJJnF1b3Q7OyBtc28tZmFyZWFzdC1sYW5ndWFnZTpGUiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFuZz0iRU4tVVMiPkFkZCBjb25zdCBxdWFsaWZpZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHJlYWQgb25seSBwb2ludGVycy48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImNvbG9yOiMxMTExMTE7bXNvLW1hcmdpbi10b3AtYWx0OmF1dG87bXNvLW1hcmdpbi1ib3R0b20tYWx0OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0bztsaW5lLWhlaWdodDpub3JtYWw7bXNvLWxpc3Q6bDAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVsMiBsZm8xO3RhYi1zdG9wczpsaXN0IDEuMGluIj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOjEwLjBwdDtmb250LWZhbWlseTomcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNvLWZhcmVhc3QtZm9udC1mYW1pbHk6JnF1b3Q7VGltZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV3CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJvbWFuJnF1b3Q7O21zby1iaWRpLWZvbnQtZmFtaWx5OiZxdW90O1NlZ29lCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVJJnF1b3Q7OyBtc28tZmFyZWFzdC1sYW5ndWFnZTpGUiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFuZz0iRU4tVVMiPkhhbmRsaW5nIG9mIFVBUlQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uY3VycmVudCByZWdpc3RlciBhY2Nlc3MgaW4gY2FzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZiByYWNlIGNvbmRpdGlvbiBiZXR3ZWVuIFR4IGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSeCB0cmFuc2ZlcnMgKEhBTCBVQVJUIGFuZCBMTAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMUFVBUlQpPG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJjb2xvcjojMTExMTExO21zby1tYXJnaW4tdG9wLWFsdDphdXRvO21zby1tYXJnaW4tYm90dG9tLWFsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG87bGluZS1oZWlnaHQ6bm9ybWFsO21zby1saXN0OmwwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbDIgbGZvMTt0YWItc3RvcHM6bGlzdCAxLjBpbiI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZToxMC4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zby1mYXJlYXN0LWZvbnQtZmFtaWx5OiZxdW90O1RpbWVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSb21hbiZxdW90Ozttc28tYmlkaS1mb250LWZhbWlseTomcXVvdDtTZWdvZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVSSZxdW90OzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6RlIiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhbmc9IkVOLVVTIj5GaXggY29tcGlsYXRpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2FybmluZ3MgZ2VuZXJhdGVkIHdpdGggQVJNVjYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcGlsZXIuPG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImNvbG9yOiMxMTExMTE7bXNvLW1hcmdpbi10b3AtYWx0OmF1dG87bXNvLW1hcmdpbi1ib3R0b20tYWx0OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG87bGluZS1oZWlnaHQ6bm9ybWFsO21zby1saXN0OmwwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWwxIGxmbzE7dGFiLXN0b3BzOmxpc3QgLjVpbiI+PGI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZToxMC4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmO21zby1mYXJlYXN0LWZvbnQtZmFtaWx5OgorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1RpbWVzIE5ldworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSb21hbiZxdW90Ozttc28tYmlkaS1mb250LWZhbWlseTomcXVvdDtTZWdvZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVSSZxdW90Ozttc28tYW5zaS1sYW5ndWFnZTpGUjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6RlIiPkhBTCBJUkRBPC9zcGFuPjwvYj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZToxMC4wcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseTomcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7bXNvLWZhcmVhc3QtZm9udC1mYW1pbHk6JnF1b3Q7VGltZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldyBSb21hbiZxdW90OzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zby1iaWRpLWZvbnQtZmFtaWx5OiZxdW90O1NlZ29lCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVSSZxdW90Ozttc28tYW5zaS1sYW5ndWFnZTpGUjttc28tZmFyZWFzdC1sYW5ndWFnZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZSIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgdHlwZT0iY2lyY2xlIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJjb2xvcjojMTExMTExO21zby1tYXJnaW4tdG9wLWFsdDphdXRvO21zby1tYXJnaW4tYm90dG9tLWFsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG87bGluZS1oZWlnaHQ6bm9ybWFsO21zby1saXN0OmwwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbDIgbGZvMTt0YWItc3RvcHM6bGlzdCAxLjBpbiI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZToxMC4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zby1mYXJlYXN0LWZvbnQtZmFtaWx5OiZxdW90O1RpbWVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSb21hbiZxdW90Ozttc28tYmlkaS1mb250LWZhbWlseTomcXVvdDtTZWdvZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVSSZxdW90OzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6RlIiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhbmc9IkVOLVVTIj5JbXByb3ZlIGhlYWRlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJUkRBX1dhaXRPbkZsYWdVbnRpbFRpbWVvdXQoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iY29sb3I6IzExMTExMTttc28tbWFyZ2luLXRvcC1hbHQ6YXV0bzttc28tbWFyZ2luLWJvdHRvbS1hbHQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvO2xpbmUtaGVpZ2h0Om5vcm1hbDttc28tbGlzdDpsMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWwyIGxmbzE7dGFiLXN0b3BzOmxpc3QgMS4waW4iPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6MTAuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc28tZmFyZWFzdC1mb250LWZhbWlseTomcXVvdDtUaW1lcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUm9tYW4mcXVvdDs7bXNvLWJpZGktZm9udC1mYW1pbHk6JnF1b3Q7U2Vnb2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUkmcXVvdDs7IG1zby1mYXJlYXN0LWxhbmd1YWdlOkZSIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYW5nPSJFTi1VUyI+QWRkIGEgY2hlY2sgb24gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElSREEgcGFyaXR5IGJlZm9yZSBlbmFibGluZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyaXR5IGVycm9yIGludGVycnVwdC48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImNvbG9yOiMxMTExMTE7bXNvLW1hcmdpbi10b3AtYWx0OmF1dG87bXNvLW1hcmdpbi1ib3R0b20tYWx0OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0bztsaW5lLWhlaWdodDpub3JtYWw7bXNvLWxpc3Q6bDAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVsMiBsZm8xO3RhYi1zdG9wczpsaXN0IDEuMGluIj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOjEwLjBwdDtmb250LWZhbWlseTomcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNvLWZhcmVhc3QtZm9udC1mYW1pbHk6JnF1b3Q7VGltZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV3CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJvbWFuJnF1b3Q7O21zby1iaWRpLWZvbnQtZmFtaWx5OiZxdW90O1NlZ29lCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVJJnF1b3Q7OyBtc28tZmFyZWFzdC1sYW5ndWFnZTpGUiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFuZz0iRU4tVVMiPkFkZCBjb25zdCBxdWFsaWZpZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHJlYWQgb25seSBwb2ludGVycy48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImNvbG9yOiMxMTExMTE7bXNvLW1hcmdpbi10b3AtYWx0OmF1dG87bXNvLW1hcmdpbi1ib3R0b20tYWx0OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0bztsaW5lLWhlaWdodDpub3JtYWw7bXNvLWxpc3Q6bDAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVsMiBsZm8xO3RhYi1zdG9wczpsaXN0IDEuMGluIj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOjEwLjBwdDtmb250LWZhbWlseTomcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNvLWZhcmVhc3QtZm9udC1mYW1pbHk6JnF1b3Q7VGltZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV3CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJvbWFuJnF1b3Q7O21zby1iaWRpLWZvbnQtZmFtaWx5OiZxdW90O1NlZ29lCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVJJnF1b3Q7OyBtc28tZmFyZWFzdC1sYW5ndWFnZTpGUiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFuZz0iRU4tVVMiPkZpeCB3cm9uZyBjYXN0IHdoZW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcHV0aW5nIHRoZSBVU0FSVERJViB2YWx1ZSBpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJUkRBX1NldENvbmZpZygpLjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJjb2xvcjojMTExMTExO21zby1tYXJnaW4tdG9wLWFsdDphdXRvO21zby1tYXJnaW4tYm90dG9tLWFsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvO2xpbmUtaGVpZ2h0Om5vcm1hbDttc28tbGlzdDpsMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVsMSBsZm8xO3RhYi1zdG9wczpsaXN0IC41aW4iPjxiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6MTAuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjttc28tZmFyZWFzdC1mb250LWZhbWlseToKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtUaW1lcyBOZXcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUm9tYW4mcXVvdDs7bXNvLWJpZGktZm9udC1mYW1pbHk6JnF1b3Q7U2Vnb2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUkmcXVvdDs7bXNvLWFuc2ktbGFuZ3VhZ2U6RlI7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zby1mYXJlYXN0LWxhbmd1YWdlOkZSIj5IQUwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU01BUlRDQVJEPC9zcGFuPjwvYj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwLjBwdDtmb250LWZhbWlseTomcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7bXNvLWZhcmVhc3QtZm9udC1mYW1pbHk6JnF1b3Q7VGltZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldyBSb21hbiZxdW90OzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zby1iaWRpLWZvbnQtZmFtaWx5OiZxdW90O1NlZ29lCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVSSZxdW90Ozttc28tYW5zaS1sYW5ndWFnZTpGUjttc28tZmFyZWFzdC1sYW5ndWFnZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZSIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgdHlwZT0iY2lyY2xlIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJjb2xvcjojMTExMTExO21zby1tYXJnaW4tdG9wLWFsdDphdXRvO21zby1tYXJnaW4tYm90dG9tLWFsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG87bGluZS1oZWlnaHQ6bm9ybWFsO21zby1saXN0OmwwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbDIgbGZvMTt0YWItc3RvcHM6bGlzdCAxLjBpbiI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZToxMC4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zby1mYXJlYXN0LWZvbnQtZmFtaWx5OiZxdW90O1RpbWVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSb21hbiZxdW90Ozttc28tYmlkaS1mb250LWZhbWlseTomcXVvdDtTZWdvZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVSSZxdW90OzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6RlIiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhbmc9IkVOLVVTIj5JbXByb3ZlIGhlYWRlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTTUFSVENBUkRfV2FpdE9uRmxhZ1VudGlsVGltZW91dCgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uPG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJjb2xvcjojMTExMTExO21zby1tYXJnaW4tdG9wLWFsdDphdXRvO21zby1tYXJnaW4tYm90dG9tLWFsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG87bGluZS1oZWlnaHQ6bm9ybWFsO21zby1saXN0OmwwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbDIgbGZvMTt0YWItc3RvcHM6bGlzdCAxLjBpbiI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZToxMC4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zby1mYXJlYXN0LWZvbnQtZmFtaWx5OiZxdW90O1RpbWVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSb21hbiZxdW90Ozttc28tYmlkaS1mb250LWZhbWlseTomcXVvdDtTZWdvZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVSSZxdW90OzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6RlIiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhbmc9IkVOLVVTIj5BZGQgY29uc3QgcXVhbGlmaWVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciByZWFkIG9ubHkgcG9pbnRlcnMuPG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJjb2xvcjojMTExMTExO21zby1tYXJnaW4tdG9wLWFsdDphdXRvO21zby1tYXJnaW4tYm90dG9tLWFsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG87bGluZS1oZWlnaHQ6bm9ybWFsO21zby1saXN0OmwwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbDIgbGZvMTt0YWItc3RvcHM6bGlzdCAxLjBpbiI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZToxMC4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zby1mYXJlYXN0LWZvbnQtZmFtaWx5OiZxdW90O1RpbWVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSb21hbiZxdW90Ozttc28tYmlkaS1mb250LWZhbWlseTomcXVvdDtTZWdvZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVSSZxdW90OzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6RlIiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhbmc9IkVOLVVTIj5GaXggd3JvbmcgY2FzdCB3aGVuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXB1dGluZyB0aGUgVVNBUlRESVYgdmFsdWUgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU01BUlRDQVJEX1NldENvbmZpZygpLjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJjb2xvcjojMTExMTExO21zby1tYXJnaW4tdG9wLWFsdDphdXRvO21zby1tYXJnaW4tYm90dG9tLWFsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvO2xpbmUtaGVpZ2h0Om5vcm1hbDttc28tbGlzdDpsMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVsMSBsZm8xO3RhYi1zdG9wczpsaXN0IC41aW4iPjxiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6MTAuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjttc28tZmFyZWFzdC1mb250LWZhbWlseToKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtUaW1lcyBOZXcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUm9tYW4mcXVvdDs7bXNvLWJpZGktZm9udC1mYW1pbHk6JnF1b3Q7U2Vnb2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUkmcXVvdDs7bXNvLWFuc2ktbGFuZ3VhZ2U6RlI7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zby1mYXJlYXN0LWxhbmd1YWdlOkZSIj5IQUwvTEwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1BJPC9zcGFuPjwvYj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZToxMC4wcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseTomcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7bXNvLWZhcmVhc3QtZm9udC1mYW1pbHk6JnF1b3Q7VGltZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldyBSb21hbiZxdW90OzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zby1iaWRpLWZvbnQtZmFtaWx5OiZxdW90O1NlZ29lCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVSSZxdW90Ozttc28tYW5zaS1sYW5ndWFnZTpGUjttc28tZmFyZWFzdC1sYW5ndWFnZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZSIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgdHlwZT0iY2lyY2xlIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJjb2xvcjojMTExMTExO21zby1tYXJnaW4tdG9wLWFsdDphdXRvO21zby1tYXJnaW4tYm90dG9tLWFsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG87bGluZS1oZWlnaHQ6bm9ybWFsO21zby1saXN0OmwwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbDIgbGZvMTt0YWItc3RvcHM6bGlzdCAxLjBpbiI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZToxMC4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zby1mYXJlYXN0LWZvbnQtZmFtaWx5OiZxdW90O1RpbWVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSb21hbiZxdW90Ozttc28tYmlkaS1mb250LWZhbWlseTomcXVvdDtTZWdvZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVSSZxdW90OzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6RlIiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhbmc9IkVOLVVTIj5VcGRhdGVkIHRvIGltcGxlbWVudAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFcnJhdGFzaGVldDogQlNZIGJpdCBtYXkgc3RheSBoaWdoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0IHRoZSBlbmQgb2YgYSBkYXRhIHRyYW5zZmVyIGluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNsYXZlIG1vZGUuPG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJjb2xvcjojMTExMTExO21zby1tYXJnaW4tdG9wLWFsdDphdXRvO21zby1tYXJnaW4tYm90dG9tLWFsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG87bGluZS1oZWlnaHQ6bm9ybWFsO21zby1saXN0OmwwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbDIgbGZvMTt0YWItc3RvcHM6bGlzdCAxLjBpbiI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZToxMC4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zby1mYXJlYXN0LWZvbnQtZmFtaWx5OiZxdW90O1RpbWVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSb21hbiZxdW90Ozttc28tYmlkaS1mb250LWZhbWlseTomcXVvdDtTZWdvZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVSSZxdW90OzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6RlIiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhbmc9IkVOLVVTIj5VcGRhdGVkIHRvIGZpeAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNSVNSQS1DIDIwMTIgUnVsZS0xMy4yLjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iY29sb3I6IzExMTExMTttc28tbWFyZ2luLXRvcC1hbHQ6YXV0bzttc28tbWFyZ2luLWJvdHRvbS1hbHQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvO2xpbmUtaGVpZ2h0Om5vcm1hbDttc28tbGlzdDpsMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWwyIGxmbzE7dGFiLXN0b3BzOmxpc3QgMS4waW4iPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6MTAuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc28tZmFyZWFzdC1mb250LWZhbWlseTomcXVvdDtUaW1lcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUm9tYW4mcXVvdDs7bXNvLWJpZGktZm9udC1mYW1pbHk6JnF1b3Q7U2Vnb2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUkmcXVvdDs7IG1zby1mYXJlYXN0LWxhbmd1YWdlOkZSIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYW5nPSJFTi1VUyI+VXBkYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExMX1NQSV9UcmFuc21pdERhdGE4KCkgQVBJIHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF2b2lkIGNhc3RpbmcgdGhlIHJlc3VsdCB0byA4CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpdHMuPG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImNvbG9yOiMxMTExMTE7bXNvLW1hcmdpbi10b3AtYWx0OmF1dG87bXNvLW1hcmdpbi1ib3R0b20tYWx0OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG87bGluZS1oZWlnaHQ6bm9ybWFsO21zby1saXN0OmwwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWwxIGxmbzE7dGFiLXN0b3BzOmxpc3QgLjVpbiI+PGI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZToxMC4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmO21zby1mYXJlYXN0LWZvbnQtZmFtaWx5OgorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1RpbWVzIE5ldworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSb21hbiZxdW90Ozttc28tYmlkaS1mb250LWZhbWlseTomcXVvdDtTZWdvZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVSSZxdW90Ozttc28tYW5zaS1sYW5ndWFnZTpGUjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6RlIiPkhBTCBTTUJVUzwvc3Bhbj48L2I+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6MTAuMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6JnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmO21zby1mYXJlYXN0LWZvbnQtZmFtaWx5OiZxdW90O1RpbWVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXcgUm9tYW4mcXVvdDs7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc28tYmlkaS1mb250LWZhbWlseTomcXVvdDtTZWdvZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUkmcXVvdDs7bXNvLWFuc2ktbGFuZ3VhZ2U6RlI7bXNvLWZhcmVhc3QtbGFuZ3VhZ2U6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGUiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIHR5cGU9ImNpcmNsZSI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iY29sb3I6IzExMTExMTttc28tbWFyZ2luLXRvcC1hbHQ6YXV0bzttc28tbWFyZ2luLWJvdHRvbS1hbHQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvO2xpbmUtaGVpZ2h0Om5vcm1hbDttc28tbGlzdDpsMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWwyIGxmbzE7dGFiLXN0b3BzOmxpc3QgMS4waW4iPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6MTAuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc28tZmFyZWFzdC1mb250LWZhbWlseTomcXVvdDtUaW1lcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUm9tYW4mcXVvdDs7bXNvLWJpZGktZm9udC1mYW1pbHk6JnF1b3Q7U2Vnb2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUkmcXVvdDs7IG1zby1mYXJlYXN0LWxhbmd1YWdlOkZSIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYW5nPSJFTi1VUyI+VXBkYXRlIHRvIGZpeCBpc3N1ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZiBtaXNtYXRjaGVkIGRhdGEgcmVjZWl2ZWQgYnkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFzdGVyIGluIGNhc2Ugb2YgZGF0YSBzaXplIHRvIGJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zbWl0dGVkIGJ5IHRoZSBzbGF2ZSBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmVhdGVyIHRoYW4gdGhlIGRhdGEgc2l6ZSB0byBiZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNlaXZlZCBieSB0aGUgbWFzdGVyLjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIHR5cGU9InNxdWFyZSI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImNvbG9yOiMxMTExMTE7bXNvLW1hcmdpbi10b3AtYWx0OmF1dG87bXNvLW1hcmdpbi1ib3R0b20tYWx0OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvO2xpbmUtaGVpZ2h0Om5vcm1hbDttc28tbGlzdDpsMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbDMgbGZvMTt0YWItc3RvcHM6bGlzdCAxLjVpbiI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOjEwLjBwdDtmb250LWZhbWlseTomcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc28tZmFyZWFzdC1mb250LWZhbWlseTomcXVvdDtUaW1lcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJvbWFuJnF1b3Q7O21zby1iaWRpLWZvbnQtZmFtaWx5OiZxdW90O1NlZ29lCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUkmcXVvdDs7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6RlIiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFuZz0iRU4tVVMiPkFkZCBmbHVzaCBvbiBUWAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyLjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImNvbG9yOiMxMTExMTE7bXNvLW1hcmdpbi10b3AtYWx0OmF1dG87bXNvLW1hcmdpbi1ib3R0b20tYWx0OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG87bGluZS1oZWlnaHQ6bm9ybWFsO21zby1saXN0OmwwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWwxIGxmbzE7dGFiLXN0b3BzOmxpc3QgLjVpbiI+PGI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZToxMC4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmO21zby1mYXJlYXN0LWZvbnQtZmFtaWx5OgorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1RpbWVzIE5ldworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSb21hbiZxdW90Ozttc28tYmlkaS1mb250LWZhbWlseTomcXVvdDtTZWdvZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVSSZxdW90Ozttc28tYW5zaS1sYW5ndWFnZTpGUjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6RlIiPkhBTCBJMkM8L3NwYW4+PC9iPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOjEwLjBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OiZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjttc28tZmFyZWFzdC1mb250LWZhbWlseTomcXVvdDtUaW1lcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV3IFJvbWFuJnF1b3Q7OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNvLWJpZGktZm9udC1mYW1pbHk6JnF1b3Q7U2Vnb2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVJJnF1b3Q7O21zby1hbnNpLWxhbmd1YWdlOkZSO21zby1mYXJlYXN0LWxhbmd1YWdlOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCB0eXBlPSJjaXJjbGUiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImNvbG9yOiMxMTExMTE7bXNvLW1hcmdpbi10b3AtYWx0OmF1dG87bXNvLW1hcmdpbi1ib3R0b20tYWx0OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0bztsaW5lLWhlaWdodDpub3JtYWw7bXNvLWxpc3Q6bDAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVsMiBsZm8xO3RhYi1zdG9wczpsaXN0IDEuMGluIj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOjEwLjBwdDtmb250LWZhbWlseTomcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNvLWZhcmVhc3QtZm9udC1mYW1pbHk6JnF1b3Q7VGltZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV3CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJvbWFuJnF1b3Q7O21zby1iaWRpLWZvbnQtZmFtaWx5OiZxdW90O1NlZ29lCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVJJnF1b3Q7OyBtc28tZmFyZWFzdC1sYW5ndWFnZTpGUiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFuZz0iRU4tVVMiPlVwZGF0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJMkNfSXNBY2tub3dsZWRnZUZhaWxlZCgpIEFQSSB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdm9pZCBJMkMgaW4gYnVzeSBzdGF0ZSBpZiBOQUNLCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY2VpdmVkIGFmdGVyIHRyYW5zbWl0dGluZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RlciBhZGRyZXNzLjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iY29sb3I6IzExMTExMTttc28tbWFyZ2luLXRvcC1hbHQ6YXV0bzttc28tbWFyZ2luLWJvdHRvbS1hbHQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvO2xpbmUtaGVpZ2h0Om5vcm1hbDttc28tbGlzdDpsMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWwyIGxmbzE7dGFiLXN0b3BzOmxpc3QgMS4waW4iPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6MTAuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc28tZmFyZWFzdC1mb250LWZhbWlseTomcXVvdDtUaW1lcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUm9tYW4mcXVvdDs7bXNvLWJpZGktZm9udC1mYW1pbHk6JnF1b3Q7U2Vnb2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUkmcXVvdDs7IG1zby1mYXJlYXN0LWxhbmd1YWdlOkZSIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYW5nPSJFTi1VUyI+VXBkYXRlIHRvIGhhbmRsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnMgaW4gcG9sbGluZyBtb2RlLjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIHR5cGU9InNxdWFyZSI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImNvbG9yOiMxMTExMTE7bXNvLW1hcmdpbi10b3AtYWx0OmF1dG87bXNvLW1hcmdpbi1ib3R0b20tYWx0OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvO2xpbmUtaGVpZ2h0Om5vcm1hbDttc28tbGlzdDpsMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbDMgbGZvMTt0YWItc3RvcHM6bGlzdCAxLjVpbiI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOjEwLjBwdDtmb250LWZhbWlseTomcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc28tZmFyZWFzdC1mb250LWZhbWlseTomcXVvdDtUaW1lcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJvbWFuJnF1b3Q7O21zby1iaWRpLWZvbnQtZmFtaWx5OiZxdW90O1NlZ29lCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUkmcXVvdDs7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6RlIiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFuZz0iRU4tVVMiPlJlbmFtZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEkyQ19Jc0Fja25vd2xlZGdlRmFpbGVkKCkgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJMkNfSXNFcnJvck9jY3VycmVkKCkgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29ycmVjdGx5IG1hbmFnZSB3aGVuIGVycm9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2NjdXJzLjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJjb2xvcjojMTExMTExO21zby1tYXJnaW4tdG9wLWFsdDphdXRvO21zby1tYXJnaW4tYm90dG9tLWFsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG87bGluZS1oZWlnaHQ6bm9ybWFsO21zby1saXN0OmwwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbDIgbGZvMTt0YWItc3RvcHM6bGlzdCAxLjBpbiI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZToxMC4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zby1mYXJlYXN0LWZvbnQtZmFtaWx5OiZxdW90O1RpbWVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSb21hbiZxdW90Ozttc28tYmlkaS1mb250LWZhbWlseTomcXVvdDtTZWdvZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVSSZxdW90OzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6RlIiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhbmc9IkVOLVVTIj5EZWNsYXJlIGFuIGludGVybmFsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hY3JvIGxpbmsgdG8gRE1BIG1hY3JvIHRvIGNoZWNrCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbWFpbmluZyBkYXRhOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJMkNfR0VUX0RNQV9SRU1BSU5fREFUQTxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iY29sb3I6IzExMTExMTttc28tbWFyZ2luLXRvcC1hbHQ6YXV0bzttc28tbWFyZ2luLWJvdHRvbS1hbHQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvO2xpbmUtaGVpZ2h0Om5vcm1hbDttc28tbGlzdDpsMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWwyIGxmbzE7dGFiLXN0b3BzOmxpc3QgMS4waW4iPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6MTAuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc28tZmFyZWFzdC1mb250LWZhbWlseTomcXVvdDtUaW1lcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUm9tYW4mcXVvdDs7bXNvLWJpZGktZm9udC1mYW1pbHk6JnF1b3Q7U2Vnb2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUkmcXVvdDs7IG1zby1mYXJlYXN0LWxhbmd1YWdlOkZSIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYW5nPSJFTi1VUyI+Rml4IHdyaXR0ZW4gcmVzZXJ2ZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYml0IDI4IGluIEkyQ19DUjIgcmVnaXN0ZXIuPG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJjb2xvcjojMTExMTExO21zby1tYXJnaW4tdG9wLWFsdDphdXRvO21zby1tYXJnaW4tYm90dG9tLWFsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG87bGluZS1oZWlnaHQ6bm9ybWFsO21zby1saXN0OmwwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbDIgbGZvMTt0YWItc3RvcHM6bGlzdCAxLjBpbiI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZToxMC4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zby1mYXJlYXN0LWZvbnQtZmFtaWx5OiZxdW90O1RpbWVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSb21hbiZxdW90Ozttc28tYmlkaS1mb250LWZhbWlseTomcXVvdDtTZWdvZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVSSZxdW90OzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6RlIiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhbmc9IkVOLVVTIj5VcGRhdGUgdG8gZml4IGlzc3VlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldGVjdGVkIGR1ZSB0byBsb3cgc3lzdGVtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyZXF1ZW5jeSBleGVjdXRpb24gKEhTSSkuPG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImNvbG9yOiMxMTExMTE7bXNvLW1hcmdpbi10b3AtYWx0OmF1dG87bXNvLW1hcmdpbi1ib3R0b20tYWx0OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG87bGluZS1oZWlnaHQ6bm9ybWFsO21zby1saXN0OmwwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWwxIGxmbzE7dGFiLXN0b3BzOmxpc3QgLjVpbiI+PGI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZToxMC4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmO21zby1mYXJlYXN0LWZvbnQtZmFtaWx5OgorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1RpbWVzIE5ldworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSb21hbiZxdW90Ozttc28tYmlkaS1mb250LWZhbWlseTomcXVvdDtTZWdvZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVSSZxdW90Ozttc28tYW5zaS1sYW5ndWFnZTpGUjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6RlIiPkhBTCBDQU48L3NwYW4+PC9iPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOjEwLjBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OiZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjttc28tZmFyZWFzdC1mb250LWZhbWlseTomcXVvdDtUaW1lcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV3IFJvbWFuJnF1b3Q7OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNvLWJpZGktZm9udC1mYW1pbHk6JnF1b3Q7U2Vnb2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVJJnF1b3Q7O21zby1hbnNpLWxhbmd1YWdlOkZSO21zby1mYXJlYXN0LWxhbmd1YWdlOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCB0eXBlPSJjaXJjbGUiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImNvbG9yOiMxMTExMTE7bXNvLW1hcmdpbi10b3AtYWx0OmF1dG87bXNvLW1hcmdpbi1ib3R0b20tYWx0OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0bztsaW5lLWhlaWdodDpub3JtYWw7bXNvLWxpc3Q6bDAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVsMiBsZm8xO3RhYi1zdG9wczpsaXN0IDEuMGluIj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOjEwLjBwdDtmb250LWZhbWlseTomcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNvLWZhcmVhc3QtZm9udC1mYW1pbHk6JnF1b3Q7VGltZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV3CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJvbWFuJnF1b3Q7O21zby1iaWRpLWZvbnQtZmFtaWx5OiZxdW90O1NlZ29lCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVJJnF1b3Q7OyBtc28tZmFyZWFzdC1sYW5ndWFnZTpGUiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFuZz0iRU4tVVMiPlVwZGF0ZSBIQUxfQ0FOX0luaXQoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBUEkgdG8gYmUgYWxpZ25lZCB3aXRoIHJlZmVyZW5jZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYW51YWwgYW5kIHRvIGF2b2lkIHRpbWVvdXQgZXJyb3I6PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgdHlwZT0ic3F1YXJlIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iY29sb3I6IzExMTExMTttc28tbWFyZ2luLXRvcC1hbHQ6YXV0bzttc28tbWFyZ2luLWJvdHRvbS1hbHQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG87bGluZS1oZWlnaHQ6bm9ybWFsO21zby1saXN0OmwwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVsMyBsZm8xO3RhYi1zdG9wczpsaXN0IDEuNWluIj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6MTAuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zby1mYXJlYXN0LWZvbnQtZmFtaWx5OiZxdW90O1RpbWVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV3CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUm9tYW4mcXVvdDs7bXNvLWJpZGktZm9udC1mYW1pbHk6JnF1b3Q7U2Vnb2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVSSZxdW90OzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc28tZmFyZWFzdC1sYW5ndWFnZTpGUiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYW5nPSJFTi1VUyI+VXBkYXRlIENBTgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluaXRpYWxpemF0aW9uIHNlcXVlbmNlIHRvIHNldAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyZXF1ZXN0IGluaXRpYWxpemF0aW9uIiBiaXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWZvcmUgZXhpdCBmcm9tIHNsZWVwIG1vZGUuPG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iY29sb3I6IzExMTExMTttc28tbWFyZ2luLXRvcC1hbHQ6YXV0bzttc28tbWFyZ2luLWJvdHRvbS1hbHQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0bztsaW5lLWhlaWdodDpub3JtYWw7bXNvLWxpc3Q6bDAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbDEgbGZvMTt0YWItc3RvcHM6bGlzdCAuNWluIj48Yj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOjEwLjBwdDtmb250LWZhbWlseTomcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7bXNvLWZhcmVhc3QtZm9udC1mYW1pbHk6CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VGltZXMgTmV3CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJvbWFuJnF1b3Q7O21zby1iaWRpLWZvbnQtZmFtaWx5OiZxdW90O1NlZ29lCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVJJnF1b3Q7O21zby1hbnNpLWxhbmd1YWdlOkZSOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc28tZmFyZWFzdC1sYW5ndWFnZTpGUiI+SEFMIERTSTwvc3Bhbj48L2I+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6MTAuMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6JnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmO21zby1mYXJlYXN0LWZvbnQtZmFtaWx5OiZxdW90O1RpbWVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXcgUm9tYW4mcXVvdDs7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc28tYmlkaS1mb250LWZhbWlseTomcXVvdDtTZWdvZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUkmcXVvdDs7bXNvLWFuc2ktbGFuZ3VhZ2U6RlI7bXNvLWZhcmVhc3QtbGFuZ3VhZ2U6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGUiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIHR5cGU9ImNpcmNsZSI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iY29sb3I6IzExMTExMTttc28tbWFyZ2luLXRvcC1hbHQ6YXV0bzttc28tbWFyZ2luLWJvdHRvbS1hbHQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvO2xpbmUtaGVpZ2h0Om5vcm1hbDttc28tbGlzdDpsMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWwyIGxmbzE7dGFiLXN0b3BzOmxpc3QgMS4waW4iPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6MTAuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc28tZmFyZWFzdC1mb250LWZhbWlseTomcXVvdDtUaW1lcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUm9tYW4mcXVvdDs7bXNvLWJpZGktZm9udC1mYW1pbHk6JnF1b3Q7U2Vnb2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUkmcXVvdDs7IG1zby1mYXJlYXN0LWxhbmd1YWdlOkZSIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYW5nPSJFTi1VUyI+VXBkYXRlIEhBTF9EU0lfUmVhZCgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIGF2b2lkIEhBTF9USU1FT1VUIHdoZW4gYSBEU0kKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhZCBjb21tYW5kIGlzIGlzc3VlZCB0byB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFuZWwgYW5kIHRoZSByZWFkIGRhdGEgaXMgbm90CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhcHR1cmVkIGJ5IHRoZSBEU0kgSG9zdCB3aGljaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm5zIFBhY2tldCBTaXplIEVycm9yLjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJjb2xvcjojMTExMTExO21zby1tYXJnaW4tdG9wLWFsdDphdXRvO21zby1tYXJnaW4tYm90dG9tLWFsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvO2xpbmUtaGVpZ2h0Om5vcm1hbDttc28tbGlzdDpsMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVsMSBsZm8xO3RhYi1zdG9wczpsaXN0IC41aW4iPjxiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6MTAuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjttc28tZmFyZWFzdC1mb250LWZhbWlseToKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtUaW1lcyBOZXcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUm9tYW4mcXVvdDs7bXNvLWJpZGktZm9udC1mYW1pbHk6JnF1b3Q7U2Vnb2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUkmcXVvdDs7bXNvLWFuc2ktbGFuZ3VhZ2U6RlI7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zby1mYXJlYXN0LWxhbmd1YWdlOkZSIj5IQUwgUVNQSTwvc3Bhbj48L2I+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6MTAuMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6JnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmO21zby1mYXJlYXN0LWZvbnQtZmFtaWx5OiZxdW90O1RpbWVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXcgUm9tYW4mcXVvdDs7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc28tYmlkaS1mb250LWZhbWlseTomcXVvdDtTZWdvZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUkmcXVvdDs7bXNvLWFuc2ktbGFuZ3VhZ2U6RlI7bXNvLWZhcmVhc3QtbGFuZ3VhZ2U6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGUiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIHR5cGU9ImNpcmNsZSI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iY29sb3I6IzExMTExMTttc28tbWFyZ2luLXRvcC1hbHQ6YXV0bzttc28tbWFyZ2luLWJvdHRvbS1hbHQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvO2xpbmUtaGVpZ2h0Om5vcm1hbDttc28tbGlzdDpsMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWwyIGxmbzE7dGFiLXN0b3BzOmxpc3QgMS4waW4iPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6MTAuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc28tZmFyZWFzdC1mb250LWZhbWlseTomcXVvdDtUaW1lcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUm9tYW4mcXVvdDs7bXNvLWJpZGktZm9udC1mYW1pbHk6JnF1b3Q7U2Vnb2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUkmcXVvdDs7IG1zby1mYXJlYXN0LWxhbmd1YWdlOkZSIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYW5nPSJFTi1VUyI+Rml4IGNvbXBpbGF0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdhcm5pbmcgd2l0aCBHQ0MgVjkuPG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJjb2xvcjojMTExMTExO21zby1tYXJnaW4tdG9wLWFsdDphdXRvO21zby1tYXJnaW4tYm90dG9tLWFsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG87bGluZS1oZWlnaHQ6bm9ybWFsO21zby1saXN0OmwwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbDIgbGZvMTt0YWItc3RvcHM6bGlzdCAxLjBpbiI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZToxMC4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zby1mYXJlYXN0LWZvbnQtZmFtaWx5OiZxdW90O1RpbWVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSb21hbiZxdW90Ozttc28tYmlkaS1mb250LWZhbWlseTomcXVvdDtTZWdvZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVSSZxdW90OzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6RlIiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhbmc9IkVOLVVTIj5VcGRhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVNQSV9XYWl0RmxhZ1N0YXRlVW50aWxUaW1lb3V0X0NQVUN5Y2xlKCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gbWFuYWdlIHRpbWVvdXQgdXNpbmcgQ1BVIGN5Y2xlcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRob2QuPG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImNvbG9yOiMxMTExMTE7bXNvLW1hcmdpbi10b3AtYWx0OmF1dG87bXNvLW1hcmdpbi1ib3R0b20tYWx0OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG87bGluZS1oZWlnaHQ6bm9ybWFsO21zby1saXN0OmwwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWwxIGxmbzE7dGFiLXN0b3BzOmxpc3QgLjVpbiI+PGI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZToxMC4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmO21zby1mYXJlYXN0LWZvbnQtZmFtaWx5OgorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1RpbWVzIE5ldworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSb21hbiZxdW90Ozttc28tYmlkaS1mb250LWZhbWlseTomcXVvdDtTZWdvZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVSSZxdW90Ozttc28tYW5zaS1sYW5ndWFnZTpGUjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6RlIiPkxMIEZNQzwvc3Bhbj48L2I+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6MTAuMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6JnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmO21zby1mYXJlYXN0LWZvbnQtZmFtaWx5OiZxdW90O1RpbWVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXcgUm9tYW4mcXVvdDs7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc28tYmlkaS1mb250LWZhbWlseTomcXVvdDtTZWdvZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUkmcXVvdDs7bXNvLWFuc2ktbGFuZ3VhZ2U6RlI7bXNvLWZhcmVhc3QtbGFuZ3VhZ2U6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGUiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIHR5cGU9ImNpcmNsZSI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iY29sb3I6IzExMTExMTttc28tbWFyZ2luLXRvcC1hbHQ6YXV0bzttc28tbWFyZ2luLWJvdHRvbS1hbHQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvO2xpbmUtaGVpZ2h0Om5vcm1hbDttc28tbGlzdDpsMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWwyIGxmbzE7dGFiLXN0b3BzOmxpc3QgMS4waW4iPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6MTAuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc28tZmFyZWFzdC1mb250LWZhbWlseTomcXVvdDtUaW1lcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUm9tYW4mcXVvdDs7bXNvLWJpZGktZm9udC1mYW1pbHk6JnF1b3Q7U2Vnb2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUkmcXVvdDs7IG1zby1mYXJlYXN0LWxhbmd1YWdlOkZSIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYW5nPSJFTi1VUyI+R2VuZXJhbCByZWZhY3RvcmluZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgY2xlYW4tdXAuPG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJjb2xvcjojMTExMTExO21zby1tYXJnaW4tdG9wLWFsdDphdXRvO21zby1tYXJnaW4tYm90dG9tLWFsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG87bGluZS1oZWlnaHQ6bm9ybWFsO21zby1saXN0OmwwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbDIgbGZvMTt0YWItc3RvcHM6bGlzdCAxLjBpbiI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZToxMC4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zby1mYXJlYXN0LWZvbnQtZmFtaWx5OiZxdW90O1RpbWVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSb21hbiZxdW90Ozttc28tYmlkaS1mb250LWZhbWlseTomcXVvdDtTZWdvZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVSSZxdW90OzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6RlIiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhbmc9IkVOLVVTIj5VcGRhdGUgdG8gYXZvaWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgk3VudXNlZCB2YXJpYWJsZZQgd2FybmluZ3MuPG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImNvbG9yOiMxMTExMTE7bXNvLW1hcmdpbi10b3AtYWx0OmF1dG87bXNvLW1hcmdpbi1ib3R0b20tYWx0OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG87bGluZS1oZWlnaHQ6bm9ybWFsO21zby1saXN0OmwwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWwxIGxmbzE7dGFiLXN0b3BzOmxpc3QgLjVpbiI+PGI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZToxMC4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmO21zby1mYXJlYXN0LWZvbnQtZmFtaWx5OgorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1RpbWVzIE5ldworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSb21hbiZxdW90Ozttc28tYmlkaS1mb250LWZhbWlseTomcXVvdDtTZWdvZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVSSZxdW90Ozttc28tYW5zaS1sYW5ndWFnZTpGUjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6RlIiPkhBTCBTUkFNPC9zcGFuPjwvYj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZToxMC4wcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseTomcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7bXNvLWZhcmVhc3QtZm9udC1mYW1pbHk6JnF1b3Q7VGltZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldyBSb21hbiZxdW90OzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zby1iaWRpLWZvbnQtZmFtaWx5OiZxdW90O1NlZ29lCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVSSZxdW90Ozttc28tYW5zaS1sYW5ndWFnZTpGUjttc28tZmFyZWFzdC1sYW5ndWFnZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZSIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgdHlwZT0iY2lyY2xlIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJjb2xvcjojMTExMTExO21zby1tYXJnaW4tdG9wLWFsdDphdXRvO21zby1tYXJnaW4tYm90dG9tLWFsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG87bGluZS1oZWlnaHQ6bm9ybWFsO21zby1saXN0OmwwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbDIgbGZvMTt0YWItc3RvcHM6bGlzdCAxLjBpbiI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZToxMC4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zby1mYXJlYXN0LWZvbnQtZmFtaWx5OiZxdW90O1RpbWVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSb21hbiZxdW90Ozttc28tYmlkaS1mb250LWZhbWlseTomcXVvdDtTZWdvZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVSSZxdW90OzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6RlIiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhbmc9IkVOLVVTIj5HZW5lcmFsIHJlZmFjdG9yaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBjbGVhbi11cC48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImNvbG9yOiMxMTExMTE7bXNvLW1hcmdpbi10b3AtYWx0OmF1dG87bXNvLW1hcmdpbi1ib3R0b20tYWx0OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0bztsaW5lLWhlaWdodDpub3JtYWw7bXNvLWxpc3Q6bDAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVsMiBsZm8xO3RhYi1zdG9wczpsaXN0IDEuMGluIj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOjEwLjBwdDtmb250LWZhbWlseTomcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNvLWZhcmVhc3QtZm9udC1mYW1pbHk6JnF1b3Q7VGltZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV3CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJvbWFuJnF1b3Q7O21zby1iaWRpLWZvbnQtZmFtaWx5OiZxdW90O1NlZ29lCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVJJnF1b3Q7OyBtc28tZmFyZWFzdC1sYW5ndWFnZTpGUiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFuZz0iRU4tVVMiPkhBTF9TUkFNX1Byb2Nlc3M6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVwZGF0ZSB0byBjaGVjayBvbiB0aGUgU1JBTSBzdGF0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWZvcmUgcGVyZm9ybWluZyBvcGVyYXRpb24uPG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImNvbG9yOiMxMTExMTE7bXNvLW1hcmdpbi10b3AtYWx0OmF1dG87bXNvLW1hcmdpbi1ib3R0b20tYWx0OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG87bGluZS1oZWlnaHQ6bm9ybWFsO21zby1saXN0OmwwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWwxIGxmbzE7dGFiLXN0b3BzOmxpc3QgLjVpbiI+PGI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZToxMC4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmO21zby1mYXJlYXN0LWZvbnQtZmFtaWx5OgorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1RpbWVzIE5ldworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSb21hbiZxdW90Ozttc28tYmlkaS1mb250LWZhbWlseTomcXVvdDtTZWdvZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVSSZxdW90Ozttc28tYW5zaS1sYW5ndWFnZTpGUjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6RlIiPkhBTCBOQU5EPC9zcGFuPjwvYj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZToxMC4wcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseTomcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7bXNvLWZhcmVhc3QtZm9udC1mYW1pbHk6JnF1b3Q7VGltZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldyBSb21hbiZxdW90OzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zby1iaWRpLWZvbnQtZmFtaWx5OiZxdW90O1NlZ29lCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVSSZxdW90Ozttc28tYW5zaS1sYW5ndWFnZTpGUjttc28tZmFyZWFzdC1sYW5ndWFnZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZSIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgdHlwZT0iY2lyY2xlIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJjb2xvcjojMTExMTExO21zby1tYXJnaW4tdG9wLWFsdDphdXRvO21zby1tYXJnaW4tYm90dG9tLWFsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG87bGluZS1oZWlnaHQ6bm9ybWFsO21zby1saXN0OmwwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbDIgbGZvMTt0YWItc3RvcHM6bGlzdCAxLjBpbiI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZToxMC4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zby1mYXJlYXN0LWZvbnQtZmFtaWx5OiZxdW90O1RpbWVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSb21hbiZxdW90Ozttc28tYmlkaS1mb250LWZhbWlseTomcXVvdDtTZWdvZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVSSZxdW90OzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6RlIiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhbmc9IkVOLVVTIj5HZW5lcmFsIHJlZmFjdG9yaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBjbGVhbi11cC48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iY29sb3I6IzExMTExMTttc28tbWFyZ2luLXRvcC1hbHQ6YXV0bzttc28tbWFyZ2luLWJvdHRvbS1hbHQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0bztsaW5lLWhlaWdodDpub3JtYWw7bXNvLWxpc3Q6bDAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbDEgbGZvMTt0YWItc3RvcHM6bGlzdCAuNWluIj48Yj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOjEwLjBwdDtmb250LWZhbWlseTomcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7bXNvLWZhcmVhc3QtZm9udC1mYW1pbHk6CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VGltZXMgTmV3CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJvbWFuJnF1b3Q7O21zby1iaWRpLWZvbnQtZmFtaWx5OiZxdW90O1NlZ29lCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVJJnF1b3Q7O21zby1hbnNpLWxhbmd1YWdlOkZSOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc28tZmFyZWFzdC1sYW5ndWFnZTpGUiI+SEFMIE5PUjwvc3Bhbj48L2I+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6MTAuMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6JnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmO21zby1mYXJlYXN0LWZvbnQtZmFtaWx5OiZxdW90O1RpbWVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXcgUm9tYW4mcXVvdDs7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc28tYmlkaS1mb250LWZhbWlseTomcXVvdDtTZWdvZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUkmcXVvdDs7bXNvLWFuc2ktbGFuZ3VhZ2U6RlI7bXNvLWZhcmVhc3QtbGFuZ3VhZ2U6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGUiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIHR5cGU9ImNpcmNsZSI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iY29sb3I6IzExMTExMTttc28tbWFyZ2luLXRvcC1hbHQ6YXV0bzttc28tbWFyZ2luLWJvdHRvbS1hbHQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvO2xpbmUtaGVpZ2h0Om5vcm1hbDttc28tbGlzdDpsMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWwyIGxmbzE7dGFiLXN0b3BzOmxpc3QgMS4waW4iPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6MTAuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc28tZmFyZWFzdC1mb250LWZhbWlseTomcXVvdDtUaW1lcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUm9tYW4mcXVvdDs7bXNvLWJpZGktZm9udC1mYW1pbHk6JnF1b3Q7U2Vnb2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUkmcXVvdDs7IG1zby1mYXJlYXN0LWxhbmd1YWdlOkZSIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYW5nPSJFTi1VUyI+R2VuZXJhbCByZWZhY3RvcmluZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgY2xlYW4tdXAuPG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJjb2xvcjojMTExMTExO21zby1tYXJnaW4tdG9wLWFsdDphdXRvO21zby1tYXJnaW4tYm90dG9tLWFsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG87bGluZS1oZWlnaHQ6bm9ybWFsO21zby1saXN0OmwwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbDIgbGZvMTt0YWItc3RvcHM6bGlzdCAxLjBpbiI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZToxMC4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zby1mYXJlYXN0LWZvbnQtZmFtaWx5OiZxdW90O1RpbWVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSb21hbiZxdW90Ozttc28tYmlkaS1mb250LWZhbWlseTomcXVvdDtTZWdvZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVSSZxdW90OzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6RlIiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhbmc9IkVOLVVTIj5VcGRhdGUgYWRkcmVzcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxjdWxhdGlvbiBpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQUxfTk9SX1Byb2dyYW1CdWZmZXIoKSBBUEk8bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImNvbG9yOiMxMTExMTE7bXNvLW1hcmdpbi10b3AtYWx0OmF1dG87bXNvLW1hcmdpbi1ib3R0b20tYWx0OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0bztsaW5lLWhlaWdodDpub3JtYWw7bXNvLWxpc3Q6bDAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVsMiBsZm8xO3RhYi1zdG9wczpsaXN0IDEuMGluIj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOjEwLjBwdDtmb250LWZhbWlseTomcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNvLWZhcmVhc3QtZm9udC1mYW1pbHk6JnF1b3Q7VGltZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV3CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJvbWFuJnF1b3Q7O21zby1iaWRpLWZvbnQtZmFtaWx5OiZxdW90O1NlZ29lCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVJJnF1b3Q7OyBtc28tZmFyZWFzdC1sYW5ndWFnZTpGUiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFuZz0iRU4tVVMiPkFwcGx5IGFkZXF1YXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmRzIGFjY29yZGluZyB0byB0aGUgY29tbWFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXQgZmllbGQgdmFsdWU8bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCB0eXBlPSJzcXVhcmUiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJjb2xvcjojMTExMTExO21zby1tYXJnaW4tdG9wLWFsdDphdXRvO21zby1tYXJnaW4tYm90dG9tLWFsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0bztsaW5lLWhlaWdodDpub3JtYWw7bXNvLWxpc3Q6bDAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWwzIGxmbzE7dGFiLXN0b3BzOmxpc3QgMS41aW4iPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZToxMC4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNvLWZhcmVhc3QtZm9udC1mYW1pbHk6JnF1b3Q7VGltZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSb21hbiZxdW90Ozttc28tYmlkaS1mb250LWZhbWlseTomcXVvdDtTZWdvZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVJJnF1b3Q7OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zby1mYXJlYXN0LWxhbmd1YWdlOkZSIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhbmc9IkVOLVVTIj5jb21tYW5kIHNldCAxIGZvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1pY3JvbiBKUzI4RjUxMlAzMy48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJjb2xvcjojMTExMTExO21zby1tYXJnaW4tdG9wLWFsdDphdXRvO21zby1tYXJnaW4tYm90dG9tLWFsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0bztsaW5lLWhlaWdodDpub3JtYWw7bXNvLWxpc3Q6bDAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWwzIGxmbzE7dGFiLXN0b3BzOmxpc3QgMS41aW4iPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZToxMC4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNvLWZhcmVhc3QtZm9udC1mYW1pbHk6JnF1b3Q7VGltZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSb21hbiZxdW90Ozttc28tYmlkaS1mb250LWZhbWlseTomcXVvdDtTZWdvZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVJJnF1b3Q7OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zby1mYXJlYXN0LWxhbmd1YWdlOkZSIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhbmc9IkVOLVVTIj5jb21tYW5kIHNldCAyIGZvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1pY3JvbiBNMjlXMTI4RyBhbmQgQ3lwcmVzcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFMyOUdMMTI4UC48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iY29sb3I6IzExMTExMTttc28tbWFyZ2luLXRvcC1hbHQ6YXV0bzttc28tbWFyZ2luLWJvdHRvbS1hbHQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvO2xpbmUtaGVpZ2h0Om5vcm1hbDttc28tbGlzdDpsMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWwyIGxmbzE7dGFiLXN0b3BzOmxpc3QgMS4waW4iPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6MTAuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc28tZmFyZWFzdC1mb250LWZhbWlseTomcXVvdDtUaW1lcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUm9tYW4mcXVvdDs7bXNvLWJpZGktZm9udC1mYW1pbHk6JnF1b3Q7U2Vnb2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUkmcXVvdDs7IG1zby1mYXJlYXN0LWxhbmd1YWdlOkZSIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYW5nPSJFTi1VUyI+VXBkYXRlIHNvbWUgQVBJcyBpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmRlciB0byBiZSBjb21wbGlhbnQgZm9yIG1lbW9yaWVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggZGlmZmVyZW50IGNvbW1hbmQgc2V0LCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlZCBBUElzIGFyZTo8bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCB0eXBlPSJzcXVhcmUiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJjb2xvcjojMTExMTExO21zby1tYXJnaW4tdG9wLWFsdDphdXRvO21zby1tYXJnaW4tYm90dG9tLWFsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0bztsaW5lLWhlaWdodDpub3JtYWw7bXNvLWxpc3Q6bDAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWwzIGxmbzE7dGFiLXN0b3BzOmxpc3QgMS41aW4iPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZToxMC4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmO21zby1mYXJlYXN0LWZvbnQtZmFtaWx5OgorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VGltZXMgTmV3CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUm9tYW4mcXVvdDs7bXNvLWJpZGktZm9udC1mYW1pbHk6JnF1b3Q7U2Vnb2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVSSZxdW90Ozttc28tYW5zaS1sYW5ndWFnZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGUjttc28tZmFyZWFzdC1sYW5ndWFnZTpGUiI+SEFMX05PUl9Jbml0KCk8bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJjb2xvcjojMTExMTExO21zby1tYXJnaW4tdG9wLWFsdDphdXRvO21zby1tYXJnaW4tYm90dG9tLWFsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0bztsaW5lLWhlaWdodDpub3JtYWw7bXNvLWxpc3Q6bDAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWwzIGxmbzE7dGFiLXN0b3BzOmxpc3QgMS41aW4iPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZToxMC4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmO21zby1mYXJlYXN0LWZvbnQtZmFtaWx5OgorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VGltZXMgTmV3CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUm9tYW4mcXVvdDs7bXNvLWJpZGktZm9udC1mYW1pbHk6JnF1b3Q7U2Vnb2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVSSZxdW90Ozttc28tYW5zaS1sYW5ndWFnZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGUjttc28tZmFyZWFzdC1sYW5ndWFnZTpGUiI+SEFMX05PUl9SZWFkX0lEKCk8bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJjb2xvcjojMTExMTExO21zby1tYXJnaW4tdG9wLWFsdDphdXRvO21zby1tYXJnaW4tYm90dG9tLWFsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0bztsaW5lLWhlaWdodDpub3JtYWw7bXNvLWxpc3Q6bDAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWwzIGxmbzE7dGFiLXN0b3BzOmxpc3QgMS41aW4iPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZToxMC4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmO21zby1mYXJlYXN0LWZvbnQtZmFtaWx5OgorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VGltZXMgTmV3CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUm9tYW4mcXVvdDs7bXNvLWJpZGktZm9udC1mYW1pbHk6JnF1b3Q7U2Vnb2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVSSZxdW90Ozttc28tYW5zaS1sYW5ndWFnZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGUjttc28tZmFyZWFzdC1sYW5ndWFnZTpGUiI+SEFMX05PUl9SZXR1cm5Ub1JlYWRNb2RlKCk8bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJjb2xvcjojMTExMTExO21zby1tYXJnaW4tdG9wLWFsdDphdXRvO21zby1tYXJnaW4tYm90dG9tLWFsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0bztsaW5lLWhlaWdodDpub3JtYWw7bXNvLWxpc3Q6bDAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWwzIGxmbzE7dGFiLXN0b3BzOmxpc3QgMS41aW4iPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZToxMC4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmO21zby1mYXJlYXN0LWZvbnQtZmFtaWx5OgorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VGltZXMgTmV3CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUm9tYW4mcXVvdDs7bXNvLWJpZGktZm9udC1mYW1pbHk6JnF1b3Q7U2Vnb2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVSSZxdW90Ozttc28tYW5zaS1sYW5ndWFnZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGUjttc28tZmFyZWFzdC1sYW5ndWFnZTpGUiI+SEFMX05PUl9SZWFkKCk8bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJjb2xvcjojMTExMTExO21zby1tYXJnaW4tdG9wLWFsdDphdXRvO21zby1tYXJnaW4tYm90dG9tLWFsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0bztsaW5lLWhlaWdodDpub3JtYWw7bXNvLWxpc3Q6bDAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWwzIGxmbzE7dGFiLXN0b3BzOmxpc3QgMS41aW4iPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZToxMC4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmO21zby1mYXJlYXN0LWZvbnQtZmFtaWx5OgorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VGltZXMgTmV3CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUm9tYW4mcXVvdDs7bXNvLWJpZGktZm9udC1mYW1pbHk6JnF1b3Q7U2Vnb2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVSSZxdW90Ozttc28tYW5zaS1sYW5ndWFnZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGUjttc28tZmFyZWFzdC1sYW5ndWFnZTpGUiI+SEFMX05PUl9Qcm9ncmFtKCk8bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJjb2xvcjojMTExMTExO21zby1tYXJnaW4tdG9wLWFsdDphdXRvO21zby1tYXJnaW4tYm90dG9tLWFsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0bztsaW5lLWhlaWdodDpub3JtYWw7bXNvLWxpc3Q6bDAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWwzIGxmbzE7dGFiLXN0b3BzOmxpc3QgMS41aW4iPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZToxMC4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmO21zby1mYXJlYXN0LWZvbnQtZmFtaWx5OgorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VGltZXMgTmV3CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUm9tYW4mcXVvdDs7bXNvLWJpZGktZm9udC1mYW1pbHk6JnF1b3Q7U2Vnb2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVSSZxdW90Ozttc28tYW5zaS1sYW5ndWFnZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGUjttc28tZmFyZWFzdC1sYW5ndWFnZTpGUiI+SEFMX05PUl9SZWFkQnVmZmVyKCk8bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJjb2xvcjojMTExMTExO21zby1tYXJnaW4tdG9wLWFsdDphdXRvO21zby1tYXJnaW4tYm90dG9tLWFsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0bztsaW5lLWhlaWdodDpub3JtYWw7bXNvLWxpc3Q6bDAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWwzIGxmbzE7dGFiLXN0b3BzOmxpc3QgMS41aW4iPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZToxMC4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmO21zby1mYXJlYXN0LWZvbnQtZmFtaWx5OgorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VGltZXMgTmV3CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUm9tYW4mcXVvdDs7bXNvLWJpZGktZm9udC1mYW1pbHk6JnF1b3Q7U2Vnb2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVSSZxdW90Ozttc28tYW5zaS1sYW5ndWFnZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGUjttc28tZmFyZWFzdC1sYW5ndWFnZTpGUiI+SEFMX05PUl9Qcm9ncmFtQnVmZmVyKCk8bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJjb2xvcjojMTExMTExO21zby1tYXJnaW4tdG9wLWFsdDphdXRvO21zby1tYXJnaW4tYm90dG9tLWFsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0bztsaW5lLWhlaWdodDpub3JtYWw7bXNvLWxpc3Q6bDAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWwzIGxmbzE7dGFiLXN0b3BzOmxpc3QgMS41aW4iPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZToxMC4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmO21zby1mYXJlYXN0LWZvbnQtZmFtaWx5OgorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VGltZXMgTmV3CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUm9tYW4mcXVvdDs7bXNvLWJpZGktZm9udC1mYW1pbHk6JnF1b3Q7U2Vnb2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVSSZxdW90Ozttc28tYW5zaS1sYW5ndWFnZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGUjttc28tZmFyZWFzdC1sYW5ndWFnZTpGUiI+SEFMX05PUl9FcmFzZV9CbG9jaygpPG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iY29sb3I6IzExMTExMTttc28tbWFyZ2luLXRvcC1hbHQ6YXV0bzttc28tbWFyZ2luLWJvdHRvbS1hbHQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG87bGluZS1oZWlnaHQ6bm9ybWFsO21zby1saXN0OmwwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVsMyBsZm8xO3RhYi1zdG9wczpsaXN0IDEuNWluIj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6MTAuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjttc28tZmFyZWFzdC1mb250LWZhbWlseToKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1RpbWVzIE5ldworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJvbWFuJnF1b3Q7O21zby1iaWRpLWZvbnQtZmFtaWx5OiZxdW90O1NlZ29lCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUkmcXVvdDs7bXNvLWFuc2ktbGFuZ3VhZ2U6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlI7bXNvLWZhcmVhc3QtbGFuZ3VhZ2U6RlIiPkhBTF9OT1JfRXJhc2VfQ2hpcCgpPG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iY29sb3I6IzExMTExMTttc28tbWFyZ2luLXRvcC1hbHQ6YXV0bzttc28tbWFyZ2luLWJvdHRvbS1hbHQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG87bGluZS1oZWlnaHQ6bm9ybWFsO21zby1saXN0OmwwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVsMyBsZm8xO3RhYi1zdG9wczpsaXN0IDEuNWluIj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6MTAuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjttc28tZmFyZWFzdC1mb250LWZhbWlseToKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1RpbWVzIE5ldworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJvbWFuJnF1b3Q7O21zby1iaWRpLWZvbnQtZmFtaWx5OiZxdW90O1NlZ29lCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUkmcXVvdDs7bXNvLWFuc2ktbGFuZ3VhZ2U6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlI7bXNvLWZhcmVhc3QtbGFuZ3VhZ2U6RlIiPkhBTF9OT1JfR2V0U3RhdHVzKCk8bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iY29sb3I6IzExMTExMTttc28tbWFyZ2luLXRvcC1hbHQ6YXV0bzttc28tbWFyZ2luLWJvdHRvbS1hbHQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvO2xpbmUtaGVpZ2h0Om5vcm1hbDttc28tbGlzdDpsMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWwyIGxmbzE7dGFiLXN0b3BzOmxpc3QgMS4waW4iPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6MTAuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc28tZmFyZWFzdC1mb250LWZhbWlseTomcXVvdDtUaW1lcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUm9tYW4mcXVvdDs7bXNvLWJpZGktZm9udC1mYW1pbHk6JnF1b3Q7U2Vnb2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUkmcXVvdDs7IG1zby1mYXJlYXN0LWxhbmd1YWdlOkZSIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYW5nPSJFTi1VUyI+QWxpZ24gSEFMX05PUl9Jbml0KCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVBJIHdpdGggY29yZSBvZiB0aGUgZnVuY3Rpb24gd2hlbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZSBvcGVyYXRpb24gaXMgZGlzYWJsZWQgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXZvaWQgSGFyZEZhdWx0LjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJjb2xvcjojMTExMTExO21zby1tYXJnaW4tdG9wLWFsdDphdXRvO21zby1tYXJnaW4tYm90dG9tLWFsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvO2xpbmUtaGVpZ2h0Om5vcm1hbDttc28tbGlzdDpsMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVsMSBsZm8xO3RhYi1zdG9wczpsaXN0IC41aW4iPjxiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6MTAuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjttc28tZmFyZWFzdC1mb250LWZhbWlseToKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtUaW1lcyBOZXcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUm9tYW4mcXVvdDs7bXNvLWJpZGktZm9udC1mYW1pbHk6JnF1b3Q7U2Vnb2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUkmcXVvdDs7bXNvLWFuc2ktbGFuZ3VhZ2U6RlI7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zby1mYXJlYXN0LWxhbmd1YWdlOkZSIj5IQUwvTEwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0RNTUM8L3NwYW4+PC9iPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTAuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjttc28tZmFyZWFzdC1mb250LWZhbWlseTomcXVvdDtUaW1lcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV3IFJvbWFuJnF1b3Q7OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNvLWJpZGktZm9udC1mYW1pbHk6JnF1b3Q7U2Vnb2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVJJnF1b3Q7O21zby1hbnNpLWxhbmd1YWdlOkZSO21zby1mYXJlYXN0LWxhbmd1YWdlOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCB0eXBlPSJjaXJjbGUiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImNvbG9yOiMxMTExMTE7bXNvLW1hcmdpbi10b3AtYWx0OmF1dG87bXNvLW1hcmdpbi1ib3R0b20tYWx0OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0bztsaW5lLWhlaWdodDpub3JtYWw7bXNvLWxpc3Q6bDAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVsMiBsZm8xO3RhYi1zdG9wczpsaXN0IDEuMGluIj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOjEwLjBwdDtmb250LWZhbWlseTomcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNvLWZhcmVhc3QtZm9udC1mYW1pbHk6JnF1b3Q7VGltZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV3CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJvbWFuJnF1b3Q7O21zby1iaWRpLWZvbnQtZmFtaWx5OiZxdW90O1NlZ29lCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVJJnF1b3Q7OyBtc28tZmFyZWFzdC1sYW5ndWFnZTpGUiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFuZz0iRU4tVVMiPlRha2UgaW4gYWNjb3VudCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9sdGFnZSByYW5nZSBpbiB0aGUgQ01EMSBjb21tYW5kLjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iY29sb3I6IzExMTExMTttc28tbWFyZ2luLXRvcC1hbHQ6YXV0bzttc28tbWFyZ2luLWJvdHRvbS1hbHQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvO2xpbmUtaGVpZ2h0Om5vcm1hbDttc28tbGlzdDpsMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWwyIGxmbzE7dGFiLXN0b3BzOmxpc3QgMS4waW4iPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6MTAuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc28tZmFyZWFzdC1mb250LWZhbWlseTomcXVvdDtUaW1lcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUm9tYW4mcXVvdDs7bXNvLWJpZGktZm9udC1mYW1pbHk6JnF1b3Q7U2Vnb2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUkmcXVvdDs7IG1zby1mYXJlYXN0LWxhbmd1YWdlOkZSIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYW5nPSJFTi1VUyI+QWRkIG5ldyBMTCBmdW5jdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byBoYXZlIGNvcnJlY3QgcmVzcG9uc2UgZm9yIE1NQworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkcml2ZXIuPG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJjb2xvcjojMTExMTExO21zby1tYXJnaW4tdG9wLWFsdDphdXRvO21zby1tYXJnaW4tYm90dG9tLWFsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG87bGluZS1oZWlnaHQ6bm9ybWFsO21zby1saXN0OmwwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbDIgbGZvMTt0YWItc3RvcHM6bGlzdCAxLjBpbiI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZToxMC4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zby1mYXJlYXN0LWZvbnQtZmFtaWx5OiZxdW90O1RpbWVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSb21hbiZxdW90Ozttc28tYmlkaS1mb250LWZhbWlseTomcXVvdDtTZWdvZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVSSZxdW90OzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6RlIiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhbmc9IkVOLVVTIj5VcGRhdGUgdGhlIGRyaXZlciB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXZlIGFsbCBmaWVsZHMgY29ycmVjdGx5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluaXRpYWxpemVkLjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iY29sb3I6IzExMTExMTttc28tbWFyZ2luLXRvcC1hbHQ6YXV0bzttc28tbWFyZ2luLWJvdHRvbS1hbHQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvO2xpbmUtaGVpZ2h0Om5vcm1hbDttc28tbGlzdDpsMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWwyIGxmbzE7dGFiLXN0b3BzOmxpc3QgMS4waW4iPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6MTAuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc28tZmFyZWFzdC1mb250LWZhbWlseTomcXVvdDtUaW1lcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUm9tYW4mcXVvdDs7bXNvLWJpZGktZm9udC1mYW1pbHk6JnF1b3Q7U2Vnb2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUkmcXVvdDs7IG1zby1mYXJlYXN0LWxhbmd1YWdlOkZSIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYW5nPSJFTi1VUyI+QWRkIGEgaW50ZXJuYWwgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFuYWdlIHRoZSBwb3dlciBjbGFzcyBhbmQgY2FsbCBpdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWZvcmUgdG8gdXBkYXRlIHNwZWVkIG9mIGJ1cworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aC48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImNvbG9yOiMxMTExMTE7bXNvLW1hcmdpbi10b3AtYWx0OmF1dG87bXNvLW1hcmdpbi1ib3R0b20tYWx0OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0bztsaW5lLWhlaWdodDpub3JtYWw7bXNvLWxpc3Q6bDAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVsMiBsZm8xO3RhYi1zdG9wczpsaXN0IDEuMGluIj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOjEwLjBwdDtmb250LWZhbWlseTomcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNvLWZhcmVhc3QtZm9udC1mYW1pbHk6JnF1b3Q7VGltZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV3CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJvbWFuJnF1b3Q7O21zby1iaWRpLWZvbnQtZmFtaWx5OiZxdW90O1NlZ29lCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVJJnF1b3Q7OyBtc28tZmFyZWFzdC1sYW5ndWFnZTpGUiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFuZz0iRU4tVVMiPkFkZCBuZXcgQVBJCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTF9NTUNfR2V0Q2FyZEV4dENTRHRvIGdldCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgb2YgdGhlIEV4dGVuZGVkIENTRCByZWdpc3RlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgcG9wdWxhdGUgdGhlIEV4dENTRCBmaWVsZCBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgTU1DIGhhbmRsZS48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iY29sb3I6IzExMTExMTttc28tbWFyZ2luLXRvcC1hbHQ6YXV0bzttc28tbWFyZ2luLWJvdHRvbS1hbHQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0bztsaW5lLWhlaWdodDpub3JtYWw7bXNvLWxpc3Q6bDAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbDEgbGZvMTt0YWItc3RvcHM6bGlzdCAuNWluIj48Yj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOjEwLjBwdDtmb250LWZhbWlseTomcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7bXNvLWZhcmVhc3QtZm9udC1mYW1pbHk6CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VGltZXMgTmV3CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJvbWFuJnF1b3Q7O21zby1iaWRpLWZvbnQtZmFtaWx5OiZxdW90O1NlZ29lCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVJJnF1b3Q7O21zby1hbnNpLWxhbmd1YWdlOkZSOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc28tZmFyZWFzdC1sYW5ndWFnZTpGUiI+SEFMIFNEPC9zcGFuPjwvYj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZToxMC4wcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseTomcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7bXNvLWZhcmVhc3QtZm9udC1mYW1pbHk6JnF1b3Q7VGltZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldyBSb21hbiZxdW90OzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zby1iaWRpLWZvbnQtZmFtaWx5OiZxdW90O1NlZ29lCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVSSZxdW90Ozttc28tYW5zaS1sYW5ndWFnZTpGUjttc28tZmFyZWFzdC1sYW5ndWFnZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZSIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgdHlwZT0iY2lyY2xlIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJjb2xvcjojMTExMTExO21zby1tYXJnaW4tdG9wLWFsdDphdXRvO21zby1tYXJnaW4tYm90dG9tLWFsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG87bGluZS1oZWlnaHQ6bm9ybWFsO21zby1saXN0OmwwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbDIgbGZvMTt0YWItc3RvcHM6bGlzdCAxLjBpbiI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZToxMC4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zby1mYXJlYXN0LWZvbnQtZmFtaWx5OiZxdW90O1RpbWVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSb21hbiZxdW90Ozttc28tYmlkaS1mb250LWZhbWlseTomcXVvdDtTZWdvZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVSSZxdW90OzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6RlIiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhbmc9IkVOLVVTIj5VcGRhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFMX1NEX0luaXRDYXJkKCkgQVBJIHRvIGFkZCBwb3dlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cCB3YWl0aW5nIHRpbWUgKDJtcykgYmVmb3JlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0aW5nIHRoZSBTRCBpbml0aWFsaXphdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXF1ZW5jZS48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iY29sb3I6IzExMTExMTttc28tbWFyZ2luLXRvcC1hbHQ6YXV0bzttc28tbWFyZ2luLWJvdHRvbS1hbHQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0bztsaW5lLWhlaWdodDpub3JtYWw7bXNvLWxpc3Q6bDAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbDEgbGZvMTt0YWItc3RvcHM6bGlzdCAuNWluIj48Yj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOjEwLjBwdDtmb250LWZhbWlseTomcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7bXNvLWZhcmVhc3QtZm9udC1mYW1pbHk6CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VGltZXMgTmV3CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJvbWFuJnF1b3Q7O21zby1iaWRpLWZvbnQtZmFtaWx5OiZxdW90O1NlZ29lCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVJJnF1b3Q7O21zby1hbnNpLWxhbmd1YWdlOkZSOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc28tZmFyZWFzdC1sYW5ndWFnZTpGUiI+SEFML0xMCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVTQjwvc3Bhbj48L2I+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6MTAuMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6JnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmO21zby1mYXJlYXN0LWZvbnQtZmFtaWx5OiZxdW90O1RpbWVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXcgUm9tYW4mcXVvdDs7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc28tYmlkaS1mb250LWZhbWlseTomcXVvdDtTZWdvZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUkmcXVvdDs7bXNvLWFuc2ktbGFuZ3VhZ2U6RlI7bXNvLWZhcmVhc3QtbGFuZ3VhZ2U6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGUiI+Jm5ic3A7dXBkYXRlPG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIHR5cGU9ImNpcmNsZSI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iY29sb3I6IzExMTExMTttc28tbWFyZ2luLXRvcC1hbHQ6YXV0bzttc28tbWFyZ2luLWJvdHRvbS1hbHQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvO2xpbmUtaGVpZ2h0Om5vcm1hbDttc28tbGlzdDpsMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWwyIGxmbzE7dGFiLXN0b3BzOmxpc3QgMS4waW4iPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6MTAuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc28tZmFyZWFzdC1mb250LWZhbWlseTomcXVvdDtUaW1lcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUm9tYW4mcXVvdDs7bXNvLWJpZGktZm9udC1mYW1pbHk6JnF1b3Q7U2Vnb2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUkmcXVvdDs7IG1zby1mYXJlYXN0LWxhbmd1YWdlOkZSIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYW5nPSJFTi1VUyI+VXBkYXRlIGluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVTQl9TZXRDdXJyZW50TW9kZSgpIEFQSSB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbXByb3ZlIHJlcXVpcmVkIHdhaXQgdGltaW5nIHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZSBjb3JlIG1vZGUuPG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJjb2xvcjojMTExMTExO21zby1tYXJnaW4tdG9wLWFsdDphdXRvO21zby1tYXJnaW4tYm90dG9tLWFsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG87bGluZS1oZWlnaHQ6bm9ybWFsO21zby1saXN0OmwwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbDIgbGZvMTt0YWItc3RvcHM6bGlzdCAxLjBpbiI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZToxMC4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zby1mYXJlYXN0LWZvbnQtZmFtaWx5OiZxdW90O1RpbWVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSb21hbiZxdW90Ozttc28tYmlkaS1mb250LWZhbWlseTomcXVvdDtTZWdvZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVSSZxdW90OzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6RlIiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhbmc9IkVOLVVTIj5SZW1vdmUgbm9uIHJlcXVpcmVkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIwMG1zIGRlbGF5IGR1cmluZyBob3N0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluaXRpYWxpemF0aW9uLjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iY29sb3I6IzExMTExMTttc28tbWFyZ2luLXRvcC1hbHQ6YXV0bzttc28tbWFyZ2luLWJvdHRvbS1hbHQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvO2xpbmUtaGVpZ2h0Om5vcm1hbDttc28tbGlzdDpsMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWwyIGxmbzE7dGFiLXN0b3BzOmxpc3QgMS4waW4iPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6MTAuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc28tZmFyZWFzdC1mb250LWZhbWlseTomcXVvdDtUaW1lcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUm9tYW4mcXVvdDs7bXNvLWJpZGktZm9udC1mYW1pbHk6JnF1b3Q7U2Vnb2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUkmcXVvdDs7IG1zby1mYXJlYXN0LWxhbmd1YWdlOkZSIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYW5nPSJFTi1VUyI+VXBkYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVTQl9GbHVzaFJ4RmlmbygpIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVU0JfRmx1c2hUeEZpZm8oKSBBUElzIGJ5IGFkZGluZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGVjayBvbiBBSEIgbWFzdGVyIElETEUgc3RhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVmb3JlIGZsdXNoaW5nIHRoZSBVU0IgRklGTy48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImNvbG9yOiMxMTExMTE7bXNvLW1hcmdpbi10b3AtYWx0OmF1dG87bXNvLW1hcmdpbi1ib3R0b20tYWx0OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0bztsaW5lLWhlaWdodDpub3JtYWw7bXNvLWxpc3Q6bDAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVsMiBsZm8xO3RhYi1zdG9wczpsaXN0IDEuMGluIj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOjEwLjBwdDtmb250LWZhbWlseTomcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNvLWZhcmVhc3QtZm9udC1mYW1pbHk6JnF1b3Q7VGltZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV3CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJvbWFuJnF1b3Q7O21zby1iaWRpLWZvbnQtZmFtaWx5OiZxdW90O1NlZ29lCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVJJnF1b3Q7OyBtc28tZmFyZWFzdC1sYW5ndWFnZTpGUiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFuZz0iRU4tVVMiPlVwZGF0ZSB0byBhdm9pZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNldHRpbmcgaG9zdCBjaGFubmVsIGRpcmVjdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkdXJpbmcgY2hhbm5lbCBoYWx0LjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iY29sb3I6IzExMTExMTttc28tbWFyZ2luLXRvcC1hbHQ6YXV0bzttc28tbWFyZ2luLWJvdHRvbS1hbHQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvO2xpbmUtaGVpZ2h0Om5vcm1hbDttc28tbGlzdDpsMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWwyIGxmbzE7dGFiLXN0b3BzOmxpc3QgMS4waW4iPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6MTAuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc28tZmFyZWFzdC1mb250LWZhbWlseTomcXVvdDtUaW1lcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUm9tYW4mcXVvdDs7bXNvLWJpZGktZm9udC1mYW1pbHk6JnF1b3Q7U2Vnb2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUkmcXVvdDs7IG1zby1mYXJlYXN0LWxhbmd1YWdlOkZSIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYW5nPSJFTi1VUyI+VXBkYXRlIHRvIGF2b2lkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBpbGVyIG9wdG1pemF0aW9uIG9uIGNvdW50CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIHVzZWQgZm9yIFVTQiBIQUwgdGltZW91dAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb29wIGNoZWNrLjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iY29sb3I6IzExMTExMTttc28tbWFyZ2luLXRvcC1hbHQ6YXV0bzttc28tbWFyZ2luLWJvdHRvbS1hbHQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvO2xpbmUtaGVpZ2h0Om5vcm1hbDttc28tbGlzdDpsMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWwyIGxmbzE7dGFiLXN0b3BzOmxpc3QgMS4waW4iPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6MTAuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc28tZmFyZWFzdC1mb250LWZhbWlseTomcXVvdDtUaW1lcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUm9tYW4mcXVvdDs7bXNvLWJpZGktZm9udC1mYW1pbHk6JnF1b3Q7U2Vnb2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUkmcXVvdDs7IG1zby1mYXJlYXN0LWxhbmd1YWdlOkZSIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYW5nPSJFTi1VUyI+QWRkIG1pc3NpbmcgcmVnaXN0ZXJzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrcyBjaGVjayBmb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFMX0hDRF9IQ19Ob3RpZnlVUkJDaGFuZ2VfQ2FsbGJhY2soKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBUEkuPG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJjb2xvcjojMTExMTExO21zby1tYXJnaW4tdG9wLWFsdDphdXRvO21zby1tYXJnaW4tYm90dG9tLWFsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG87bGluZS1oZWlnaHQ6bm9ybWFsO21zby1saXN0OmwwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbDIgbGZvMTt0YWItc3RvcHM6bGlzdCAxLjBpbiI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZToxMC4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zby1mYXJlYXN0LWZvbnQtZmFtaWx5OiZxdW90O1RpbWVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSb21hbiZxdW90Ozttc28tYmlkaS1mb250LWZhbWlseTomcXVvdDtTZWdvZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVSSZxdW90OzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6RlIiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhbmc9IkVOLVVTIj5BZGQgbmV3CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTF9QQ0RfU2V0VGVzdE1vZGUoKSBBUEkgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlIFVTQiBkZXZpY2UgaGlnaCBzcGVlZCBUZXN0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGVzLjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iY29sb3I6IzExMTExMTttc28tbWFyZ2luLXRvcC1hbHQ6YXV0bzttc28tbWFyZ2luLWJvdHRvbS1hbHQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvO2xpbmUtaGVpZ2h0Om5vcm1hbDttc28tbGlzdDpsMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWwyIGxmbzE7dGFiLXN0b3BzOmxpc3QgMS4waW4iPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6MTAuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc28tZmFyZWFzdC1mb250LWZhbWlseTomcXVvdDtUaW1lcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUm9tYW4mcXVvdDs7bXNvLWJpZGktZm9udC1mYW1pbHk6JnF1b3Q7U2Vnb2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUkmcXVvdDs7IG1zby1mYXJlYXN0LWxhbmd1YWdlOkZSIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYW5nPSJFTi1VUyI+VXBkYXRlIHRvIHNldCBTTkFLCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBFUHMgbm90IHJlcXVpcmVkIGR1cmluZyBkZXZpY2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXQuPG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImNvbG9yOiMxMTExMTE7bXNvLW1hcmdpbi10b3AtYWx0OmF1dG87bXNvLW1hcmdpbi1ib3R0b20tYWx0OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG87bGluZS1oZWlnaHQ6bm9ybWFsO21zby1saXN0OmwwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWwxIGxmbzE7dGFiLXN0b3BzOmxpc3QgLjVpbiI+PGI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZToxMC4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmO21zby1mYXJlYXN0LWZvbnQtZmFtaWx5OgorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1RpbWVzIE5ldworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSb21hbiZxdW90Ozttc28tYmlkaS1mb250LWZhbWlseTomcXVvdDtTZWdvZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVSSZxdW90Ozttc28tYW5zaS1sYW5ndWFnZTpGUjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6RlIiPkhBTCBJV0RHPC9zcGFuPjwvYj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZToxMC4wcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseTomcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7bXNvLWZhcmVhc3QtZm9udC1mYW1pbHk6JnF1b3Q7VGltZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldyBSb21hbiZxdW90OzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zby1iaWRpLWZvbnQtZmFtaWx5OiZxdW90O1NlZ29lCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVSSZxdW90Ozttc28tYW5zaS1sYW5ndWFnZTpGUjttc28tZmFyZWFzdC1sYW5ndWFnZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZSIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgdHlwZT0iY2lyY2xlIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJjb2xvcjojMTExMTExO21zby1tYXJnaW4tdG9wLWFsdDphdXRvO21zby1tYXJnaW4tYm90dG9tLWFsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG87bGluZS1oZWlnaHQ6bm9ybWFsO21zby1saXN0OmwwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbDIgbGZvMTt0YWItc3RvcHM6bGlzdCAxLjBpbiI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZToxMC4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zby1mYXJlYXN0LWZvbnQtZmFtaWx5OiZxdW90O1RpbWVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSb21hbiZxdW90Ozttc28tYmlkaS1mb250LWZhbWlseTomcXVvdDtTZWdvZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVSSZxdW90OzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6RlIiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhbmc9IkVOLVVTIj5BZGQgTFNJIHN0YXJ0dXAgdGltZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBkZWZhdWx0IElXREcgdGltZW91dAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxjdWxhdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoSEFMX0lXREdfREVGQVVMVF9USU1FT1VUKS48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxiPjx1PjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiBibGFjazsiPjwvc3Bhbj48L3U+PC9iPjwvcD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luOiA0LjVwdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMGluIDQuNXB0IDAuMjVpbjsgd2lkdGg6IDE0MTZweDsiPjxiPjx1PjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiBibGFjazsiPjwvc3Bhbj48L3U+PC9iPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50PSJ0ZXh0L2h0bWw7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJzZXQ9d2luZG93cy0xMjUyIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbjogNC41cHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDBpbiA0LjVwdCAwLjI1aW47IHdpZHRoOiAxNDE2cHg7Ij4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudD0idGV4dC9odG1sOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyc2V0PXdpbmRvd3MtMTI1MiI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW46IDQuNXB0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwaW4gNC41cHQgMC4yNWluOyB3aWR0aDogMTQxNnB4OyI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWV0YSBuYW1lPSJQcm9nSWQiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ9IldvcmQuRG9jdW1lbnQiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1ldGEgbmFtZT0iR2VuZXJhdG9yIiBjb250ZW50PSJNaWNyb3NvZnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV29yZCAxNSI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWV0YSBuYW1lPSJPcmlnaW5hdG9yIiBjb250ZW50PSJNaWNyb3NvZnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV29yZCAxNSI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tW2lmIGd0ZSBtc28gOV0+PHhtbD4KKyA8dzpXb3JkRG9jdW1lbnQ+CisgIDx3OlZpZXc+Tm9ybWFsPC93OlZpZXc+CisgIDx3Olpvb20+MDwvdzpab29tPgorICA8dzpUcmFja01vdmVzLz4KKyAgPHc6VHJhY2tGb3JtYXR0aW5nLz4KKyAgPHc6SHlwaGVuYXRpb25ab25lPjIxPC93Okh5cGhlbmF0aW9uWm9uZT4KKyAgPHc6UHVuY3R1YXRpb25LZXJuaW5nLz4KKyAgPHc6VmFsaWRhdGVBZ2FpbnN0U2NoZW1hcy8+CisgIDx3OlNhdmVJZlhNTEludmFsaWQ+ZmFsc2U8L3c6U2F2ZUlmWE1MSW52YWxpZD4KKyAgPHc6SWdub3JlTWl4ZWRDb250ZW50PmZhbHNlPC93Oklnbm9yZU1peGVkQ29udGVudD4KKyAgPHc6QWx3YXlzU2hvd1BsYWNlaG9sZGVyVGV4dD5mYWxzZTwvdzpBbHdheXNTaG93UGxhY2Vob2xkZXJUZXh0PgorICA8dzpEb05vdFByb21vdGVRRi8+CisgIDx3OkxpZFRoZW1lT3RoZXI+RU4tVVM8L3c6TGlkVGhlbWVPdGhlcj4KKyAgPHc6TGlkVGhlbWVBc2lhbj5YLU5PTkU8L3c6TGlkVGhlbWVBc2lhbj4KKyAgPHc6TGlkVGhlbWVDb21wbGV4U2NyaXB0PlgtTk9ORTwvdzpMaWRUaGVtZUNvbXBsZXhTY3JpcHQ+CisgIDx3OkNvbXBhdGliaWxpdHk+CisgICA8dzpCcmVha1dyYXBwZWRUYWJsZXMvPgorICAgPHc6U25hcFRvR3JpZEluQ2VsbC8+CisgICA8dzpXcmFwVGV4dFdpdGhQdW5jdC8+CisgICA8dzpVc2VBc2lhbkJyZWFrUnVsZXMvPgorICAgPHc6RG9udEdyb3dBdXRvZml0Lz4KKyAgIDx3OlNwbGl0UGdCcmVha0FuZFBhcmFNYXJrLz4KKyAgIDx3OkVuYWJsZU9wZW5UeXBlS2VybmluZy8+CisgICA8dzpEb250RmxpcE1pcnJvckluZGVudHMvPgorICAgPHc6T3ZlcnJpZGVUYWJsZVN0eWxlSHBzLz4KKyAgPC93OkNvbXBhdGliaWxpdHk+CisgIDxtOm1hdGhQcj4KKyAgIDxtOm1hdGhGb250IG06dmFsPSJDYW1icmlhIE1hdGgiLz4KKyAgIDxtOmJya0JpbiBtOnZhbD0iYmVmb3JlIi8+CisgICA8bTpicmtCaW5TdWIgbTp2YWw9IiYjNDU7LSIvPgorICAgPG06c21hbGxGcmFjIG06dmFsPSJvZmYiLz4KKyAgIDxtOmRpc3BEZWYvPgorICAgPG06bE1hcmdpbiBtOnZhbD0iMCIvPgorICAgPG06ck1hcmdpbiBtOnZhbD0iMCIvPgorICAgPG06ZGVmSmMgbTp2YWw9ImNlbnRlckdyb3VwIi8+CisgICA8bTp3cmFwSW5kZW50IG06dmFsPSIxNDQwIi8+CisgICA8bTppbnRMaW0gbTp2YWw9InN1YlN1cCIvPgorICAgPG06bmFyeUxpbSBtOnZhbD0idW5kT3ZyIi8+CisgIDwvbTptYXRoUHI+PC93OldvcmREb2N1bWVudD4KKzwveG1sPjwhW2VuZGlmXS0tPjwhLS1baWYgZ3RlIG1zbyA5XT48eG1sPgorIDx3OkxhdGVudFN0eWxlcyBEZWZMb2NrZWRTdGF0ZT0iZmFsc2UiIERlZlVuaGlkZVdoZW5Vc2VkPSJmYWxzZSIKKyAgRGVmU2VtaUhpZGRlbj0iZmFsc2UiIERlZlFGb3JtYXQ9ImZhbHNlIiBEZWZQcmlvcml0eT0iOTkiCisgIExhdGVudFN0eWxlQ291bnQ9IjM3NiI+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iMCIgUUZvcm1hdD0idHJ1ZSIgTmFtZT0iTm9ybWFsIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iOSIgUUZvcm1hdD0idHJ1ZSIgTmFtZT0iaGVhZGluZyAxIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iOSIgU2VtaUhpZGRlbj0idHJ1ZSIKKyAgIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIiBRRm9ybWF0PSJ0cnVlIiBOYW1lPSJoZWFkaW5nIDIiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI5IiBTZW1pSGlkZGVuPSJ0cnVlIgorICAgVW5oaWRlV2hlblVzZWQ9InRydWUiIFFGb3JtYXQ9InRydWUiIE5hbWU9ImhlYWRpbmcgMyIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjkiIFNlbWlIaWRkZW49InRydWUiCisgICBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIgUUZvcm1hdD0idHJ1ZSIgTmFtZT0iaGVhZGluZyA0Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iOSIgU2VtaUhpZGRlbj0idHJ1ZSIKKyAgIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIiBRRm9ybWF0PSJ0cnVlIiBOYW1lPSJoZWFkaW5nIDUiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI5IiBTZW1pSGlkZGVuPSJ0cnVlIgorICAgVW5oaWRlV2hlblVzZWQ9InRydWUiIFFGb3JtYXQ9InRydWUiIE5hbWU9ImhlYWRpbmcgNiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjkiIFNlbWlIaWRkZW49InRydWUiCisgICBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIgUUZvcm1hdD0idHJ1ZSIgTmFtZT0iaGVhZGluZyA3Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iOSIgU2VtaUhpZGRlbj0idHJ1ZSIKKyAgIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIiBRRm9ybWF0PSJ0cnVlIiBOYW1lPSJoZWFkaW5nIDgiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI5IiBTZW1pSGlkZGVuPSJ0cnVlIgorICAgVW5oaWRlV2hlblVzZWQ9InRydWUiIFFGb3JtYXQ9InRydWUiIE5hbWU9ImhlYWRpbmcgOSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJpbmRleCAxIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9ImluZGV4IDIiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iaW5kZXggMyIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJpbmRleCA0Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9ImluZGV4IDUiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iaW5kZXggNiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJpbmRleCA3Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9ImluZGV4IDgiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iaW5kZXggOSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjM5IiBTZW1pSGlkZGVuPSJ0cnVlIgorICAgVW5oaWRlV2hlblVzZWQ9InRydWUiIE5hbWU9InRvYyAxIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iMzkiIFNlbWlIaWRkZW49InRydWUiCisgICBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIgTmFtZT0idG9jIDIiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSIzOSIgU2VtaUhpZGRlbj0idHJ1ZSIKKyAgIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIiBOYW1lPSJ0b2MgMyIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjM5IiBTZW1pSGlkZGVuPSJ0cnVlIgorICAgVW5oaWRlV2hlblVzZWQ9InRydWUiIE5hbWU9InRvYyA0Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iMzkiIFNlbWlIaWRkZW49InRydWUiCisgICBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIgTmFtZT0idG9jIDUiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSIzOSIgU2VtaUhpZGRlbj0idHJ1ZSIKKyAgIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIiBOYW1lPSJ0b2MgNiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjM5IiBTZW1pSGlkZGVuPSJ0cnVlIgorICAgVW5oaWRlV2hlblVzZWQ9InRydWUiIE5hbWU9InRvYyA3Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iMzkiIFNlbWlIaWRkZW49InRydWUiCisgICBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIgTmFtZT0idG9jIDgiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSIzOSIgU2VtaUhpZGRlbj0idHJ1ZSIKKyAgIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIiBOYW1lPSJ0b2MgOSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJOb3JtYWwgSW5kZW50Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9ImZvb3Rub3RlIHRleHQiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iYW5ub3RhdGlvbiB0ZXh0Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9ImhlYWRlciIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJmb290ZXIiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iaW5kZXggaGVhZGluZyIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjM1IiBTZW1pSGlkZGVuPSJ0cnVlIgorICAgVW5oaWRlV2hlblVzZWQ9InRydWUiIFFGb3JtYXQ9InRydWUiIE5hbWU9ImNhcHRpb24iLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0idGFibGUgb2YgZmlndXJlcyIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJlbnZlbG9wZSBhZGRyZXNzIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9ImVudmVsb3BlIHJldHVybiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJmb290bm90ZSByZWZlcmVuY2UiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iYW5ub3RhdGlvbiByZWZlcmVuY2UiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0ibGluZSBudW1iZXIiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0icGFnZSBudW1iZXIiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iZW5kbm90ZSByZWZlcmVuY2UiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iZW5kbm90ZSB0ZXh0Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9InRhYmxlIG9mIGF1dGhvcml0aWVzIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9Im1hY3JvIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9InRvYSBoZWFkaW5nIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9Ikxpc3QiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iTGlzdCBCdWxsZXQiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iTGlzdCBOdW1iZXIiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iTGlzdCAyIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9Ikxpc3QgMyIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJMaXN0IDQiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iTGlzdCA1Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9Ikxpc3QgQnVsbGV0IDIiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iTGlzdCBCdWxsZXQgMyIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJMaXN0IEJ1bGxldCA0Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9Ikxpc3QgQnVsbGV0IDUiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iTGlzdCBOdW1iZXIgMiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJMaXN0IE51bWJlciAzIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9Ikxpc3QgTnVtYmVyIDQiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iTGlzdCBOdW1iZXIgNSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjEwIiBRRm9ybWF0PSJ0cnVlIiBOYW1lPSJUaXRsZSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJDbG9zaW5nIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9IlNpZ25hdHVyZSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjEiIFNlbWlIaWRkZW49InRydWUiCisgICBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIgTmFtZT0iRGVmYXVsdCBQYXJhZ3JhcGggRm9udCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJCb2R5IFRleHQiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iQm9keSBUZXh0IEluZGVudCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJMaXN0IENvbnRpbnVlIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9Ikxpc3QgQ29udGludWUgMiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJMaXN0IENvbnRpbnVlIDMiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iTGlzdCBDb250aW51ZSA0Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9Ikxpc3QgQ29udGludWUgNSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJNZXNzYWdlIEhlYWRlciIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjExIiBRRm9ybWF0PSJ0cnVlIiBOYW1lPSJTdWJ0aXRsZSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJTYWx1dGF0aW9uIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9IkRhdGUiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iQm9keSBUZXh0IEZpcnN0IEluZGVudCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJCb2R5IFRleHQgRmlyc3QgSW5kZW50IDIiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iTm90ZSBIZWFkaW5nIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9IkJvZHkgVGV4dCAyIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9IkJvZHkgVGV4dCAzIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9IkJvZHkgVGV4dCBJbmRlbnQgMiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJCb2R5IFRleHQgSW5kZW50IDMiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iQmxvY2sgVGV4dCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJIeXBlcmxpbmsiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iRm9sbG93ZWRIeXBlcmxpbmsiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSIyMiIgUUZvcm1hdD0idHJ1ZSIgTmFtZT0iU3Ryb25nIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iMjAiIFFGb3JtYXQ9InRydWUiIE5hbWU9IkVtcGhhc2lzIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9IkRvY3VtZW50IE1hcCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJQbGFpbiBUZXh0Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9IkUtbWFpbCBTaWduYXR1cmUiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iSFRNTCBUb3Agb2YgRm9ybSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJIVE1MIEJvdHRvbSBvZiBGb3JtIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9Ik5vcm1hbCAoV2ViKSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJIVE1MIEFjcm9ueW0iLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iSFRNTCBBZGRyZXNzIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9IkhUTUwgQ2l0ZSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJIVE1MIENvZGUiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iSFRNTCBEZWZpbml0aW9uIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9IkhUTUwgS2V5Ym9hcmQiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iSFRNTCBQcmVmb3JtYXR0ZWQiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iSFRNTCBTYW1wbGUiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iSFRNTCBUeXBld3JpdGVyIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9IkhUTUwgVmFyaWFibGUiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iTm9ybWFsIFRhYmxlIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9ImFubm90YXRpb24gc3ViamVjdCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJObyBMaXN0Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9Ik91dGxpbmUgTGlzdCAxIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9Ik91dGxpbmUgTGlzdCAyIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9Ik91dGxpbmUgTGlzdCAzIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9IlRhYmxlIFNpbXBsZSAxIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9IlRhYmxlIFNpbXBsZSAyIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9IlRhYmxlIFNpbXBsZSAzIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9IlRhYmxlIENsYXNzaWMgMSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJUYWJsZSBDbGFzc2ljIDIiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iVGFibGUgQ2xhc3NpYyAzIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9IlRhYmxlIENsYXNzaWMgNCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJUYWJsZSBDb2xvcmZ1bCAxIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9IlRhYmxlIENvbG9yZnVsIDIiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iVGFibGUgQ29sb3JmdWwgMyIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJUYWJsZSBDb2x1bW5zIDEiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iVGFibGUgQ29sdW1ucyAyIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9IlRhYmxlIENvbHVtbnMgMyIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJUYWJsZSBDb2x1bW5zIDQiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iVGFibGUgQ29sdW1ucyA1Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9IlRhYmxlIEdyaWQgMSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJUYWJsZSBHcmlkIDIiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iVGFibGUgR3JpZCAzIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9IlRhYmxlIEdyaWQgNCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJUYWJsZSBHcmlkIDUiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iVGFibGUgR3JpZCA2Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9IlRhYmxlIEdyaWQgNyIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJUYWJsZSBHcmlkIDgiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iVGFibGUgTGlzdCAxIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9IlRhYmxlIExpc3QgMiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJUYWJsZSBMaXN0IDMiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iVGFibGUgTGlzdCA0Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9IlRhYmxlIExpc3QgNSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJUYWJsZSBMaXN0IDYiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iVGFibGUgTGlzdCA3Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9IlRhYmxlIExpc3QgOCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJUYWJsZSAzRCBlZmZlY3RzIDEiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iVGFibGUgM0QgZWZmZWN0cyAyIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9IlRhYmxlIDNEIGVmZmVjdHMgMyIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJUYWJsZSBDb250ZW1wb3JhcnkiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iVGFibGUgRWxlZ2FudCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJUYWJsZSBQcm9mZXNzaW9uYWwiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iVGFibGUgU3VidGxlIDEiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iVGFibGUgU3VidGxlIDIiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iVGFibGUgV2ViIDEiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iVGFibGUgV2ViIDIiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iVGFibGUgV2ViIDMiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iQmFsbG9vbiBUZXh0Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iMzkiIE5hbWU9IlRhYmxlIEdyaWQiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iVGFibGUgVGhlbWUiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIE5hbWU9IlBsYWNlaG9sZGVyIFRleHQiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSIxIiBRRm9ybWF0PSJ0cnVlIiBOYW1lPSJObyBTcGFjaW5nIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjAiIE5hbWU9IkxpZ2h0IFNoYWRpbmciLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2MSIgTmFtZT0iTGlnaHQgTGlzdCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjYyIiBOYW1lPSJMaWdodCBHcmlkIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjMiIE5hbWU9Ik1lZGl1bSBTaGFkaW5nIDEiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2NCIgTmFtZT0iTWVkaXVtIFNoYWRpbmcgMiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjY1IiBOYW1lPSJNZWRpdW0gTGlzdCAxIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjYiIE5hbWU9Ik1lZGl1bSBMaXN0IDIiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2NyIgTmFtZT0iTWVkaXVtIEdyaWQgMSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjY4IiBOYW1lPSJNZWRpdW0gR3JpZCAyIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjkiIE5hbWU9Ik1lZGl1bSBHcmlkIDMiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI3MCIgTmFtZT0iRGFyayBMaXN0Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNzEiIE5hbWU9IkNvbG9yZnVsIFNoYWRpbmciLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI3MiIgTmFtZT0iQ29sb3JmdWwgTGlzdCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjczIiBOYW1lPSJDb2xvcmZ1bCBHcmlkIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjAiIE5hbWU9IkxpZ2h0IFNoYWRpbmcgQWNjZW50IDEiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2MSIgTmFtZT0iTGlnaHQgTGlzdCBBY2NlbnQgMSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjYyIiBOYW1lPSJMaWdodCBHcmlkIEFjY2VudCAxIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjMiIE5hbWU9Ik1lZGl1bSBTaGFkaW5nIDEgQWNjZW50IDEiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2NCIgTmFtZT0iTWVkaXVtIFNoYWRpbmcgMiBBY2NlbnQgMSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjY1IiBOYW1lPSJNZWRpdW0gTGlzdCAxIEFjY2VudCAxIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBOYW1lPSJSZXZpc2lvbiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjM0IiBRRm9ybWF0PSJ0cnVlIgorICAgTmFtZT0iTGlzdCBQYXJhZ3JhcGgiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSIyOSIgUUZvcm1hdD0idHJ1ZSIgTmFtZT0iUXVvdGUiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSIzMCIgUUZvcm1hdD0idHJ1ZSIKKyAgIE5hbWU9IkludGVuc2UgUXVvdGUiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2NiIgTmFtZT0iTWVkaXVtIExpc3QgMiBBY2NlbnQgMSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjY3IiBOYW1lPSJNZWRpdW0gR3JpZCAxIEFjY2VudCAxIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjgiIE5hbWU9Ik1lZGl1bSBHcmlkIDIgQWNjZW50IDEiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2OSIgTmFtZT0iTWVkaXVtIEdyaWQgMyBBY2NlbnQgMSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjcwIiBOYW1lPSJEYXJrIExpc3QgQWNjZW50IDEiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI3MSIgTmFtZT0iQ29sb3JmdWwgU2hhZGluZyBBY2NlbnQgMSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjcyIiBOYW1lPSJDb2xvcmZ1bCBMaXN0IEFjY2VudCAxIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNzMiIE5hbWU9IkNvbG9yZnVsIEdyaWQgQWNjZW50IDEiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2MCIgTmFtZT0iTGlnaHQgU2hhZGluZyBBY2NlbnQgMiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjYxIiBOYW1lPSJMaWdodCBMaXN0IEFjY2VudCAyIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjIiIE5hbWU9IkxpZ2h0IEdyaWQgQWNjZW50IDIiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2MyIgTmFtZT0iTWVkaXVtIFNoYWRpbmcgMSBBY2NlbnQgMiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjY0IiBOYW1lPSJNZWRpdW0gU2hhZGluZyAyIEFjY2VudCAyIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjUiIE5hbWU9Ik1lZGl1bSBMaXN0IDEgQWNjZW50IDIiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2NiIgTmFtZT0iTWVkaXVtIExpc3QgMiBBY2NlbnQgMiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjY3IiBOYW1lPSJNZWRpdW0gR3JpZCAxIEFjY2VudCAyIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjgiIE5hbWU9Ik1lZGl1bSBHcmlkIDIgQWNjZW50IDIiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2OSIgTmFtZT0iTWVkaXVtIEdyaWQgMyBBY2NlbnQgMiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjcwIiBOYW1lPSJEYXJrIExpc3QgQWNjZW50IDIiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI3MSIgTmFtZT0iQ29sb3JmdWwgU2hhZGluZyBBY2NlbnQgMiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjcyIiBOYW1lPSJDb2xvcmZ1bCBMaXN0IEFjY2VudCAyIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNzMiIE5hbWU9IkNvbG9yZnVsIEdyaWQgQWNjZW50IDIiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2MCIgTmFtZT0iTGlnaHQgU2hhZGluZyBBY2NlbnQgMyIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjYxIiBOYW1lPSJMaWdodCBMaXN0IEFjY2VudCAzIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjIiIE5hbWU9IkxpZ2h0IEdyaWQgQWNjZW50IDMiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2MyIgTmFtZT0iTWVkaXVtIFNoYWRpbmcgMSBBY2NlbnQgMyIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjY0IiBOYW1lPSJNZWRpdW0gU2hhZGluZyAyIEFjY2VudCAzIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjUiIE5hbWU9Ik1lZGl1bSBMaXN0IDEgQWNjZW50IDMiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2NiIgTmFtZT0iTWVkaXVtIExpc3QgMiBBY2NlbnQgMyIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjY3IiBOYW1lPSJNZWRpdW0gR3JpZCAxIEFjY2VudCAzIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjgiIE5hbWU9Ik1lZGl1bSBHcmlkIDIgQWNjZW50IDMiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2OSIgTmFtZT0iTWVkaXVtIEdyaWQgMyBBY2NlbnQgMyIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjcwIiBOYW1lPSJEYXJrIExpc3QgQWNjZW50IDMiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI3MSIgTmFtZT0iQ29sb3JmdWwgU2hhZGluZyBBY2NlbnQgMyIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjcyIiBOYW1lPSJDb2xvcmZ1bCBMaXN0IEFjY2VudCAzIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNzMiIE5hbWU9IkNvbG9yZnVsIEdyaWQgQWNjZW50IDMiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2MCIgTmFtZT0iTGlnaHQgU2hhZGluZyBBY2NlbnQgNCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjYxIiBOYW1lPSJMaWdodCBMaXN0IEFjY2VudCA0Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjIiIE5hbWU9IkxpZ2h0IEdyaWQgQWNjZW50IDQiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2MyIgTmFtZT0iTWVkaXVtIFNoYWRpbmcgMSBBY2NlbnQgNCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjY0IiBOYW1lPSJNZWRpdW0gU2hhZGluZyAyIEFjY2VudCA0Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjUiIE5hbWU9Ik1lZGl1bSBMaXN0IDEgQWNjZW50IDQiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2NiIgTmFtZT0iTWVkaXVtIExpc3QgMiBBY2NlbnQgNCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjY3IiBOYW1lPSJNZWRpdW0gR3JpZCAxIEFjY2VudCA0Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjgiIE5hbWU9Ik1lZGl1bSBHcmlkIDIgQWNjZW50IDQiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2OSIgTmFtZT0iTWVkaXVtIEdyaWQgMyBBY2NlbnQgNCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjcwIiBOYW1lPSJEYXJrIExpc3QgQWNjZW50IDQiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI3MSIgTmFtZT0iQ29sb3JmdWwgU2hhZGluZyBBY2NlbnQgNCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjcyIiBOYW1lPSJDb2xvcmZ1bCBMaXN0IEFjY2VudCA0Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNzMiIE5hbWU9IkNvbG9yZnVsIEdyaWQgQWNjZW50IDQiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2MCIgTmFtZT0iTGlnaHQgU2hhZGluZyBBY2NlbnQgNSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjYxIiBOYW1lPSJMaWdodCBMaXN0IEFjY2VudCA1Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjIiIE5hbWU9IkxpZ2h0IEdyaWQgQWNjZW50IDUiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2MyIgTmFtZT0iTWVkaXVtIFNoYWRpbmcgMSBBY2NlbnQgNSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjY0IiBOYW1lPSJNZWRpdW0gU2hhZGluZyAyIEFjY2VudCA1Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjUiIE5hbWU9Ik1lZGl1bSBMaXN0IDEgQWNjZW50IDUiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2NiIgTmFtZT0iTWVkaXVtIExpc3QgMiBBY2NlbnQgNSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjY3IiBOYW1lPSJNZWRpdW0gR3JpZCAxIEFjY2VudCA1Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjgiIE5hbWU9Ik1lZGl1bSBHcmlkIDIgQWNjZW50IDUiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2OSIgTmFtZT0iTWVkaXVtIEdyaWQgMyBBY2NlbnQgNSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjcwIiBOYW1lPSJEYXJrIExpc3QgQWNjZW50IDUiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI3MSIgTmFtZT0iQ29sb3JmdWwgU2hhZGluZyBBY2NlbnQgNSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjcyIiBOYW1lPSJDb2xvcmZ1bCBMaXN0IEFjY2VudCA1Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNzMiIE5hbWU9IkNvbG9yZnVsIEdyaWQgQWNjZW50IDUiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2MCIgTmFtZT0iTGlnaHQgU2hhZGluZyBBY2NlbnQgNiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjYxIiBOYW1lPSJMaWdodCBMaXN0IEFjY2VudCA2Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjIiIE5hbWU9IkxpZ2h0IEdyaWQgQWNjZW50IDYiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2MyIgTmFtZT0iTWVkaXVtIFNoYWRpbmcgMSBBY2NlbnQgNiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjY0IiBOYW1lPSJNZWRpdW0gU2hhZGluZyAyIEFjY2VudCA2Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjUiIE5hbWU9Ik1lZGl1bSBMaXN0IDEgQWNjZW50IDYiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2NiIgTmFtZT0iTWVkaXVtIExpc3QgMiBBY2NlbnQgNiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjY3IiBOYW1lPSJNZWRpdW0gR3JpZCAxIEFjY2VudCA2Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjgiIE5hbWU9Ik1lZGl1bSBHcmlkIDIgQWNjZW50IDYiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2OSIgTmFtZT0iTWVkaXVtIEdyaWQgMyBBY2NlbnQgNiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjcwIiBOYW1lPSJEYXJrIExpc3QgQWNjZW50IDYiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI3MSIgTmFtZT0iQ29sb3JmdWwgU2hhZGluZyBBY2NlbnQgNiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjcyIiBOYW1lPSJDb2xvcmZ1bCBMaXN0IEFjY2VudCA2Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNzMiIE5hbWU9IkNvbG9yZnVsIEdyaWQgQWNjZW50IDYiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSIxOSIgUUZvcm1hdD0idHJ1ZSIKKyAgIE5hbWU9IlN1YnRsZSBFbXBoYXNpcyIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjIxIiBRRm9ybWF0PSJ0cnVlIgorICAgTmFtZT0iSW50ZW5zZSBFbXBoYXNpcyIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjMxIiBRRm9ybWF0PSJ0cnVlIgorICAgTmFtZT0iU3VidGxlIFJlZmVyZW5jZSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjMyIiBRRm9ybWF0PSJ0cnVlIgorICAgTmFtZT0iSW50ZW5zZSBSZWZlcmVuY2UiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSIzMyIgUUZvcm1hdD0idHJ1ZSIgTmFtZT0iQm9vayBUaXRsZSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjM3IiBTZW1pSGlkZGVuPSJ0cnVlIgorICAgVW5oaWRlV2hlblVzZWQ9InRydWUiIE5hbWU9IkJpYmxpb2dyYXBoeSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjM5IiBTZW1pSGlkZGVuPSJ0cnVlIgorICAgVW5oaWRlV2hlblVzZWQ9InRydWUiIFFGb3JtYXQ9InRydWUiIE5hbWU9IlRPQyBIZWFkaW5nIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDEiIE5hbWU9IlBsYWluIFRhYmxlIDEiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI0MiIgTmFtZT0iUGxhaW4gVGFibGUgMiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQzIiBOYW1lPSJQbGFpbiBUYWJsZSAzIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDQiIE5hbWU9IlBsYWluIFRhYmxlIDQiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI0NSIgTmFtZT0iUGxhaW4gVGFibGUgNSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQwIiBOYW1lPSJHcmlkIFRhYmxlIExpZ2h0Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDYiIE5hbWU9IkdyaWQgVGFibGUgMSBMaWdodCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQ3IiBOYW1lPSJHcmlkIFRhYmxlIDIiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI0OCIgTmFtZT0iR3JpZCBUYWJsZSAzIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDkiIE5hbWU9IkdyaWQgVGFibGUgNCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjUwIiBOYW1lPSJHcmlkIFRhYmxlIDUgRGFyayIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjUxIiBOYW1lPSJHcmlkIFRhYmxlIDYgQ29sb3JmdWwiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI1MiIgTmFtZT0iR3JpZCBUYWJsZSA3IENvbG9yZnVsIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDYiCisgICBOYW1lPSJHcmlkIFRhYmxlIDEgTGlnaHQgQWNjZW50IDEiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI0NyIgTmFtZT0iR3JpZCBUYWJsZSAyIEFjY2VudCAxIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDgiIE5hbWU9IkdyaWQgVGFibGUgMyBBY2NlbnQgMSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQ5IiBOYW1lPSJHcmlkIFRhYmxlIDQgQWNjZW50IDEiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI1MCIgTmFtZT0iR3JpZCBUYWJsZSA1IERhcmsgQWNjZW50IDEiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI1MSIKKyAgIE5hbWU9IkdyaWQgVGFibGUgNiBDb2xvcmZ1bCBBY2NlbnQgMSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjUyIgorICAgTmFtZT0iR3JpZCBUYWJsZSA3IENvbG9yZnVsIEFjY2VudCAxIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDYiCisgICBOYW1lPSJHcmlkIFRhYmxlIDEgTGlnaHQgQWNjZW50IDIiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI0NyIgTmFtZT0iR3JpZCBUYWJsZSAyIEFjY2VudCAyIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDgiIE5hbWU9IkdyaWQgVGFibGUgMyBBY2NlbnQgMiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQ5IiBOYW1lPSJHcmlkIFRhYmxlIDQgQWNjZW50IDIiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI1MCIgTmFtZT0iR3JpZCBUYWJsZSA1IERhcmsgQWNjZW50IDIiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI1MSIKKyAgIE5hbWU9IkdyaWQgVGFibGUgNiBDb2xvcmZ1bCBBY2NlbnQgMiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjUyIgorICAgTmFtZT0iR3JpZCBUYWJsZSA3IENvbG9yZnVsIEFjY2VudCAyIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDYiCisgICBOYW1lPSJHcmlkIFRhYmxlIDEgTGlnaHQgQWNjZW50IDMiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI0NyIgTmFtZT0iR3JpZCBUYWJsZSAyIEFjY2VudCAzIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDgiIE5hbWU9IkdyaWQgVGFibGUgMyBBY2NlbnQgMyIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQ5IiBOYW1lPSJHcmlkIFRhYmxlIDQgQWNjZW50IDMiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI1MCIgTmFtZT0iR3JpZCBUYWJsZSA1IERhcmsgQWNjZW50IDMiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI1MSIKKyAgIE5hbWU9IkdyaWQgVGFibGUgNiBDb2xvcmZ1bCBBY2NlbnQgMyIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjUyIgorICAgTmFtZT0iR3JpZCBUYWJsZSA3IENvbG9yZnVsIEFjY2VudCAzIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDYiCisgICBOYW1lPSJHcmlkIFRhYmxlIDEgTGlnaHQgQWNjZW50IDQiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI0NyIgTmFtZT0iR3JpZCBUYWJsZSAyIEFjY2VudCA0Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDgiIE5hbWU9IkdyaWQgVGFibGUgMyBBY2NlbnQgNCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQ5IiBOYW1lPSJHcmlkIFRhYmxlIDQgQWNjZW50IDQiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI1MCIgTmFtZT0iR3JpZCBUYWJsZSA1IERhcmsgQWNjZW50IDQiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI1MSIKKyAgIE5hbWU9IkdyaWQgVGFibGUgNiBDb2xvcmZ1bCBBY2NlbnQgNCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjUyIgorICAgTmFtZT0iR3JpZCBUYWJsZSA3IENvbG9yZnVsIEFjY2VudCA0Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDYiCisgICBOYW1lPSJHcmlkIFRhYmxlIDEgTGlnaHQgQWNjZW50IDUiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI0NyIgTmFtZT0iR3JpZCBUYWJsZSAyIEFjY2VudCA1Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDgiIE5hbWU9IkdyaWQgVGFibGUgMyBBY2NlbnQgNSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQ5IiBOYW1lPSJHcmlkIFRhYmxlIDQgQWNjZW50IDUiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI1MCIgTmFtZT0iR3JpZCBUYWJsZSA1IERhcmsgQWNjZW50IDUiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI1MSIKKyAgIE5hbWU9IkdyaWQgVGFibGUgNiBDb2xvcmZ1bCBBY2NlbnQgNSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjUyIgorICAgTmFtZT0iR3JpZCBUYWJsZSA3IENvbG9yZnVsIEFjY2VudCA1Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDYiCisgICBOYW1lPSJHcmlkIFRhYmxlIDEgTGlnaHQgQWNjZW50IDYiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI0NyIgTmFtZT0iR3JpZCBUYWJsZSAyIEFjY2VudCA2Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDgiIE5hbWU9IkdyaWQgVGFibGUgMyBBY2NlbnQgNiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQ5IiBOYW1lPSJHcmlkIFRhYmxlIDQgQWNjZW50IDYiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI1MCIgTmFtZT0iR3JpZCBUYWJsZSA1IERhcmsgQWNjZW50IDYiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI1MSIKKyAgIE5hbWU9IkdyaWQgVGFibGUgNiBDb2xvcmZ1bCBBY2NlbnQgNiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjUyIgorICAgTmFtZT0iR3JpZCBUYWJsZSA3IENvbG9yZnVsIEFjY2VudCA2Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDYiIE5hbWU9Ikxpc3QgVGFibGUgMSBMaWdodCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQ3IiBOYW1lPSJMaXN0IFRhYmxlIDIiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI0OCIgTmFtZT0iTGlzdCBUYWJsZSAzIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDkiIE5hbWU9Ikxpc3QgVGFibGUgNCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjUwIiBOYW1lPSJMaXN0IFRhYmxlIDUgRGFyayIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjUxIiBOYW1lPSJMaXN0IFRhYmxlIDYgQ29sb3JmdWwiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI1MiIgTmFtZT0iTGlzdCBUYWJsZSA3IENvbG9yZnVsIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDYiCisgICBOYW1lPSJMaXN0IFRhYmxlIDEgTGlnaHQgQWNjZW50IDEiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI0NyIgTmFtZT0iTGlzdCBUYWJsZSAyIEFjY2VudCAxIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDgiIE5hbWU9Ikxpc3QgVGFibGUgMyBBY2NlbnQgMSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQ5IiBOYW1lPSJMaXN0IFRhYmxlIDQgQWNjZW50IDEiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI1MCIgTmFtZT0iTGlzdCBUYWJsZSA1IERhcmsgQWNjZW50IDEiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI1MSIKKyAgIE5hbWU9Ikxpc3QgVGFibGUgNiBDb2xvcmZ1bCBBY2NlbnQgMSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjUyIgorICAgTmFtZT0iTGlzdCBUYWJsZSA3IENvbG9yZnVsIEFjY2VudCAxIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDYiCisgICBOYW1lPSJMaXN0IFRhYmxlIDEgTGlnaHQgQWNjZW50IDIiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI0NyIgTmFtZT0iTGlzdCBUYWJsZSAyIEFjY2VudCAyIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDgiIE5hbWU9Ikxpc3QgVGFibGUgMyBBY2NlbnQgMiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQ5IiBOYW1lPSJMaXN0IFRhYmxlIDQgQWNjZW50IDIiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI1MCIgTmFtZT0iTGlzdCBUYWJsZSA1IERhcmsgQWNjZW50IDIiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI1MSIKKyAgIE5hbWU9Ikxpc3QgVGFibGUgNiBDb2xvcmZ1bCBBY2NlbnQgMiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjUyIgorICAgTmFtZT0iTGlzdCBUYWJsZSA3IENvbG9yZnVsIEFjY2VudCAyIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDYiCisgICBOYW1lPSJMaXN0IFRhYmxlIDEgTGlnaHQgQWNjZW50IDMiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI0NyIgTmFtZT0iTGlzdCBUYWJsZSAyIEFjY2VudCAzIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDgiIE5hbWU9Ikxpc3QgVGFibGUgMyBBY2NlbnQgMyIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQ5IiBOYW1lPSJMaXN0IFRhYmxlIDQgQWNjZW50IDMiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI1MCIgTmFtZT0iTGlzdCBUYWJsZSA1IERhcmsgQWNjZW50IDMiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI1MSIKKyAgIE5hbWU9Ikxpc3QgVGFibGUgNiBDb2xvcmZ1bCBBY2NlbnQgMyIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjUyIgorICAgTmFtZT0iTGlzdCBUYWJsZSA3IENvbG9yZnVsIEFjY2VudCAzIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDYiCisgICBOYW1lPSJMaXN0IFRhYmxlIDEgTGlnaHQgQWNjZW50IDQiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI0NyIgTmFtZT0iTGlzdCBUYWJsZSAyIEFjY2VudCA0Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDgiIE5hbWU9Ikxpc3QgVGFibGUgMyBBY2NlbnQgNCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQ5IiBOYW1lPSJMaXN0IFRhYmxlIDQgQWNjZW50IDQiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI1MCIgTmFtZT0iTGlzdCBUYWJsZSA1IERhcmsgQWNjZW50IDQiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI1MSIKKyAgIE5hbWU9Ikxpc3QgVGFibGUgNiBDb2xvcmZ1bCBBY2NlbnQgNCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjUyIgorICAgTmFtZT0iTGlzdCBUYWJsZSA3IENvbG9yZnVsIEFjY2VudCA0Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDYiCisgICBOYW1lPSJMaXN0IFRhYmxlIDEgTGlnaHQgQWNjZW50IDUiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI0NyIgTmFtZT0iTGlzdCBUYWJsZSAyIEFjY2VudCA1Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDgiIE5hbWU9Ikxpc3QgVGFibGUgMyBBY2NlbnQgNSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQ5IiBOYW1lPSJMaXN0IFRhYmxlIDQgQWNjZW50IDUiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI1MCIgTmFtZT0iTGlzdCBUYWJsZSA1IERhcmsgQWNjZW50IDUiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI1MSIKKyAgIE5hbWU9Ikxpc3QgVGFibGUgNiBDb2xvcmZ1bCBBY2NlbnQgNSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjUyIgorICAgTmFtZT0iTGlzdCBUYWJsZSA3IENvbG9yZnVsIEFjY2VudCA1Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDYiCisgICBOYW1lPSJMaXN0IFRhYmxlIDEgTGlnaHQgQWNjZW50IDYiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI0NyIgTmFtZT0iTGlzdCBUYWJsZSAyIEFjY2VudCA2Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDgiIE5hbWU9Ikxpc3QgVGFibGUgMyBBY2NlbnQgNiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQ5IiBOYW1lPSJMaXN0IFRhYmxlIDQgQWNjZW50IDYiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI1MCIgTmFtZT0iTGlzdCBUYWJsZSA1IERhcmsgQWNjZW50IDYiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI1MSIKKyAgIE5hbWU9Ikxpc3QgVGFibGUgNiBDb2xvcmZ1bCBBY2NlbnQgNiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjUyIgorICAgTmFtZT0iTGlzdCBUYWJsZSA3IENvbG9yZnVsIEFjY2VudCA2Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9Ik1lbnRpb24iLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iU21hcnQgSHlwZXJsaW5rIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9Ikhhc2h0YWciLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iVW5yZXNvbHZlZCBNZW50aW9uIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9IlNtYXJ0IExpbmsiLz4KKyA8L3c6TGF0ZW50U3R5bGVzPgorPC94bWw+PCFbZW5kaWZdLS0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3R5bGU+Cis8IS0tCisgLyogRm9udCBEZWZpbml0aW9ucyAqLworIEBmb250LWZhY2UKKwl7Zm9udC1mYW1pbHk6V2luZ2RpbmdzOworCXBhbm9zZS0xOjUgMCAwIDAgMCAwIDAgMCAwIDA7CisJbXNvLWZvbnQtY2hhcnNldDoyOworCW1zby1nZW5lcmljLWZvbnQtZmFtaWx5OmF1dG87CisJbXNvLWZvbnQtcGl0Y2g6dmFyaWFibGU7CisJbXNvLWZvbnQtc2lnbmF0dXJlOjAgMjY4NDM1NDU2IDAgMCAtMjE0NzQ4MzY0OCAwO30KK0Bmb250LWZhY2UKKwl7Zm9udC1mYW1pbHk6IkNhbWJyaWEgTWF0aCI7CisJcGFub3NlLTE6MiA0IDUgMyA1IDQgNiAzIDIgNDsKKwltc28tZm9udC1jaGFyc2V0OjA7CisJbXNvLWdlbmVyaWMtZm9udC1mYW1pbHk6cm9tYW47CisJbXNvLWZvbnQtcGl0Y2g6dmFyaWFibGU7CisJbXNvLWZvbnQtc2lnbmF0dXJlOi01MzY4NjkxMjEgMTEwNzMwNTcyNyAzMzU1NDQzMiAwIDQxNSAwO30KK0Bmb250LWZhY2UKKwl7Zm9udC1mYW1pbHk6VmVyZGFuYTsKKwlwYW5vc2UtMToyIDExIDYgNCAzIDUgNCA0IDIgNDsKKwltc28tZm9udC1jaGFyc2V0OjA7CisJbXNvLWdlbmVyaWMtZm9udC1mYW1pbHk6c3dpc3M7CisJbXNvLWZvbnQtcGl0Y2g6dmFyaWFibGU7CisJbXNvLWZvbnQtc2lnbmF0dXJlOi0xNjEwNjEwOTQ1IDEwNzM3NTAxMDcgMTYgMCA0MTUgMDt9CitAZm9udC1mYWNlCisJe2ZvbnQtZmFtaWx5OiJTZWdvZSBVSSI7CisJcGFub3NlLTE6MiAxMSA1IDIgNCAyIDQgMiAyIDM7CisJbXNvLWZvbnQtY2hhcnNldDowOworCW1zby1nZW5lcmljLWZvbnQtZmFtaWx5OnN3aXNzOworCW1zby1mb250LXBpdGNoOnZhcmlhYmxlOworCW1zby1mb250LXNpZ25hdHVyZTotNDY5NzUwMDE3IC0xMDczNjgzMzI5IDkgMCA1MTEgMDt9CisgLyogU3R5bGUgRGVmaW5pdGlvbnMgKi8KKyBwLk1zb05vcm1hbCwgbGkuTXNvTm9ybWFsLCBkaXYuTXNvTm9ybWFsCisJe21zby1zdHlsZS11bmhpZGU6bm87CisJbXNvLXN0eWxlLXBhcmVudDoiIjsKKwltYXJnaW46MGluOworCWxpbmUtaGVpZ2h0OjExNSU7CisJbXNvLXBhZ2luYXRpb246d2lkb3ctb3JwaGFuOworCWZvbnQtc2l6ZToxMS4wcHQ7CisJZm9udC1mYW1pbHk6IkFyaWFsIixzYW5zLXNlcmlmOworCW1zby1mYXJlYXN0LWZvbnQtZmFtaWx5OkFyaWFsOworCW1zby1mYXJlYXN0LXRoZW1lLWZvbnQ6bWlub3ItbGF0aW47CisJbXNvLWJpZGktZm9udC1mYW1pbHk6IlRpbWVzIE5ldyBSb21hbiI7CisJbXNvLWJpZGktdGhlbWUtZm9udDptaW5vci1iaWRpOworCWNvbG9yOiMwMDIwNTI7CisJbXNvLWFuc2ktbGFuZ3VhZ2U6RU4tVVM7CisJbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6RU4tVVM7fQorLk1zb0NocERlZmF1bHQKKwl7bXNvLXN0eWxlLXR5cGU6ZXhwb3J0LW9ubHk7CisJbXNvLWRlZmF1bHQtcHJvcHM6eWVzOworCWZvbnQtZmFtaWx5OiJBcmlhbCIsc2Fucy1zZXJpZjsKKwltc28tYXNjaWktZm9udC1mYW1pbHk6QXJpYWw7CisJbXNvLWZhcmVhc3QtZm9udC1mYW1pbHk6QXJpYWw7CisJbXNvLWZhcmVhc3QtdGhlbWUtZm9udDptaW5vci1sYXRpbjsKKwltc28taGFuc2ktZm9udC1mYW1pbHk6QXJpYWw7CisJbXNvLWJpZGktZm9udC1mYW1pbHk6IlRpbWVzIE5ldyBSb21hbiI7CisJbXNvLWJpZGktdGhlbWUtZm9udDptaW5vci1iaWRpOworCWNvbG9yOiMwMDIwNTI7CisJbXNvLWFuc2ktbGFuZ3VhZ2U6RU4tVVM7CisJbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6RU4tVVM7fQorLk1zb1BhcERlZmF1bHQKKwl7bXNvLXN0eWxlLXR5cGU6ZXhwb3J0LW9ubHk7CisJbGluZS1oZWlnaHQ6MTE1JTt9CitAcGFnZSBXb3JkU2VjdGlvbjEKKwl7c2l6ZTo1OTUuM3B0IDg0MS45cHQ7CisJbWFyZ2luOjEuMGluIDEuMGluIDEuMGluIDEuMGluOworCW1zby1oZWFkZXItbWFyZ2luOi41aW47CisJbXNvLWZvb3Rlci1tYXJnaW46LjVpbjsKKwltc28tcGFwZXItc291cmNlOjA7fQorZGl2LldvcmRTZWN0aW9uMQorCXtwYWdlOldvcmRTZWN0aW9uMTt9CisgLyogTGlzdCBEZWZpbml0aW9ucyAqLworIEBsaXN0IGwwCisJe21zby1saXN0LWlkOjEzNDA3Mzc3ODY7CisJbXNvLWxpc3QtdGVtcGxhdGUtaWRzOjg1OTIzNjkwMDt9CitAbGlzdCBsMDpsZXZlbDEKKwl7bXNvLWxldmVsLW51bWJlci1mb3JtYXQ6YnVsbGV0OworCW1zby1sZXZlbC10ZXh0OiYjNjE2MjM7OworCW1zby1sZXZlbC10YWItc3RvcDouNWluOworCW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246bGVmdDsKKwl0ZXh0LWluZGVudDotLjI1aW47CisJbXNvLWFuc2ktZm9udC1zaXplOjEwLjBwdDsKKwlmb250LWZhbWlseTpTeW1ib2w7fQorQGxpc3QgbDA6bGV2ZWwyCisJe21zby1sZXZlbC1udW1iZXItZm9ybWF0OmJ1bGxldDsKKwltc28tbGV2ZWwtdGV4dDpvOworCW1zby1sZXZlbC10YWItc3RvcDoxLjBpbjsKKwltc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7CisJdGV4dC1pbmRlbnQ6LS4yNWluOworCW1zby1hbnNpLWZvbnQtc2l6ZToxMC4wcHQ7CisJZm9udC1mYW1pbHk6IkNvdXJpZXIgTmV3IjsKKwltc28tYmlkaS1mb250LWZhbWlseToiVGltZXMgTmV3IFJvbWFuIjt9CitAbGlzdCBsMDpsZXZlbDMKKwl7bXNvLWxldmVsLW51bWJlci1mb3JtYXQ6YnVsbGV0OworCW1zby1sZXZlbC10ZXh0OiYjNjE2MDc7OworCW1zby1sZXZlbC10YWItc3RvcDoxLjVpbjsKKwltc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7CisJdGV4dC1pbmRlbnQ6LS4yNWluOworCW1zby1hbnNpLWZvbnQtc2l6ZToxMC4wcHQ7CisJZm9udC1mYW1pbHk6V2luZ2RpbmdzO30KK0BsaXN0IGwwOmxldmVsNAorCXttc28tbGV2ZWwtbnVtYmVyLWZvcm1hdDpidWxsZXQ7CisJbXNvLWxldmVsLXRleHQ6JiM2MTYwNzs7CisJbXNvLWxldmVsLXRhYi1zdG9wOjIuMGluOworCW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246bGVmdDsKKwl0ZXh0LWluZGVudDotLjI1aW47CisJbXNvLWFuc2ktZm9udC1zaXplOjEwLjBwdDsKKwlmb250LWZhbWlseTpXaW5nZGluZ3M7fQorQGxpc3QgbDA6bGV2ZWw1CisJe21zby1sZXZlbC1udW1iZXItZm9ybWF0OmJ1bGxldDsKKwltc28tbGV2ZWwtdGV4dDomIzYxNjA3OzsKKwltc28tbGV2ZWwtdGFiLXN0b3A6Mi41aW47CisJbXNvLWxldmVsLW51bWJlci1wb3NpdGlvbjpsZWZ0OworCXRleHQtaW5kZW50Oi0uMjVpbjsKKwltc28tYW5zaS1mb250LXNpemU6MTAuMHB0OworCWZvbnQtZmFtaWx5OldpbmdkaW5nczt9CitAbGlzdCBsMDpsZXZlbDYKKwl7bXNvLWxldmVsLW51bWJlci1mb3JtYXQ6YnVsbGV0OworCW1zby1sZXZlbC10ZXh0OiYjNjE2MDc7OworCW1zby1sZXZlbC10YWItc3RvcDozLjBpbjsKKwltc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7CisJdGV4dC1pbmRlbnQ6LS4yNWluOworCW1zby1hbnNpLWZvbnQtc2l6ZToxMC4wcHQ7CisJZm9udC1mYW1pbHk6V2luZ2RpbmdzO30KK0BsaXN0IGwwOmxldmVsNworCXttc28tbGV2ZWwtbnVtYmVyLWZvcm1hdDpidWxsZXQ7CisJbXNvLWxldmVsLXRleHQ6JiM2MTYwNzs7CisJbXNvLWxldmVsLXRhYi1zdG9wOjMuNWluOworCW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246bGVmdDsKKwl0ZXh0LWluZGVudDotLjI1aW47CisJbXNvLWFuc2ktZm9udC1zaXplOjEwLjBwdDsKKwlmb250LWZhbWlseTpXaW5nZGluZ3M7fQorQGxpc3QgbDA6bGV2ZWw4CisJe21zby1sZXZlbC1udW1iZXItZm9ybWF0OmJ1bGxldDsKKwltc28tbGV2ZWwtdGV4dDomIzYxNjA3OzsKKwltc28tbGV2ZWwtdGFiLXN0b3A6NC4waW47CisJbXNvLWxldmVsLW51bWJlci1wb3NpdGlvbjpsZWZ0OworCXRleHQtaW5kZW50Oi0uMjVpbjsKKwltc28tYW5zaS1mb250LXNpemU6MTAuMHB0OworCWZvbnQtZmFtaWx5OldpbmdkaW5nczt9CitAbGlzdCBsMDpsZXZlbDkKKwl7bXNvLWxldmVsLW51bWJlci1mb3JtYXQ6YnVsbGV0OworCW1zby1sZXZlbC10ZXh0OiYjNjE2MDc7OworCW1zby1sZXZlbC10YWItc3RvcDo0LjVpbjsKKwltc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7CisJdGV4dC1pbmRlbnQ6LS4yNWluOworCW1zby1hbnNpLWZvbnQtc2l6ZToxMC4wcHQ7CisJZm9udC1mYW1pbHk6V2luZ2RpbmdzO30KK29sCisJe21hcmdpbi1ib3R0b206MGluO30KK3VsCisJe21hcmdpbi1ib3R0b206MGluO30KKy0tPgorPC9zdHlsZT48IS0tW2lmIGd0ZSBtc28gMTBdPgorPHN0eWxlPgorIC8qIFN0eWxlIERlZmluaXRpb25zICovCisgdGFibGUuTXNvTm9ybWFsVGFibGUKKwl7bXNvLXN0eWxlLW5hbWU6IlRhYmxlIE5vcm1hbCI7CisJbXNvLXRzdHlsZS1yb3diYW5kLXNpemU6MDsKKwltc28tdHN0eWxlLWNvbGJhbmQtc2l6ZTowOworCW1zby1zdHlsZS1ub3Nob3c6eWVzOworCW1zby1zdHlsZS1wcmlvcml0eTo5OTsKKwltc28tc3R5bGUtcGFyZW50OiIiOworCW1zby1wYWRkaW5nLWFsdDowaW4gNS40cHQgMGluIDUuNHB0OworCW1zby1wYXJhLW1hcmdpbjowaW47CisJbGluZS1oZWlnaHQ6MTE1JTsKKwltc28tcGFnaW5hdGlvbjp3aWRvdy1vcnBoYW47CisJZm9udC1zaXplOjExLjBwdDsKKwlmb250LWZhbWlseToiQXJpYWwiLHNhbnMtc2VyaWY7CisJbXNvLWJpZGktZm9udC1mYW1pbHk6IlRpbWVzIE5ldyBSb21hbiI7CisJbXNvLWJpZGktdGhlbWUtZm9udDptaW5vci1iaWRpOworCWNvbG9yOiMwMDIwNTI7CisJbXNvLWFuc2ktbGFuZ3VhZ2U6RU4tVVM7CisJbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6RU4tVVM7fQorPC9zdHlsZT4KKzwhW2VuZGlmXS0tPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50PSJ0ZXh0L2h0bWw7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJzZXQ9d2luZG93cy0xMjUyIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbjogNC41cHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDBpbiA0LjVwdCAwLjI1aW47IHdpZHRoOiAxNDE2cHg7Ij4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbjogNC41cHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDBpbiA0LjVwdCAwLjI1aW47IHdpZHRoOiAxNDE2cHg7Ij48Yj48dT48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogYmxhY2s7Ij48L3NwYW4+PC91PjwvYj48L3A+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXdpbmRvd3MtMTI1MiI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXdpbmRvd3MtMTI1MiI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1ldGEgbmFtZT0iUHJvZ0lkIiBjb250ZW50PSJXb3JkLkRvY3VtZW50Ij4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWV0YSBuYW1lPSJHZW5lcmF0b3IiIGNvbnRlbnQ9Ik1pY3Jvc29mdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV29yZCAxNSI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1ldGEgbmFtZT0iT3JpZ2luYXRvciIgY29udGVudD0iTWljcm9zb2Z0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXb3JkIDE1Ij4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tW2lmIGd0ZSBtc28gOV0+PHhtbD4KKyA8dzpXb3JkRG9jdW1lbnQ+CisgIDx3OlZpZXc+Tm9ybWFsPC93OlZpZXc+CisgIDx3Olpvb20+MDwvdzpab29tPgorICA8dzpUcmFja01vdmVzLz4KKyAgPHc6VHJhY2tGb3JtYXR0aW5nLz4KKyAgPHc6SHlwaGVuYXRpb25ab25lPjIxPC93Okh5cGhlbmF0aW9uWm9uZT4KKyAgPHc6UHVuY3R1YXRpb25LZXJuaW5nLz4KKyAgPHc6VmFsaWRhdGVBZ2FpbnN0U2NoZW1hcy8+CisgIDx3OlNhdmVJZlhNTEludmFsaWQ+ZmFsc2U8L3c6U2F2ZUlmWE1MSW52YWxpZD4KKyAgPHc6SWdub3JlTWl4ZWRDb250ZW50PmZhbHNlPC93Oklnbm9yZU1peGVkQ29udGVudD4KKyAgPHc6QWx3YXlzU2hvd1BsYWNlaG9sZGVyVGV4dD5mYWxzZTwvdzpBbHdheXNTaG93UGxhY2Vob2xkZXJUZXh0PgorICA8dzpEb05vdFByb21vdGVRRi8+CisgIDx3OkxpZFRoZW1lT3RoZXI+RU4tVVM8L3c6TGlkVGhlbWVPdGhlcj4KKyAgPHc6TGlkVGhlbWVBc2lhbj5YLU5PTkU8L3c6TGlkVGhlbWVBc2lhbj4KKyAgPHc6TGlkVGhlbWVDb21wbGV4U2NyaXB0PlgtTk9ORTwvdzpMaWRUaGVtZUNvbXBsZXhTY3JpcHQ+CisgIDx3OkNvbXBhdGliaWxpdHk+CisgICA8dzpCcmVha1dyYXBwZWRUYWJsZXMvPgorICAgPHc6U25hcFRvR3JpZEluQ2VsbC8+CisgICA8dzpXcmFwVGV4dFdpdGhQdW5jdC8+CisgICA8dzpVc2VBc2lhbkJyZWFrUnVsZXMvPgorICAgPHc6RG9udEdyb3dBdXRvZml0Lz4KKyAgIDx3OlNwbGl0UGdCcmVha0FuZFBhcmFNYXJrLz4KKyAgIDx3OkVuYWJsZU9wZW5UeXBlS2VybmluZy8+CisgICA8dzpEb250RmxpcE1pcnJvckluZGVudHMvPgorICAgPHc6T3ZlcnJpZGVUYWJsZVN0eWxlSHBzLz4KKyAgPC93OkNvbXBhdGliaWxpdHk+CisgIDxtOm1hdGhQcj4KKyAgIDxtOm1hdGhGb250IG06dmFsPSJDYW1icmlhIE1hdGgiLz4KKyAgIDxtOmJya0JpbiBtOnZhbD0iYmVmb3JlIi8+CisgICA8bTpicmtCaW5TdWIgbTp2YWw9IiYjNDU7LSIvPgorICAgPG06c21hbGxGcmFjIG06dmFsPSJvZmYiLz4KKyAgIDxtOmRpc3BEZWYvPgorICAgPG06bE1hcmdpbiBtOnZhbD0iMCIvPgorICAgPG06ck1hcmdpbiBtOnZhbD0iMCIvPgorICAgPG06ZGVmSmMgbTp2YWw9ImNlbnRlckdyb3VwIi8+CisgICA8bTp3cmFwSW5kZW50IG06dmFsPSIxNDQwIi8+CisgICA8bTppbnRMaW0gbTp2YWw9InN1YlN1cCIvPgorICAgPG06bmFyeUxpbSBtOnZhbD0idW5kT3ZyIi8+CisgIDwvbTptYXRoUHI+PC93OldvcmREb2N1bWVudD4KKzwveG1sPjwhW2VuZGlmXS0tPjwhLS1baWYgZ3RlIG1zbyA5XT48eG1sPgorIDx3OkxhdGVudFN0eWxlcyBEZWZMb2NrZWRTdGF0ZT0iZmFsc2UiIERlZlVuaGlkZVdoZW5Vc2VkPSJmYWxzZSIKKyAgRGVmU2VtaUhpZGRlbj0iZmFsc2UiIERlZlFGb3JtYXQ9ImZhbHNlIiBEZWZQcmlvcml0eT0iOTkiCisgIExhdGVudFN0eWxlQ291bnQ9IjM3NiI+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iMCIgUUZvcm1hdD0idHJ1ZSIgTmFtZT0iTm9ybWFsIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iOSIgUUZvcm1hdD0idHJ1ZSIgTmFtZT0iaGVhZGluZyAxIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iOSIgU2VtaUhpZGRlbj0idHJ1ZSIKKyAgIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIiBRRm9ybWF0PSJ0cnVlIiBOYW1lPSJoZWFkaW5nIDIiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI5IiBTZW1pSGlkZGVuPSJ0cnVlIgorICAgVW5oaWRlV2hlblVzZWQ9InRydWUiIFFGb3JtYXQ9InRydWUiIE5hbWU9ImhlYWRpbmcgMyIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjkiIFNlbWlIaWRkZW49InRydWUiCisgICBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIgUUZvcm1hdD0idHJ1ZSIgTmFtZT0iaGVhZGluZyA0Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iOSIgU2VtaUhpZGRlbj0idHJ1ZSIKKyAgIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIiBRRm9ybWF0PSJ0cnVlIiBOYW1lPSJoZWFkaW5nIDUiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI5IiBTZW1pSGlkZGVuPSJ0cnVlIgorICAgVW5oaWRlV2hlblVzZWQ9InRydWUiIFFGb3JtYXQ9InRydWUiIE5hbWU9ImhlYWRpbmcgNiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjkiIFNlbWlIaWRkZW49InRydWUiCisgICBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIgUUZvcm1hdD0idHJ1ZSIgTmFtZT0iaGVhZGluZyA3Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iOSIgU2VtaUhpZGRlbj0idHJ1ZSIKKyAgIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIiBRRm9ybWF0PSJ0cnVlIiBOYW1lPSJoZWFkaW5nIDgiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI5IiBTZW1pSGlkZGVuPSJ0cnVlIgorICAgVW5oaWRlV2hlblVzZWQ9InRydWUiIFFGb3JtYXQ9InRydWUiIE5hbWU9ImhlYWRpbmcgOSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJpbmRleCAxIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9ImluZGV4IDIiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iaW5kZXggMyIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJpbmRleCA0Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9ImluZGV4IDUiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iaW5kZXggNiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJpbmRleCA3Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9ImluZGV4IDgiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iaW5kZXggOSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjM5IiBTZW1pSGlkZGVuPSJ0cnVlIgorICAgVW5oaWRlV2hlblVzZWQ9InRydWUiIE5hbWU9InRvYyAxIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iMzkiIFNlbWlIaWRkZW49InRydWUiCisgICBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIgTmFtZT0idG9jIDIiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSIzOSIgU2VtaUhpZGRlbj0idHJ1ZSIKKyAgIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIiBOYW1lPSJ0b2MgMyIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjM5IiBTZW1pSGlkZGVuPSJ0cnVlIgorICAgVW5oaWRlV2hlblVzZWQ9InRydWUiIE5hbWU9InRvYyA0Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iMzkiIFNlbWlIaWRkZW49InRydWUiCisgICBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIgTmFtZT0idG9jIDUiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSIzOSIgU2VtaUhpZGRlbj0idHJ1ZSIKKyAgIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIiBOYW1lPSJ0b2MgNiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjM5IiBTZW1pSGlkZGVuPSJ0cnVlIgorICAgVW5oaWRlV2hlblVzZWQ9InRydWUiIE5hbWU9InRvYyA3Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iMzkiIFNlbWlIaWRkZW49InRydWUiCisgICBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIgTmFtZT0idG9jIDgiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSIzOSIgU2VtaUhpZGRlbj0idHJ1ZSIKKyAgIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIiBOYW1lPSJ0b2MgOSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJOb3JtYWwgSW5kZW50Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9ImZvb3Rub3RlIHRleHQiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iYW5ub3RhdGlvbiB0ZXh0Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9ImhlYWRlciIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJmb290ZXIiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iaW5kZXggaGVhZGluZyIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjM1IiBTZW1pSGlkZGVuPSJ0cnVlIgorICAgVW5oaWRlV2hlblVzZWQ9InRydWUiIFFGb3JtYXQ9InRydWUiIE5hbWU9ImNhcHRpb24iLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0idGFibGUgb2YgZmlndXJlcyIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJlbnZlbG9wZSBhZGRyZXNzIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9ImVudmVsb3BlIHJldHVybiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJmb290bm90ZSByZWZlcmVuY2UiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iYW5ub3RhdGlvbiByZWZlcmVuY2UiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0ibGluZSBudW1iZXIiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0icGFnZSBudW1iZXIiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iZW5kbm90ZSByZWZlcmVuY2UiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iZW5kbm90ZSB0ZXh0Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9InRhYmxlIG9mIGF1dGhvcml0aWVzIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9Im1hY3JvIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9InRvYSBoZWFkaW5nIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9Ikxpc3QiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iTGlzdCBCdWxsZXQiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iTGlzdCBOdW1iZXIiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iTGlzdCAyIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9Ikxpc3QgMyIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJMaXN0IDQiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iTGlzdCA1Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9Ikxpc3QgQnVsbGV0IDIiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iTGlzdCBCdWxsZXQgMyIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJMaXN0IEJ1bGxldCA0Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9Ikxpc3QgQnVsbGV0IDUiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iTGlzdCBOdW1iZXIgMiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJMaXN0IE51bWJlciAzIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9Ikxpc3QgTnVtYmVyIDQiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iTGlzdCBOdW1iZXIgNSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjEwIiBRRm9ybWF0PSJ0cnVlIiBOYW1lPSJUaXRsZSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJDbG9zaW5nIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9IlNpZ25hdHVyZSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjEiIFNlbWlIaWRkZW49InRydWUiCisgICBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIgTmFtZT0iRGVmYXVsdCBQYXJhZ3JhcGggRm9udCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJCb2R5IFRleHQiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iQm9keSBUZXh0IEluZGVudCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJMaXN0IENvbnRpbnVlIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9Ikxpc3QgQ29udGludWUgMiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJMaXN0IENvbnRpbnVlIDMiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iTGlzdCBDb250aW51ZSA0Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9Ikxpc3QgQ29udGludWUgNSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJNZXNzYWdlIEhlYWRlciIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjExIiBRRm9ybWF0PSJ0cnVlIiBOYW1lPSJTdWJ0aXRsZSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJTYWx1dGF0aW9uIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9IkRhdGUiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iQm9keSBUZXh0IEZpcnN0IEluZGVudCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJCb2R5IFRleHQgRmlyc3QgSW5kZW50IDIiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iTm90ZSBIZWFkaW5nIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9IkJvZHkgVGV4dCAyIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9IkJvZHkgVGV4dCAzIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9IkJvZHkgVGV4dCBJbmRlbnQgMiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJCb2R5IFRleHQgSW5kZW50IDMiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iQmxvY2sgVGV4dCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJIeXBlcmxpbmsiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iRm9sbG93ZWRIeXBlcmxpbmsiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSIyMiIgUUZvcm1hdD0idHJ1ZSIgTmFtZT0iU3Ryb25nIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iMjAiIFFGb3JtYXQ9InRydWUiIE5hbWU9IkVtcGhhc2lzIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9IkRvY3VtZW50IE1hcCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJQbGFpbiBUZXh0Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9IkUtbWFpbCBTaWduYXR1cmUiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iSFRNTCBUb3Agb2YgRm9ybSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJIVE1MIEJvdHRvbSBvZiBGb3JtIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9Ik5vcm1hbCAoV2ViKSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJIVE1MIEFjcm9ueW0iLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iSFRNTCBBZGRyZXNzIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9IkhUTUwgQ2l0ZSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJIVE1MIENvZGUiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iSFRNTCBEZWZpbml0aW9uIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9IkhUTUwgS2V5Ym9hcmQiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iSFRNTCBQcmVmb3JtYXR0ZWQiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iSFRNTCBTYW1wbGUiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iSFRNTCBUeXBld3JpdGVyIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9IkhUTUwgVmFyaWFibGUiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iTm9ybWFsIFRhYmxlIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9ImFubm90YXRpb24gc3ViamVjdCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJObyBMaXN0Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9Ik91dGxpbmUgTGlzdCAxIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9Ik91dGxpbmUgTGlzdCAyIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9Ik91dGxpbmUgTGlzdCAzIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9IlRhYmxlIFNpbXBsZSAxIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9IlRhYmxlIFNpbXBsZSAyIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9IlRhYmxlIFNpbXBsZSAzIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9IlRhYmxlIENsYXNzaWMgMSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJUYWJsZSBDbGFzc2ljIDIiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iVGFibGUgQ2xhc3NpYyAzIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9IlRhYmxlIENsYXNzaWMgNCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJUYWJsZSBDb2xvcmZ1bCAxIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9IlRhYmxlIENvbG9yZnVsIDIiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iVGFibGUgQ29sb3JmdWwgMyIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJUYWJsZSBDb2x1bW5zIDEiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iVGFibGUgQ29sdW1ucyAyIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9IlRhYmxlIENvbHVtbnMgMyIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJUYWJsZSBDb2x1bW5zIDQiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iVGFibGUgQ29sdW1ucyA1Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9IlRhYmxlIEdyaWQgMSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJUYWJsZSBHcmlkIDIiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iVGFibGUgR3JpZCAzIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9IlRhYmxlIEdyaWQgNCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJUYWJsZSBHcmlkIDUiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iVGFibGUgR3JpZCA2Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9IlRhYmxlIEdyaWQgNyIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJUYWJsZSBHcmlkIDgiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iVGFibGUgTGlzdCAxIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9IlRhYmxlIExpc3QgMiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJUYWJsZSBMaXN0IDMiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iVGFibGUgTGlzdCA0Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9IlRhYmxlIExpc3QgNSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJUYWJsZSBMaXN0IDYiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iVGFibGUgTGlzdCA3Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9IlRhYmxlIExpc3QgOCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJUYWJsZSAzRCBlZmZlY3RzIDEiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iVGFibGUgM0QgZWZmZWN0cyAyIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9IlRhYmxlIDNEIGVmZmVjdHMgMyIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJUYWJsZSBDb250ZW1wb3JhcnkiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iVGFibGUgRWxlZ2FudCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJUYWJsZSBQcm9mZXNzaW9uYWwiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iVGFibGUgU3VidGxlIDEiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iVGFibGUgU3VidGxlIDIiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iVGFibGUgV2ViIDEiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iVGFibGUgV2ViIDIiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iVGFibGUgV2ViIDMiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iQmFsbG9vbiBUZXh0Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iMzkiIE5hbWU9IlRhYmxlIEdyaWQiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iVGFibGUgVGhlbWUiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIE5hbWU9IlBsYWNlaG9sZGVyIFRleHQiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSIxIiBRRm9ybWF0PSJ0cnVlIiBOYW1lPSJObyBTcGFjaW5nIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjAiIE5hbWU9IkxpZ2h0IFNoYWRpbmciLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2MSIgTmFtZT0iTGlnaHQgTGlzdCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjYyIiBOYW1lPSJMaWdodCBHcmlkIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjMiIE5hbWU9Ik1lZGl1bSBTaGFkaW5nIDEiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2NCIgTmFtZT0iTWVkaXVtIFNoYWRpbmcgMiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjY1IiBOYW1lPSJNZWRpdW0gTGlzdCAxIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjYiIE5hbWU9Ik1lZGl1bSBMaXN0IDIiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2NyIgTmFtZT0iTWVkaXVtIEdyaWQgMSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjY4IiBOYW1lPSJNZWRpdW0gR3JpZCAyIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjkiIE5hbWU9Ik1lZGl1bSBHcmlkIDMiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI3MCIgTmFtZT0iRGFyayBMaXN0Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNzEiIE5hbWU9IkNvbG9yZnVsIFNoYWRpbmciLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI3MiIgTmFtZT0iQ29sb3JmdWwgTGlzdCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjczIiBOYW1lPSJDb2xvcmZ1bCBHcmlkIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjAiIE5hbWU9IkxpZ2h0IFNoYWRpbmcgQWNjZW50IDEiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2MSIgTmFtZT0iTGlnaHQgTGlzdCBBY2NlbnQgMSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjYyIiBOYW1lPSJMaWdodCBHcmlkIEFjY2VudCAxIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjMiIE5hbWU9Ik1lZGl1bSBTaGFkaW5nIDEgQWNjZW50IDEiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2NCIgTmFtZT0iTWVkaXVtIFNoYWRpbmcgMiBBY2NlbnQgMSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjY1IiBOYW1lPSJNZWRpdW0gTGlzdCAxIEFjY2VudCAxIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBOYW1lPSJSZXZpc2lvbiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjM0IiBRRm9ybWF0PSJ0cnVlIgorICAgTmFtZT0iTGlzdCBQYXJhZ3JhcGgiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSIyOSIgUUZvcm1hdD0idHJ1ZSIgTmFtZT0iUXVvdGUiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSIzMCIgUUZvcm1hdD0idHJ1ZSIKKyAgIE5hbWU9IkludGVuc2UgUXVvdGUiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2NiIgTmFtZT0iTWVkaXVtIExpc3QgMiBBY2NlbnQgMSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjY3IiBOYW1lPSJNZWRpdW0gR3JpZCAxIEFjY2VudCAxIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjgiIE5hbWU9Ik1lZGl1bSBHcmlkIDIgQWNjZW50IDEiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2OSIgTmFtZT0iTWVkaXVtIEdyaWQgMyBBY2NlbnQgMSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjcwIiBOYW1lPSJEYXJrIExpc3QgQWNjZW50IDEiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI3MSIgTmFtZT0iQ29sb3JmdWwgU2hhZGluZyBBY2NlbnQgMSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjcyIiBOYW1lPSJDb2xvcmZ1bCBMaXN0IEFjY2VudCAxIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNzMiIE5hbWU9IkNvbG9yZnVsIEdyaWQgQWNjZW50IDEiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2MCIgTmFtZT0iTGlnaHQgU2hhZGluZyBBY2NlbnQgMiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjYxIiBOYW1lPSJMaWdodCBMaXN0IEFjY2VudCAyIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjIiIE5hbWU9IkxpZ2h0IEdyaWQgQWNjZW50IDIiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2MyIgTmFtZT0iTWVkaXVtIFNoYWRpbmcgMSBBY2NlbnQgMiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjY0IiBOYW1lPSJNZWRpdW0gU2hhZGluZyAyIEFjY2VudCAyIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjUiIE5hbWU9Ik1lZGl1bSBMaXN0IDEgQWNjZW50IDIiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2NiIgTmFtZT0iTWVkaXVtIExpc3QgMiBBY2NlbnQgMiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjY3IiBOYW1lPSJNZWRpdW0gR3JpZCAxIEFjY2VudCAyIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjgiIE5hbWU9Ik1lZGl1bSBHcmlkIDIgQWNjZW50IDIiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2OSIgTmFtZT0iTWVkaXVtIEdyaWQgMyBBY2NlbnQgMiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjcwIiBOYW1lPSJEYXJrIExpc3QgQWNjZW50IDIiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI3MSIgTmFtZT0iQ29sb3JmdWwgU2hhZGluZyBBY2NlbnQgMiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjcyIiBOYW1lPSJDb2xvcmZ1bCBMaXN0IEFjY2VudCAyIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNzMiIE5hbWU9IkNvbG9yZnVsIEdyaWQgQWNjZW50IDIiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2MCIgTmFtZT0iTGlnaHQgU2hhZGluZyBBY2NlbnQgMyIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjYxIiBOYW1lPSJMaWdodCBMaXN0IEFjY2VudCAzIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjIiIE5hbWU9IkxpZ2h0IEdyaWQgQWNjZW50IDMiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2MyIgTmFtZT0iTWVkaXVtIFNoYWRpbmcgMSBBY2NlbnQgMyIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjY0IiBOYW1lPSJNZWRpdW0gU2hhZGluZyAyIEFjY2VudCAzIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjUiIE5hbWU9Ik1lZGl1bSBMaXN0IDEgQWNjZW50IDMiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2NiIgTmFtZT0iTWVkaXVtIExpc3QgMiBBY2NlbnQgMyIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjY3IiBOYW1lPSJNZWRpdW0gR3JpZCAxIEFjY2VudCAzIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjgiIE5hbWU9Ik1lZGl1bSBHcmlkIDIgQWNjZW50IDMiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2OSIgTmFtZT0iTWVkaXVtIEdyaWQgMyBBY2NlbnQgMyIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjcwIiBOYW1lPSJEYXJrIExpc3QgQWNjZW50IDMiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI3MSIgTmFtZT0iQ29sb3JmdWwgU2hhZGluZyBBY2NlbnQgMyIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjcyIiBOYW1lPSJDb2xvcmZ1bCBMaXN0IEFjY2VudCAzIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNzMiIE5hbWU9IkNvbG9yZnVsIEdyaWQgQWNjZW50IDMiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2MCIgTmFtZT0iTGlnaHQgU2hhZGluZyBBY2NlbnQgNCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjYxIiBOYW1lPSJMaWdodCBMaXN0IEFjY2VudCA0Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjIiIE5hbWU9IkxpZ2h0IEdyaWQgQWNjZW50IDQiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2MyIgTmFtZT0iTWVkaXVtIFNoYWRpbmcgMSBBY2NlbnQgNCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjY0IiBOYW1lPSJNZWRpdW0gU2hhZGluZyAyIEFjY2VudCA0Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjUiIE5hbWU9Ik1lZGl1bSBMaXN0IDEgQWNjZW50IDQiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2NiIgTmFtZT0iTWVkaXVtIExpc3QgMiBBY2NlbnQgNCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjY3IiBOYW1lPSJNZWRpdW0gR3JpZCAxIEFjY2VudCA0Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjgiIE5hbWU9Ik1lZGl1bSBHcmlkIDIgQWNjZW50IDQiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2OSIgTmFtZT0iTWVkaXVtIEdyaWQgMyBBY2NlbnQgNCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjcwIiBOYW1lPSJEYXJrIExpc3QgQWNjZW50IDQiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI3MSIgTmFtZT0iQ29sb3JmdWwgU2hhZGluZyBBY2NlbnQgNCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjcyIiBOYW1lPSJDb2xvcmZ1bCBMaXN0IEFjY2VudCA0Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNzMiIE5hbWU9IkNvbG9yZnVsIEdyaWQgQWNjZW50IDQiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2MCIgTmFtZT0iTGlnaHQgU2hhZGluZyBBY2NlbnQgNSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjYxIiBOYW1lPSJMaWdodCBMaXN0IEFjY2VudCA1Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjIiIE5hbWU9IkxpZ2h0IEdyaWQgQWNjZW50IDUiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2MyIgTmFtZT0iTWVkaXVtIFNoYWRpbmcgMSBBY2NlbnQgNSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjY0IiBOYW1lPSJNZWRpdW0gU2hhZGluZyAyIEFjY2VudCA1Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjUiIE5hbWU9Ik1lZGl1bSBMaXN0IDEgQWNjZW50IDUiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2NiIgTmFtZT0iTWVkaXVtIExpc3QgMiBBY2NlbnQgNSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjY3IiBOYW1lPSJNZWRpdW0gR3JpZCAxIEFjY2VudCA1Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjgiIE5hbWU9Ik1lZGl1bSBHcmlkIDIgQWNjZW50IDUiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2OSIgTmFtZT0iTWVkaXVtIEdyaWQgMyBBY2NlbnQgNSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjcwIiBOYW1lPSJEYXJrIExpc3QgQWNjZW50IDUiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI3MSIgTmFtZT0iQ29sb3JmdWwgU2hhZGluZyBBY2NlbnQgNSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjcyIiBOYW1lPSJDb2xvcmZ1bCBMaXN0IEFjY2VudCA1Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNzMiIE5hbWU9IkNvbG9yZnVsIEdyaWQgQWNjZW50IDUiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2MCIgTmFtZT0iTGlnaHQgU2hhZGluZyBBY2NlbnQgNiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjYxIiBOYW1lPSJMaWdodCBMaXN0IEFjY2VudCA2Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjIiIE5hbWU9IkxpZ2h0IEdyaWQgQWNjZW50IDYiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2MyIgTmFtZT0iTWVkaXVtIFNoYWRpbmcgMSBBY2NlbnQgNiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjY0IiBOYW1lPSJNZWRpdW0gU2hhZGluZyAyIEFjY2VudCA2Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjUiIE5hbWU9Ik1lZGl1bSBMaXN0IDEgQWNjZW50IDYiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2NiIgTmFtZT0iTWVkaXVtIExpc3QgMiBBY2NlbnQgNiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjY3IiBOYW1lPSJNZWRpdW0gR3JpZCAxIEFjY2VudCA2Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjgiIE5hbWU9Ik1lZGl1bSBHcmlkIDIgQWNjZW50IDYiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2OSIgTmFtZT0iTWVkaXVtIEdyaWQgMyBBY2NlbnQgNiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjcwIiBOYW1lPSJEYXJrIExpc3QgQWNjZW50IDYiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI3MSIgTmFtZT0iQ29sb3JmdWwgU2hhZGluZyBBY2NlbnQgNiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjcyIiBOYW1lPSJDb2xvcmZ1bCBMaXN0IEFjY2VudCA2Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNzMiIE5hbWU9IkNvbG9yZnVsIEdyaWQgQWNjZW50IDYiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSIxOSIgUUZvcm1hdD0idHJ1ZSIKKyAgIE5hbWU9IlN1YnRsZSBFbXBoYXNpcyIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjIxIiBRRm9ybWF0PSJ0cnVlIgorICAgTmFtZT0iSW50ZW5zZSBFbXBoYXNpcyIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjMxIiBRRm9ybWF0PSJ0cnVlIgorICAgTmFtZT0iU3VidGxlIFJlZmVyZW5jZSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjMyIiBRRm9ybWF0PSJ0cnVlIgorICAgTmFtZT0iSW50ZW5zZSBSZWZlcmVuY2UiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSIzMyIgUUZvcm1hdD0idHJ1ZSIgTmFtZT0iQm9vayBUaXRsZSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjM3IiBTZW1pSGlkZGVuPSJ0cnVlIgorICAgVW5oaWRlV2hlblVzZWQ9InRydWUiIE5hbWU9IkJpYmxpb2dyYXBoeSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjM5IiBTZW1pSGlkZGVuPSJ0cnVlIgorICAgVW5oaWRlV2hlblVzZWQ9InRydWUiIFFGb3JtYXQ9InRydWUiIE5hbWU9IlRPQyBIZWFkaW5nIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDEiIE5hbWU9IlBsYWluIFRhYmxlIDEiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI0MiIgTmFtZT0iUGxhaW4gVGFibGUgMiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQzIiBOYW1lPSJQbGFpbiBUYWJsZSAzIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDQiIE5hbWU9IlBsYWluIFRhYmxlIDQiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI0NSIgTmFtZT0iUGxhaW4gVGFibGUgNSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQwIiBOYW1lPSJHcmlkIFRhYmxlIExpZ2h0Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDYiIE5hbWU9IkdyaWQgVGFibGUgMSBMaWdodCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQ3IiBOYW1lPSJHcmlkIFRhYmxlIDIiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI0OCIgTmFtZT0iR3JpZCBUYWJsZSAzIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDkiIE5hbWU9IkdyaWQgVGFibGUgNCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjUwIiBOYW1lPSJHcmlkIFRhYmxlIDUgRGFyayIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjUxIiBOYW1lPSJHcmlkIFRhYmxlIDYgQ29sb3JmdWwiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI1MiIgTmFtZT0iR3JpZCBUYWJsZSA3IENvbG9yZnVsIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDYiCisgICBOYW1lPSJHcmlkIFRhYmxlIDEgTGlnaHQgQWNjZW50IDEiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI0NyIgTmFtZT0iR3JpZCBUYWJsZSAyIEFjY2VudCAxIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDgiIE5hbWU9IkdyaWQgVGFibGUgMyBBY2NlbnQgMSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQ5IiBOYW1lPSJHcmlkIFRhYmxlIDQgQWNjZW50IDEiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI1MCIgTmFtZT0iR3JpZCBUYWJsZSA1IERhcmsgQWNjZW50IDEiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI1MSIKKyAgIE5hbWU9IkdyaWQgVGFibGUgNiBDb2xvcmZ1bCBBY2NlbnQgMSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjUyIgorICAgTmFtZT0iR3JpZCBUYWJsZSA3IENvbG9yZnVsIEFjY2VudCAxIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDYiCisgICBOYW1lPSJHcmlkIFRhYmxlIDEgTGlnaHQgQWNjZW50IDIiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI0NyIgTmFtZT0iR3JpZCBUYWJsZSAyIEFjY2VudCAyIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDgiIE5hbWU9IkdyaWQgVGFibGUgMyBBY2NlbnQgMiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQ5IiBOYW1lPSJHcmlkIFRhYmxlIDQgQWNjZW50IDIiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI1MCIgTmFtZT0iR3JpZCBUYWJsZSA1IERhcmsgQWNjZW50IDIiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI1MSIKKyAgIE5hbWU9IkdyaWQgVGFibGUgNiBDb2xvcmZ1bCBBY2NlbnQgMiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjUyIgorICAgTmFtZT0iR3JpZCBUYWJsZSA3IENvbG9yZnVsIEFjY2VudCAyIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDYiCisgICBOYW1lPSJHcmlkIFRhYmxlIDEgTGlnaHQgQWNjZW50IDMiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI0NyIgTmFtZT0iR3JpZCBUYWJsZSAyIEFjY2VudCAzIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDgiIE5hbWU9IkdyaWQgVGFibGUgMyBBY2NlbnQgMyIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQ5IiBOYW1lPSJHcmlkIFRhYmxlIDQgQWNjZW50IDMiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI1MCIgTmFtZT0iR3JpZCBUYWJsZSA1IERhcmsgQWNjZW50IDMiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI1MSIKKyAgIE5hbWU9IkdyaWQgVGFibGUgNiBDb2xvcmZ1bCBBY2NlbnQgMyIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjUyIgorICAgTmFtZT0iR3JpZCBUYWJsZSA3IENvbG9yZnVsIEFjY2VudCAzIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDYiCisgICBOYW1lPSJHcmlkIFRhYmxlIDEgTGlnaHQgQWNjZW50IDQiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI0NyIgTmFtZT0iR3JpZCBUYWJsZSAyIEFjY2VudCA0Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDgiIE5hbWU9IkdyaWQgVGFibGUgMyBBY2NlbnQgNCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQ5IiBOYW1lPSJHcmlkIFRhYmxlIDQgQWNjZW50IDQiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI1MCIgTmFtZT0iR3JpZCBUYWJsZSA1IERhcmsgQWNjZW50IDQiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI1MSIKKyAgIE5hbWU9IkdyaWQgVGFibGUgNiBDb2xvcmZ1bCBBY2NlbnQgNCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjUyIgorICAgTmFtZT0iR3JpZCBUYWJsZSA3IENvbG9yZnVsIEFjY2VudCA0Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDYiCisgICBOYW1lPSJHcmlkIFRhYmxlIDEgTGlnaHQgQWNjZW50IDUiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI0NyIgTmFtZT0iR3JpZCBUYWJsZSAyIEFjY2VudCA1Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDgiIE5hbWU9IkdyaWQgVGFibGUgMyBBY2NlbnQgNSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQ5IiBOYW1lPSJHcmlkIFRhYmxlIDQgQWNjZW50IDUiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI1MCIgTmFtZT0iR3JpZCBUYWJsZSA1IERhcmsgQWNjZW50IDUiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI1MSIKKyAgIE5hbWU9IkdyaWQgVGFibGUgNiBDb2xvcmZ1bCBBY2NlbnQgNSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjUyIgorICAgTmFtZT0iR3JpZCBUYWJsZSA3IENvbG9yZnVsIEFjY2VudCA1Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDYiCisgICBOYW1lPSJHcmlkIFRhYmxlIDEgTGlnaHQgQWNjZW50IDYiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI0NyIgTmFtZT0iR3JpZCBUYWJsZSAyIEFjY2VudCA2Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDgiIE5hbWU9IkdyaWQgVGFibGUgMyBBY2NlbnQgNiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQ5IiBOYW1lPSJHcmlkIFRhYmxlIDQgQWNjZW50IDYiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI1MCIgTmFtZT0iR3JpZCBUYWJsZSA1IERhcmsgQWNjZW50IDYiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI1MSIKKyAgIE5hbWU9IkdyaWQgVGFibGUgNiBDb2xvcmZ1bCBBY2NlbnQgNiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjUyIgorICAgTmFtZT0iR3JpZCBUYWJsZSA3IENvbG9yZnVsIEFjY2VudCA2Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDYiIE5hbWU9Ikxpc3QgVGFibGUgMSBMaWdodCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQ3IiBOYW1lPSJMaXN0IFRhYmxlIDIiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI0OCIgTmFtZT0iTGlzdCBUYWJsZSAzIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDkiIE5hbWU9Ikxpc3QgVGFibGUgNCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjUwIiBOYW1lPSJMaXN0IFRhYmxlIDUgRGFyayIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjUxIiBOYW1lPSJMaXN0IFRhYmxlIDYgQ29sb3JmdWwiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI1MiIgTmFtZT0iTGlzdCBUYWJsZSA3IENvbG9yZnVsIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDYiCisgICBOYW1lPSJMaXN0IFRhYmxlIDEgTGlnaHQgQWNjZW50IDEiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI0NyIgTmFtZT0iTGlzdCBUYWJsZSAyIEFjY2VudCAxIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDgiIE5hbWU9Ikxpc3QgVGFibGUgMyBBY2NlbnQgMSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQ5IiBOYW1lPSJMaXN0IFRhYmxlIDQgQWNjZW50IDEiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI1MCIgTmFtZT0iTGlzdCBUYWJsZSA1IERhcmsgQWNjZW50IDEiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI1MSIKKyAgIE5hbWU9Ikxpc3QgVGFibGUgNiBDb2xvcmZ1bCBBY2NlbnQgMSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjUyIgorICAgTmFtZT0iTGlzdCBUYWJsZSA3IENvbG9yZnVsIEFjY2VudCAxIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDYiCisgICBOYW1lPSJMaXN0IFRhYmxlIDEgTGlnaHQgQWNjZW50IDIiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI0NyIgTmFtZT0iTGlzdCBUYWJsZSAyIEFjY2VudCAyIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDgiIE5hbWU9Ikxpc3QgVGFibGUgMyBBY2NlbnQgMiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQ5IiBOYW1lPSJMaXN0IFRhYmxlIDQgQWNjZW50IDIiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI1MCIgTmFtZT0iTGlzdCBUYWJsZSA1IERhcmsgQWNjZW50IDIiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI1MSIKKyAgIE5hbWU9Ikxpc3QgVGFibGUgNiBDb2xvcmZ1bCBBY2NlbnQgMiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjUyIgorICAgTmFtZT0iTGlzdCBUYWJsZSA3IENvbG9yZnVsIEFjY2VudCAyIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDYiCisgICBOYW1lPSJMaXN0IFRhYmxlIDEgTGlnaHQgQWNjZW50IDMiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI0NyIgTmFtZT0iTGlzdCBUYWJsZSAyIEFjY2VudCAzIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDgiIE5hbWU9Ikxpc3QgVGFibGUgMyBBY2NlbnQgMyIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQ5IiBOYW1lPSJMaXN0IFRhYmxlIDQgQWNjZW50IDMiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI1MCIgTmFtZT0iTGlzdCBUYWJsZSA1IERhcmsgQWNjZW50IDMiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI1MSIKKyAgIE5hbWU9Ikxpc3QgVGFibGUgNiBDb2xvcmZ1bCBBY2NlbnQgMyIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjUyIgorICAgTmFtZT0iTGlzdCBUYWJsZSA3IENvbG9yZnVsIEFjY2VudCAzIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDYiCisgICBOYW1lPSJMaXN0IFRhYmxlIDEgTGlnaHQgQWNjZW50IDQiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI0NyIgTmFtZT0iTGlzdCBUYWJsZSAyIEFjY2VudCA0Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDgiIE5hbWU9Ikxpc3QgVGFibGUgMyBBY2NlbnQgNCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQ5IiBOYW1lPSJMaXN0IFRhYmxlIDQgQWNjZW50IDQiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI1MCIgTmFtZT0iTGlzdCBUYWJsZSA1IERhcmsgQWNjZW50IDQiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI1MSIKKyAgIE5hbWU9Ikxpc3QgVGFibGUgNiBDb2xvcmZ1bCBBY2NlbnQgNCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjUyIgorICAgTmFtZT0iTGlzdCBUYWJsZSA3IENvbG9yZnVsIEFjY2VudCA0Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDYiCisgICBOYW1lPSJMaXN0IFRhYmxlIDEgTGlnaHQgQWNjZW50IDUiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI0NyIgTmFtZT0iTGlzdCBUYWJsZSAyIEFjY2VudCA1Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDgiIE5hbWU9Ikxpc3QgVGFibGUgMyBBY2NlbnQgNSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQ5IiBOYW1lPSJMaXN0IFRhYmxlIDQgQWNjZW50IDUiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI1MCIgTmFtZT0iTGlzdCBUYWJsZSA1IERhcmsgQWNjZW50IDUiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI1MSIKKyAgIE5hbWU9Ikxpc3QgVGFibGUgNiBDb2xvcmZ1bCBBY2NlbnQgNSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjUyIgorICAgTmFtZT0iTGlzdCBUYWJsZSA3IENvbG9yZnVsIEFjY2VudCA1Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDYiCisgICBOYW1lPSJMaXN0IFRhYmxlIDEgTGlnaHQgQWNjZW50IDYiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI0NyIgTmFtZT0iTGlzdCBUYWJsZSAyIEFjY2VudCA2Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDgiIE5hbWU9Ikxpc3QgVGFibGUgMyBBY2NlbnQgNiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQ5IiBOYW1lPSJMaXN0IFRhYmxlIDQgQWNjZW50IDYiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI1MCIgTmFtZT0iTGlzdCBUYWJsZSA1IERhcmsgQWNjZW50IDYiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI1MSIKKyAgIE5hbWU9Ikxpc3QgVGFibGUgNiBDb2xvcmZ1bCBBY2NlbnQgNiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjUyIgorICAgTmFtZT0iTGlzdCBUYWJsZSA3IENvbG9yZnVsIEFjY2VudCA2Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9Ik1lbnRpb24iLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iU21hcnQgSHlwZXJsaW5rIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9Ikhhc2h0YWciLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iVW5yZXNvbHZlZCBNZW50aW9uIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9IlNtYXJ0IExpbmsiLz4KKyA8L3c6TGF0ZW50U3R5bGVzPgorPC94bWw+PCFbZW5kaWZdLS0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN0eWxlPgorPCEtLQorIC8qIEZvbnQgRGVmaW5pdGlvbnMgKi8KKyBAZm9udC1mYWNlCisJe2ZvbnQtZmFtaWx5OldpbmdkaW5nczsKKwlwYW5vc2UtMTo1IDAgMCAwIDAgMCAwIDAgMCAwOworCW1zby1mb250LWNoYXJzZXQ6MjsKKwltc28tZ2VuZXJpYy1mb250LWZhbWlseTphdXRvOworCW1zby1mb250LXBpdGNoOnZhcmlhYmxlOworCW1zby1mb250LXNpZ25hdHVyZTowIDI2ODQzNTQ1NiAwIDAgLTIxNDc0ODM2NDggMDt9CitAZm9udC1mYWNlCisJe2ZvbnQtZmFtaWx5OiJDYW1icmlhIE1hdGgiOworCXBhbm9zZS0xOjIgNCA1IDMgNSA0IDYgMyAyIDQ7CisJbXNvLWZvbnQtY2hhcnNldDowOworCW1zby1nZW5lcmljLWZvbnQtZmFtaWx5OnJvbWFuOworCW1zby1mb250LXBpdGNoOnZhcmlhYmxlOworCW1zby1mb250LXNpZ25hdHVyZTotNTM2ODY5MTIxIDExMDczMDU3MjcgMzM1NTQ0MzIgMCA0MTUgMDt9CitAZm9udC1mYWNlCisJe2ZvbnQtZmFtaWx5OlZlcmRhbmE7CisJcGFub3NlLTE6MiAxMSA2IDQgMyA1IDQgNCAyIDQ7CisJbXNvLWZvbnQtY2hhcnNldDowOworCW1zby1nZW5lcmljLWZvbnQtZmFtaWx5OnN3aXNzOworCW1zby1mb250LXBpdGNoOnZhcmlhYmxlOworCW1zby1mb250LXNpZ25hdHVyZTotMTYxMDYxMDk0NSAxMDczNzUwMTA3IDE2IDAgNDE1IDA7fQorQGZvbnQtZmFjZQorCXtmb250LWZhbWlseToiU2Vnb2UgVUkiOworCXBhbm9zZS0xOjIgMTEgNSAyIDQgMiA0IDIgMiAzOworCW1zby1mb250LWNoYXJzZXQ6MDsKKwltc28tZ2VuZXJpYy1mb250LWZhbWlseTpzd2lzczsKKwltc28tZm9udC1waXRjaDp2YXJpYWJsZTsKKwltc28tZm9udC1zaWduYXR1cmU6LTQ2OTc1MDAxNyAtMTA3MzY4MzMyOSA5IDAgNTExIDA7fQorIC8qIFN0eWxlIERlZmluaXRpb25zICovCisgcC5Nc29Ob3JtYWwsIGxpLk1zb05vcm1hbCwgZGl2Lk1zb05vcm1hbAorCXttc28tc3R5bGUtdW5oaWRlOm5vOworCW1zby1zdHlsZS1wYXJlbnQ6IiI7CisJbWFyZ2luOjBpbjsKKwlsaW5lLWhlaWdodDoxMTUlOworCW1zby1wYWdpbmF0aW9uOndpZG93LW9ycGhhbjsKKwlmb250LXNpemU6MTEuMHB0OworCWZvbnQtZmFtaWx5OiJBcmlhbCIsc2Fucy1zZXJpZjsKKwltc28tZmFyZWFzdC1mb250LWZhbWlseTpBcmlhbDsKKwltc28tZmFyZWFzdC10aGVtZS1mb250Om1pbm9yLWxhdGluOworCW1zby1iaWRpLWZvbnQtZmFtaWx5OiJUaW1lcyBOZXcgUm9tYW4iOworCW1zby1iaWRpLXRoZW1lLWZvbnQ6bWlub3ItYmlkaTsKKwljb2xvcjojMDAyMDUyOworCW1zby1hbnNpLWxhbmd1YWdlOkVOLVVTOworCW1zby1mYXJlYXN0LWxhbmd1YWdlOkVOLVVTO30KKy5Nc29DaHBEZWZhdWx0CisJe21zby1zdHlsZS10eXBlOmV4cG9ydC1vbmx5OworCW1zby1kZWZhdWx0LXByb3BzOnllczsKKwlmb250LWZhbWlseToiQXJpYWwiLHNhbnMtc2VyaWY7CisJbXNvLWFzY2lpLWZvbnQtZmFtaWx5OkFyaWFsOworCW1zby1mYXJlYXN0LWZvbnQtZmFtaWx5OkFyaWFsOworCW1zby1mYXJlYXN0LXRoZW1lLWZvbnQ6bWlub3ItbGF0aW47CisJbXNvLWhhbnNpLWZvbnQtZmFtaWx5OkFyaWFsOworCW1zby1iaWRpLWZvbnQtZmFtaWx5OiJUaW1lcyBOZXcgUm9tYW4iOworCW1zby1iaWRpLXRoZW1lLWZvbnQ6bWlub3ItYmlkaTsKKwljb2xvcjojMDAyMDUyOworCW1zby1hbnNpLWxhbmd1YWdlOkVOLVVTOworCW1zby1mYXJlYXN0LWxhbmd1YWdlOkVOLVVTO30KKy5Nc29QYXBEZWZhdWx0CisJe21zby1zdHlsZS10eXBlOmV4cG9ydC1vbmx5OworCWxpbmUtaGVpZ2h0OjExNSU7fQorQHBhZ2UgV29yZFNlY3Rpb24xCisJe3NpemU6OC41aW4gMTEuMGluOworCW1hcmdpbjo3MC44NXB0IDcwLjg1cHQgNzAuODVwdCA3MC44NXB0OworCW1zby1oZWFkZXItbWFyZ2luOi41aW47CisJbXNvLWZvb3Rlci1tYXJnaW46LjVpbjsKKwltc28tcGFwZXItc291cmNlOjA7fQorZGl2LldvcmRTZWN0aW9uMQorCXtwYWdlOldvcmRTZWN0aW9uMTt9CisgLyogTGlzdCBEZWZpbml0aW9ucyAqLworIEBsaXN0IGwwCisJe21zby1saXN0LWlkOjEzNDA3Mzc3ODY7CisJbXNvLWxpc3QtdGVtcGxhdGUtaWRzOjg1OTIzNjkwMDt9CitAbGlzdCBsMDpsZXZlbDEKKwl7bXNvLWxldmVsLW51bWJlci1mb3JtYXQ6YnVsbGV0OworCW1zby1sZXZlbC10ZXh0OiYjNjE2MjM7OworCW1zby1sZXZlbC10YWItc3RvcDouNWluOworCW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246bGVmdDsKKwl0ZXh0LWluZGVudDotLjI1aW47CisJbXNvLWFuc2ktZm9udC1zaXplOjEwLjBwdDsKKwlmb250LWZhbWlseTpTeW1ib2w7fQorQGxpc3QgbDA6bGV2ZWwyCisJe21zby1sZXZlbC1udW1iZXItZm9ybWF0OmJ1bGxldDsKKwltc28tbGV2ZWwtdGV4dDpvOworCW1zby1sZXZlbC10YWItc3RvcDoxLjBpbjsKKwltc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7CisJdGV4dC1pbmRlbnQ6LS4yNWluOworCW1zby1hbnNpLWZvbnQtc2l6ZToxMC4wcHQ7CisJZm9udC1mYW1pbHk6IkNvdXJpZXIgTmV3IjsKKwltc28tYmlkaS1mb250LWZhbWlseToiVGltZXMgTmV3IFJvbWFuIjt9CitAbGlzdCBsMDpsZXZlbDMKKwl7bXNvLWxldmVsLW51bWJlci1mb3JtYXQ6YnVsbGV0OworCW1zby1sZXZlbC10ZXh0OiYjNjE2MDc7OworCW1zby1sZXZlbC10YWItc3RvcDoxLjVpbjsKKwltc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7CisJdGV4dC1pbmRlbnQ6LS4yNWluOworCW1zby1hbnNpLWZvbnQtc2l6ZToxMC4wcHQ7CisJZm9udC1mYW1pbHk6V2luZ2RpbmdzO30KK0BsaXN0IGwwOmxldmVsNAorCXttc28tbGV2ZWwtbnVtYmVyLWZvcm1hdDpidWxsZXQ7CisJbXNvLWxldmVsLXRleHQ6JiM2MTYwNzs7CisJbXNvLWxldmVsLXRhYi1zdG9wOjIuMGluOworCW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246bGVmdDsKKwl0ZXh0LWluZGVudDotLjI1aW47CisJbXNvLWFuc2ktZm9udC1zaXplOjEwLjBwdDsKKwlmb250LWZhbWlseTpXaW5nZGluZ3M7fQorQGxpc3QgbDA6bGV2ZWw1CisJe21zby1sZXZlbC1udW1iZXItZm9ybWF0OmJ1bGxldDsKKwltc28tbGV2ZWwtdGV4dDomIzYxNjA3OzsKKwltc28tbGV2ZWwtdGFiLXN0b3A6Mi41aW47CisJbXNvLWxldmVsLW51bWJlci1wb3NpdGlvbjpsZWZ0OworCXRleHQtaW5kZW50Oi0uMjVpbjsKKwltc28tYW5zaS1mb250LXNpemU6MTAuMHB0OworCWZvbnQtZmFtaWx5OldpbmdkaW5nczt9CitAbGlzdCBsMDpsZXZlbDYKKwl7bXNvLWxldmVsLW51bWJlci1mb3JtYXQ6YnVsbGV0OworCW1zby1sZXZlbC10ZXh0OiYjNjE2MDc7OworCW1zby1sZXZlbC10YWItc3RvcDozLjBpbjsKKwltc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7CisJdGV4dC1pbmRlbnQ6LS4yNWluOworCW1zby1hbnNpLWZvbnQtc2l6ZToxMC4wcHQ7CisJZm9udC1mYW1pbHk6V2luZ2RpbmdzO30KK0BsaXN0IGwwOmxldmVsNworCXttc28tbGV2ZWwtbnVtYmVyLWZvcm1hdDpidWxsZXQ7CisJbXNvLWxldmVsLXRleHQ6JiM2MTYwNzs7CisJbXNvLWxldmVsLXRhYi1zdG9wOjMuNWluOworCW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246bGVmdDsKKwl0ZXh0LWluZGVudDotLjI1aW47CisJbXNvLWFuc2ktZm9udC1zaXplOjEwLjBwdDsKKwlmb250LWZhbWlseTpXaW5nZGluZ3M7fQorQGxpc3QgbDA6bGV2ZWw4CisJe21zby1sZXZlbC1udW1iZXItZm9ybWF0OmJ1bGxldDsKKwltc28tbGV2ZWwtdGV4dDomIzYxNjA3OzsKKwltc28tbGV2ZWwtdGFiLXN0b3A6NC4waW47CisJbXNvLWxldmVsLW51bWJlci1wb3NpdGlvbjpsZWZ0OworCXRleHQtaW5kZW50Oi0uMjVpbjsKKwltc28tYW5zaS1mb250LXNpemU6MTAuMHB0OworCWZvbnQtZmFtaWx5OldpbmdkaW5nczt9CitAbGlzdCBsMDpsZXZlbDkKKwl7bXNvLWxldmVsLW51bWJlci1mb3JtYXQ6YnVsbGV0OworCW1zby1sZXZlbC10ZXh0OiYjNjE2MDc7OworCW1zby1sZXZlbC10YWItc3RvcDo0LjVpbjsKKwltc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7CisJdGV4dC1pbmRlbnQ6LS4yNWluOworCW1zby1hbnNpLWZvbnQtc2l6ZToxMC4wcHQ7CisJZm9udC1mYW1pbHk6V2luZ2RpbmdzO30KK29sCisJe21hcmdpbi1ib3R0b206MGluO30KK3VsCisJe21hcmdpbi1ib3R0b206MGluO30KKy0tPgorPC9zdHlsZT48IS0tW2lmIGd0ZSBtc28gMTBdPgorPHN0eWxlPgorIC8qIFN0eWxlIERlZmluaXRpb25zICovCisgdGFibGUuTXNvTm9ybWFsVGFibGUKKwl7bXNvLXN0eWxlLW5hbWU6IlRhYmxlIE5vcm1hbCI7CisJbXNvLXRzdHlsZS1yb3diYW5kLXNpemU6MDsKKwltc28tdHN0eWxlLWNvbGJhbmQtc2l6ZTowOworCW1zby1zdHlsZS1ub3Nob3c6eWVzOworCW1zby1zdHlsZS1wcmlvcml0eTo5OTsKKwltc28tc3R5bGUtcGFyZW50OiIiOworCW1zby1wYWRkaW5nLWFsdDowaW4gNS40cHQgMGluIDUuNHB0OworCW1zby1wYXJhLW1hcmdpbjowaW47CisJbGluZS1oZWlnaHQ6MTE1JTsKKwltc28tcGFnaW5hdGlvbjp3aWRvdy1vcnBoYW47CisJZm9udC1zaXplOjExLjBwdDsKKwlmb250LWZhbWlseToiQXJpYWwiLHNhbnMtc2VyaWY7CisJbXNvLWJpZGktZm9udC1mYW1pbHk6IlRpbWVzIE5ldyBSb21hbiI7CisJbXNvLWJpZGktdGhlbWUtZm9udDptaW5vci1iaWRpOworCWNvbG9yOiMwMDIwNTI7CisJbXNvLWFuc2ktbGFuZ3VhZ2U6RU4tVVM7CisJbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6RU4tVVM7fQorPC9zdHlsZT4KKzwhW2VuZGlmXS0tPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtZXRhIG5hbWU9IlByb2dJZCIgY29udGVudD0iV29yZC5Eb2N1bWVudCI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1ldGEgbmFtZT0iR2VuZXJhdG9yIiBjb250ZW50PSJNaWNyb3NvZnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdvcmQgMTUiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtZXRhIG5hbWU9Ik9yaWdpbmF0b3IiIGNvbnRlbnQ9Ik1pY3Jvc29mdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV29yZCAxNSI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLVtpZiBndGUgbXNvIDldPjx4bWw+CisgPHc6V29yZERvY3VtZW50PgorICA8dzpWaWV3Pk5vcm1hbDwvdzpWaWV3PgorICA8dzpab29tPjA8L3c6Wm9vbT4KKyAgPHc6VHJhY2tNb3Zlcy8+CisgIDx3OlRyYWNrRm9ybWF0dGluZy8+CisgIDx3Okh5cGhlbmF0aW9uWm9uZT4yMTwvdzpIeXBoZW5hdGlvblpvbmU+CisgIDx3OlB1bmN0dWF0aW9uS2VybmluZy8+CisgIDx3OlZhbGlkYXRlQWdhaW5zdFNjaGVtYXMvPgorICA8dzpTYXZlSWZYTUxJbnZhbGlkPmZhbHNlPC93OlNhdmVJZlhNTEludmFsaWQ+CisgIDx3Oklnbm9yZU1peGVkQ29udGVudD5mYWxzZTwvdzpJZ25vcmVNaXhlZENvbnRlbnQ+CisgIDx3OkFsd2F5c1Nob3dQbGFjZWhvbGRlclRleHQ+ZmFsc2U8L3c6QWx3YXlzU2hvd1BsYWNlaG9sZGVyVGV4dD4KKyAgPHc6RG9Ob3RQcm9tb3RlUUYvPgorICA8dzpMaWRUaGVtZU90aGVyPkVOLVVTPC93OkxpZFRoZW1lT3RoZXI+CisgIDx3OkxpZFRoZW1lQXNpYW4+WC1OT05FPC93OkxpZFRoZW1lQXNpYW4+CisgIDx3OkxpZFRoZW1lQ29tcGxleFNjcmlwdD5YLU5PTkU8L3c6TGlkVGhlbWVDb21wbGV4U2NyaXB0PgorICA8dzpDb21wYXRpYmlsaXR5PgorICAgPHc6QnJlYWtXcmFwcGVkVGFibGVzLz4KKyAgIDx3OlNuYXBUb0dyaWRJbkNlbGwvPgorICAgPHc6V3JhcFRleHRXaXRoUHVuY3QvPgorICAgPHc6VXNlQXNpYW5CcmVha1J1bGVzLz4KKyAgIDx3OkRvbnRHcm93QXV0b2ZpdC8+CisgICA8dzpTcGxpdFBnQnJlYWtBbmRQYXJhTWFyay8+CisgICA8dzpFbmFibGVPcGVuVHlwZUtlcm5pbmcvPgorICAgPHc6RG9udEZsaXBNaXJyb3JJbmRlbnRzLz4KKyAgIDx3Ok92ZXJyaWRlVGFibGVTdHlsZUhwcy8+CisgIDwvdzpDb21wYXRpYmlsaXR5PgorICA8bTptYXRoUHI+CisgICA8bTptYXRoRm9udCBtOnZhbD0iQ2FtYnJpYSBNYXRoIi8+CisgICA8bTpicmtCaW4gbTp2YWw9ImJlZm9yZSIvPgorICAgPG06YnJrQmluU3ViIG06dmFsPSImIzQ1Oy0iLz4KKyAgIDxtOnNtYWxsRnJhYyBtOnZhbD0ib2ZmIi8+CisgICA8bTpkaXNwRGVmLz4KKyAgIDxtOmxNYXJnaW4gbTp2YWw9IjAiLz4KKyAgIDxtOnJNYXJnaW4gbTp2YWw9IjAiLz4KKyAgIDxtOmRlZkpjIG06dmFsPSJjZW50ZXJHcm91cCIvPgorICAgPG06d3JhcEluZGVudCBtOnZhbD0iMTQ0MCIvPgorICAgPG06aW50TGltIG06dmFsPSJzdWJTdXAiLz4KKyAgIDxtOm5hcnlMaW0gbTp2YWw9InVuZE92ciIvPgorICA8L206bWF0aFByPjwvdzpXb3JkRG9jdW1lbnQ+Cis8L3htbD48IVtlbmRpZl0tLT48IS0tW2lmIGd0ZSBtc28gOV0+PHhtbD4KKyA8dzpMYXRlbnRTdHlsZXMgRGVmTG9ja2VkU3RhdGU9ImZhbHNlIiBEZWZVbmhpZGVXaGVuVXNlZD0iZmFsc2UiCisgIERlZlNlbWlIaWRkZW49ImZhbHNlIiBEZWZRRm9ybWF0PSJmYWxzZSIgRGVmUHJpb3JpdHk9Ijk5IgorICBMYXRlbnRTdHlsZUNvdW50PSIzNzYiPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjAiIFFGb3JtYXQ9InRydWUiIE5hbWU9Ik5vcm1hbCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjkiIFFGb3JtYXQ9InRydWUiIE5hbWU9ImhlYWRpbmcgMSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjkiIFNlbWlIaWRkZW49InRydWUiCisgICBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIgUUZvcm1hdD0idHJ1ZSIgTmFtZT0iaGVhZGluZyAyIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iOSIgU2VtaUhpZGRlbj0idHJ1ZSIKKyAgIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIiBRRm9ybWF0PSJ0cnVlIiBOYW1lPSJoZWFkaW5nIDMiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI5IiBTZW1pSGlkZGVuPSJ0cnVlIgorICAgVW5oaWRlV2hlblVzZWQ9InRydWUiIFFGb3JtYXQ9InRydWUiIE5hbWU9ImhlYWRpbmcgNCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjkiIFNlbWlIaWRkZW49InRydWUiCisgICBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIgUUZvcm1hdD0idHJ1ZSIgTmFtZT0iaGVhZGluZyA1Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iOSIgU2VtaUhpZGRlbj0idHJ1ZSIKKyAgIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIiBRRm9ybWF0PSJ0cnVlIiBOYW1lPSJoZWFkaW5nIDYiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI5IiBTZW1pSGlkZGVuPSJ0cnVlIgorICAgVW5oaWRlV2hlblVzZWQ9InRydWUiIFFGb3JtYXQ9InRydWUiIE5hbWU9ImhlYWRpbmcgNyIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjkiIFNlbWlIaWRkZW49InRydWUiCisgICBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIgUUZvcm1hdD0idHJ1ZSIgTmFtZT0iaGVhZGluZyA4Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iOSIgU2VtaUhpZGRlbj0idHJ1ZSIKKyAgIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIiBRRm9ybWF0PSJ0cnVlIiBOYW1lPSJoZWFkaW5nIDkiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iaW5kZXggMSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJpbmRleCAyIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9ImluZGV4IDMiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iaW5kZXggNCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJpbmRleCA1Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9ImluZGV4IDYiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iaW5kZXggNyIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJpbmRleCA4Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9ImluZGV4IDkiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSIzOSIgU2VtaUhpZGRlbj0idHJ1ZSIKKyAgIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIiBOYW1lPSJ0b2MgMSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjM5IiBTZW1pSGlkZGVuPSJ0cnVlIgorICAgVW5oaWRlV2hlblVzZWQ9InRydWUiIE5hbWU9InRvYyAyIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iMzkiIFNlbWlIaWRkZW49InRydWUiCisgICBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIgTmFtZT0idG9jIDMiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSIzOSIgU2VtaUhpZGRlbj0idHJ1ZSIKKyAgIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIiBOYW1lPSJ0b2MgNCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjM5IiBTZW1pSGlkZGVuPSJ0cnVlIgorICAgVW5oaWRlV2hlblVzZWQ9InRydWUiIE5hbWU9InRvYyA1Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iMzkiIFNlbWlIaWRkZW49InRydWUiCisgICBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIgTmFtZT0idG9jIDYiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSIzOSIgU2VtaUhpZGRlbj0idHJ1ZSIKKyAgIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIiBOYW1lPSJ0b2MgNyIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjM5IiBTZW1pSGlkZGVuPSJ0cnVlIgorICAgVW5oaWRlV2hlblVzZWQ9InRydWUiIE5hbWU9InRvYyA4Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iMzkiIFNlbWlIaWRkZW49InRydWUiCisgICBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIgTmFtZT0idG9jIDkiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iTm9ybWFsIEluZGVudCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJmb290bm90ZSB0ZXh0Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9ImFubm90YXRpb24gdGV4dCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJoZWFkZXIiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iZm9vdGVyIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9ImluZGV4IGhlYWRpbmciLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSIzNSIgU2VtaUhpZGRlbj0idHJ1ZSIKKyAgIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIiBRRm9ybWF0PSJ0cnVlIiBOYW1lPSJjYXB0aW9uIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9InRhYmxlIG9mIGZpZ3VyZXMiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iZW52ZWxvcGUgYWRkcmVzcyIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJlbnZlbG9wZSByZXR1cm4iLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iZm9vdG5vdGUgcmVmZXJlbmNlIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9ImFubm90YXRpb24gcmVmZXJlbmNlIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9ImxpbmUgbnVtYmVyIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9InBhZ2UgbnVtYmVyIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9ImVuZG5vdGUgcmVmZXJlbmNlIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9ImVuZG5vdGUgdGV4dCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJ0YWJsZSBvZiBhdXRob3JpdGllcyIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJtYWNybyIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJ0b2EgaGVhZGluZyIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJMaXN0Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9Ikxpc3QgQnVsbGV0Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9Ikxpc3QgTnVtYmVyIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9Ikxpc3QgMiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJMaXN0IDMiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iTGlzdCA0Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9Ikxpc3QgNSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJMaXN0IEJ1bGxldCAyIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9Ikxpc3QgQnVsbGV0IDMiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iTGlzdCBCdWxsZXQgNCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJMaXN0IEJ1bGxldCA1Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9Ikxpc3QgTnVtYmVyIDIiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iTGlzdCBOdW1iZXIgMyIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJMaXN0IE51bWJlciA0Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9Ikxpc3QgTnVtYmVyIDUiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSIxMCIgUUZvcm1hdD0idHJ1ZSIgTmFtZT0iVGl0bGUiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iQ2xvc2luZyIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJTaWduYXR1cmUiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSIxIiBTZW1pSGlkZGVuPSJ0cnVlIgorICAgVW5oaWRlV2hlblVzZWQ9InRydWUiIE5hbWU9IkRlZmF1bHQgUGFyYWdyYXBoIEZvbnQiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iQm9keSBUZXh0Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9IkJvZHkgVGV4dCBJbmRlbnQiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iTGlzdCBDb250aW51ZSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJMaXN0IENvbnRpbnVlIDIiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iTGlzdCBDb250aW51ZSAzIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9Ikxpc3QgQ29udGludWUgNCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJMaXN0IENvbnRpbnVlIDUiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iTWVzc2FnZSBIZWFkZXIiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSIxMSIgUUZvcm1hdD0idHJ1ZSIgTmFtZT0iU3VidGl0bGUiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iU2FsdXRhdGlvbiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJEYXRlIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9IkJvZHkgVGV4dCBGaXJzdCBJbmRlbnQiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iQm9keSBUZXh0IEZpcnN0IEluZGVudCAyIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9Ik5vdGUgSGVhZGluZyIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJCb2R5IFRleHQgMiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJCb2R5IFRleHQgMyIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJCb2R5IFRleHQgSW5kZW50IDIiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iQm9keSBUZXh0IEluZGVudCAzIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9IkJsb2NrIFRleHQiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iSHlwZXJsaW5rIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9IkZvbGxvd2VkSHlwZXJsaW5rIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iMjIiIFFGb3JtYXQ9InRydWUiIE5hbWU9IlN0cm9uZyIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjIwIiBRRm9ybWF0PSJ0cnVlIiBOYW1lPSJFbXBoYXNpcyIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJEb2N1bWVudCBNYXAiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iUGxhaW4gVGV4dCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJFLW1haWwgU2lnbmF0dXJlIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9IkhUTUwgVG9wIG9mIEZvcm0iLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iSFRNTCBCb3R0b20gb2YgRm9ybSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJOb3JtYWwgKFdlYikiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iSFRNTCBBY3JvbnltIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9IkhUTUwgQWRkcmVzcyIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJIVE1MIENpdGUiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iSFRNTCBDb2RlIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9IkhUTUwgRGVmaW5pdGlvbiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJIVE1MIEtleWJvYXJkIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9IkhUTUwgUHJlZm9ybWF0dGVkIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9IkhUTUwgU2FtcGxlIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9IkhUTUwgVHlwZXdyaXRlciIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJIVE1MIFZhcmlhYmxlIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9Ik5vcm1hbCBUYWJsZSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJhbm5vdGF0aW9uIHN1YmplY3QiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iTm8gTGlzdCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJPdXRsaW5lIExpc3QgMSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJPdXRsaW5lIExpc3QgMiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJPdXRsaW5lIExpc3QgMyIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJUYWJsZSBTaW1wbGUgMSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJUYWJsZSBTaW1wbGUgMiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJUYWJsZSBTaW1wbGUgMyIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJUYWJsZSBDbGFzc2ljIDEiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iVGFibGUgQ2xhc3NpYyAyIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9IlRhYmxlIENsYXNzaWMgMyIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJUYWJsZSBDbGFzc2ljIDQiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iVGFibGUgQ29sb3JmdWwgMSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJUYWJsZSBDb2xvcmZ1bCAyIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9IlRhYmxlIENvbG9yZnVsIDMiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iVGFibGUgQ29sdW1ucyAxIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9IlRhYmxlIENvbHVtbnMgMiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJUYWJsZSBDb2x1bW5zIDMiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iVGFibGUgQ29sdW1ucyA0Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9IlRhYmxlIENvbHVtbnMgNSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJUYWJsZSBHcmlkIDEiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iVGFibGUgR3JpZCAyIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9IlRhYmxlIEdyaWQgMyIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJUYWJsZSBHcmlkIDQiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iVGFibGUgR3JpZCA1Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9IlRhYmxlIEdyaWQgNiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJUYWJsZSBHcmlkIDciLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iVGFibGUgR3JpZCA4Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9IlRhYmxlIExpc3QgMSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJUYWJsZSBMaXN0IDIiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iVGFibGUgTGlzdCAzIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9IlRhYmxlIExpc3QgNCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJUYWJsZSBMaXN0IDUiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iVGFibGUgTGlzdCA2Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9IlRhYmxlIExpc3QgNyIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJUYWJsZSBMaXN0IDgiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iVGFibGUgM0QgZWZmZWN0cyAxIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9IlRhYmxlIDNEIGVmZmVjdHMgMiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJUYWJsZSAzRCBlZmZlY3RzIDMiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iVGFibGUgQ29udGVtcG9yYXJ5Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9IlRhYmxlIEVsZWdhbnQiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iVGFibGUgUHJvZmVzc2lvbmFsIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9IlRhYmxlIFN1YnRsZSAxIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9IlRhYmxlIFN1YnRsZSAyIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9IlRhYmxlIFdlYiAxIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9IlRhYmxlIFdlYiAyIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9IlRhYmxlIFdlYiAzIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9IkJhbGxvb24gVGV4dCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjM5IiBOYW1lPSJUYWJsZSBHcmlkIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9IlRhYmxlIFRoZW1lIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBOYW1lPSJQbGFjZWhvbGRlciBUZXh0Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iMSIgUUZvcm1hdD0idHJ1ZSIgTmFtZT0iTm8gU3BhY2luZyIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjYwIiBOYW1lPSJMaWdodCBTaGFkaW5nIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjEiIE5hbWU9IkxpZ2h0IExpc3QiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2MiIgTmFtZT0iTGlnaHQgR3JpZCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjYzIiBOYW1lPSJNZWRpdW0gU2hhZGluZyAxIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjQiIE5hbWU9Ik1lZGl1bSBTaGFkaW5nIDIiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2NSIgTmFtZT0iTWVkaXVtIExpc3QgMSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjY2IiBOYW1lPSJNZWRpdW0gTGlzdCAyIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjciIE5hbWU9Ik1lZGl1bSBHcmlkIDEiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2OCIgTmFtZT0iTWVkaXVtIEdyaWQgMiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjY5IiBOYW1lPSJNZWRpdW0gR3JpZCAzIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNzAiIE5hbWU9IkRhcmsgTGlzdCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjcxIiBOYW1lPSJDb2xvcmZ1bCBTaGFkaW5nIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNzIiIE5hbWU9IkNvbG9yZnVsIExpc3QiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI3MyIgTmFtZT0iQ29sb3JmdWwgR3JpZCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjYwIiBOYW1lPSJMaWdodCBTaGFkaW5nIEFjY2VudCAxIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjEiIE5hbWU9IkxpZ2h0IExpc3QgQWNjZW50IDEiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2MiIgTmFtZT0iTGlnaHQgR3JpZCBBY2NlbnQgMSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjYzIiBOYW1lPSJNZWRpdW0gU2hhZGluZyAxIEFjY2VudCAxIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjQiIE5hbWU9Ik1lZGl1bSBTaGFkaW5nIDIgQWNjZW50IDEiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2NSIgTmFtZT0iTWVkaXVtIExpc3QgMSBBY2NlbnQgMSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgTmFtZT0iUmV2aXNpb24iLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSIzNCIgUUZvcm1hdD0idHJ1ZSIKKyAgIE5hbWU9Ikxpc3QgUGFyYWdyYXBoIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iMjkiIFFGb3JtYXQ9InRydWUiIE5hbWU9IlF1b3RlIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iMzAiIFFGb3JtYXQ9InRydWUiCisgICBOYW1lPSJJbnRlbnNlIFF1b3RlIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjYiIE5hbWU9Ik1lZGl1bSBMaXN0IDIgQWNjZW50IDEiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2NyIgTmFtZT0iTWVkaXVtIEdyaWQgMSBBY2NlbnQgMSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjY4IiBOYW1lPSJNZWRpdW0gR3JpZCAyIEFjY2VudCAxIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjkiIE5hbWU9Ik1lZGl1bSBHcmlkIDMgQWNjZW50IDEiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI3MCIgTmFtZT0iRGFyayBMaXN0IEFjY2VudCAxIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNzEiIE5hbWU9IkNvbG9yZnVsIFNoYWRpbmcgQWNjZW50IDEiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI3MiIgTmFtZT0iQ29sb3JmdWwgTGlzdCBBY2NlbnQgMSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjczIiBOYW1lPSJDb2xvcmZ1bCBHcmlkIEFjY2VudCAxIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjAiIE5hbWU9IkxpZ2h0IFNoYWRpbmcgQWNjZW50IDIiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2MSIgTmFtZT0iTGlnaHQgTGlzdCBBY2NlbnQgMiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjYyIiBOYW1lPSJMaWdodCBHcmlkIEFjY2VudCAyIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjMiIE5hbWU9Ik1lZGl1bSBTaGFkaW5nIDEgQWNjZW50IDIiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2NCIgTmFtZT0iTWVkaXVtIFNoYWRpbmcgMiBBY2NlbnQgMiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjY1IiBOYW1lPSJNZWRpdW0gTGlzdCAxIEFjY2VudCAyIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjYiIE5hbWU9Ik1lZGl1bSBMaXN0IDIgQWNjZW50IDIiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2NyIgTmFtZT0iTWVkaXVtIEdyaWQgMSBBY2NlbnQgMiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjY4IiBOYW1lPSJNZWRpdW0gR3JpZCAyIEFjY2VudCAyIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjkiIE5hbWU9Ik1lZGl1bSBHcmlkIDMgQWNjZW50IDIiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI3MCIgTmFtZT0iRGFyayBMaXN0IEFjY2VudCAyIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNzEiIE5hbWU9IkNvbG9yZnVsIFNoYWRpbmcgQWNjZW50IDIiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI3MiIgTmFtZT0iQ29sb3JmdWwgTGlzdCBBY2NlbnQgMiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjczIiBOYW1lPSJDb2xvcmZ1bCBHcmlkIEFjY2VudCAyIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjAiIE5hbWU9IkxpZ2h0IFNoYWRpbmcgQWNjZW50IDMiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2MSIgTmFtZT0iTGlnaHQgTGlzdCBBY2NlbnQgMyIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjYyIiBOYW1lPSJMaWdodCBHcmlkIEFjY2VudCAzIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjMiIE5hbWU9Ik1lZGl1bSBTaGFkaW5nIDEgQWNjZW50IDMiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2NCIgTmFtZT0iTWVkaXVtIFNoYWRpbmcgMiBBY2NlbnQgMyIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjY1IiBOYW1lPSJNZWRpdW0gTGlzdCAxIEFjY2VudCAzIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjYiIE5hbWU9Ik1lZGl1bSBMaXN0IDIgQWNjZW50IDMiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2NyIgTmFtZT0iTWVkaXVtIEdyaWQgMSBBY2NlbnQgMyIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjY4IiBOYW1lPSJNZWRpdW0gR3JpZCAyIEFjY2VudCAzIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjkiIE5hbWU9Ik1lZGl1bSBHcmlkIDMgQWNjZW50IDMiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI3MCIgTmFtZT0iRGFyayBMaXN0IEFjY2VudCAzIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNzEiIE5hbWU9IkNvbG9yZnVsIFNoYWRpbmcgQWNjZW50IDMiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI3MiIgTmFtZT0iQ29sb3JmdWwgTGlzdCBBY2NlbnQgMyIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjczIiBOYW1lPSJDb2xvcmZ1bCBHcmlkIEFjY2VudCAzIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjAiIE5hbWU9IkxpZ2h0IFNoYWRpbmcgQWNjZW50IDQiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2MSIgTmFtZT0iTGlnaHQgTGlzdCBBY2NlbnQgNCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjYyIiBOYW1lPSJMaWdodCBHcmlkIEFjY2VudCA0Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjMiIE5hbWU9Ik1lZGl1bSBTaGFkaW5nIDEgQWNjZW50IDQiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2NCIgTmFtZT0iTWVkaXVtIFNoYWRpbmcgMiBBY2NlbnQgNCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjY1IiBOYW1lPSJNZWRpdW0gTGlzdCAxIEFjY2VudCA0Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjYiIE5hbWU9Ik1lZGl1bSBMaXN0IDIgQWNjZW50IDQiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2NyIgTmFtZT0iTWVkaXVtIEdyaWQgMSBBY2NlbnQgNCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjY4IiBOYW1lPSJNZWRpdW0gR3JpZCAyIEFjY2VudCA0Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjkiIE5hbWU9Ik1lZGl1bSBHcmlkIDMgQWNjZW50IDQiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI3MCIgTmFtZT0iRGFyayBMaXN0IEFjY2VudCA0Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNzEiIE5hbWU9IkNvbG9yZnVsIFNoYWRpbmcgQWNjZW50IDQiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI3MiIgTmFtZT0iQ29sb3JmdWwgTGlzdCBBY2NlbnQgNCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjczIiBOYW1lPSJDb2xvcmZ1bCBHcmlkIEFjY2VudCA0Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjAiIE5hbWU9IkxpZ2h0IFNoYWRpbmcgQWNjZW50IDUiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2MSIgTmFtZT0iTGlnaHQgTGlzdCBBY2NlbnQgNSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjYyIiBOYW1lPSJMaWdodCBHcmlkIEFjY2VudCA1Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjMiIE5hbWU9Ik1lZGl1bSBTaGFkaW5nIDEgQWNjZW50IDUiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2NCIgTmFtZT0iTWVkaXVtIFNoYWRpbmcgMiBBY2NlbnQgNSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjY1IiBOYW1lPSJNZWRpdW0gTGlzdCAxIEFjY2VudCA1Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjYiIE5hbWU9Ik1lZGl1bSBMaXN0IDIgQWNjZW50IDUiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2NyIgTmFtZT0iTWVkaXVtIEdyaWQgMSBBY2NlbnQgNSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjY4IiBOYW1lPSJNZWRpdW0gR3JpZCAyIEFjY2VudCA1Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjkiIE5hbWU9Ik1lZGl1bSBHcmlkIDMgQWNjZW50IDUiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI3MCIgTmFtZT0iRGFyayBMaXN0IEFjY2VudCA1Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNzEiIE5hbWU9IkNvbG9yZnVsIFNoYWRpbmcgQWNjZW50IDUiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI3MiIgTmFtZT0iQ29sb3JmdWwgTGlzdCBBY2NlbnQgNSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjczIiBOYW1lPSJDb2xvcmZ1bCBHcmlkIEFjY2VudCA1Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjAiIE5hbWU9IkxpZ2h0IFNoYWRpbmcgQWNjZW50IDYiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2MSIgTmFtZT0iTGlnaHQgTGlzdCBBY2NlbnQgNiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjYyIiBOYW1lPSJMaWdodCBHcmlkIEFjY2VudCA2Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjMiIE5hbWU9Ik1lZGl1bSBTaGFkaW5nIDEgQWNjZW50IDYiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2NCIgTmFtZT0iTWVkaXVtIFNoYWRpbmcgMiBBY2NlbnQgNiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjY1IiBOYW1lPSJNZWRpdW0gTGlzdCAxIEFjY2VudCA2Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjYiIE5hbWU9Ik1lZGl1bSBMaXN0IDIgQWNjZW50IDYiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2NyIgTmFtZT0iTWVkaXVtIEdyaWQgMSBBY2NlbnQgNiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjY4IiBOYW1lPSJNZWRpdW0gR3JpZCAyIEFjY2VudCA2Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjkiIE5hbWU9Ik1lZGl1bSBHcmlkIDMgQWNjZW50IDYiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI3MCIgTmFtZT0iRGFyayBMaXN0IEFjY2VudCA2Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNzEiIE5hbWU9IkNvbG9yZnVsIFNoYWRpbmcgQWNjZW50IDYiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI3MiIgTmFtZT0iQ29sb3JmdWwgTGlzdCBBY2NlbnQgNiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjczIiBOYW1lPSJDb2xvcmZ1bCBHcmlkIEFjY2VudCA2Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iMTkiIFFGb3JtYXQ9InRydWUiCisgICBOYW1lPSJTdWJ0bGUgRW1waGFzaXMiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSIyMSIgUUZvcm1hdD0idHJ1ZSIKKyAgIE5hbWU9IkludGVuc2UgRW1waGFzaXMiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSIzMSIgUUZvcm1hdD0idHJ1ZSIKKyAgIE5hbWU9IlN1YnRsZSBSZWZlcmVuY2UiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSIzMiIgUUZvcm1hdD0idHJ1ZSIKKyAgIE5hbWU9IkludGVuc2UgUmVmZXJlbmNlIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iMzMiIFFGb3JtYXQ9InRydWUiIE5hbWU9IkJvb2sgVGl0bGUiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSIzNyIgU2VtaUhpZGRlbj0idHJ1ZSIKKyAgIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIiBOYW1lPSJCaWJsaW9ncmFwaHkiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSIzOSIgU2VtaUhpZGRlbj0idHJ1ZSIKKyAgIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIiBRRm9ybWF0PSJ0cnVlIiBOYW1lPSJUT0MgSGVhZGluZyIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQxIiBOYW1lPSJQbGFpbiBUYWJsZSAxIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDIiIE5hbWU9IlBsYWluIFRhYmxlIDIiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI0MyIgTmFtZT0iUGxhaW4gVGFibGUgMyIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQ0IiBOYW1lPSJQbGFpbiBUYWJsZSA0Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDUiIE5hbWU9IlBsYWluIFRhYmxlIDUiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI0MCIgTmFtZT0iR3JpZCBUYWJsZSBMaWdodCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQ2IiBOYW1lPSJHcmlkIFRhYmxlIDEgTGlnaHQiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI0NyIgTmFtZT0iR3JpZCBUYWJsZSAyIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDgiIE5hbWU9IkdyaWQgVGFibGUgMyIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQ5IiBOYW1lPSJHcmlkIFRhYmxlIDQiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI1MCIgTmFtZT0iR3JpZCBUYWJsZSA1IERhcmsiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI1MSIgTmFtZT0iR3JpZCBUYWJsZSA2IENvbG9yZnVsIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNTIiIE5hbWU9IkdyaWQgVGFibGUgNyBDb2xvcmZ1bCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQ2IgorICAgTmFtZT0iR3JpZCBUYWJsZSAxIExpZ2h0IEFjY2VudCAxIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDciIE5hbWU9IkdyaWQgVGFibGUgMiBBY2NlbnQgMSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQ4IiBOYW1lPSJHcmlkIFRhYmxlIDMgQWNjZW50IDEiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI0OSIgTmFtZT0iR3JpZCBUYWJsZSA0IEFjY2VudCAxIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNTAiIE5hbWU9IkdyaWQgVGFibGUgNSBEYXJrIEFjY2VudCAxIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNTEiCisgICBOYW1lPSJHcmlkIFRhYmxlIDYgQ29sb3JmdWwgQWNjZW50IDEiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI1MiIKKyAgIE5hbWU9IkdyaWQgVGFibGUgNyBDb2xvcmZ1bCBBY2NlbnQgMSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQ2IgorICAgTmFtZT0iR3JpZCBUYWJsZSAxIExpZ2h0IEFjY2VudCAyIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDciIE5hbWU9IkdyaWQgVGFibGUgMiBBY2NlbnQgMiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQ4IiBOYW1lPSJHcmlkIFRhYmxlIDMgQWNjZW50IDIiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI0OSIgTmFtZT0iR3JpZCBUYWJsZSA0IEFjY2VudCAyIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNTAiIE5hbWU9IkdyaWQgVGFibGUgNSBEYXJrIEFjY2VudCAyIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNTEiCisgICBOYW1lPSJHcmlkIFRhYmxlIDYgQ29sb3JmdWwgQWNjZW50IDIiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI1MiIKKyAgIE5hbWU9IkdyaWQgVGFibGUgNyBDb2xvcmZ1bCBBY2NlbnQgMiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQ2IgorICAgTmFtZT0iR3JpZCBUYWJsZSAxIExpZ2h0IEFjY2VudCAzIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDciIE5hbWU9IkdyaWQgVGFibGUgMiBBY2NlbnQgMyIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQ4IiBOYW1lPSJHcmlkIFRhYmxlIDMgQWNjZW50IDMiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI0OSIgTmFtZT0iR3JpZCBUYWJsZSA0IEFjY2VudCAzIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNTAiIE5hbWU9IkdyaWQgVGFibGUgNSBEYXJrIEFjY2VudCAzIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNTEiCisgICBOYW1lPSJHcmlkIFRhYmxlIDYgQ29sb3JmdWwgQWNjZW50IDMiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI1MiIKKyAgIE5hbWU9IkdyaWQgVGFibGUgNyBDb2xvcmZ1bCBBY2NlbnQgMyIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQ2IgorICAgTmFtZT0iR3JpZCBUYWJsZSAxIExpZ2h0IEFjY2VudCA0Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDciIE5hbWU9IkdyaWQgVGFibGUgMiBBY2NlbnQgNCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQ4IiBOYW1lPSJHcmlkIFRhYmxlIDMgQWNjZW50IDQiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI0OSIgTmFtZT0iR3JpZCBUYWJsZSA0IEFjY2VudCA0Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNTAiIE5hbWU9IkdyaWQgVGFibGUgNSBEYXJrIEFjY2VudCA0Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNTEiCisgICBOYW1lPSJHcmlkIFRhYmxlIDYgQ29sb3JmdWwgQWNjZW50IDQiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI1MiIKKyAgIE5hbWU9IkdyaWQgVGFibGUgNyBDb2xvcmZ1bCBBY2NlbnQgNCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQ2IgorICAgTmFtZT0iR3JpZCBUYWJsZSAxIExpZ2h0IEFjY2VudCA1Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDciIE5hbWU9IkdyaWQgVGFibGUgMiBBY2NlbnQgNSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQ4IiBOYW1lPSJHcmlkIFRhYmxlIDMgQWNjZW50IDUiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI0OSIgTmFtZT0iR3JpZCBUYWJsZSA0IEFjY2VudCA1Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNTAiIE5hbWU9IkdyaWQgVGFibGUgNSBEYXJrIEFjY2VudCA1Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNTEiCisgICBOYW1lPSJHcmlkIFRhYmxlIDYgQ29sb3JmdWwgQWNjZW50IDUiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI1MiIKKyAgIE5hbWU9IkdyaWQgVGFibGUgNyBDb2xvcmZ1bCBBY2NlbnQgNSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQ2IgorICAgTmFtZT0iR3JpZCBUYWJsZSAxIExpZ2h0IEFjY2VudCA2Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDciIE5hbWU9IkdyaWQgVGFibGUgMiBBY2NlbnQgNiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQ4IiBOYW1lPSJHcmlkIFRhYmxlIDMgQWNjZW50IDYiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI0OSIgTmFtZT0iR3JpZCBUYWJsZSA0IEFjY2VudCA2Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNTAiIE5hbWU9IkdyaWQgVGFibGUgNSBEYXJrIEFjY2VudCA2Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNTEiCisgICBOYW1lPSJHcmlkIFRhYmxlIDYgQ29sb3JmdWwgQWNjZW50IDYiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI1MiIKKyAgIE5hbWU9IkdyaWQgVGFibGUgNyBDb2xvcmZ1bCBBY2NlbnQgNiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQ2IiBOYW1lPSJMaXN0IFRhYmxlIDEgTGlnaHQiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI0NyIgTmFtZT0iTGlzdCBUYWJsZSAyIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDgiIE5hbWU9Ikxpc3QgVGFibGUgMyIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQ5IiBOYW1lPSJMaXN0IFRhYmxlIDQiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI1MCIgTmFtZT0iTGlzdCBUYWJsZSA1IERhcmsiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI1MSIgTmFtZT0iTGlzdCBUYWJsZSA2IENvbG9yZnVsIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNTIiIE5hbWU9Ikxpc3QgVGFibGUgNyBDb2xvcmZ1bCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQ2IgorICAgTmFtZT0iTGlzdCBUYWJsZSAxIExpZ2h0IEFjY2VudCAxIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDciIE5hbWU9Ikxpc3QgVGFibGUgMiBBY2NlbnQgMSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQ4IiBOYW1lPSJMaXN0IFRhYmxlIDMgQWNjZW50IDEiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI0OSIgTmFtZT0iTGlzdCBUYWJsZSA0IEFjY2VudCAxIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNTAiIE5hbWU9Ikxpc3QgVGFibGUgNSBEYXJrIEFjY2VudCAxIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNTEiCisgICBOYW1lPSJMaXN0IFRhYmxlIDYgQ29sb3JmdWwgQWNjZW50IDEiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI1MiIKKyAgIE5hbWU9Ikxpc3QgVGFibGUgNyBDb2xvcmZ1bCBBY2NlbnQgMSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQ2IgorICAgTmFtZT0iTGlzdCBUYWJsZSAxIExpZ2h0IEFjY2VudCAyIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDciIE5hbWU9Ikxpc3QgVGFibGUgMiBBY2NlbnQgMiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQ4IiBOYW1lPSJMaXN0IFRhYmxlIDMgQWNjZW50IDIiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI0OSIgTmFtZT0iTGlzdCBUYWJsZSA0IEFjY2VudCAyIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNTAiIE5hbWU9Ikxpc3QgVGFibGUgNSBEYXJrIEFjY2VudCAyIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNTEiCisgICBOYW1lPSJMaXN0IFRhYmxlIDYgQ29sb3JmdWwgQWNjZW50IDIiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI1MiIKKyAgIE5hbWU9Ikxpc3QgVGFibGUgNyBDb2xvcmZ1bCBBY2NlbnQgMiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQ2IgorICAgTmFtZT0iTGlzdCBUYWJsZSAxIExpZ2h0IEFjY2VudCAzIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDciIE5hbWU9Ikxpc3QgVGFibGUgMiBBY2NlbnQgMyIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQ4IiBOYW1lPSJMaXN0IFRhYmxlIDMgQWNjZW50IDMiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI0OSIgTmFtZT0iTGlzdCBUYWJsZSA0IEFjY2VudCAzIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNTAiIE5hbWU9Ikxpc3QgVGFibGUgNSBEYXJrIEFjY2VudCAzIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNTEiCisgICBOYW1lPSJMaXN0IFRhYmxlIDYgQ29sb3JmdWwgQWNjZW50IDMiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI1MiIKKyAgIE5hbWU9Ikxpc3QgVGFibGUgNyBDb2xvcmZ1bCBBY2NlbnQgMyIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQ2IgorICAgTmFtZT0iTGlzdCBUYWJsZSAxIExpZ2h0IEFjY2VudCA0Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDciIE5hbWU9Ikxpc3QgVGFibGUgMiBBY2NlbnQgNCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQ4IiBOYW1lPSJMaXN0IFRhYmxlIDMgQWNjZW50IDQiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI0OSIgTmFtZT0iTGlzdCBUYWJsZSA0IEFjY2VudCA0Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNTAiIE5hbWU9Ikxpc3QgVGFibGUgNSBEYXJrIEFjY2VudCA0Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNTEiCisgICBOYW1lPSJMaXN0IFRhYmxlIDYgQ29sb3JmdWwgQWNjZW50IDQiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI1MiIKKyAgIE5hbWU9Ikxpc3QgVGFibGUgNyBDb2xvcmZ1bCBBY2NlbnQgNCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQ2IgorICAgTmFtZT0iTGlzdCBUYWJsZSAxIExpZ2h0IEFjY2VudCA1Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDciIE5hbWU9Ikxpc3QgVGFibGUgMiBBY2NlbnQgNSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQ4IiBOYW1lPSJMaXN0IFRhYmxlIDMgQWNjZW50IDUiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI0OSIgTmFtZT0iTGlzdCBUYWJsZSA0IEFjY2VudCA1Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNTAiIE5hbWU9Ikxpc3QgVGFibGUgNSBEYXJrIEFjY2VudCA1Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNTEiCisgICBOYW1lPSJMaXN0IFRhYmxlIDYgQ29sb3JmdWwgQWNjZW50IDUiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI1MiIKKyAgIE5hbWU9Ikxpc3QgVGFibGUgNyBDb2xvcmZ1bCBBY2NlbnQgNSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQ2IgorICAgTmFtZT0iTGlzdCBUYWJsZSAxIExpZ2h0IEFjY2VudCA2Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDciIE5hbWU9Ikxpc3QgVGFibGUgMiBBY2NlbnQgNiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQ4IiBOYW1lPSJMaXN0IFRhYmxlIDMgQWNjZW50IDYiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI0OSIgTmFtZT0iTGlzdCBUYWJsZSA0IEFjY2VudCA2Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNTAiIE5hbWU9Ikxpc3QgVGFibGUgNSBEYXJrIEFjY2VudCA2Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNTEiCisgICBOYW1lPSJMaXN0IFRhYmxlIDYgQ29sb3JmdWwgQWNjZW50IDYiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI1MiIKKyAgIE5hbWU9Ikxpc3QgVGFibGUgNyBDb2xvcmZ1bCBBY2NlbnQgNiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJNZW50aW9uIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9IlNtYXJ0IEh5cGVybGluayIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJIYXNodGFnIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9IlVucmVzb2x2ZWQgTWVudGlvbiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJTbWFydCBMaW5rIi8+CisgPC93OkxhdGVudFN0eWxlcz4KKzwveG1sPjwhW2VuZGlmXS0tPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdHlsZT4KKzwhLS0KKyAvKiBGb250IERlZmluaXRpb25zICovCisgQGZvbnQtZmFjZQorCXtmb250LWZhbWlseTpXaW5nZGluZ3M7CisJcGFub3NlLTE6NSAwIDAgMCAwIDAgMCAwIDAgMDsKKwltc28tZm9udC1jaGFyc2V0OjI7CisJbXNvLWdlbmVyaWMtZm9udC1mYW1pbHk6YXV0bzsKKwltc28tZm9udC1waXRjaDp2YXJpYWJsZTsKKwltc28tZm9udC1zaWduYXR1cmU6MCAyNjg0MzU0NTYgMCAwIC0yMTQ3NDgzNjQ4IDA7fQorQGZvbnQtZmFjZQorCXtmb250LWZhbWlseToiQ2FtYnJpYSBNYXRoIjsKKwlwYW5vc2UtMToyIDQgNSAzIDUgNCA2IDMgMiA0OworCW1zby1mb250LWNoYXJzZXQ6MDsKKwltc28tZ2VuZXJpYy1mb250LWZhbWlseTpyb21hbjsKKwltc28tZm9udC1waXRjaDp2YXJpYWJsZTsKKwltc28tZm9udC1zaWduYXR1cmU6LTUzNjg2OTEyMSAxMTA3MzA1NzI3IDMzNTU0NDMyIDAgNDE1IDA7fQorQGZvbnQtZmFjZQorCXtmb250LWZhbWlseTpWZXJkYW5hOworCXBhbm9zZS0xOjIgMTEgNiA0IDMgNSA0IDQgMiA0OworCW1zby1mb250LWNoYXJzZXQ6MDsKKwltc28tZ2VuZXJpYy1mb250LWZhbWlseTpzd2lzczsKKwltc28tZm9udC1waXRjaDp2YXJpYWJsZTsKKwltc28tZm9udC1zaWduYXR1cmU6LTE2MTA2MTA5NDUgMTA3Mzc1MDEwNyAxNiAwIDQxNSAwO30KK0Bmb250LWZhY2UKKwl7Zm9udC1mYW1pbHk6IlNlZ29lIFVJIjsKKwlwYW5vc2UtMToyIDExIDUgMiA0IDIgNCAyIDIgMzsKKwltc28tZm9udC1jaGFyc2V0OjA7CisJbXNvLWdlbmVyaWMtZm9udC1mYW1pbHk6c3dpc3M7CisJbXNvLWZvbnQtcGl0Y2g6dmFyaWFibGU7CisJbXNvLWZvbnQtc2lnbmF0dXJlOi00Njk3NTAwMTcgLTEwNzM2ODMzMjkgOSAwIDUxMSAwO30KKyAvKiBTdHlsZSBEZWZpbml0aW9ucyAqLworIHAuTXNvTm9ybWFsLCBsaS5Nc29Ob3JtYWwsIGRpdi5Nc29Ob3JtYWwKKwl7bXNvLXN0eWxlLXVuaGlkZTpubzsKKwltc28tc3R5bGUtcGFyZW50OiIiOworCW1hcmdpbjowaW47CisJbGluZS1oZWlnaHQ6MTE1JTsKKwltc28tcGFnaW5hdGlvbjp3aWRvdy1vcnBoYW47CisJZm9udC1zaXplOjExLjBwdDsKKwlmb250LWZhbWlseToiQXJpYWwiLHNhbnMtc2VyaWY7CisJbXNvLWZhcmVhc3QtZm9udC1mYW1pbHk6QXJpYWw7CisJbXNvLWZhcmVhc3QtdGhlbWUtZm9udDptaW5vci1sYXRpbjsKKwltc28tYmlkaS1mb250LWZhbWlseToiVGltZXMgTmV3IFJvbWFuIjsKKwltc28tYmlkaS10aGVtZS1mb250Om1pbm9yLWJpZGk7CisJY29sb3I6IzAwMjA1MjsKKwltc28tYW5zaS1sYW5ndWFnZTpFTi1VUzsKKwltc28tZmFyZWFzdC1sYW5ndWFnZTpFTi1VUzt9CisuTXNvQ2hwRGVmYXVsdAorCXttc28tc3R5bGUtdHlwZTpleHBvcnQtb25seTsKKwltc28tZGVmYXVsdC1wcm9wczp5ZXM7CisJZm9udC1mYW1pbHk6IkFyaWFsIixzYW5zLXNlcmlmOworCW1zby1hc2NpaS1mb250LWZhbWlseTpBcmlhbDsKKwltc28tZmFyZWFzdC1mb250LWZhbWlseTpBcmlhbDsKKwltc28tZmFyZWFzdC10aGVtZS1mb250Om1pbm9yLWxhdGluOworCW1zby1oYW5zaS1mb250LWZhbWlseTpBcmlhbDsKKwltc28tYmlkaS1mb250LWZhbWlseToiVGltZXMgTmV3IFJvbWFuIjsKKwltc28tYmlkaS10aGVtZS1mb250Om1pbm9yLWJpZGk7CisJY29sb3I6IzAwMjA1MjsKKwltc28tYW5zaS1sYW5ndWFnZTpFTi1VUzsKKwltc28tZmFyZWFzdC1sYW5ndWFnZTpFTi1VUzt9CisuTXNvUGFwRGVmYXVsdAorCXttc28tc3R5bGUtdHlwZTpleHBvcnQtb25seTsKKwlsaW5lLWhlaWdodDoxMTUlO30KK0BwYWdlIFdvcmRTZWN0aW9uMQorCXtzaXplOjguNWluIDExLjBpbjsKKwltYXJnaW46NzAuODVwdCA3MC44NXB0IDcwLjg1cHQgNzAuODVwdDsKKwltc28taGVhZGVyLW1hcmdpbjouNWluOworCW1zby1mb290ZXItbWFyZ2luOi41aW47CisJbXNvLXBhcGVyLXNvdXJjZTowO30KK2Rpdi5Xb3JkU2VjdGlvbjEKKwl7cGFnZTpXb3JkU2VjdGlvbjE7fQorIC8qIExpc3QgRGVmaW5pdGlvbnMgKi8KKyBAbGlzdCBsMAorCXttc28tbGlzdC1pZDoxMzQwNzM3Nzg2OworCW1zby1saXN0LXRlbXBsYXRlLWlkczo4NTkyMzY5MDA7fQorQGxpc3QgbDA6bGV2ZWwxCisJe21zby1sZXZlbC1udW1iZXItZm9ybWF0OmJ1bGxldDsKKwltc28tbGV2ZWwtdGV4dDomIzYxNjIzOzsKKwltc28tbGV2ZWwtdGFiLXN0b3A6LjVpbjsKKwltc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7CisJdGV4dC1pbmRlbnQ6LS4yNWluOworCW1zby1hbnNpLWZvbnQtc2l6ZToxMC4wcHQ7CisJZm9udC1mYW1pbHk6U3ltYm9sO30KK0BsaXN0IGwwOmxldmVsMgorCXttc28tbGV2ZWwtbnVtYmVyLWZvcm1hdDpidWxsZXQ7CisJbXNvLWxldmVsLXRleHQ6bzsKKwltc28tbGV2ZWwtdGFiLXN0b3A6MS4waW47CisJbXNvLWxldmVsLW51bWJlci1wb3NpdGlvbjpsZWZ0OworCXRleHQtaW5kZW50Oi0uMjVpbjsKKwltc28tYW5zaS1mb250LXNpemU6MTAuMHB0OworCWZvbnQtZmFtaWx5OiJDb3VyaWVyIE5ldyI7CisJbXNvLWJpZGktZm9udC1mYW1pbHk6IlRpbWVzIE5ldyBSb21hbiI7fQorQGxpc3QgbDA6bGV2ZWwzCisJe21zby1sZXZlbC1udW1iZXItZm9ybWF0OmJ1bGxldDsKKwltc28tbGV2ZWwtdGV4dDomIzYxNjA3OzsKKwltc28tbGV2ZWwtdGFiLXN0b3A6MS41aW47CisJbXNvLWxldmVsLW51bWJlci1wb3NpdGlvbjpsZWZ0OworCXRleHQtaW5kZW50Oi0uMjVpbjsKKwltc28tYW5zaS1mb250LXNpemU6MTAuMHB0OworCWZvbnQtZmFtaWx5OldpbmdkaW5nczt9CitAbGlzdCBsMDpsZXZlbDQKKwl7bXNvLWxldmVsLW51bWJlci1mb3JtYXQ6YnVsbGV0OworCW1zby1sZXZlbC10ZXh0OiYjNjE2MDc7OworCW1zby1sZXZlbC10YWItc3RvcDoyLjBpbjsKKwltc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7CisJdGV4dC1pbmRlbnQ6LS4yNWluOworCW1zby1hbnNpLWZvbnQtc2l6ZToxMC4wcHQ7CisJZm9udC1mYW1pbHk6V2luZ2RpbmdzO30KK0BsaXN0IGwwOmxldmVsNQorCXttc28tbGV2ZWwtbnVtYmVyLWZvcm1hdDpidWxsZXQ7CisJbXNvLWxldmVsLXRleHQ6JiM2MTYwNzs7CisJbXNvLWxldmVsLXRhYi1zdG9wOjIuNWluOworCW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246bGVmdDsKKwl0ZXh0LWluZGVudDotLjI1aW47CisJbXNvLWFuc2ktZm9udC1zaXplOjEwLjBwdDsKKwlmb250LWZhbWlseTpXaW5nZGluZ3M7fQorQGxpc3QgbDA6bGV2ZWw2CisJe21zby1sZXZlbC1udW1iZXItZm9ybWF0OmJ1bGxldDsKKwltc28tbGV2ZWwtdGV4dDomIzYxNjA3OzsKKwltc28tbGV2ZWwtdGFiLXN0b3A6My4waW47CisJbXNvLWxldmVsLW51bWJlci1wb3NpdGlvbjpsZWZ0OworCXRleHQtaW5kZW50Oi0uMjVpbjsKKwltc28tYW5zaS1mb250LXNpemU6MTAuMHB0OworCWZvbnQtZmFtaWx5OldpbmdkaW5nczt9CitAbGlzdCBsMDpsZXZlbDcKKwl7bXNvLWxldmVsLW51bWJlci1mb3JtYXQ6YnVsbGV0OworCW1zby1sZXZlbC10ZXh0OiYjNjE2MDc7OworCW1zby1sZXZlbC10YWItc3RvcDozLjVpbjsKKwltc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7CisJdGV4dC1pbmRlbnQ6LS4yNWluOworCW1zby1hbnNpLWZvbnQtc2l6ZToxMC4wcHQ7CisJZm9udC1mYW1pbHk6V2luZ2RpbmdzO30KK0BsaXN0IGwwOmxldmVsOAorCXttc28tbGV2ZWwtbnVtYmVyLWZvcm1hdDpidWxsZXQ7CisJbXNvLWxldmVsLXRleHQ6JiM2MTYwNzs7CisJbXNvLWxldmVsLXRhYi1zdG9wOjQuMGluOworCW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246bGVmdDsKKwl0ZXh0LWluZGVudDotLjI1aW47CisJbXNvLWFuc2ktZm9udC1zaXplOjEwLjBwdDsKKwlmb250LWZhbWlseTpXaW5nZGluZ3M7fQorQGxpc3QgbDA6bGV2ZWw5CisJe21zby1sZXZlbC1udW1iZXItZm9ybWF0OmJ1bGxldDsKKwltc28tbGV2ZWwtdGV4dDomIzYxNjA3OzsKKwltc28tbGV2ZWwtdGFiLXN0b3A6NC41aW47CisJbXNvLWxldmVsLW51bWJlci1wb3NpdGlvbjpsZWZ0OworCXRleHQtaW5kZW50Oi0uMjVpbjsKKwltc28tYW5zaS1mb250LXNpemU6MTAuMHB0OworCWZvbnQtZmFtaWx5OldpbmdkaW5nczt9CitvbAorCXttYXJnaW4tYm90dG9tOjBpbjt9Cit1bAorCXttYXJnaW4tYm90dG9tOjBpbjt9CistLT4KKzwvc3R5bGU+PCEtLVtpZiBndGUgbXNvIDEwXT4KKzxzdHlsZT4KKyAvKiBTdHlsZSBEZWZpbml0aW9ucyAqLworIHRhYmxlLk1zb05vcm1hbFRhYmxlCisJe21zby1zdHlsZS1uYW1lOiJUYWJsZSBOb3JtYWwiOworCW1zby10c3R5bGUtcm93YmFuZC1zaXplOjA7CisJbXNvLXRzdHlsZS1jb2xiYW5kLXNpemU6MDsKKwltc28tc3R5bGUtbm9zaG93OnllczsKKwltc28tc3R5bGUtcHJpb3JpdHk6OTk7CisJbXNvLXN0eWxlLXBhcmVudDoiIjsKKwltc28tcGFkZGluZy1hbHQ6MGluIDUuNHB0IDBpbiA1LjRwdDsKKwltc28tcGFyYS1tYXJnaW46MGluOworCWxpbmUtaGVpZ2h0OjExNSU7CisJbXNvLXBhZ2luYXRpb246d2lkb3ctb3JwaGFuOworCWZvbnQtc2l6ZToxMS4wcHQ7CisJZm9udC1mYW1pbHk6IkFyaWFsIixzYW5zLXNlcmlmOworCW1zby1iaWRpLWZvbnQtZmFtaWx5OiJUaW1lcyBOZXcgUm9tYW4iOworCW1zby1iaWRpLXRoZW1lLWZvbnQ6bWlub3ItYmlkaTsKKwljb2xvcjojMDAyMDUyOworCW1zby1hbnNpLWxhbmd1YWdlOkVOLVVTOworCW1zby1mYXJlYXN0LWxhbmd1YWdlOkVOLVVTO30KKzwvc3R5bGU+Cis8IVtlbmRpZl0tLT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDMgc3R5bGU9ImJhY2tncm91bmQ6IHJnYig1MSwgMTAyLCAyNTUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub25lIHJlcGVhdCBzY3JvbGwgMCUgNTAlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLW1vei1iYWNrZ3JvdW5kLWNsaXA6IC1tb3otaW5pdGlhbDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC1tb3otYmFja2dyb3VuZC1vcmlnaW46IC1tb3otaW5pdGlhbDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC1tb3otYmFja2dyb3VuZC1pbmxpbmUtcG9saWN5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLW1vei1pbml0aWFsOyBtYXJnaW4tcmlnaHQ6IDUwMHB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O0FyaWFsJnF1b3Q7LHNhbnMtc2VyaWY7IGNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGl0ZTsiPnYxLjIuOS8gMTItRmVicnVhcnktMjAyMTwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2gzPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW46IDQuNXB0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwaW4gNC41cHQgMC4yNWluOyI+PGI+PHU+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6IGJsYWNrOyI+TWFpbiBDaGFuZ2VzPC9zcGFuPjwvdT48L2I+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPjxicj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj48L3A+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJkaXNjIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkdlbmVyYWwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVzIHRvIGZpeCBrbm93biBkZWZlY3RzIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuaGFuY2VtZW50cyA8c3BhbiBjbGFzcz0iZ3JhbWUiPmltcGxlbWVudGF0aW9uPC9zcGFuPjwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjxicj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGI+PHU+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6IGJsYWNrOyI+PG86cD48L286cD48L3NwYW4+PC91PjwvYj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIHR5cGU9ImRpc2MiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIHR5cGU9ImNpcmNsZSI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvOnA+PC9vOnA+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCB0eXBlPSJzcXVhcmUiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMyBzdHlsZT0iYmFja2dyb3VuZDogcmdiKDUxLCAxMDIsIDI1NSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbmUgcmVwZWF0IHNjcm9sbCAwJSA1MCU7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtbW96LWJhY2tncm91bmQtY2xpcDogLW1vei1pbml0aWFsOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLW1vei1iYWNrZ3JvdW5kLW9yaWdpbjogLW1vei1pbml0aWFsOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLW1vei1iYWNrZ3JvdW5kLWlubGluZS1wb2xpY3k6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtbW96LWluaXRpYWw7IG1hcmdpbi1yaWdodDogNTAwcHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7QXJpYWwmcXVvdDssc2Fucy1zZXJpZjsgY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaXRlOyI+VjEuMi44LyAxMy1GZWJydWFyeS0yMDIwPC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvaDM+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbjogNC41cHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDBpbiA0LjVwdCAwLjI1aW47Ij48Yj48dT48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogYmxhY2s7Ij5NYWluIENoYW5nZXM8L3NwYW4+PC91PjwvYj48L3A+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJkaXNjIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkdlbmVyYWwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVzIHRvIGZpeCBrbm93biBkZWZlY3RzIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuaGFuY2VtZW50cyA8c3BhbiBjbGFzcz0iZ3JhbWUiPmltcGxlbWVudGF0aW9uPC9zcGFuPjwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFML0xMCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHUElPJm5ic3A7PC9zcGFuPjwvYj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZTwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlJm5ic3A7R1BJTworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2U8Yj4mbmJzcDs8L2I+dG8KKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXZvaWQgdW53YW50ZWQgcHVsc2Ugb24gR1BJTyA8c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iZ3JhbWUiPlBpbidzPC9zcGFuPjwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJMkMmbmJzcDs8L3NwYW4+PC9iPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+dXBkYXRlPC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCB0eXBlPSJjaXJjbGUiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQUxfSTJDX0VWXzxzcGFuIGNsYXNzPSJncmFtZSI+SVJRSGFuZGxlcig8L3NwYW4+KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVBJIHRvIGZpeCBJMkMgc2VuZCBicmVhaworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNzdWUmbmJzcDs8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9InNxdWFyZSI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkFkZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsIGNoZWNrIG9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpMmMtJmd0O2hkbWF0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGRtYXR4LSZndDtYZmVyQ3BsdENhbGxiYWNrLCZuYnNwO2hpMmMtJmd0O2hkbWFyeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGRtYXJ4LSZndDtYZmVyQ3BsdENhbGxiYWNrIGluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEkyQ19NYXN0ZXJfPHNwYW4gY2xhc3M9ImdyYW1lIj5TQig8L3NwYW4+KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBUEkgdG8gYXZvaWQmbmJzcDtlbmFibGluZyBETUEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdCZuYnNwO3doZW4gSVQgbW9kZSBpcyB1c2VkLjwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVwZGF0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFMX0kyQ19FUl88c3BhbiBjbGFzcz0iZ3JhbWUiPklSUUhhbmRsZXIoPC9zcGFuPikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFQSSB0byBmaXggYWNrbm93bGVkZ2UgZmFpbHVyZSBpc3N1ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBJMkMmbmJzcDttZW1vcnkgSVQgcHJvY2Vzc2VzPC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT0ic3F1YXJlIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+Jm5ic3A7QWRkJm5ic3A7c3RvcAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25kaXRpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdGlvbiZuYnNwO3doZW4mbmJzcDtOQUNLCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9jY3Vycy48L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5VcGRhdGUmbmJzcDtIQUxfSTJDXzxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJncmFtZSI+SW5pdCg8L3NwYW4+KSBBUEkgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcmNlIHNvZnR3YXJlIHJlc2V0IGJlZm9yZSBzZXR0aW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgSTJDIGNvbmZpZ3VyYXRpb248L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQUwgSTJDIHByb2Nlc3NlcyB0byByZXBvcnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVycm9yQ29kZSZuYnNwO3doZW4gd3JvbmcgSTJDIHN0YXJ0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25kaXRpb24gPHNwYW4gY2xhc3M9ImdyYW1lIj5vY2N1cnM8L3NwYW4+PC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT0ic3F1YXJlIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+Jm5ic3A7QWRkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyZuYnNwO0Vycm9yQ29kZSBkZWZpbmU6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTF9JMkNfV1JPTkdfU1RBUlQ8L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+Jm5ic3A7U2V0Jm5ic3A7RXJyb3JDb2RlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtZXRlciBpbiZuYnNwO0kyQyBoYW5kbGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8mbmJzcDtIQUxfSTJDX1dST05HX1NUQVJUPC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlJm5ic3A7STJDXzxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJncmFtZSI+RE1BWGZlckNwbHQoPC9zcGFuPiksCisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEkyQ19ETUFFcnJvcigpIGFuZCBJMkNfRE1BQWJvcnQoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVBJcyB0byBmaXggaGFyZGZhdWx0IGlzc3VlIHdoZW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhkbWF0eCBhbmQgaGRtYXJ4Jm5ic3A7cGFyYW1ldGVycyBpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaTJjIGhhbmRsZSBhcmVuJ3QgaW5pdGlhbGl6ZWQgKE5VTEwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50ZXIpLjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT0ic3F1YXJlIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+QWRkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWwgY2hlY2sgb24gaGkyYy0mZ3Q7aGRtdHgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGhpMmMtJmd0O2hkbWFyeCBiZWZvcmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXR0aW5nJm5ic3A7RE1BIFR4L1J4IGNvbXBsZXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJncmFtZSI+Y2FsbGJhY2s8L3NwYW4+PC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQURDIDwvc3Bhbj48L2I+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5VcGRhdGU8L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkFkZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkFEQ19JTlRFUk5BTF9OT05FIiBjaGFubmVsIHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlIHRoZSBWQkFUICZhbXA7IFRTVlJFRkUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5uZWwuPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRENNSSA8L3NwYW4+PC9iPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+dXBkYXRlPC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0iY2lyY2xlIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5BZGQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERDTUlfU3luY1VubWFza1R5cGVEZWYgc3RydWN0dXJlIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFMX0RDTUlfPHNwYW4gY2xhc3M9ImdyYW1lIj5Db25maWdTeW5jVW5tYXNrKDwvc3Bhbj4pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBUEkgdG8gbWFuYWdlIGVtYmVkZGVkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeW5jaHJvbml6YXRpb24gZGVsaW1pdGVycyB1bm1hc2tzPC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVYVEk8L3NwYW4+PC9iPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+R2VuZXJhbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlIHRvIGVuaGFuY2UgSEFMIEVYVEkgZHJpdmVyIDxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJncmFtZSI+cm9idXN0bmVzczwvc3Bhbj4mbmJzcDs8L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPSJzcXVhcmUiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5BZGQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbCBhc3NlcnQgY2hlY2sgb24gRVhUSQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWcgPHNwYW4gY2xhc3M9ImdyYW1lIj5saW5lczwvc3Bhbj48L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIGNvbXB1dGUgRVhUSSBsaW5lIG1hc2sgYmVmb3JlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWQvd3JpdGUgYWNjZXNzIHRvIEVYVEkgPHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iZ3JhbWUiPnJlZ2lzdGVyczwvc3Bhbj48L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5VcGRhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVYVEkgY2FsbGJhY2tzIG1hbmFnZW1lbnQgdG8gYmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBsaWFudCB3aXRoIHJlZmVyZW5jZSBtYW51YWw6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbmx5IG9uZSBQUiByZWdpc3RlciBmb3IgcmlzaW5nIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsbGluZyBpbnRlcnJ1cHRzLjwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9InNxdWFyZSI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVwZGF0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbWV0ZXJzIGluIEVYVElfSGFuZGxlVHlwZURlZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3R1cmU6IG1lcmdlIEhBTCBFWFRJCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJpc2luZ0NhbGxiYWNrIGFuZCBGYWxsaW5nQ2FsbGJhY2sKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gb25seSBvbmUgUGVuZGluZ0NhbGxiYWNrLjwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5SZW1vdmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFMX0VYVElfUklTSU5HX0NCX0lEIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQUxfRVhUSV9GQUxMSU5HX0NCX0lEIHZhbHVlcyBmcm9tCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVYVElfQ2FsbGJhY2tJRFR5cGVEZWYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW51bWVyYXRpb24uPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQUxfRVhUSV88c3BhbiBjbGFzcz0iZ3JhbWUiPklSUUhhbmRsZXIoPC9zcGFuPikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFQSSB0byBzZXJ2ZSBpbnRlcnJ1cHRzIGNvcnJlY3RseS48L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPSJzcXVhcmUiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5VcGRhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gY29tcHV0ZSBFWFRJIGxpbmUgbWFzayBiZWZvcmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlIEVYVEkgaW50ZXJydXB0Ljwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVwZGF0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gc3VwcG9ydCBHUElPIHBvcnQgaW50ZXJydXB0czo8L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPSJzcXVhcmUiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5BZGQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3ICJHUElPU2VsIiBwYXJhbWV0ZXIgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRVhUSV9Db25maWdUeXBlRGVmIHN0cnVjdHVyZTwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBU0gmbmJzcDs8L3NwYW4+PC9iPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+dXBkYXRlPC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0iY2lyY2xlIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5OdWxsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb2ludGVyIG9uIGhhbmRsZXIgImhoYXNoIiBpcyBub3cKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrZWQgYmVmb3JlIGFjY2Vzc2luZyBzdHJ1Y3R1cmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lbWJlciAiaGhhc2gtJmd0O0luaXQuRGF0YVR5cGUiIGluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgZm9sbG93aW5nIEFQSTo8L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPSJzcXVhcmUiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUxfSEFTSF88c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJncmFtZSI+SW5pdCg8L3NwYW4+KTwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkZvbGxvd2luZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGI+aW50ZXJydXB0LWJhc2VkPC9iPiBBUElzIGhhdmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlZW4gYWRkZWQuIEludGVycnVwdCBtb2RlIGNvdWxkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxvdyB0aGUgTUNVIHRvIGVudGVyICJTbGVlcCIgbW9kZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgYSBkYXRhIGJsb2NrIGlzIGJlaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzZWQuIFBsZWFzZSByZWZlciB0byB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIjIyMjIyBIb3cgdG8gdXNlIHRoaXMgZHJpdmVyICMjIyMjIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBmb3IgZGV0YWlscyBhYm91dCB0aGVpciB1c2UuPC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT0ic3F1YXJlIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMX0hBU0hfU0hBMV9BY2NtbHRfPHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iZ3JhbWUiPklUKDwvc3Bhbj4pPC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTF9IQVNIX01ENV9BY2NtbHRfPHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iZ3JhbWUiPklUKDwvc3Bhbj4pPC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTF9IQVNIRXhfU0hBMjI0X0FjY21sdF88c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJncmFtZSI+SVQoPC9zcGFuPik8L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMX0hBU0hFeF9TSEEyNTZfQWNjbWx0XzxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImdyYW1lIj5JVCg8L3NwYW4+KTwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkZvbGxvd2luZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGI+YWxpYXNlczwvYj4gaGF2ZSBiZWVuIGFkZGVkIChqdXN0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Yj5mb3IgY2xhcml0eSBzYWtlPC9iPikgYXMgdGhleQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhbGwgYmUgdXNlZCBhdCB0aGUgPGI+ZW5kPC9iPiBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGNvbXB1dGF0aW9uIG9mIGEgbXVsdGktYnVmZmVycworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZSBhbmQgbm90IGF0IHRoZSBzdGFydDo8L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPSJzcXVhcmUiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUxfSEFTSF9TSEExX0FjY21sdF88c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJncmFtZSI+RW5kKDwvc3Bhbj4pIHRvIGJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZWQgaW5zdGVhZCBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQUxfSEFTSF9TSEExX1N0YXJ0KCk8L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMX0hBU0hfTUQ1X0FjY21sdF88c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJncmFtZSI+RW5kKDwvc3Bhbj4pIHRvIGJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZWQgaW5zdGVhZCBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQUxfSEFTSF9NRDVfU3RhcnQoKTwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUxfSEFTSF9TSEExX0FjY21sdF9FbmRfPHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iZ3JhbWUiPklUKDwvc3Bhbj4pIHRvIGJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZWQgaW5zdGVhZCBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQUxfSEFTSF9TSEExX1N0YXJ0X0lUKCk8L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMX0hBU0hfTUQ1X0FjY21sdF9FbmRfPHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iZ3JhbWUiPklUKDwvc3Bhbj4pIHRvIGJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZWQgaW5zdGVhZCBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQUxfSEFTSF9NRDVfU3RhcnRfSVQoKTwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUxfSEFTSEV4X1NIQTIyNF9BY2NtbHRfPHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iZ3JhbWUiPkVuZCg8L3NwYW4+KSB0byBiZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VkIGluc3RlYWQgb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFMX0hBU0hFeF9TSEEyMjRfU3RhcnQoKTwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUxfSEFTSEV4X1NIQTI1Nl9BY2NtbHRfPHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iZ3JhbWUiPkVuZCg8L3NwYW4+KSB0byBiZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VkIGluc3RlYWQgb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFMX0hBU0hFeF9TSEEyNTZfU3RhcnQoKTwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUxfSEFTSEV4X1NIQTIyNF9BY2NtbHRfRW5kXzxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImdyYW1lIj5JVCg8L3NwYW4+KSB0byBiZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VkIGluc3RlYWQgb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFMX0hBU0hFeF9TSEEyMjRfU3RhcnRfSVQoKTwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUxfSEFTSEV4X1NIQTI1Nl9BY2NtbHRfRW5kXzxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImdyYW1lIj5JVCg8L3NwYW4+KSB0byBiZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VkIGluc3RlYWQgb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFMX0hBU0hFeF9TSEEyNTZfU3RhcnRfSVQoKTwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPk1JU1JBQy0yMDEyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydWxlIFIuNS4xIChpZGVudGlmaWVycyBzaGFsbCBiZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzdGluY3QgaW4gdGhlIGZpcnN0IDMxIGNoYXJhY3RlcnMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdHJhaW5lZCB0aGUgbmFtaW5nIG9mIHRoZSBhYm92ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdGVkIGFsaWFzZXMgKGUuZy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTF9IQVNIRXhfU0hBMjU2XzxiPkFjY21sdDwvYj5fPHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImdyYW1lIj5FbmQoPC9zcGFuPikgY291bGQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vdCBiZSBuYW1lZCBIQUxfSEFTSEV4X1NIQTI1Nl88Yj5BY2N1bXVsYXRlPC9iPl9FbmQoKS4KKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3RoZXJ3aXNlIHRoZSBuYW1lIHdvdWxkIGhhdmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZsaWN0ZWQgd2l0aCBIQUxfSEFTSEV4X1NIQTI1Nl88Yj5BY2N1bXVsYXRlPC9iPl9FbmRfPHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImdyYW1lIj5JVCg8L3NwYW4+KSkuIEluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmRlciB0byBoYXZlIGFsaWduZWQgbmFtZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbGxvd2luZyBBUElzIGhhdmUgYmVlbiByZW5hbWVkOjwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9InNxdWFyZSI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTF9IQVNIX01ENV88c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJncmFtZSI+QWNjdW11bGF0ZSg8L3NwYW4+KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW5hbWVkIEhBTF9IQVNIX01ENV9BY2NtbHQoKTwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUxfSEFTSF9TSEExXzxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImdyYW1lIj5BY2N1bXVsYXRlKDwvc3Bhbj4pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmFtZWQgSEFMX0hBU0hfU0hBMV9BY2NtbHQoKTwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUxfSEFTSEV4X1NIQTIyNF88c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJncmFtZSI+QWNjdW11bGF0ZSg8L3NwYW4+KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW5hbWVkIEhBTF9IQVNIRXhfU0hBMjI0X0FjY21sdCgpPC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTF9IQVNIRXhfU0hBMjU2XzxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImdyYW1lIj5BY2N1bXVsYXRlKDwvc3Bhbj4pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmFtZWQgSEFMX0hBU0hFeF9TSEEyNTZfQWNjbWx0KCk8L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQVNICisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Yj5oYW5kbGVyPC9iPiBzdGF0ZSBpcyA8Yj5ubyA8c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJncmFtZSI+bW9yZTwvc3Bhbj48L2I+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNldCB0byBIQUxfSEFTSF9TVEFURV9SRUFEWSA8Yj5vbmNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERNQSBoYXMgYmVlbiBzdGFydGVkPC9iPiBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbGxvd2luZyBBUElzOjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT0ic3F1YXJlIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMX0hBU0hfTUQ1X1N0YXJ0XzxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImdyYW1lIj5ETUEoPC9zcGFuPik8L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMX0hNQUNfTUQ1X1N0YXJ0XzxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImdyYW1lIj5ETUEoPC9zcGFuPik8L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMX0hBU0hfU0hBMV9TdGFydF88c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJncmFtZSI+RE1BKDwvc3Bhbj4pPC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTF9ITUFDX1NIQTFfU3RhcnRfPHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iZ3JhbWUiPkRNQSg8L3NwYW4+KTwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBU0gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxiPnBoYXNlPC9iPiBzdGF0ZSBpcyBub3cgc2V0IHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQUxfSEFTSF9QSEFTRV9SRUFEWTxiPiBvbmNlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWdlc3QgaGFzIGJlZW4gcmVhZDwvYj4gaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb2xsb3dpbmcgQVBJczo8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9InNxdWFyZSI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBU0hfPHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iZ3JhbWUiPklUKDwvc3Bhbj4pPC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhNQUNfPHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iZ3JhbWUiPlByb2Nlc3NpbmcoPC9zcGFuPik8L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFTSF88c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJncmFtZSI+U3RhcnQoPC9zcGFuPik8L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFTSF88c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJncmFtZSI+RmluaXNoKDwvc3Bhbj4pPC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+Q2FzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2YgYSBsYXJnZSBidWZmZXIgc2NhdHRlcmVkIGFyb3VuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gbWVtb3J5IGVhY2ggcGllY2Ugb2Ygd2hpY2ggaXMgPGI+bm90PC9iPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmVjZXNzYXJpbHkgYSA8Yj5tdWx0aXBsZSBvZiA0PC9iPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnl0ZXMgaW4gbGVuZ3RoLjwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9InNxdWFyZSI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gIiMjIyMjIEhvdyB0byB1c2UgdGhpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkcml2ZXIgIyMjIyMiLCBzdWItc2VjdGlvbiAiKioqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlbWFya3Mgb24gbWVzc2FnZSBsZW5ndGggKioqIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRlZCB0byBwcm92aWRlIHJlY29tbWVuZGF0aW9ucworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byBmb2xsb3cgaW4gc3VjaCBjYXNlLjwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5ObworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RpZmljYXRpb24gb2YgdGhlIGRyaXZlciBhcyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm9vdC1jYXVzZSBpcyBhdCBkZXNpZ24tbGV2ZWwuPC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0RNTUMmbmJzcDs8L3NwYW4+PC9iPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+dXBkYXRlPC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0iY2lyY2xlIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5GaXgmbmJzcDt0eXBvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiAiRmlsZUZvcm1hdEdyb3VwIiBwYXJhbWV0ZXIgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBIQUxfTU1DX0NhcmRDU0RUeXBlRGVmIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFMX1NEX0NhcmRDU0RUeXBlRGVmIHN0cnVjdHVyZXMuPC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkZpeAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW4gaW1wcm92ZSBoYW5kbGUgc3RhdGUgYW5kIGVycm9yIDxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJncmFtZSI+bWFuYWdlbWVudDwvc3Bhbj48L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+UmVuYW1lCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgZGVmaW5lZCBNTUMgY2FyZCBjYXBhY2l0eSB0eXBlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byBiZSBtb3JlIG1lYW5pbmdmdWw6PC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT0ic3F1YXJlIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxiPk1NQ19ISUdIX1ZPTFRBR0VfQ0FSRDwvYj4gdG8gPGI+TU1DCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTE9XX0NBUEFDSVRZX0NBUkQ8L2I+PC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVwZGF0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Yj5NTUNfRFVBTF9WT0xUQUdFX0NSQUQ8L2I+IHRvIDxiPk1NQ19ISUdIX0NBUEFDSVRZX0NBUkQ8L2I+PC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVNQSSA8L3NwYW4+PC9iPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+dXBkYXRlPC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0iY2lyY2xlIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5SZW1vdmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvY2sgbWVjaGFuaXNtIGZyb20gSEFMX1FTUElfPHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImdyYW1lIj5Jbml0KDwvc3Bhbj4pIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFMX1FTUElfRGVJbml0KCkgQVBJczwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuNXB0OyI+PGIgc3R5bGU9Im9ycGhhbnM6IDI7IHdpZG93czogMjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3b3JkLXNwYWNpbmc6IDBweDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTFBUSU0mbmJzcDs8L3NwYW4+PC9iPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9Im9ycGhhbnM6IDI7IHdpZG93czogMjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3b3JkLXNwYWNpbmc6IDBweDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZTwvc3Bhbj48L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkFkZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSBwb2xsaW5nIG1lY2hhbmlzbSB0byBjaGVjaworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb24mbmJzcDtMUFRJTV9GTEFHX1hYT0smbmJzcDtmbGFncworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gZGlmZmVyZW50IDxzcGFuIGNsYXNzPSJncmFtZSI+QVBJPC9zcGFuPiZuYnNwOzwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9InNxdWFyZSI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkFkZCZuYnNwO0xQVElNXzxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImdyYW1lIj5XYWl0Rm9yRmxhZyg8L3NwYW4+KSZuYnNwO0FQSSZuYnNwO3RvCisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2FpdCBmb3IgZmxhZyBzZXQuPC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlBlcmZvcm0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IGNoZWNrcyBvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQUxfTFBUSU1fU1RBVEVfVElNRU9VVC48L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5Xb3JrYXJvdW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byBmaXggTUNVIHNsYWNrIGluIHNsZWVwIDxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJncmFtZSI+bW9kZTwvc3Bhbj48L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPSJzcXVhcmUiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5VcGRhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19IQUxfTFBUSU1fRElTQUJMRSAoKSBtYWNybyB1c2VkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIGRpc2FibGUgTFBUSU0gSFcgaW5zdGFuY2U8L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPSJzcXVhcmUiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5SZW1vdmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgTFBUSU1fQ1JfRU5BQkxFIGJpdCBjbGVhci48L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5BZGQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhIG5ldyA8c3BhbiBjbGFzcz0iZ3JhbWUiPkFQSSZuYnNwOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTFBUSU08L3NwYW4+X0Rpc2FibGUoKSBkZWZpbmVkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4mbmJzcDsgaGFsX2xwdGltLmM8L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX0hBTF9MUFRJTV9SRVNFVF9IQU5ETEVfU1RBVEUoX19IQU5ETEVfXykKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFjcm8gYnkgYWRkaW5nIGEgc3BlY2lmaWMgLi4uLiB3aGVuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2luZyBjYWxsYmFjayByZWdpc3Rlcjwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5fX0hBTF9MUFRJTV9FTkFCTEU8L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+UmVtb3ZlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c3NlbGVzcyBjaGVjayBvbiBMUFRJTTIgaW4gdGhlIExMCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkcml2ZXIgc2luY2UgRjcgc3VwcG9ydCBvbmx5IG9uZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2Ugb2YgTFBUSU0uPC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVwZGF0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImdyYW1lIj50aGUmbmJzcDsgTEw8L3NwYW4+X0xQVElNX0RJU0FCTEUoKQorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBUEkgdXNlZCB0byBkaXNhYmxlIExQVElNIEhXCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT0ic3F1YXJlIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+TW92ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBUEkgZGVmaW5pdGlvbiB0byBsbF9scHRpbS5jPC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0LjVwdDsiPjxiIHN0eWxlPSJvcnBoYW5zOiAyOyB3aWRvd3M6IDI7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd29yZC1zcGFjaW5nOiAwcHg7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwmbmJzcDtUSU0mbmJzcDs8L3NwYW4+PC9iPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9Im9ycGhhbnM6IDI7IHdpZG93czogMjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3b3JkLXNwYWNpbmc6IDBweDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZTwvc3Bhbj48L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkFkZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IG1hY3JvcyB0byBlbmFibGUgYW5kIGRpc2FibGUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYXN0IG1vZGUgd2hlbiB1c2luZyB0aGUgb25lIHB1bHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RlIHRvIG91dHB1dCBhIHdhdmVmb3JtIHdpdGggYQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWluaW11bSA8c3BhbiBjbGFzcz0iZ3JhbWUiPmRlbGF5PC9zcGFuPjwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9InNxdWFyZSI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPl88c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJvcnBoYW5zOiAyOyB3aWRvd3M6IDI7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQ6IG5vbmU7IHdvcmQtc3BhY2luZzogMHB4OyI+X0hBTF9USU1fRU5BQkxFXzxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iZ3JhbWUiPk9DeEZBU1QoPC9zcGFuPikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgX19IQUxfVElNX0RJU0FCTEVfT0N4RkFTVCgpLjwvc3Bhbj48L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9Im9ycGhhbnM6IDI7IHdpZG93czogMjsgZmxvYXQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub25lOyB3b3JkLXNwYWNpbmc6IDBweDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5VcGRhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW5jb2RlciBpbnRlcmZhY2UgbW9kZSB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZWVwJm5ic3A7PHNwYW4gc3R5bGU9Im9ycGhhbnM6IDI7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkb3dzOiAyOyB3b3JkLXNwYWNpbmc6IDBweDsiPlRJTV9DQ0VSX0NDeE5QCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYml0cyA8c3BhbiBjbGFzcz0iZ3JhbWUiPmxvdzwvc3Bhbj48L3NwYW4+PG86cD48L286cD48L3NwYW4+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPSJzcXVhcmUiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5BZGQmbmJzcDtUSU1fRU5DT0RFUklOUFVUUE9MQVJJVFlfUklTSU5HCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUSU1fRU5DT0RFUklOUFVUUE9MQVJJVFlfRkFMTElORyZuYnNwO2RlZmluaXRpb25zCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIGRldGVybWluZSBlbmNvZGVyIGlucHV0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvbGFyaXR5Ljwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5BZGQmbmJzcDtJU19USU1fRU5DT0RFUklOUFVUXzxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImdyYW1lIj5QT0xBUklUWSg8L3NwYW4+KSZuYnNwO21hY3JvCisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gY2hlY2smbmJzcDt0aGUgZW5jb2RlciBpbnB1dAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb2xhcml0eS48L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTF9USU1fRW5jb2Rlcl88c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJncmFtZSI+SW5pdCg8L3NwYW4+KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBUEkmbmJzcDs8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPSJzcXVhcmUiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5SZXBsYWNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSVNfVElNX0lDXzxzcGFuIGNsYXNzPSJncmFtZSI+UE9MQVJJVFkoPC9zcGFuPikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYWNybyBieQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElTX1RJTV9FTkNPREVSSU5QVVRfUE9MQVJJVFkoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hY3JvLjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+Q29ycmVjdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JvbmcgaW5zdGFuY2UgcGFyYW1ldGVyIGNoZWNrIGluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmNvZGVyIDxzcGFuIGNsYXNzPSJncmFtZSI+bW9kZTwvc3Bhbj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT0ic3F1YXJlIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+UmVwbGFjZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJU19USU1fQ0MyX0lOU1RBTkNFIGJ5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElTX1RJTV9FTkNPREVSX0lOVEVSRkFDRV9JTlNUQU5DRQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBlbmNvZGVyIDxzcGFuIGNsYXNzPSJncmFtZSI+aW50ZXJmYWNlCisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6PC9zcGFuPiZuYnNwOzxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT0ic3F1YXJlIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMX1RJTV9FbmNvZGVyXzxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iZ3JhbWUiPlN0YXJ0KDwvc3Bhbj4pPG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMX1RJTV9FbmNvZGVyXzxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iZ3JhbWUiPlN0b3AoPC9zcGFuPik8bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUxfVElNX0VuY29kZXJfU3RhcnRfPHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJncmFtZSI+SVQoPC9zcGFuPik8bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUxfVElNX0VuY29kZXJfU3RvcF88c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImdyYW1lIj5JVCg8L3NwYW4+KTxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+UmVwbGFjZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJU19USU1fRE1BX0NDX0lOU1RBTkNFIGJ5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElTX1RJTV9FTkNPREVSX0lOVEVSRkFDRV9JTlNUQU5DRQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBlbmNvZGVyIGludGVyZmFjZSBpbiBETUEgPHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iZ3JhbWUiPm1vZGUgOjwvc3Bhbj4mbmJzcDs8bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9InNxdWFyZSI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTF9USU1fRW5jb2Rlcl9TdGFydF88c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImdyYW1lIj5ETUEoPC9zcGFuPik8bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUxfVElNX0VuY29kZXJfU3RvcF88c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImdyYW1lIj5ETUEoPC9zcGFuPik8bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iIj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5VcGRhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTF9USU1FeF88c3BhbiBjbGFzcz0iZ3JhbWUiPk1hc3RlckNvbmZpZ1N5bmNocm9uaXphdGlvbig8L3NwYW4+KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVBJIHRvIGF2b2lkIGZ1bmN0aW9uYWwgZXJyb3JzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQmbmJzcDthc3NlcnQgZmFpbHMgd2hlbiB1c2luZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29tZSBUSU0gaW5zdGFuY2VzIGFzIGlucHV0IHRyaWdnZXIuPG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9InNxdWFyZSI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlJlcGxhY2UmbmJzcDtJU19USU1fU1lOQ0hST188c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJncmFtZSI+SU5TVEFOQ0UoPC9zcGFuPikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFjcm8gYnkgSVNfVElNX01BU1RFUl9JTlNUQU5DRSgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hY3JvLiZuYnNwOzxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkFkZCZuYnNwO0lTX1RJTV9TTEFWRV88c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJncmFtZSI+SU5TVEFOQ0UoPC9zcGFuPikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFjcm8gdG8mbmJzcDtjaGVjayBvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUSU1fU01DUl9NU00gYml0LjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+UHJvdmlkZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IEFQSSZuYnNwO3RvIHNldCBhbmQgY2xlYXIgPHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImdyYW1lIj5VSUZSRU1BUDwvc3Bhbj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT0ic3F1YXJlIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+QWRkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBkZWZpbml0aW9uIGZvciBUSU0gVXBkYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEludGVycnVwdCBGbGFnIFJlbWFwPG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPSJzcXVhcmUiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5USU1fVUlGUkVNQVBfRElTQUJMRTxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlRJTV9VSUZSRU1BUF9FTkFCTEU8bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkFkZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgbWFjcm8gaW4gSEFMIGRyaXZlciB0byBlbmFibGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGRlc2FibGUgPHNwYW4gY2xhc3M9ImdyYW1lIj50aGUmbmJzcDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVcGRhdGU8L3NwYW4+IEludGVycnVwdCBGbGFnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlbWFwPG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPSJzcXVhcmUiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij4mbmJzcDtfX0hBTF9USU1fVUlGUkVNQVBfPHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJncmFtZSI+RU5BQkxFKDwvc3Bhbj4pPG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+X19IQUxfVElNX1VJRlJFTUFQXzxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iZ3JhbWUiPkRJU0FCTEUoPC9zcGFuPikvX19IQUxfVElNX0dFVF9VSUZDUFkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYWNybzxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+QWRkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBtZWNhbmlzbSB0byBjaGVjayB3aGV0aGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSZuYnNwO3VwZGF0ZSBpbnRlcnJ1cHQgZmxhZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoVUlGKSBjb3B5IGlzIHNldCBvciA8c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJncmFtZSI+bm90PC9zcGFuPiZuYnNwOzxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT0ic3F1YXJlIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+QWRkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIF9fSEFMX1RJTV9HRVRfPHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJncmFtZSI+VUlGQ1BZKDwvc3Bhbj4pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFjcm8gaW4gdGhlIEhBTCBkcml2ZXI8bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5BZGQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMTF9USU1fPHNwYW4gY2xhc3M9ImdyYW1lIj5Jc0FjdGl2ZVVJRkNQWSg8L3NwYW4+KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFQSSBpbiB0aGUgTEwgZHJpdmVyPG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5BZGQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IG1hY3JvIHRvIGNoZWNrIG9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSZuYnNwO1VwZGF0ZSBJbnRlcnJ1cHQgRmxhZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZW1hcCBtb2RlPG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPSJzcXVhcmUiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5JU19USU1fVUlGUkVNQVBfPHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJncmFtZSI+TU9ERSg8L3NwYW4+KTxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5SZW1vdmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzc2VsZXNzIGRlZmluZSBpbiB0aGUgTEwgPHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImdyYW1lIj5kcml2ZXI8L3NwYW4+Jm5ic3A7PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9InNxdWFyZSI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlRJTXhfQUYxX0JLSU5FCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8gVElNeF9BRjFfQktERkJLRSA8c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJncmFtZSI+LyAmbmJzcDtUSU14PC9zcGFuPl9BRjJfQksySU5FCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8gJm5ic3A7VElNeF9BRjJfQksyREZCS0UgLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbmJzcDtUSU14X0FGMl9CSzJJTlA8L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuNXB0OyI+PGIgc3R5bGU9Im9ycGhhbnM6IDI7IHdpZG93czogMjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3b3JkLXNwYWNpbmc6IDBweDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTCZuYnNwO1NNQVJUQ0FSRDwvc3Bhbj48L2I+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGU8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0iY2lyY2xlIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5VcGRhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNNQVJUQ0FSRF88c3BhbiBjbGFzcz0iZ3JhbWUiPlNldENvbmZpZyg8L3NwYW4+KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVBJLjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT0ic3F1YXJlIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+U3BsaXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFMX1JDQ19HZXRQQ0xLMTxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImdyYW1lIj5GcmVxKDwvc3Bhbj4pIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQUxfUkNDX0dldFBDTEsyRnJlcSgpIG1hY3JvcyBmcm9tCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBCUlIgY2FsY3VsYXRpb24uPC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTCZuYnNwO0lSREEmbmJzcDs8L3NwYW4+PC9iPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+dXBkYXRlPC9zcGFuPjxiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2I+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0iY2lyY2xlIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5VcGRhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElSREFfPHNwYW4gY2xhc3M9ImdyYW1lIj5TZXRDb25maWcoPC9zcGFuPikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFQSSZuYnNwOzwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT0ic3F1YXJlIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+U3BsaXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFMX1JDQ19HZXRQQ0xLMTxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImdyYW1lIj5GcmVxKDwvc3Bhbj4pIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQUxfUkNDX0dldFBDTEsyRnJlcSgpIG1hY3JvcyBmcm9tCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBJUkRBX0RJVl9TQU1QTElORzE2KCkgbWFjcm8uPC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb21lIEFQSSA8c3BhbiBjbGFzcz0iZ3JhbWUiPmRlc2NpcHRpb248L3NwYW4+PC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT0ic3F1YXJlIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMX0lSREFfPHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iZ3JhbWUiPlRyYW5zbWl0KDwvc3Bhbj4pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8mbmJzcDtIQUxfSVJEQV9UcmFuc21pdF9JVCgpPC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTF9JUkRBXzxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImdyYW1lIj5SZWNlaXZlKDwvc3Bhbj4pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8mbmJzcDtIQUxfSVJEQV9SZWNlaXZlX0lUKCk8L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMX0lSREFfVHJhbnNtaXRfPHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iZ3JhbWUiPkRNQSg8L3NwYW4+KSAvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTF9JUkRBX1JlY2VpdmVfRE1BKCk8L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSQ0MgPC9zcGFuPjwvYj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZTwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgSEFMX1JDQ188c3BhbiBjbGFzcz0iZ3JhbWUiPkNsb2NrQ29uZmlnKDwvc3Bhbj4pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgSEFMX1JDQ19EZUluaXQoKSBBUEkgdG8gZG9uJ3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG92ZXJ3cml0ZSB0aGUgY3VzdG9tIHRpY2sgcHJpb3JpdHk8L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQUxfUkNDXzxzcGFuIGNsYXNzPSJncmFtZSI+T3NjQ29uZmlnKDwvc3Bhbj4pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBUEkgdG8gZG9uJ3QgcmV0dXJuIEhBTF9FUlJPUiBpZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdCByZXBlYXRzIHRoZSBjdXJyZW50IFBMTAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwvTEwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVTQVJUPC9zcGFuPjwvYj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPiZuYnNwO3VwZGF0ZTwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+QWRkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdXBwb3J0IHRvIHRoZSBSZWNlaXZlciBUaW1lb3V0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnRlcnJ1cHQgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQUxfVVNBUlRfSVJRSGFuZGxlcjwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5VcGRhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvbWUgQVBJIDxzcGFuIGNsYXNzPSJncmFtZSI+ZGVzY2lwdGlvbjwvc3Bhbj4mbmJzcDs8L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPSJzcXVhcmUiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogMnB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMnB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTF9VU0FSVF88c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJncmFtZSI+VHJhbnNtaXQoPC9zcGFuPikKKy8mbmJzcDtIQUxfVVNBUlRfVHJhbnNtaXRfSVQoKSZuYnNwOzwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogMnB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMnB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTF9VU0FSVF88c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJncmFtZSI+UmVjZWl2ZSg8L3NwYW4+KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvJm5ic3A7SEFMX1VTQVJUX1JlY2VpdmVfSVQoKSZuYnNwOzwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogMnB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMnB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTF9VU0FSVF88c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJncmFtZSI+VHJhbnNtaXRSZWNlaXZlKDwvc3Bhbj4pCisvJm5ic3A7SEFMX1VTQVJUX1RyYW5zbWl0UmVjZWl2ZV9JVCgpJm5ic3A7PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiAycHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAycHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMX1VTQVJUX1RyYW5zbWl0XzxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImdyYW1lIj5ETUEoPC9zcGFuPikgLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQUxfVVNBUlRfUmVjZWl2ZV9ETUEoKSAvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTF9VU0FSVF9UcmFuc21pdFJlY2VpdmVfRE1BKCk8L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5VcGRhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVTQVJUXzxzcGFuIGNsYXNzPSJncmFtZSI+U2V0Q29uZmlnKDwvc3Bhbj4pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBUEkmbmJzcDs8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5TcGxpdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFMX1JDQ19HZXRQQ0xLMTxzcGFuIGNsYXNzPSJncmFtZSI+RnJlcSg8L3NwYW4+KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIEhBTF9SQ0NfR2V0UENMSzJGcmVxKCkgbWFjcm9zCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tIHRoZSBVU0FSVF9ESVZfU0FNUExJTkc4KCkgbWFjcm88L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+U3VwcG9ydAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RvcCBNb2RlIGZ1bmN0aW9uYWxpdGllcyBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVTQVJUIDxzcGFuIGNsYXNzPSJncmFtZSI+ZHJpdmVyPC9zcGFuPiZuYnNwOyZuYnNwOzwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImdyYW1lIj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+QWRkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZuYnNwO2RlZmluaXRpb248L3NwYW4+PC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPiBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVVNBUlRfSVNSX1JFQUNLIFVTQVJULCZuYnNwOyByZWNlaXZlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmFibGUgYWNrbm93bGVkZ2UgZmxhZyBpbiB0aGUgSEFMCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkcml2ZXI8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5BZGQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBmbGFnIGRlZmluaXRpb24gaW4gdGhlIExMIDxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJncmFtZSI+ZHJpdmVyPC9zcGFuPiZuYnNwOzwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9InNxdWFyZSI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiAycHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAycHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+TExfVVNBUlRfSUNSXzxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImdyYW1lIj5XVUNGJm5ic3A7IFdha2V1cDwvc3Bhbj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbSBTdG9wIG1vZGUgZmxhZyZuYnNwOzwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogMnB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMnB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkxMX1VTQVJUX0lTUl9XVUYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2FrZXVwIGZyb20gU3RvcCBtb2RlIDxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImdyYW1lIj5mbGFnPC9zcGFuPiZuYnNwOzwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogMnB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMnB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkxMX1VTQVJUX0lTUl9SRUFDSworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWNlaXZlIGVuYWJsZSBhY2tub3dsZWRnZSA8c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJncmFtZSI+ZmxhZzwvc3Bhbj4mbmJzcDs8L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDJwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDJwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5MTF9VU0FSVF9DUjNfV1VGSUUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2FrZXVwIGZyb20gU3RvcCBtb2RlIGludGVycnVwdCA8c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJncmFtZSI+ZW5hYmxlPC9zcGFuPjwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkFkZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IGRlZmluaXRpb24gb2YgdGhlIGRpZmZlcmVudAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQgd2hpY2ggYWN0aXZhdGVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUmbmJzcDt3YWtldXAgZnJvbSBTdG9wIG1vZGUgPHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImdyYW1lIj5mbGFnPC9zcGFuPjwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9InNxdWFyZSI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkxMXworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVU0FSVF9XQUtFVVBfT05fQUREUkVTUzwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogMnB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMnB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkxMX1VTQVJUX1dBS0VVUF9PTl9TVEFSVEJJVDwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogMnB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMnB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkxMX1VTQVJUX1dBS0VVUF9PTl9SWE5FPC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDJwdDsgbWFyZ2luLWJvdHRvbToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAycHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5BZGQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBBUEkgaW4gTEwgZHJpdmVyIHRvIHN1cHBvcnQgc3RvcAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImdyYW1lIj5tb2RlPC9zcGFuPjwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9InNxdWFyZSI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiAycHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAycHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+TExfVVNBUlRfPHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iZ3JhbWUiPkVuYWJsZUluU3RvcE1vZGUoPC9zcGFuPikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gZW5hYmxlIHRoZSBVU0FSVCBpbiBzdG9wIG1vZGU8L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDJwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDJwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5MTF9VU0FSVF88c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJncmFtZSI+RGlzYWJsZUluU3RvcE1vZGUoPC9zcGFuPikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gZGlzYWJsZSB0aGUgVVNBUlQgaW4gc3RvcCBtb2RlPC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiAycHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAycHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+TExfVVNBUlRfPHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iZ3JhbWUiPklzRW5hYmxlZEluU3RvcE1vZGUoPC9zcGFuPikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gY2hlY2sgaWYgdGhlIFVTQVJUIGlzIGVuYWJsZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3Igbm90IGluIHRoZSBzdG9wIG1vZGU8L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDJwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDJwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5MTF9VU0FSVF88c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJncmFtZSI+RW5hYmxlQ2xvY2tJblN0b3BNb2RlKDwvc3Bhbj4pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIGVuYWJsZSB0aGUgVVNBUlQgY2xvY2sgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3AgbW9kZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogMnB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMnB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkxMX1VTQVJUXzxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImdyYW1lIj5EaXNhYmxlQ2xvY2tJblN0b3BNb2RlKDwvc3Bhbj4pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIGRpc2FibGUgdGhlIFVTQVJUIGNsb2NrIGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9wIG1vZGU8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDJwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDJwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5MTF9VU0FSVF88c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJncmFtZSI+SXNDbG9ja0VuYWJsZWRJblN0b3BNb2RlKDwvc3Bhbj4pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIGNoZWNrIHdoZXRoZXIgVVNBUlQgY2xvY2sgYXJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZWQgb3Igbm90IGluIHRoZSBzdG9wIG1vZGU8L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogMnB0OyBtYXJnaW4tYm90dG9tOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDJwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkFkZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IEFQSSBpbiBMTCBkcml2ZXIgdG8gbWFuYWdlIGV2ZW50CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWxpc3RlZCB0byBXYWtlIFVQIEludGVycnVwdCBGbGFnPC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT0ic3F1YXJlIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDJwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDJwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5MTF9VU0FSVF88c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJncmFtZSI+U2V0V0tVUFR5cGUoPC9zcGFuPikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gc2VsZWN0IHRoZSBldmVudCB0eXBlIGZvciBXYWtlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVQIEludGVycnVwdCBGbGFnPC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiAycHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAycHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+TExfVVNBUlRfPHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iZ3JhbWUiPkdldFdLVVBUeXBlKDwvc3Bhbj4pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIGdldCZuYnNwOyB0aGUgZXZlbnQgdHlwZSBmb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2FrZSBVUCBJbnRlcnJ1cHQgRmxhZzwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogMnB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMnB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkxMX1VTQVJUX0lzQWN0aXZlRmxhZ188c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJncmFtZSI+V0tVUCg8L3NwYW4+KSB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaGVjayBpZiB0aGUgVVNBUlQgV2FrZSBVcCBmcm9tCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3AgbW9kZSBGbGFnIGlzIHNldCBvciBub3Q8L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDJwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDJwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5MTF9VU0FSVF9Jc0FjdGl2ZUZsYWdfPHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iZ3JhbWUiPlJFQUNLKDwvc3Bhbj4pIHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENoZWNrIGlmIHRoZSBVU0FSVCBSZWNlaXZlIEVuYWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBY2tub3dsZWRnZSBGbGFnIGlzIHNldCBvciBub3Q8L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDJwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDJwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5MTF9VU0FSVF9DbGVhckZsYWdfPHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iZ3JhbWUiPldLVVAoPC9zcGFuPikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2xlYXIgV2FrZSBVcCBmcm9tIHN0b3AgbW9kZSBGbGFnPC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDJwdDsgbWFyZ2luLWJvdHRvbToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAycHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5BZGQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBBUEkgaW4gTEwgZHJpdmVyIHRvIG1hbmFnZSB3YWtlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cCBmcm9tIHN0b3AgPHNwYW4gY2xhc3M9ImdyYW1lIj5pbnRlcnJ1cHRpb248L3NwYW4+PC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT0ic3F1YXJlIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDJwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDJwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5MTF9VU0FSVF9FbmFibGVJVF88c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJncmFtZSI+V0tVUCg8L3NwYW4+KSB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbmFibGUgV2FrZSBVcCBmcm9tIFN0b3AgTW9kZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnRlcnJ1cHQ8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDJwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDJwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5MTF9VU0FSVF9EaXNhYmxlSVRfPHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iZ3JhbWUiPldLVVAoPC9zcGFuPikgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGlzYWJsZSBXYWtlIFVwIGZyb20gU3RvcCBNb2RlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEludGVycnVwdDwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogMnB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMnB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkxMX1VTQVJUX0lzRW5hYmxlZElUXzxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImdyYW1lIj5XS1VQKDwvc3Bhbj4pIHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENoZWNrIGlmIHRoZSBVU0FSVCBXYWtlIFVwIGZyb20KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RvcCBNb2RlIEludGVycnVwdCBpcyBlbmFibGVkIG9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vdDwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwvTEwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVTQiA8L3NwYW4+PC9iPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+dXBkYXRlPC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0iY2lyY2xlIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij4mbmJzcDtBZGQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsaW5nIFVTQiBob3N0IGJhYmJsZSBlcnJvciA8c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iZ3JhbWUiPmludGVycnVwdDwvc3Bhbj48L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+Jm5ic3A7Rml4CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbmFibGluZyBVTFBJIGludGVyZmFjZSBmb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYXRmb3JtcyB0aGF0IGludGVncmF0ZXMgVVNCIEhTIFBIWTwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij4mbmJzcDtGaXgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhvc3QgZGF0YSB0b2dnbGluZyBmb3IgSU4gSXNvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2ZlcnM8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij4mbmJzcDtFbnN1cmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIGRpc2FibGUgVVNCIEVQIGR1cmluZyBlbmRwb2ludCA8c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iZ3JhbWUiPmRlYWN0aXZhdGlvbjwvc3Bhbj48L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgzIHN0eWxlPSJiYWNrZ3JvdW5kOiByZ2IoNTEsIDEwMiwgMjU1KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9uZSByZXBlYXQgc2Nyb2xsIDAlIDUwJTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC1tb3otYmFja2dyb3VuZC1jbGlwOiAtbW96LWluaXRpYWw7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtbW96LWJhY2tncm91bmQtb3JpZ2luOiAtbW96LWluaXRpYWw7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtbW96LWJhY2tncm91bmQtaW5saW5lLXBvbGljeToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC1tb3otaW5pdGlhbDsgbWFyZ2luLXJpZ2h0OiA1MDBwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtBcmlhbCZxdW90OyxzYW5zLXNlcmlmOyBjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpdGU7Ij5WMS4yLjcvIDA4LUZlYnJ1YXJ5LTIwMTk8L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9oMz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luOiA0LjVwdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMGluIDQuNXB0IDAuMjVpbjsiPjxiPjx1PjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiBibGFjazsiPk1haW4gQ2hhbmdlczwvc3Bhbj48L3U+PC9iPjwvcD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImRpc2MiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+R2VuZXJhbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZXMgdG8gZml4IGtub3duIGRlZmVjdHMgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5oYW5jZW1lbnRzIDxzcGFuIGNsYXNzPSJncmFtZSI+aW1wbGVtZW50YXRpb248L3NwYW4+PC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkdlbmVyYWwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVzIHRvIGZpeCBDb2RlU29uYXIgY29tcGlsYXRpb24gPHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJncmFtZSI+d2FybmluZ3M8L3NwYW4+PC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkdlbmVyYWwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVzIHRvIGZpeCBTVzRTVE0zMiBjb21waWxhdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycyB1bmRlciA8c3BhbiBjbGFzcz0iZ3JhbWUiPkxpbnV4PC9zcGFuPjwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5HZW5lcmFsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlcyB0byBmaXggdGhlIHVzZXIgbWFudWFsIC5jaG0gPHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJncmFtZSI+ZmlsZXM8L3NwYW4+PC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkFkZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1cHBvcnQgb2YgSEFMIGNhbGxiYWNrIHJlZ2lzdHJhdGlvbiA8c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImdyYW1lIj5mZWF0dXJlPC9zcGFuPjwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5BZGQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXc8c3BhbiBjbGFzcz0iYXBwbGUtY29udmVydGVkLXNwYWNlIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+PGI+SEFMIEVYVEk8L2I+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJhcHBsZS1jb252ZXJ0ZWQtc3BhY2UiPiA8L3NwYW4+ZHJpdmVyPC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5UaGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbGxvd2luZyBjaGFuZ2VzIGRvbmUgb24gdGhlIEhBTAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHJpdmVycyByZXF1aXJlIGFuIHVwZGF0ZSBvbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uIGNvZGUgYmFzZWQgb24gb2xkZXIgSEFMCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZ3JhbWUiPnZlcnNpb25zPC9zcGFuPjwvc3Bhbj48L2I+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlJld29yaworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2YgSEFMIENSWVAgZHJpdmVyPGI+IChjb21wYXRpYmlsaXR5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrKSA8L2I+PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPSJzcXVhcmUiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1JZUCBkcml2ZXIgaGFzIGJlZW4gcmVkZXNpZ25lZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIG5ldyBBUEkncywgdG8gYnlwYXNzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbWl0YXRpb25zIG9uIGRhdGEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW5jcnlwdGlvbi9EZWNyeXB0aW9uIG1hbmFnZW1lbnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlc2VudCB3aXRoIHByZXZpb3VzIEhBTCBDUllQCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRyaXZlciB2ZXJzaW9uLjwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5UaGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IEhBTCBDUllQIGRyaXZlciBpcyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjb21tZW5kZWQgdmVyc2lvbi4gSXQgaXMgbG9jYXRlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcyB1c3VhbCBpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEcml2ZXJzL1NUTTMyRjd4eF9IQUxfRHJpdmVyL1NyYworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRHJpdmVycy9TVE0zMmY3eHhfSEFMX0RyaXZlci9JbmMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9sZGVycy4gSXQgY2FuIGJlIGVuYWJsZWQgdGhyb3VnaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggSEFMX0NSWVBfTU9EVUxFX0VOQUJMRUQgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RtMzJmN3h4X2hhbF9jb25mLmg8L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlZ2FjeSBIQUwgQ1JZUCBkcml2ZXIgaXMgbm8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZ2VyIHN1cHBvcnRlZC48L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFML0xMCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmljIDwvc3Bhbj48L2I+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij51cGRhdGU8L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkFkZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VwcG9ydCBvZiA8Yj5IQUwgY2FsbGJhY2sKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0cmF0aW9uPC9iPiA8c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iZ3JhbWUiPmZlYXR1cmU8L3NwYW4+PC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT0ic3F1YXJlIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZlYXR1cmUgZGlzYWJsZWQgYnkgZGVmYXVsdCBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdmFpbGFibGUgZm9yIHRoZSBmb2xsb3dpbmcgSEFMCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRyaXZlcnM6PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT0ic3F1YXJlIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48Yj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+QURDLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0FOLCBDRUMsIENSWVAsIERBQywgRENNSSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERGU0RNLCBETUEyRCwgRFNJLCBFVEgsIEhBU0gsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQ0QsIEkyQywgU01CVVMsIFVBUlQsIFVTQVJULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSVJEQSwgSlBFRywgU01BUlRDQVJELCBMUFRJTSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExUREMsIE1ESU9TLCBNTUMsIE5BTkQsIDxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJncmFtZSI+Tk9SLDwvc3Bhbj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBDRCwgUVNQSSwgUk5HLCBSVEMsIFNBSSwgU0QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTRFJBTSwgU1JBTSwgU1BESUZSWCwgU1BJLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSTJTLCBUSU0gPC9zcGFuPjwvYj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+YW5kPGI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXV0RHPC9iPjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZWF0dXJlIG1heSBiZSBlbmFibGVkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGl2aWR1YWxseSBwZXIgSEFMIDxpPlBQUDwvaT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHJpdmVyIGJ5IHNldHRpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvcnJlc3BvbmRpbmcgZGVmaW5pdGlvbiBVU0VfSEFMXzxpPlBQUDwvaT5fUkVHSVNURVJfQ0FMTEJBQ0tTCisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8mbmJzcDsxVSBpbiBzdG0zMmY3eHhfaGFsX2NvbmYuaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9qZWN0IGNvbmZpZ3VyYXRpb24gZmlsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodGVtcGxhdGUgZmlsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG0zMmY3eHhfaGFsX2NvbmZfdGVtcGxhdGUuaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdmFpbGFibGUgPHNwYW4gY2xhc3M9ImdyYW1lIj5mcm9tJm5ic3A7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRHJpdmVyczwvc3Bhbj4vU1RNMzJGN3h4X0hBTF9Ecml2ZXIvSW5jKTwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5PbmNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJncmFtZSI+ZW5hYmxlZCAsPC9zcGFuPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgdXNlciBhcHBsaWNhdGlvbiBtYXkgcmVzb3J0IHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTF9QUFBfUmVnaXN0ZXJDYWxsYmFjaygpIHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyIHNwZWNpZmljIGNhbGxiYWNrCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uKHMpIGFuZCB1bnJlZ2lzdGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0KHRoZW0pIHdpdGggSEFMXzxpPlBQUDwvaT5fVW5SZWdpc3RlckNhbGxiYWNrKCkuPC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+R2VuZXJhbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlcyB0byBmaXggTUlTUkEgMjAxMgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcGlsYXRpb24gPHNwYW4gY2xhc3M9ImdyYW1lIj5lcnJvcnM8L3NwYW4+PC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT0ic3F1YXJlIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMX0lTX0JJVF9TRVQoKS9IQUxfSVNfQklUXzxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImdyYW1lIj5DTFIoPC9zcGFuPikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFjcm9zIGltcGxlbWVudGF0aW9uIHVwZGF0ZTwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij4ic3RkaW8uaCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkZSB1cGRhdGVkIHdpdGggInN0ZGRlZi48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJncmFtZSI+aDwvc3Bhbj4iPC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1BJTzwvc3Bhbj48L2I+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVcGRhdGU8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0iY2lyY2xlIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUxfR1BJT188c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iZ3JhbWUiPlRvZ2dsZVBpbig8L3NwYW4+KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVBJIGltcGxlbWVudGF0aW9uIHVwZGF0ZTogdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltcHJvdmUgcm9idXN0bmVzczwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUxfR1BJT188c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iZ3JhbWUiPkRlSW5pdCg8L3NwYW4+KSBBUEkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZSB0byBlbnN1cmUgY2xlYXIgYWxsIEdQSU8gRVhUSQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVuZGluZyBpbnRlcnJ1cHRzLjwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDUllQPC9zcGFuPjwvYj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5UaGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1JZUF9Jbml0VHlwZURlZiA8L3NwYW4+PC9iPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPmlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBubyBtb3JlIHN1cHBvcnRlZCwgY2hhbmdlZCBieSA8Yj5DUllQX0NvbmZpZ1R5cGVkZWY8L2I+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byBhbGxvdyBjaGFuZ2luZyBwYXJhbWV0ZXJzIDxicj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzaW5nIEhBTF9DUllQXzxzcGFuIGNsYXNzPSJncmFtZSI+c2V0Q29uZmlnKDwvc3Bhbj4pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBUEkgd2l0aG91dCByZWluaXRpYWxpemUgdGhlIENSWVAgSVAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzaW5nIHRoZSBIQUxfQ1JZUF9Jbml0KCkgQVBJPC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPk5ldworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1ldGVycyBhZGRlZCBpbiB0aGUgPGI+Q1JZUF9Db25maWdUeXBlRGVmPC9iPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0dXJlOiA8Yj5CMDwvYj4gYW5kIDxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJncmFtZSI+PGI+RGF0YVdpZHRoVW5pdDwvYj48L3NwYW4+PC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPklucHV0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhIHNpemUgcGFyYW1ldGVyIGlzIGFkZGVkIGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGI+Q1JZUF9IYW5kbGVUeXBlRGVmPC9iPiBzdHJ1Y3R1cmU8L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+QWRkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgQVBJcyB0byBtYW5hZ2UgdGhlIENSWVAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb246PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPSJzcXVhcmUiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij4mbmJzcDtIQUxfQ1JZUF88c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJncmFtZSI+U2V0Q29uZmlnKDwvc3Bhbj4pPC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTF9DUllQXzxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImdyYW1lIj5HZXRDb25maWcoPC9zcGFuPik8L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5BZGQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBBUElzIHRvIG1hbmFnZSB0aGUgS2V5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXJpdmF0aW9uOjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT0ic3F1YXJlIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMX0NSWVBFeF88c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJncmFtZSI+RW5hYmxlQXV0b0tleURlcml2YXRpb24oPC9zcGFuPik8L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMX0NSWVBFeF88c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJncmFtZSI+RGlzYWJsZUF1dG9LZXlEZXJpdmF0aW9uKDwvc3Bhbj4pPC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+QWRkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgQVBJcyB0byBlbmNyeXB0IGFuZCBkZWNyeXB0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhOjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT0ic3F1YXJlIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMX0NSWVBfPHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iZ3JhbWUiPkVuY3lwdCg8L3NwYW4+KTwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUxfQ1JZUF88c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJncmFtZSI+RGVjeXB0KDwvc3Bhbj4pPC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTF9DUllQX0VuY3lwdF88c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJncmFtZSI+SVQoPC9zcGFuPik8L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMX0NSWVBfRGVjeXB0XzxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImdyYW1lIj5JVCg8L3NwYW4+KTwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUxfQ1JZUF9FbmN5cHRfPHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iZ3JhbWUiPkRNQSg8L3NwYW4+KTwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUxfQ1JZUF9EZWN5cHRfPHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iZ3JhbWUiPkRNQSg8L3NwYW4+KTwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkFkZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IEFQSXMgdG8gZ2VuZXJhdGUgVEFHOjwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9InNxdWFyZSI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTF9DUllQRXhfQUVTPGI+R0NNPC9iPl88c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJncmFtZSI+R2VuZXJhdGVBdXRoVEFHKDwvc3Bhbj4pPC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTF9DUllQRXhfQUVTPGI+Q0NNPC9iPl88c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJncmFtZSI+R2VuZXJhdGVBdXRoVEFHKDwvc3Bhbj4pPC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSTJDPC9zcGFuPjwvYj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkkyQworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVBJIGNoYW5nZXMgZm9yIE1JU1JBLUMgMjAxMgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcGxpYW5jeTo8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9InNxdWFyZSI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlJlbmFtZQorSEFMX0kyQ19NYXN0ZXJfU2VxdWVudGlhbF9UcmFuc21pdF88c3BhbiBjbGFzcz0iZ3JhbWUiPklUKDwvc3Bhbj4pIHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTF9JMkNfTWFzdGVyX1NlcV9UcmFuc21pdF9JVCgpPC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlJlbmFtZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQUxfSTJDX01hc3Rlcl9TZXF1ZW50aWVsX1JlY2VpdmVfPHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iZ3JhbWUiPklUKDwvc3Bhbj4pIHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTF9JMkNfTWFzdGVyX1NlcV9SZWNlaXZlX0lUKCk8L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+UmVuYW1lCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTF9JMkNfU2xhdmVfU2VxdWVudGllbF9UcmFuc21pdF88c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJncmFtZSI+SVQoPC9zcGFuPikgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFMX0kyQ19TbGF2ZV9TZXFfVHJhbnNtaXRfSVQoKSA8L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+UmVuYW1lCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTF9JMkNfU2xhdmVfU2VxdWVudGllbF9SZWNlaXZlXzxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImdyYW1lIj5ETUEoPC9zcGFuPikgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFMX0kyQ19TbGF2ZV9TZXFfUmVjZWl2ZV9ETUEoKTwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+QWRkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdXBwb3J0IG9mIEkyQyByZXBlYXRlZCBzdGFydAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmVhdHVyZSBpbiBETUEgTW9kZTo8L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEzLjVwdDsiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbi1sZWZ0OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMS41aW47IHRleHQtaW5kZW50OiAtMC4yNWluOyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTMuNXB0OyBjb2xvcjogYmxhY2s7Ij4xLjwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiA3cHQ7IGNvbG9yOiBibGFjazsiPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7IGNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsiPldpdGggdGhlIGZvbGxvd2luZyBuZXcgQVBJJ3M8L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTMuNXB0OyBjb2xvcjogYmxhY2s7Ij48bzpwPjwvbzpwPjwvc3Bhbj48L3A+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbi1sZWZ0OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMmluOyB0ZXh0LWluZGVudDogLTAuMjVpbjsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEzLjVwdDsgY29sb3I6IGJsYWNrOyI+MS48L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogN3B0OyBjb2xvcjogYmxhY2s7Ij4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyBjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7Ij5IQUxfSTJDX01hc3Rlcl9TZXFfVHJhbnNtaXRfPHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iZ3JhbWUiPkRNQSg8L3NwYW4+KTwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMy41cHQ7IGNvbG9yOiBibGFjazsiPjxvOnA+PC9vOnA+PC9zcGFuPjwvcD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luLWxlZnQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyaW47IHRleHQtaW5kZW50OiAtMC4yNWluOyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTMuNXB0OyBjb2xvcjogYmxhY2s7Ij4yLjwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiA3cHQ7IGNvbG9yOiBibGFjazsiPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7IGNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsiPkhBTF9JMkNfTWFzdGVyX1NlcV9SZWNlaXZlXzxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImdyYW1lIj5ETUEoPC9zcGFuPik8L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTMuNXB0OyBjb2xvcjogYmxhY2s7Ij48bzpwPjwvbzpwPjwvc3Bhbj48L3A+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbi1sZWZ0OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMmluOyB0ZXh0LWluZGVudDogLTAuMjVpbjsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEzLjVwdDsgY29sb3I6IGJsYWNrOyI+My48L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogN3B0OyBjb2xvcjogYmxhY2s7Ij4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyBjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7Ij5IQUxfSTJDX1NsYXZlX1NlcV9UcmFuc21pdF88c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJncmFtZSI+RE1BKDwvc3Bhbj4pPC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEzLjVwdDsgY29sb3I6IGJsYWNrOyI+PG86cD48L286cD48L3NwYW4+PC9wPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW4tbGVmdDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDJpbjsgdGV4dC1pbmRlbnQ6IC0wLjI1aW47Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMy41cHQ7IGNvbG9yOiBibGFjazsiPjQuPC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDdwdDsgY29sb3I6IGJsYWNrOyI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsgY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyI+SEFMX0kyQ19TbGF2ZV9TZXFfUmVjZWl2ZV88c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJncmFtZSI+RE1BKDwvc3Bhbj4pPC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEzLjVwdDsgY29sb3I6IGJsYWNrOyI+PG86cD48L286cD48L3NwYW4+PC9wPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW4tbGVmdDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDFpbjsgdGV4dC1pbmRlbnQ6IC0wLjI1aW47Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMy41cHQ7IGNvbG9yOiBibGFjazsiPjMuPC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDdwdDsgY29sb3I6IGJsYWNrOyI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsgY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyI+QWRkIG5ldyBJMkMgdHJhbnNmZXIgb3B0aW9ucyB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlYXN5IG1hbmFnZSB0aGUgc2VxdWVudGlhbCA8c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJncmFtZSI+dHJhbnNmZXJzPC9zcGFuPjwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMy41cHQ7IGNvbG9yOiBibGFjazsiPjxvOnA+PC9vOnA+PC9zcGFuPjwvcD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luLWxlZnQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLjVpbjsgdGV4dC1pbmRlbnQ6IC0wLjI1aW47Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMy41cHQ7IGNvbG9yOiBibGFjazsiPjEuPC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDdwdDsgY29sb3I6IGJsYWNrOyI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsgY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyI+STJDX09USEVSX0ZSQU1FPC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEzLjVwdDsgY29sb3I6IGJsYWNrOyI+PG86cD48L286cD48L3NwYW4+PC9wPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW4tbGVmdDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEuNWluOyB0ZXh0LWluZGVudDogLTAuMjVpbjsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEzLjVwdDsgY29sb3I6IGJsYWNrOyI+Mi48L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogN3B0OyBjb2xvcjogYmxhY2s7Ij4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyBjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7Ij5JMkNfT1RIRVJfQU5EX0xBU1RfRlJBTUU8L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTMuNXB0OyBjb2xvcjogYmxhY2s7Ij48bzpwPjwvbzpwPjwvc3Bhbj48L3A+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJkaXNjIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC41cHQ7Ij48c3BhbiBjbGFzcz0iZ3JhbWUiPjxiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5MTCZuYnNwOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSQ0M8L3NwYW4+PC9iPjwvc3Bhbj48Yj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij4gPC9zcGFuPjwvYj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZTwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMTF9SQ0NfPHNwYW4gY2xhc3M9ImdyYW1lIj5HZXRTQUlDbG9ja0ZyZXEoPC9zcGFuPikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFQSSB0byByZXR1cm4gdGhlIHJpZ2h0IGZyZXF1ZW5jeQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWNjb3JkaW5nIHRvIHRoZSBTQUkgY2xvY2sgc291cmNlPC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJORyA8L3NwYW4+PC9iPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+dXBkYXRlPC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0iY2lyY2xlIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5VcGRhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIG1hbmFnZSBSTkcgZXJyb3IgY29kZTogPC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT0ic3F1YXJlIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+QWRkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVycm9yQ29kZSBwYXJhbWV0ZXIgaW4gSEFMIFJORworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIYW5kbGVyIHN0cnVjdHVyZTwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5BZGQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFMX1JOR188c3BhbiBjbGFzcz0iZ3JhbWUiPkdldEVycm9yKDwvc3Bhbj4pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFQSTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTG9jay9VbmxvY2sgbWVjYW5pc20gPHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImdyYW1lIj51cGRhdGU8L3NwYW4+IDwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+TEwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFEQyA8L3NwYW4+PC9iPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+dXBkYXRlPC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0iY2lyY2xlIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5GaXgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZSRUZJTlQvVEVNUFNFTlNPUiBjYWxpYnJhdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkcmVzcyByZWdpc3RlcnMgZm9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVE0zMkY3NHgvNzV4L0Y3Ni9GNzcgZGV2aWNlczwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9InNxdWFyZSI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PGI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPk5vdGU8L3NwYW4+PC9iPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij46CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvciBTVE0zMkY3Mi9GNzMgdGhlIGlzc3VlIHdpbGwgYmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZml4ZWQgaW4gbmV4dCByZWxlYXNlPC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMX0FEQ188c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iZ3JhbWUiPlN0YXJ0KDwvc3Bhbj4pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFMX0FEQ19TdGFydF9JVCgpIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFMX0FEQ19TdGFydF9ETUEoKSB1cGRhdGUgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXZlbnRpb24gZnJvbSBzdGFydGluZyBBREMyIG9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBREMzIG9uY2UgbXVsdGltb2RlIGlzIGVuYWJsZWQ8L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImdyYW1lIj5ERlNETSZuYnNwOyA8L3NwYW4+PC9zcGFuPjwvYj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJncmFtZSI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+dXBkYXRlPC9zcGFuPjwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+R2VuZXJhbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlcyB0byBiZSBjb21wbGlhbnQgd2l0aCBERlNETQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYml0cyBuYW1pbmcgdXNlZCBpbiBDTVNJUyBmaWxlcy48L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImdyYW1lIj5DQU4mbmJzcDsgPC9zcGFuPjwvc3Bhbj48L2I+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iZ3JhbWUiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZTwvc3Bhbj48L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVwZGF0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zc2libGUgdmFsdWVzIGxpc3QgZm9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaWx0ZXJBY3RpdmF0aW9uIHBhcmFtZXRlciBpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0FOX0ZpbHRlclR5cGVEZWYgc3RydWN0dXJlPC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT0ic3F1YXJlIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+Q0FOX0ZJTFRFUl9FTkFCTEUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGVhZCBvZiA8c3BhbiBjbGFzcz0iZ3JhbWUiPkVOQUJMRTwvc3Bhbj48L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+Q0FOX0ZJTFRFUl9ESVNBQkxFCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RlYWQgb2YgPHNwYW4gY2xhc3M9ImdyYW1lIj5ESVNBQkxFPC9zcGFuPjwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJncmFtZSI+Q0VDJm5ic3A7IDwvc3Bhbj48L3NwYW4+PC9iPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImdyYW1lIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij51cGRhdGU8L3NwYW4+PC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0iY2lyY2xlIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5VcGRhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTCBDRUMgU3RhdGUgbWFuYWdlbWVudCBtZXRob2Q6PC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT0ic3F1YXJlIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+UmVtb3ZlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTF9DRUNfU3RhdGVUeXBlRGVmIHN0cnVjdHVyZSA8c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJncmFtZSI+cGFyYW1ldGVyczwvc3Bhbj48L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+QWRkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBkZWZpbmVzIGZvciBDRUMgPHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iZ3JhbWUiPnN0YXRlczwvc3Bhbj48L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBETUEyPHNwYW4gY2xhc3M9ImdyYW1lIj5EJm5ic3A7IDwvc3Bhbj48L3NwYW4+PC9iPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImdyYW1lIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij51cGRhdGU8L3NwYW4+PC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0iY2lyY2xlIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5SZW1vdmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVudXNlZCBETUEyRF9Db2xvclR5cGVEZWYgc3RydWN0dXJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byBiZSBjb21wbGlhbnQgd2l0aCBNSVNSQUMgMjAxMgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUnVsZSAyLjM8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5HZW5lcmFsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGUgdG8gdXNlIGRlZGljYXRlZCBkZWZpbmVzIGZvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRE1BMkRfQkFDS0dST1VORF9MQVlFUiBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERNQTJEX0ZPUkVHUk9VTkRfTEFZRVIgaW5zdGVhZCBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtZXJpY2FsIHZhbHVlczogMC8xLjwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFML0xMCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSVEM8L3NwYW4+PC9iPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTEwgPHNwYW4gY2xhc3M9ImdyYW1lIj5kcml2ZXJzPC9zcGFuPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW1pemF0aW9uPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPSJzcXVhcmUiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHJpdmVyOiByZW1vdmUgdW51c2VkIDxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImdyYW1lIj52YXJpYWJsZXM8L3NwYW4+PC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkxMCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRyaXZlcjogZ2V0dGVyIEFQSXMgb3B0aW1pemF0aW9uPC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSlBFRyA8L3NwYW4+PC9iPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+dXBkYXRlPC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0iY2lyY2xlIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5VcGRhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtZXRlcnMgdHlwZSBpbiBKUEVHX0NvbmZUeXBlRGVmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3R1cmUgdG8gYmUgYWxpZ25lZCB3aXRoIDMyLTxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJncmFtZSI+Yml0czwvc3Bhbj48L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1BJIDwvc3Bhbj48L2I+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij51cGRhdGU8L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPk92ZXJhbGwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJld29yayBvZiB0aGUgZHJpdmVyIGZvciBhIG1vcmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVmZmljaWVudCZuYnNwO2ltcGxlbWVudGF0aW9uPC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkFkZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGZvbGxvd2luZyBuZXcgbWFjcm9zOjwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9InNxdWFyZSI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlNQSV9DSEVDS188c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJncmFtZSI+RkxBRyg8L3NwYW4+KSA8L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+U1BJX0NIRUNLX0lUXzxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImdyYW1lIj5TT1VSQ0UoPC9zcGFuPikgPC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+QWRkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQUxfU1BJRXhfPHNwYW4gY2xhc3M9ImdyYW1lIj5GbHVzaFJ4Rmlmbyg8L3NwYW4+KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVBJIHRvIGZsdXNoIHRoZSBTUEkgRklGTyBSWC48L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQUxfU1BJXzxzcGFuIGNsYXNzPSJncmFtZSI+QWJvcnQoPC9zcGFuPikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIGZpeCBhYm9ydCBpc3N1ZSBpbiBTUEkgVFggb3IgUngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGUgb25seSA8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5VcGRhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTF9TUElfVHJhbnNtaXQoKS9IQUxfU1BJXzxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJncmFtZSI+UmVjZWl2ZSg8L3NwYW4+KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVBJJ3MgdG8gZml4IG1lbW9yeSBvdmVyZmxvdyBpc3N1ZS48L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSTJTIDwvc3Bhbj48L2I+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij51cGRhdGU8L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPk92ZXJhbGwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJld29yayBvZiB0aGUgZHJpdmVyIGZvciBhIG1vcmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVmZmljaWVudCZuYnNwO2ltcGxlbWVudGF0aW9uPC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkFkZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGZvbGxvd2luZyBuZXcgbWFjcm9zOjwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9InNxdWFyZSI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkkyU19DSEVDS188c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJncmFtZSI+RkxBRyg8L3NwYW4+KTwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5JMlNfQ0hFQ0tfSVRfPHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iZ3JhbWUiPlNPVVJDRSg8L3NwYW4+KTwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVwZGF0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFMX0kyU19UcmFuc21pdCgpL0hBTF9JMlNfPHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImdyYW1lIj5SZWNlaXZlKDwvc3Bhbj4pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBUEkncyB0byBmaXggbWVtb3J5IG92ZXJmbG93IGlzc3VlLjwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFML0xMCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUSU0gPC9zcGFuPjwvYj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZTwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+TW92ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGZvbGxvd2luZyBUSU0gc3RydWN0dXJlcyBmcm9tCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG0zMmY0eHhfaGFsX3RpbV9leC5oIGludG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0bTMyZjR4eF9oYWxfdGltLmg8L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPSJzcXVhcmUiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5USU1fTWFzdGVyQ29uZmlnVHlwZURlZjwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5USU1fQnJlYWtEZWFkVGltZUNvbmZpZ1R5cGVEZWY8L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5BZGQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBUSU0gQ2FsbGJhY2tzIEFQSSdzOjwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9InNxdWFyZSI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTF9USU1fPHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iZ3JhbWUiPlBlcmlvZEVsYXBzZWRIYWxmQ3BsdENhbGxiYWNrKDwvc3Bhbj4pPC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTF9USU1fSUNfPHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iZ3JhbWUiPkNhcHR1cmVIYWxmQ3BsdENhbGxiYWNrKDwvc3Bhbj4pPC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTF9USU1fUFdNXzxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImdyYW1lIj5QdWxzZUZpbmlzaGVkSGFsZkNwbHRDYWxsYmFjayg8L3NwYW4+KTwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUxfVElNXzxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImdyYW1lIj5UcmlnZ2VySGFsZkNwbHRDYWxsYmFjayg8L3NwYW4+KTwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlRJTQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVBJIGNoYW5nZXMgZm9yIE1JU1JBLUMgMjAxMgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcGxpYW5jeTo8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9InNxdWFyZSI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlJlbmFtZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQUxfVElNX1NsYXZlQ29uZmlnU3luY2hyb25pemF0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIEhBTF9USU1fU2xhdmVDb25maWdTeW5jaHJvPC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlJlbmFtZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQUxfVElNX1NsYXZlQ29uZmlnU3luY2hyb25pemF0aW9uX0lUCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIEhBTF9USU1fU2xhdmVDb25maWdTeW5jaHJvX0lUPC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlJlbmFtZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQUxfVElNRXhfQ29uZmlnQ29tbXV0YXRpb25FdmVudAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byBIQUxfVElNRXhfQ29uZmlnQ29tbXV0RXZlbnQ8L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+UmVuYW1lCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTF9USU1FeF9Db25maWdDb21tdXRhdGlvbkV2ZW50X0lUCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIEhBTF9USU1FeF9Db25maWdDb21tdXRFdmVudF9JVDwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5SZW5hbWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFMX1RJTUV4X0NvbmZpZ0NvbW11dGF0aW9uRXZlbnRfRE1BCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIEhBTF9USU1FeF9Db25maWdDb21tdXRFdmVudF9ETUE8L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+UmVuYW1lCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTF9USU1FeF9Db21tdXRhdGlvbkNhbGxiYWNrIHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTF9USU1FeF9Db21tdXRDYWxsYmFjazwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5SZW5hbWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFMX1RJTUV4X0RNQUNvbW11dGF0aW9uQ3BsdCB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUSU1FeF9ETUFDb21tdXRhdGlvbkNwbHQ8L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVQVJUIDwvc3Bhbj48L2I+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij51cGRhdGU8L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPk92ZXJhbGwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJld29yayBvZiB0aGUgZHJpdmVyIGZvciBhIG1vcmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVmZmljaWVudCZuYnNwO2ltcGxlbWVudGF0aW9uPC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkFkZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGZvbGxvd2luZyBVQVJUIEFQSSdzIGluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG0zMmY3eHhfaGFsX3VhcnRfZXguYzo8L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPSJzcXVhcmUiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij4mbmJzcDtIQUxfUlM0ODVFeF88c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJncmFtZSI+SW5pdCg8L3NwYW4+KTwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUxfTXVsdGlQcm9jZXNzb3JFeF9BZGRyZXNzTGVuZ3RoXzxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImdyYW1lIj5TZXQoPC9zcGFuPik8L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFML0xMCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVU0I8L3NwYW4+PC9iPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+UmV3b3JrCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVU0IgaW50ZXJydXB0IGhhbmRsZXIgYW5kIGltcHJvdmUgSFMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERNQSBzdXBwb3J0IGluIERldmljZSA8c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iZ3JhbWUiPm1vZGU8L3NwYW4+PC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkZpeAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQkNEIGhhbmRsaW5nIGZvciBPVEcgaW5zdGFuY2UgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldmljZSA8c3BhbiBjbGFzcz0iZ3JhbWUiPm1vZGU8L3NwYW4+PC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPmNsZWFudXAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZmVyZW5jZSB0byBsb3cgc3BlZWQgaW4gZGV2aWNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RlPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+YWxsb3cKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRpbmcgVFggRklGTyBpbiBjYXNlIG9mIHRyYW5zZmVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW5ndGggaXMgZXF1YWwgdG8gYXZhaWxhYmxlIHNwYWNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiB0aGUgVFggPHNwYW4gY2xhc3M9ImdyYW1lIj5GSUZPPC9zcGFuPjwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5GaXgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRvZ2dsZSBPVVQgaW50ZXJydXB0IGNoYW5uZWwgaW4gaG9zdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImdyYW1lIj5tb2RlPC9zcGFuPjwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+TEwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElXREcgPC9zcGFuPjwvYj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZTwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMTCBpbmxpbmUgbWFjcm9zIHRvIHVzZSBJV0RHeAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1ldGVyIGluc3RlYWQgb2YgSVdERyBpbnN0YW5jZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lZCBpbiBDTVNJUyA8c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iZ3JhbWUiPmRldmljZTwvc3Bhbj48L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgzIHN0eWxlPSJiYWNrZ3JvdW5kOiByZ2IoNTEsIDEwMiwgMjU1KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9uZSByZXBlYXQgc2Nyb2xsIDAlIDUwJTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC1tb3otYmFja2dyb3VuZC1jbGlwOiAtbW96LWluaXRpYWw7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtbW96LWJhY2tncm91bmQtb3JpZ2luOiAtbW96LWluaXRpYWw7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtbW96LWJhY2tncm91bmQtaW5saW5lLXBvbGljeToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC1tb3otaW5pdGlhbDsgbWFyZ2luLXJpZ2h0OiA1MDBwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtBcmlhbCZxdW90OyxzYW5zLXNlcmlmOyBjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpdGU7Ij5WMS4yLjYgLyAyOS1KdW5lLTIwMTg8L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9oMz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luOiA0LjVwdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMGluIDQuNXB0IDAuMjVpbjsgb3JwaGFuczogMjsgdGV4dC1hbGlnbjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0OyB3aWRvd3M6IDI7IHdvcmQtc3BhY2luZzogMHB4OyI+PGI+PHU+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6IGJsYWNrOyI+TWFpbiBDaGFuZ2VzPC9zcGFuPjwvdT48L2I+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTMuNXB0OyBjb2xvcjogYmxhY2s7Ij48bzpwPjwvbzpwPjwvc3Bhbj48L3A+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJkaXNjIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVwZGF0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIHN1cHBvcnQgU1RNMzJGNzMweHggYW5kIFNUTTMyRjc1MHh4CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPHNwYW4gY2xhc3M9ImdyYW1lIj5saW5lczwvc3Bhbj48L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRE1BJm5ic3A7PC9zcGFuPjwvYj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZTwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+RE1BX0NIQU5ORUxfOAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gRE1BX0NIQU5ORUxfMTUgPHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImdyYW1lIj5hcmU8L3NwYW4+IGFsc28KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZWQgaW4gY2FzZSBvZiZuYnNwO1NUTTMyRjczMHh4CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2FtZSZuYnNwO2ZlYXR1cmVzIGFzIFNUTTMyRjczM3h4CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lKTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZMQVNIJm5ic3A7PC9zcGFuPjwvYj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZTwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+QWRkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdXBwb3J0IG9mJm5ic3A7U1RNMzJGNzMweHggd2l0aCA0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGTGFzaCBzZWN0b3JzIG9mIDE2S0IgZWFjaC48L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+QWRkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdXBwb3J0IG9mJm5ic3A7U1RNMzJGNzUweHggd2l0aCAyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGTGFzaCBzZWN0b3JzIG9mIDMyS0IgZWFjaC48L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1BJTyZuYnNwOzwvc3Bhbj48L2I+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij51cGRhdGU8L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkFkZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VwcG9ydCBvZiZuYnNwO1NUTTMyRjczMHh4IHZhbHVlIDxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJncmFtZSI+bGluZSA6PC9zcGFuPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2FtZSZuYnNwO2ZlYXR1cmVzIGFzIFNUTTMyRjczM3h4CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+QWRkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdXBwb3J0IG9mJm5ic3A7U1RNMzJGNzUweHggdmFsdWUgPHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImdyYW1lIj5saW5lIDo8L3NwYW4+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYW1lJm5ic3A7ZmVhdHVyZXMgYXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNUTTMyRjc1Nnh4Jm5ic3A7bGluZTwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSQ0MmbmJzcDs8L3NwYW4+PC9iPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+dXBkYXRlPC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0iY2lyY2xlIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5BZGQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1cHBvcnQgb2YmbmJzcDtTVE0zMkY3MzB4eCB2YWx1ZSA8c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iZ3JhbWUiPmxpbmUgOjwvc3Bhbj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhbWUmbmJzcDtmZWF0dXJlcyBhcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1RNMzJGNzMzeHgmbmJzcDtsaW5lPC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkFkZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VwcG9ydCBvZiZuYnNwO1NUTTMyRjc1MHh4IHZhbHVlIDxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJncmFtZSI+bGluZSA6PC9zcGFuPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2FtZSZuYnNwO2ZlYXR1cmVzIGFzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVE0zMkY3NTZ4eCZuYnNwO2xpbmU8L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgzIHN0eWxlPSJiYWNrZ3JvdW5kOiByZ2IoNTEsIDEwMiwgMjU1KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9uZSByZXBlYXQgc2Nyb2xsIDAlIDUwJTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC1tb3otYmFja2dyb3VuZC1jbGlwOiAtbW96LWluaXRpYWw7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtbW96LWJhY2tncm91bmQtb3JpZ2luOiAtbW96LWluaXRpYWw7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtbW96LWJhY2tncm91bmQtaW5saW5lLXBvbGljeToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC1tb3otaW5pdGlhbDsgbWFyZ2luLXJpZ2h0OiA1MDBwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtBcmlhbCZxdW90OyxzYW5zLXNlcmlmOyBjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpdGU7Ij5WMS4yLjUgLyAwMi1GZWJydWFyeS0yMDE4PC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvaDM+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbjogNC41cHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDBpbiA0LjVwdCAwLjI1aW47Ij48Yj48dT48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogYmxhY2s7Ij5NYWluIENoYW5nZXM8L3NwYW4+PC91PjwvYj48L3A+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJkaXNjIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkdlbmVyYWwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVzIHRvIGZpeCBrbm93biBkZWZlY3RzIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuaGFuY2VtZW50cyA8c3BhbiBjbGFzcz0iZ3JhbWUiPmltcGxlbWVudGF0aW9uPC9zcGFuPjwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMJm5ic3A7PC9zcGFuPjwvYj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZTwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+QWRkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgbWFjcm8gdG8gZ2V0IHZhcmlhYmxlIGFsaWduZWQgb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMyLWJ5dGVzLCByZXF1aXJlZCBmb3IgY2FjaGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1haW50ZW5hbmNlIDxzcGFuIGNsYXNzPSJncmFtZSI+cHVycG9zZTwvc3Bhbj48L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZ3JhbWUiPlVOVVNFRCg8L3NwYW4+KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFjcm8gaW1wbGVtZW50YXRpb24gdG8gYXZvaWQgR0NDCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3YXJuaW5nPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPSJzcXVhcmUiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5UaGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2FybmluZyBpcyBkZXRlY3RlZCB3aGVuIHRoZSA8c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJncmFtZSI+VU5VU0VEKDwvc3Bhbj4pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hY3JvIGlzIGNhbGxlZCBmcm9tIEMrKyBmaWxlPC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0FJIDwvc3Bhbj48L2I+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij51cGRhdGU8L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVwZGF0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFMX1NBSV88c3BhbiBjbGFzcz0iZ3JhbWUiPkRNQVN0b3AoPC9zcGFuPikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBIQUxfU0FJX0Fib3J0KCkgcHJvY2VzcyB0byBmaXgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBsb2NrL3VubG9jayBhdWRpbyBpc3N1ZSA8L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFdSIDwvc3Bhbj48L2I+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij51cGRhdGU8L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVwZGF0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFMX1BXUl88c3BhbiBjbGFzcz0iZ3JhbWUiPkVudGVyU0xFRVBNb2RlKDwvc3Bhbj4pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgSEFMX1BXUl9FbnRlclNUT1BNb2RlKCkgQVBJcyB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5zdXJlIHRoYXQgYWxsIGluc3RydWN0aW9ucworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluaXNoZWQgYmVmb3JlIGVudGVyaW5nIFNUT1AgbW9kZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQ0QgPC9zcGFuPjwvYj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZTwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+QWRkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgY2FsbGJhY2sgdG8gYmUgdXNlZCB0byBoYW5kbGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzYiBkZXZpY2UgY29ubmVjdGlvbi88c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iZ3JhbWUiPmRpc2Nvbm5lY3Rpb248L3NwYW4+PC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT0ic3F1YXJlIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMX0hDRF9Qb3J0RW5hYmxlZF88c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJncmFtZSI+Q2FsbGJhY2soPC9zcGFuPik8L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMX0hDRF9Qb3J0RGlzYWJsZWRfPHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iZ3JhbWUiPkNhbGxiYWNrKDwvc3Bhbj4pPC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byBwcmV2ZW50IHJlYWN0aXZhdGUgaG9zdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ZXJycnVwdCA8c3BhbiBjbGFzcz0iZ3JhbWUiPmNoYW5uZWw8L3NwYW4+PC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMyBzdHlsZT0iYmFja2dyb3VuZDogcmdiKDUxLCAxMDIsIDI1NSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbmUgcmVwZWF0IHNjcm9sbCAwJSA1MCU7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtbW96LWJhY2tncm91bmQtY2xpcDogLW1vei1pbml0aWFsOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLW1vei1iYWNrZ3JvdW5kLW9yaWdpbjogLW1vei1pbml0aWFsOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLW1vei1iYWNrZ3JvdW5kLWlubGluZS1wb2xpY3k6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtbW96LWluaXRpYWw7IG1hcmdpbi1yaWdodDogNTAwcHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7QXJpYWwmcXVvdDssc2Fucy1zZXJpZjsgY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaXRlOyI+VjEuMi40IC8gMjItRGVjZW1iZXItMjAxNzwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2gzPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW46IDQuNXB0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwaW4gNC41cHQgMC4yNWluOyI+PGI+PHU+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6IGJsYWNrOyI+TWFpbiBDaGFuZ2VzPC9zcGFuPjwvdT48L2I+PC9wPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0iZGlzYyI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5HZW5lcmFsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlcyB0byBmaXgga25vd24gZGVmZWN0cyBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmhhbmNlbWVudHMgPHNwYW4gY2xhc3M9ImdyYW1lIj5pbXBsZW1lbnRhdGlvbjwvc3Bhbj48L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9sbG93aW5nIGNoYW5nZXMgZG9uZSBvbiB0aGUgSEFMCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkcml2ZXJzIHJlcXVpcmUgYW4gdXBkYXRlIG9uIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb24gY29kZSBiYXNlZCBvbiBvbGRlciBIQUwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJncmFtZSI+dmVyc2lvbnM8L3NwYW4+PC9zcGFuPjwvYj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PGI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlJld29yaworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZiBIQUwgQ0FOIGRyaXZlciAoY29tcGF0aWJpbGl0eQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaykmbmJzcDs8L3NwYW4+PC9iPjxiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvYj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT0ic3F1YXJlIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+QQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgSEFMIENBTiBkcml2ZXIgaGFzIGJlZW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVkZXNpZ25lZCB3aXRoIG5ldyBBUElzLCB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBieXBhc3MgbGltaXRhdGlvbnMgb24gQ0FOIFR4L1J4CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZJRk8gbWFuYWdlbWVudCBwcmVzZW50IHdpdGgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldmlvdXMgSEFMIENBTiBkcml2ZXIgdmVyc2lvbi48L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBIQUwgQ0FOIGRyaXZlciBpcyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjb21tZW5kZWQgdmVyc2lvbi4gSXQgaXMgbG9jYXRlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcyB1c3VhbCBpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEcml2ZXJzL1NUTTMyRjd4eF9IQUxfRHJpdmVyL1NyYworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRHJpdmVycy9TVE0zMmY3eHhfSEFMX0RyaXZlci9JbmMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9sZGVycy4gSXQgY2FuIGJlIGVuYWJsZWQgdGhyb3VnaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggSEFMX0NBTl9NT0RVTEVfRU5BQkxFRCBpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG0zMmY3eHhfaGFsX2NvbmYuaDwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5UaGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVnYWN5IEhBTCBDQU4gZHJpdmVyIGlzIGFsc28KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlc2VudCBpbiB0aGUgcmVsZWFzZSBpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEcml2ZXJzL1NUTTMyRjd4eF9IQUxfRHJpdmVyL1NyYy9MZWdhY3kKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERyaXZlcnMvU1RNMzJGN3h4X0hBTF9Ecml2ZXIvSW5jL0xlZ2FjeQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb2xkZXJzIGZvciBzb2Z0d2FyZSBjb21wYXRpYmlsaXR5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYXNvbnMuIEl0cyB1c2FnZSBpcyBub3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjb21tZW5kZWQgYXMgZGVwcmVjYXRlZC4mbmJzcDtJdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW4gaG93ZXZlciBiZSBlbmFibGVkIHRocm91Z2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTF9DQU5fTEVHQUNZX01PRFVMRV9FTkFCTEVEIGluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0bTMyZjd4eF9oYWxfY29uZi5oPC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTCZuYnNwOzwvc3Bhbj48L2I+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij51cGRhdGU8L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVwZGF0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFMIGRyaXZlciB0byBhbGxvdyB1c2VyIHRvIGNoYW5nZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3lzdGljayBwZXJpb2QgdG8gMTxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJncmFtZSI+bXMgLDwvc3Bhbj4gMTAgbXMgb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwMCBtcyA6PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPSJzcXVhcmUiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5BZGQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGZvbGxvd2luZyA8c3BhbiBjbGFzcz0iZ3JhbWUiPkFQSSdzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOjwvc3Bhbj4mbmJzcDsmbmJzcDs8L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPSJzcXVhcmUiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUxfPHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJncmFtZSI+R2V0VGlja1ByaW8oPC9zcGFuPikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFJldHVybnMgYSB0aWNrIHByaW9yaXR5Ljwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTF88c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImdyYW1lIj5TZXRUaWNrRnJlcSg8L3NwYW4+KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogU2V0cyBuZXcgdGljayZuYnNwO2ZyZXF1ZW5jeS48L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUxfPHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJncmFtZSI+R2V0VGlja0ZyZXEoPC9zcGFuPikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFJldHVybnMgdGljayBmcmVxdWVuY3kuPC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5BZGQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFMX1RpY2tGcmVxVHlwZURlZiBlbnVtZXJhdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgdGhlIGRpZmZlcmVudCBUaWNrIDxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImdyYW1lIj5GcmVxdWVuY2llcyA6PC9zcGFuPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMCBIeiAsIDEwMCBIeiBhbmQgMUtIeiAoZGVmYXVsdCkuPC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0FOIDwvc3Bhbj48L2I+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij51cGRhdGU8L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkZpZWxkcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2YgQ0FOX0luaXRUeXBlRGVmIHN0cnVjdHVyZSBhcmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJld29ya2VkOjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT0ic3F1YXJlIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+U0pXCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIFN5bmNKdW1wV2lkdGgsIEJTMSB0byBUaW1lU2VnMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQlMyIHRvIFRpbWVTZWcyLCBUVENNIHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbWVUcmlnZ2VyZWRNb2RlLCBBQk9NIHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEF1dG9CdXNPZmYsIEFXVU0gdG8gQXV0b1dha2VVcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkFSVCB0byBBdXRvUmV0cmFuc21pc3Npb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludmVyc2VkKSwgUkZMTSB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWNlaXZlRmlmb0xvY2tlZCBhbmQgVFhGUCB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUcmFuc21pdEZpZm9Qcmlvcml0eTwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTF9DQU5fPHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImdyYW1lIj5Jbml0KDwvc3Bhbj4pIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGxpdCBpbnRvIGJvdGggSEFMX0NBTl9Jbml0KCkgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQUxfQ0FOX1N0YXJ0KCkgQVBJJ3M8L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMX0NBTl88c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iZ3JhbWUiPlRyYW5zbWl0KDwvc3Bhbj4pIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXBsYWNlZCBieSBIQUxfQ0FOX0FkZFR4TWVzc2FnZSgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byBwbGFjZSBUeCBSZXF1ZXN0LCB0aGVuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQUxfQ0FOX0dldFR4TWFpbGJveGVzRnJlZUxldmVsKCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBwb2xsaW5nIHVudGlsIGNvbXBsZXRpb24uPC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTF9DQU5fVHJhbnNtaXRfPHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImdyYW1lIj5JVCg8L3NwYW4+KSBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwbGFjZWQgYnkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTF9DQU5fQWN0aXZhdGVOb3RpZmljYXRpb24oKSB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlIHRyYW5zbWl0IElULCB0aGVuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQUxfQ0FOX0FkZFR4TWVzc2FnZSgpIGZvciBwbGFjZSBUeAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC48L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUxfQ0FOXzxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJncmFtZSI+UmVjZWl2ZSg8L3NwYW4+KSBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwbGFjZWQgYnkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTF9DQU5fR2V0UnhGaWZvRmlsbExldmVsKCkgZm9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb2xsaW5nIHVudGlsIHJlY2VwdGlvbiwgdGhlbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFMX0NBTl9HZXRSeE1lc3NhZ2UoKSA8YnI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byBnZXQgUnggbWVzc2FnZS48L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMX0NBTl9SZWNlaXZlXzxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJncmFtZSI+SVQoPC9zcGFuPikgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcGxhY2VkIGJ5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQUxfQ0FOX0FjdGl2YXRlTm90aWZpY2F0aW9uKCkmbmJzcDt0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlIHJlY2VpdmUgSVQsIHRoZW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTF9DQU5fR2V0UnhNZXNzYWdlKCk8YnI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiB0aGUgcmVjZWl2ZWNhbGxiYWNrIHRvIGdldCBSeAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTF9DQU5fPHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImdyYW1lIj5TbGVwcCg8L3NwYW4+KSBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVuYW1lZCBhcyBIQUxfQ0FOX1JlcXVlc3RTbGVlcCgpPC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTF9DQU5fPHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImdyYW1lIj5UeENwbHRDYWxsYmFjayg8L3NwYW4+KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMgc3BsaXQgaW50bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFMX0NBTl9UeE1haWxib3gwQ29tcGxldGVDYWxsYmFjaygpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFMX0NBTl9UeE1haWxib3gxQ29tcGxldGVDYWxsYmFjaygpCithbmQmbmJzcDtIQUxfQ0FOX1R4TWFpbGJveDJDb21wbGV0ZUNhbGxiYWNrKCkuPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMX0NBTl9SeENwbHRDYWxsYmFjaworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMgc3BsaXQgaW50byBIQUxfQ0FOX1J4RmlmbzA8c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iZ3JhbWUiPk1zZ1BlbmRpbmdDYWxsYmFjayg8L3NwYW4+KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQUxfQ0FOX1J4RmlmbzFNc2dQZW5kaW5nQ2FsbGJhY2soKS48L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+TW9yZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcGxldGUgIkhvdyB0byB1c2UgdGhlIG5ldyBkcml2ZXIiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcyBkZXRhaWxlZCBpbiB0aGUgZHJpdmVyIGhlYWRlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpdHNlbGYuPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUkNDJm5ic3A7PC9zcGFuPjwvYj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZTwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPSJzcXVhcmUiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5BZGQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IExMIDxzcGFuIGNsYXNzPSJncmFtZSI+bWFjcm88L3NwYW4+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPSJzcXVhcmUiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5MTF9SQ0NfUExMXzxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iZ3JhbWUiPlNldE1haW5Tb3VyY2UoPC9zcGFuPikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxvd2luZyB0byBjb25maWd1cmUgUExMIGNsb2NrCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+QWRkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBIQUwgPHNwYW4gY2xhc3M9ImdyYW1lIj5tYWNyb3M8L3NwYW4+PC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT0ic3F1YXJlIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+X19IQUxfUkNDX0dFVF9SVENfPHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJncmFtZSI+U09VUkNFKDwvc3Bhbj4pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsb3dpbmcgdG8gZ2V0IHRoZSBSVEMgY2xvY2sKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2U8bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5fX0hBTF9SQ0NfR0VUX1JUQ19IU0VfPHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJncmFtZSI+UFJFU0NBTEVSKDwvc3Bhbj4pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsb3dpbmcgdG8gZ2V0IHRoZSBIU0UgY2xvY2sKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXZpZGVyIGZvciBSVEMgcGVyaXBoZXJhbDxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+RW5zdXJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2V0IG9mIENJUiBhbmQgQ1NSIHJlZ2lzdGVycworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGVuIGlzc3VpbmcgSEFMX1JDQ188c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJncmFtZSI+RGVJbml0KDwvc3Bhbj4pL0xMX1JDQ19EZUluaXQKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbnM8bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5VcGRhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFMX1JDQ188c3BhbiBjbGFzcz0iZ3JhbWUiPkdldFN5c0Nsb2NrRnJlcSg8L3NwYW4+KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byBhdm9pZCByaXNrIG9mIHJvdW5kaW5nIGVycm9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWNoIG1heSBsZWFkcyB0byBhIHdyb25nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybmVkIHZhbHVlLjwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiA3cHQ7Ij4mbmJzcDs8L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTF9SQ0NfPHNwYW4gY2xhc3M9ImdyYW1lIj5EZUluaXQoPC9zcGFuPikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm5ic3A7YW5kIExMX1JDQ19EZUluaXQoKSBBUElzIHRvPC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT0ic3F1YXJlIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+QmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhYmxlIHRvIHJldHVybiBIQUwvTEwgc3RhdHVzPC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+QWRkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tzIGZvciBIU0ksIFBMTCBhbmQgUExMSTI8c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImdyYW1lIj5TICZuYnNwO3JlYWR5PC9zcGFuPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlZm9yZSBtb2RpZnlpbmcgUkNDIENGR1IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RlcnM8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+Q2xlYXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGwgaW50ZXJydXB0IDxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iZ3JhbWUiPmZsYWdzPC9zcGFuPjwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkluaXRpYWxpemUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeXN0aWNrIGludGVycnVwdCA8c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImdyYW1lIj5wZXJpb2Q8L3NwYW4+PC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERNQSA8L3NwYW4+PC9iPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+dXBkYXRlPC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0iY2lyY2xlIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5BZGQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFuIG9mIGNhbGxiYWNrcyBpbiBIQUxfRE1BXzxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJncmFtZSI+RGVJbml0KDwvc3Bhbj4pJm5ic3A7QVBJPC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkZpeAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JvbmcgRE1BX0ZMQUdfRkVJRk9fNCBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERNQV9GTEFHRE1BRUlGT180IGRlZmluZXMgPHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImdyYW1lIj52YWx1ZXM8L3NwYW4+Jm5ic3A7PC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEkyQyA8L3NwYW4+PC9iPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+dXBkYXRlPC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0iY2lyY2xlIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5VcGRhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEludGVyZmFjZSBBUElzIGhlYWRlcnMgdG8gcmVtb3ZlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25mdXNpbmcgbWVzc2FnZSBhYm91dCBkZXZpY2UgPHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImdyYW1lIj5hZGRyZXNzPC9zcGFuPjwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5VcGRhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEkyQ188c3BhbiBjbGFzcz0iZ3JhbWUiPldhaXRPblJYTkVGbGFnVW50aWxUaW1lb3V0KDwvc3Bhbj4pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byByZXNvbHZlIGEgcmFjZSBjb25kaXRpb24gYmV0d2VlbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1RPUEYgYW5kIFJYTkUgRmxhZ3M8L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlJm5ic3A7STJDXzxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJncmFtZSI+VHJhbnNmZXJDb25maWcoPC9zcGFuPikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIGZpeCB3cm9uZyBiaXQgbWFuYWdlbWVudDwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+TEwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVTQVJUJm5ic3A7PC9zcGFuPjwvYj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZTwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+QWRkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQgbWFjcm9zIHRvIGNoZWNrIFVTQVJUCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCYXVkUmF0ZSByZWdpc3Rlcjwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFVEggPC9zcGFuPjwvYj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZTwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+RG97Li59CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZ3JhbWUiPldoaWxlKDwvc3Bhbj4wKSZuYnNwO2luc3VyZWQKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4mbmJzcDttdWx0aSBzdGF0ZW1lbnQgbWFjcm9zIDo8L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPSJzcXVhcmUiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5fX0hBTF9FVEhfV0FLRVVQX0VYVElfRU5BQkxFX0ZBTExJTkdSSVNJTkdfPHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iZ3JhbWUiPlRSSUdHRVIoPC9zcGFuPikmbmJzcDs8L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+X19IQUxfRVRIX1dBS0VVUF9FWFRJX0RJU0FCTEVfRkFMTElOR1JJU0lOR188c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJncmFtZSI+VFJJR0dFUig8L3NwYW4+KSA8L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGTEFTSCZuYnNwOzwvc3Bhbj48L2I+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij51cGRhdGU8L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTF9GTEFTSF88c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iZ3JhbWUiPlVubG9jayg8L3NwYW4+KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlIHRvIHJldHVybiBzdGF0ZSBlcnJvciB3aGVuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgRkxBU0ggaXMgYWxyZWFkeSB1bmxvY2tlZDwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHUElPIDwvc3Bhbj48L2I+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij51cGRhdGU8L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkFkZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWlzc2luZyBkZWZpbmUgb2YgR1BJT19QSU5fMiBpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1BJT0tfUElOX0FWQUlMQUJMRSBsaXN0PC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBDRCA8L3NwYW4+PC9iPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+dXBkYXRlPC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0iY2lyY2xlIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5Eb3suLn0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJncmFtZSI+V2hpbGUoPC9zcGFuPjApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbmJzcDtpbnN1cmVkIGluIG11bHRpIHN0YXRlbWVudAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFjcm9zPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkxMCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVVElMUyA8L3NwYW4+PC9iPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+dXBkYXRlPC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0iY2lyY2xlIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5zdG0zMmY3eHhfbGxfdXRpbHMuPHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImdyYW1lIj5oIDo8L3NwYW4+IFVwZGF0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTExfR2V0UGFja2FnZVR5cGUgY29tbWFuZCB0byByZXR1cm4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGluc3RlYWQgb2YgdWludDE2X3Q8L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVElNIDwvc3Bhbj48L2I+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij51cGRhdGU8L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnN0bTMyZjd4eF9oYWxfdGltX2V4LjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJncmFtZSI+YyA6PC9zcGFuPiBVcGRhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTF9USU1FeF9Db25maWdCcmVha0RlYWRUaW1lIEFQSSB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXZvaWQgdG8gYmxvY2sgdGltZXIgYmVoYXZpb3Igd2hlbiA8YnI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW1haW5zIGluIHRoZSBzdGF0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFMX1RJTV9TVEFURV9CVVNZLjwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij4mbmJzcDtzdG0zMmY3eHhfaGFsX3RpbS48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iZ3JhbWUiPmggOjwvc3Bhbj4mbmJzcDs8L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPSJzcXVhcmUiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5GaXgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19IQUxfVElNX1NFVF88c3BhbiBjbGFzcz0iZ3JhbWUiPlBSRVNDQUxFUig8L3NwYW4+KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYWNybzwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5GaXgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwb3MgaW4gc29tZSBleHBvcnRlZCBtYWNyb3MgPHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iZ3JhbWUiPmRlc2NyaXB0aW9uPC9zcGFuPiZuYnNwOzwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5MTAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRk1DIDwvc3Bhbj48L2I+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij51cGRhdGU8L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTF9TRFJBTV88c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iZ3JhbWUiPlNlbmRDb21tYW5kKDwvc3Bhbj4pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBUEk6IFJlbW92ZSB0aGUmbmJzcDt0aW1lb3V0IGNoZWNrPC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5BTkQgPC9zcGFuPjwvYj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZTwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+Rml4CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cm9uZyBjaGVjayBmb3IgTkFORCA8c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iZ3JhbWUiPnN0YXR1czwvc3Bhbj48L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgzIHN0eWxlPSJiYWNrZ3JvdW5kOiByZ2IoNTEsIDEwMiwgMjU1KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9uZSByZXBlYXQgc2Nyb2xsIDAlIDUwJTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC1tb3otYmFja2dyb3VuZC1jbGlwOiAtbW96LWluaXRpYWw7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtbW96LWJhY2tncm91bmQtb3JpZ2luOiAtbW96LWluaXRpYWw7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtbW96LWJhY2tncm91bmQtaW5saW5lLXBvbGljeToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC1tb3otaW5pdGlhbDsgbWFyZ2luLXJpZ2h0OiA1MDBwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtBcmlhbCZxdW90OyxzYW5zLXNlcmlmOyBjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpdGU7Ij5WMS4yLjMgLyAyNS1BdWd1c3QtMjAxNzwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2gzPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW46IDQuNXB0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwaW4gNC41cHQgMC4yNWluOyI+PGI+PHU+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6IGJsYWNrOyI+TWFpbiBDaGFuZ2VzPC9zcGFuPjwvdT48L2I+PC9wPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0iZGlzYyI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5HZW5lcmFsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlcyB0byBmaXgga25vd24gZGVmZWN0cyBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmhhbmNlbWVudHMgPHNwYW4gY2xhc3M9ImdyYW1lIj5pbXBsZW1lbnRhdGlvbjwvc3Bhbj48L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+UmVtb3ZlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0ZSBhbmQgVmVyc2lvbiBmcm9tIGhlYWRlciA8c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImdyYW1lIj5maWxlczwvc3Bhbj48L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFMIGRyaXZlcnMgdG8gcmVmZXIgdG8gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3Jm5ic3A7Q01TSVMgYml0IHBvc2l0aW9uIGRlZmluZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0ZWFkIG9mIHVzYWdlIHRoZSBQT1NJVElPTl88c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImdyYW1lIj5WQUwoPC9zcGFuPikgbWFjcm88L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0FOIDwvc3Bhbj48L2I+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij51cGRhdGU8L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkFkZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWlzc2luZyB1bmxvY2sgaW4gSEFMX0NBTl9SZWNlaXZlXzxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJncmFtZSI+SVQoPC9zcGFuPikgcHJvY2Vzczwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEQ01JIDwvc3Bhbj48L2I+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij51cGRhdGU8L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRENNSSBkcml2ZXIgY2xlYW4tdXA6IHJlbW92ZSBub24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZmVyZW5jZWQgY2FsbGJhY2sgQVBJczogSEFMX0RDTUlfPHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImdyYW1lIj5Wc3luY0NhbGxiYWNrKDwvc3Bhbj4pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgSEFMX0RDTUlfSHN5bmNDYWxsYmFjaygpPC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwmbmJzcDtERlNETQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj48L2I+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij51cGRhdGU8L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkZpeAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzdCBpc3N1ZSBvbiBBUElzIHRoYXQgcmV0dXJuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaWduZWQgaW50ZWdlciB2YWx1ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVpbnQzMl90KSZuYnNwOzwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBETUEgPC9zcGFuPjwvYj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZTwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBETUEgZHJpdmVyIGNsZWFuLXVwOiByZW1vdmUgbm9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZlcmVuY2VkIGNhbGxiYWNrIEFQSXM6IEhBTF9ETUFfPHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImdyYW1lIj5DbGVhbkNhbGxiYWNrcyg8L3NwYW4+KTwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGTEFTSCA8L3NwYW4+PC9iPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+dXBkYXRlPC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0iY2lyY2xlIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5GTEFTSF9Qcm9ncmFtXzxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJncmFtZSI+RG91YmxlV29yZCg8L3NwYW4+KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVBJOiBSZXBsYWNlIDY0LWJpdCBhY2Nlc3NlcyB3aXRoIDIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSB3b3JkcyBvcGVyYXRpb25zPC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdlbmVyaWMgPC9zcGFuPjwvYj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZTwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnRfPHNwYW4gY2xhc3M9ImdyYW1lIj5wYXJhbSg8L3NwYW4+KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFjcm8gZGVmaW5pdGlvbiB0byBiZSBpbiBsaW5lIHdpdGgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0bTMyX2xsX3V0aWxzLmMgZHJpdmVyPC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdQSU8gPC9zcGFuPjwvYj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZTwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+R1BJT0tfUElOXzxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJncmFtZSI+QVZBSUxBQkxFKDwvc3Bhbj4pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQgbWFjcm8gdXBkYXRlIHRvIGFsbG93CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NzaWJpbGl0eSB0byBjb25maWd1cmUgR1BJT19QSU5fMjwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMVERDIDwvc3Bhbj48L2I+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij51cGRhdGU8L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlJlbmFtZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFMX0xURENfPHNwYW4gY2xhc3M9ImdyYW1lIj5MaW5lRXZlbkNhbGxiYWNrKDwvc3Bhbj4pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBUEkgdG8mbmJzcDtIQUxfTFREQ19MaW5lRXZlbjxiPnQ8L2I+Q2FsbGJhY2soKTwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQQ0QgPC9zcGFuPjwvYj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZTwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQUxfUENEXzxzcGFuIGNsYXNzPSJncmFtZSI+SVJRSGFuZGxlcig8L3NwYW4+KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVBJIHRvIGZpeCZuYnNwO3RyYW5zZmVyIGlzc3VlcyB3aGVuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVU0IgSFMgaXMgdXNlZCB3aXRoIERNQSZuYnNwO2VuYWJsZWQ8L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUkNDIDwvc3Bhbj48L2I+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij51cGRhdGU8L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVwZGF0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFMX1JDQ188c3BhbiBjbGFzcz0iZ3JhbWUiPkdldE9zY0NvbmZpZyg8L3NwYW4+KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVBJIHRvOjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT0ic3F1YXJlIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+c2V0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBMTFIgaW4gdGhlIFJDQ19Pc2NJbml0U3RydWN0PC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPmNoZWNrCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uIG51bGwgPHNwYW4gY2xhc3M9ImdyYW1lIj5wb2ludGVyPC9zcGFuPjwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVwZGF0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFMX1JDQ188c3BhbiBjbGFzcz0iZ3JhbWUiPkNsb2NrQ29uZmlnKDwvc3Bhbj4pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBUEkgdG86PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPSJzcXVhcmUiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5jaGVjaworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbiBudWxsIDxzcGFuIGNsYXNzPSJncmFtZSI+cG9pbnRlcjwvc3Bhbj48L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+b3B0aW1pemUmbmJzcDtjb2RlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemUgYnkgdXBkYXRpbmcgdGhlIGhhbmRsaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZCBvZiB0aGUgU1dTIDxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImdyYW1lIj5iaXRzPC9zcGFuPjwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij51cGRhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gPHNwYW4gY2xhc3M9ImdyYW1lIj51c2UmbmJzcDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfPC9zcGFuPl9IQUxfRkxBU0hfR0VUX0xBVEVOQ1koKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFzaCBtYWNybyBpbnN0ZWFkIG9mIHVzaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdCByZWdpc3RlciBhY2Nlc3MKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8mbmJzcDtMQVRFTkNZIGJpdHMgaW4gRkxBU0ggQUNSCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyPC9zcGFuPjxzcGFuIHN0eWxlPSIiPi4gPG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTQUkgPC9zcGFuPjwvYj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZTwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQUxfU0FJXzxzcGFuIGNsYXNzPSJncmFtZSI+RE1BU3RvcCg8L3NwYW4+KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVBJIHRvIGZsdXNoIGZpZm8gYWZ0ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGluZyZuYnNwO1NBSTwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUSU0gPC9zcGFuPjwvYj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZTwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQUxfVElNRXhfPHNwYW4gY2xhc3M9ImdyYW1lIj5Db25maWdCcmVha0lucHV0KDwvc3Bhbj4pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBUEkgdG8mbmJzcDtzdXBwb3J0IEJLSU5QL0JLSU4yUAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9sYXJpdHkgYml0cy48L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+TEwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERNQSA8L3NwYW4+PC9iPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+dXBkYXRlPC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0iY2lyY2xlIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5VcGRhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNFVF88c3BhbiBjbGFzcz0iZ3JhbWUiPkJJVCg8L3NwYW4+KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWNjZXNzIHRvIExJRkNSIGFuZCBISUZDUiByZWdpc3RlcnMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ5IFdSSVRFX1JFRygpIHRvIGF2b2lkIHJlYWQgYWNjZXNzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0IGlzIG5vdCBhbGxvd2VkIHdoZW4gY2xlYXJpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERNQSBmbGFnczwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5MTAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSTJDIDwvc3Bhbj48L2I+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij51cGRhdGU8L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVwZGF0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTExfSTJDXzxzcGFuIGNsYXNzPSJncmFtZSI+SW5pdCg8L3NwYW4+KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVBJIHRvIGF2b2lkIGVuYWJsaW5nIG93biBhZGRyZXNzMQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBPd25BZGRyZXNzMSBwYXJhbWV0ZXIgdmFsdWUgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBJMkNfSW5pdFN0cnVjdCBpcyBlcXVhbCB0byAwLjwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+TEwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJTSA8L3NwYW4+PC9iPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+dXBkYXRlPC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0iY2lyY2xlIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5VcGRhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExMX1RJTV88c3BhbiBjbGFzcz0iZ3JhbWUiPkVuYWJsZVVwZGF0ZUV2ZW50KDwvc3Bhbj4pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBUEkgdG8gY2xlYXIgVURJUyBiaXQgaW4gQ1IxCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RlciBpbnN0ZWFkIG9mIHNldHRpbmcgaXQuPC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVwZGF0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTExfVElNXzxzcGFuIGNsYXNzPSJncmFtZSI+RGlzYWJsZVVwZGF0ZUV2ZW50KDwvc3Bhbj4pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBUEkgdG8gc2V0IFVESVMgYml0IGluIENSMSByZWdpc3RlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGVhZCBvZiBjbGVhcmluZyBpdC48L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkxMCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVU0IgPC9zcGFuPjwvYj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZTwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVU0JfRVAwPHNwYW4gY2xhc3M9ImdyYW1lIj5TdGFydFhmZXIoPC9zcGFuPikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFQSSB0byBmaXgmbmJzcDt0cmFuc2ZlciBpc3N1ZXMgd2hlbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVVNCIEhTIGlzIHVzZWQgd2l0aCBETUEmbmJzcDtlbmFibGVkPC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMyBzdHlsZT0iYmFja2dyb3VuZDogcmdiKDUxLCAxMDIsIDI1NSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbmUgcmVwZWF0IHNjcm9sbCAwJSA1MCU7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtbW96LWJhY2tncm91bmQtY2xpcDogLW1vei1pbml0aWFsOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLW1vei1iYWNrZ3JvdW5kLW9yaWdpbjogLW1vei1pbml0aWFsOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLW1vei1iYWNrZ3JvdW5kLWlubGluZS1wb2xpY3k6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtbW96LWluaXRpYWw7IG1hcmdpbi1yaWdodDogNTAwcHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7QXJpYWwmcXVvdDssc2Fucy1zZXJpZjsgY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaXRlOyI+VjEuMi4yIC8gMTQtQXByaWwtMjAxNzwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2gzPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW46IDQuNXB0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwaW4gNC41cHQgMC4yNWluOyI+PGI+PHU+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6IGJsYWNrOyI+TWFpbiBDaGFuZ2VzPC9zcGFuPjwvdT48L2I+PC9wPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0iZGlzYyI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5HZW5lcmFsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlcyB0byBmaXgga25vd24gZGVmZWN0cyBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmhhbmNlbWVudHMgPHNwYW4gY2xhc3M9ImdyYW1lIj5pbXBsZW1lbnRhdGlvbjwvc3Bhbj48L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0FOIDwvc3Bhbj48L2I+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij51cGRhdGU8L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkFkZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFuYWdlbWVudCBvZiZuYnNwO292ZXJydW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yLiZuYnNwOzwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkFsbG93CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NzaWJpbGl0eSB0byByZWNlaXZlIG1lc3NhZ2VzIGZyb20KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSAyIFJYIEZJRk9zIGluIHBhcmFsbGVsIHZpYQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ZXJydXB0Ljwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkZpeCZuYnNwO21lc3NhZ2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvc3QgaXNzdWUgd2l0aCBzcGVjaWZpYyBzZXF1ZW5jZSBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNtaXQgcmVxdWVzdHMuPC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhhbmRsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNtaXNzaW9uIGZhaWx1cmUgd2l0aCBlcnJvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2ssIHdoZW4gTkFSVCBpcyBlbmFibGVkLjwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5BZGQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fSEFMX0NBTl9DQU5DRUxfPHNwYW4gY2xhc3M9ImdyYW1lIj5UUkFOU01JVCg8L3NwYW4+KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbCB0byBhYm9ydCB0cmFuc21pc3Npb24gd2hlbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZW91dCBpcyByZWFjaGVkPC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMyBzdHlsZT0iYmFja2dyb3VuZDogcmdiKDUxLCAxMDIsIDI1NSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbmUgcmVwZWF0IHNjcm9sbCAwJSA1MCU7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtbW96LWJhY2tncm91bmQtY2xpcDogLW1vei1pbml0aWFsOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLW1vei1iYWNrZ3JvdW5kLW9yaWdpbjogLW1vei1pbml0aWFsOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLW1vei1iYWNrZ3JvdW5kLWlubGluZS1wb2xpY3k6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtbW96LWluaXRpYWw7IG1hcmdpbi1yaWdodDogNTAwcHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7QXJpYWwmcXVvdDssc2Fucy1zZXJpZjsgY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaXRlOyI+VjEuMi4xIC8gMjQtTWFyY2gtMjAxNzwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2gzPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW46IDQuNXB0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwaW4gNC41cHQgMC4yNWluOyI+PGI+PHU+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6IGJsYWNrOyI+TWFpbiBDaGFuZ2VzPC9zcGFuPjwvdT48L2I+PG86cD48L286cD48L3A+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJkaXNjIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC41cHQ7Ij48c3BhbiBzdHlsZT0id2lkb3dzOiAxOyBmbG9hdDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub25lOyB3b3JkLXNwYWNpbmc6IDBweDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVwZGF0ZQorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDSE0gVXNlck1hbnVhbHMgdG8gc3VwcG9ydCBMTCA8c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iZ3JhbWUiPmRyaXZlcnM8L3NwYW4+PC9zcGFuPjwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5HZW5lcmFsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlcyB0byBmaXgga25vd24gZGVmZWN0cyBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmhhbmNlbWVudHMgPHNwYW4gY2xhc3M9ImdyYW1lIj5pbXBsZW1lbnRhdGlvbjwvc3Bhbj48L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRE1BIDwvc3Bhbj48L2I+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij51cGRhdGU8L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVwZGF0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFMX0RNQV88c3BhbiBjbGFzcz0iZ3JhbWUiPkluaXQoPC9zcGFuPikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHRvIGFkanVzdCB0aGUgY29tcGF0aWJpbGl0eQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2sgYmV0d2VlbiBGSUZPIHRocmVzaG9sZCBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1cnN0IGNvbmZpZ3VyYXRpb248L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTU1DIDwvc3Bhbj48L2I+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij51cGRhdGU8L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVwZGF0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFMX01NQ188c3BhbiBjbGFzcz0iZ3JhbWUiPkluaXRDYXJkKDwvc3Bhbj4pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB3aXRoIHByb3BlciBpbml0aWFsaXphdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VxdWVuY2UgYWRkaW5nIGEgZGVsYXkgYWZ0ZXIgTU1DCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9jayBlbmFibGU8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5VcGRhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1NQ188c3BhbiBjbGFzcz0iZ3JhbWUiPkRNQUVycm9yKDwvc3Bhbj4pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBpZ25vcmUgRE1BIEZJRk8gZXJyb3IgYXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vdCBpbXBhY3RpbmcgdGhlIGRhdGEgdHJhbnNmZXI8L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0QgPC9zcGFuPjwvYj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZTwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQUxfU0RfPHNwYW4gY2xhc3M9ImdyYW1lIj5Jbml0Q2FyZCg8L3NwYW4+KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gd2l0aCBwcm9wZXIgaW5pdGlhbGl6YXRpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcXVlbmNlIGFkZGluZyBhIGRlbGF5IGFmdGVyIFNECisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9jayBlbmFibGU8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5VcGRhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNEXzxzcGFuIGNsYXNzPSJncmFtZSI+RE1BRXJyb3IoPC9zcGFuPikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGlnbm9yZSBETUEgRklGTyBlcnJvciBhcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm90IGltcGFjdGluZyB0aGUgZGF0YSB0cmFuc2Zlcjwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOQU5EIDwvc3Bhbj48L2I+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij51cGRhdGU8L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVwZGF0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFMX05BTkRfQWRkcmVzc188c3BhbiBjbGFzcz0iZ3JhbWUiPkluYyg8L3NwYW4+KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gaW1wbGVtZW50YXRpb24gZm9yIHByb3BlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhbmUgbnVtYmVyIGNoZWNrPC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5MTAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0RNTUMgPC9zcGFuPjwvYj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZTwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTRE1NQ19EQVRBVElNRU9VVCB2YWx1ZSB3aXRoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHByb3ByaWF0ZSB2YWx1ZSBuZWVkZWQgYnkgcmVhZGluZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIHdyaXRpbmcgb3BlcmF0aW9ucyBvZiBTRCBhbmQgTU1DCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXJkczwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5MTAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUlRDIDwvc3Bhbj48L2I+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij51cGRhdGU8L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkxMX1JUQ19USU1FXzxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJncmFtZSI+R2V0KDwvc3Bhbj4pIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTExfUlRDX0RBVEVfR2V0KCkgaW5saW5lIG1hY3JvcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW1pemF0aW9uPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkxMCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBREMgPC9zcGFuPjwvYj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZTwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+Rml4CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cm9uZyBBREMgZ3JvdXAgaW5qZWN0ZWQgc2VxdWVuY2UgPHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImdyYW1lIj5jb25maWd1cmF0aW9uPC9zcGFuPjwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9InNxdWFyZSI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkxMX0FEQ19JTkpfPHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iZ3JhbWUiPlNldFNlcXVlbmNlclJhbmtzKDwvc3Bhbj4pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBMTF9BRENfSU5KX0dldFNlcXVlbmNlclJhbmtzKCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVBJJ3MgdXBkYXRlIHRvIHRha2UgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc2lkZXJhdGlvbiB0aGUgQURDIG51bWJlciBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb252ZXJzaW9uczwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5VcGRhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlJm5ic3A7ZGVmaW5lZCB2YWx1ZXMgZm9yIEFEQworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncm91cCBpbmplY3RlZCBzZXFlbmNlciA8c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJncmFtZSI+cmFua3M8L3NwYW4+Jm5ic3A7PC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgzIHN0eWxlPSJiYWNrZ3JvdW5kOiByZ2IoNTEsIDEwMiwgMjU1KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9uZSByZXBlYXQgc2Nyb2xsIDAlIDUwJTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC1tb3otYmFja2dyb3VuZC1jbGlwOiAtbW96LWluaXRpYWw7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtbW96LWJhY2tncm91bmQtb3JpZ2luOiAtbW96LWluaXRpYWw7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtbW96LWJhY2tncm91bmQtaW5saW5lLXBvbGljeToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC1tb3otaW5pdGlhbDsgbWFyZ2luLXJpZ2h0OiA1MDBwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtBcmlhbCZxdW90OyxzYW5zLXNlcmlmOyBjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpdGU7Ij5WMS4yLjAgLyAzMC1EZWNlbWJlci0yMDE2PC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvaDM+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbjogNC41cHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDBpbiA0LjVwdCAwLjI1aW47Ij48Yj48dT48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogYmxhY2s7Ij5NYWluIENoYW5nZXM8L3NwYW4+PC91PjwvYj48L3A+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJkaXNjIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPk9mZmljaWFsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVsZWFzZSB0byBhZGQgdGhlIHN1cHBvcnQgb2YgPGI+U1RNMzJGNzIyeHgsCisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNUTTMyRjcyM3h4LCBTVE0zMkY3MzJ4eDwvYj4gPGI+YW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVE0zMkY3MzN4eDwvYj4gZGV2aWNlczwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuNXB0OyI+PHNwYW4gc3R5bGU9IndpZG93czogMTsgZmxvYXQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9uZTsgd29yZC1zcGFjaW5nOiAwcHg7Ij48Yj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+QWRkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvdyBMYXllciBkcml2ZXJzIGFsbG93aW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlcmZvcm1hbmNlIGFuZCBmb290cHJpbnQgPHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iZ3JhbWUiPm9wdGltaXphdGlvbjwvc3Bhbj48L3NwYW4+PC9iPjwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+TG93CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYXllciA8c3BhbiBjbGFzcz0iZ3JhbWUiPmRyaXZlcnM8L3NwYW4+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBUElzIHByb3ZpZGUgcmVnaXN0ZXIgbGV2ZWwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2dyYW1taW5nOiByZXF1aXJlIGRlZXAga25vd2xlZGdlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZiBwZXJpcGhlcmFscyBkZXNjcmliZWQgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNUTTMyRjd4eCBSZWZlcmVuY2UgTWFudWFsczwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IndpZG93czogMTsgZmxvYXQ6IG5vbmU7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3b3JkLXNwYWNpbmc6IDBweDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5Mb3cKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYXllciBkcml2ZXJzIGFyZSBhdmFpbGFibGUgZm9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBREMsJm5ic3A7Q29ydGV4LCBDUkMsIERBQywgRE1BLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBETUEyRCwgRVhUSSwgR1BJTywgSTJDLCBJV0RHLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMUFRJTSwgUFdSLCBSQ0MsIFJORywgUlRDLCBTUEksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJTSwgVVNBUlQsIFdXREcgcGVyaXBoZXJhbHMgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZGl0aW9ubmFsIExvdyBMZXZlbCBCdXMsIFN5c3RlbQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgVXRpbGl0aWVzIEFQSXMuPC9zcGFuPjwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5Mb3cKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExheWVyIDxzcGFuIGNsYXNzPSJncmFtZSI+ZHJpdmVyczwvc3Bhbj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFQSXMgYXJlIGltcGxlbWVudGVkIGFzIHN0YXRpYworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5saW5lIGZ1bmN0aW9uIGluIG5ldzxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJhcHBsZS1jb252ZXJ0ZWQtc3BhY2UiPiZuYnNwOzwvc3Bhbj48aT5JbmMvc3RtMzJmN3h4X2xsX3BwcC5oPC9pPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJhcHBsZS1jb252ZXJ0ZWQtc3BhY2UiPiZuYnNwOzwvc3Bhbj5maWxlcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIFBQUCBwZXJpcGhlcmFscywgdGhlcmUgaXMgbm8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gZmlsZSBhbmQgZWFjaDxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJhcHBsZS1jb252ZXJ0ZWQtc3BhY2UiPiZuYnNwOzwvc3Bhbj48aT5zdG0zMmY3eHhfbGxfcHBwLmg8L2k+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImFwcGxlLWNvbnZlcnRlZC1zcGFjZSI+Jm5ic3A7PC9zcGFuPmZpbGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11c3QgYmUgaW5jbHVkZWQgaW4gdXNlciBjb2RlLjwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5HZW5lcmFsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlcyB0byBmaXgga25vd24gZGVmZWN0cyBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmhhbmNlbWVudHMgPHNwYW4gY2xhc3M9ImdyYW1lIj5pbXBsZW1lbnRhdGlvbjwvc3Bhbj48L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+QWRkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IEhBTCA8Yj5NTUM8L2I+IGFuZCA8Yj5TTUJVUzwvYj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkcml2ZXJzPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb3J0ZXg8L3NwYW4+PC9iPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+TW92ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFMX01QVV88c3BhbiBjbGFzcz0iZ3JhbWUiPkRpc2FibGUoPC9zcGFuPikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBIQUxfTVBVX0VuYWJsZSgpIGZyb20KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0bTMyZjd4eF9oYWxfY29ydGV4LmggdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0bTMyZjd4eF9oYWxfY29ydGV4LmM8L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+Q2xlYXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSB3aG9sZSBNUFUgY29udHJvbCByZWdpc3RlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4mbmJzcDtIQUxfTVBVXzxzcGFuIGNsYXNzPSJncmFtZSI+RGlzYWJsZSg8L3NwYW4+KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVBJPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1JZUDwvc3Bhbj48L2I+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGU8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0iY2lyY2xlIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5BZGQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1cHBvcnQgb2YgPHNwYW4gY2xhc3M9ImdyYW1lIj5BRVM8L3NwYW4+PC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERNQTwvc3Bhbj48L2I+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGU8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0iY2lyY2xlIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5BZGQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgY2hlY2sgb24gRE1BIHN0cmVhbSBpbnN0YW5jZSBpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFMX0RNQV88c3BhbiBjbGFzcz0iZ3JhbWUiPkRlSW5pdCg8L3NwYW4+KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVBJPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRVRIPC9zcGFuPjwvYj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZSZuYnNwOzwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkZpeAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JvbmcgZGVmaW5pdGlvbnMgaW4gZHJpdmVyIGhlYWRlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZSBzdG0zMmY3X2hhbF9ldGguaDwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGTEFTSDwvc3Bhbj48L2I+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGU8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0iY2lyY2xlIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5TdXBwb3J0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPVFAgcHJvZ3JhbSBvcGVyYXRpb248L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+QWRkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgc3VwcG9ydCBvZiBQQ1JPUCA8c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iZ3JhbWUiPmZlYXR1cmU8L3NwYW4+PC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVwZGF0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGNsZWFyaW5nIG9mIGVycm9yIDxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJncmFtZSI+ZmxhZ3M8L3NwYW4+PC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEkyQzwvc3Bhbj48L2I+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGU8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0iY2lyY2xlIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5BbGlnbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHJpdmVyIHNvdXJjZSBjb2RlIHdpdGggb3RoZXIgU1RNMzIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJncmFtZSI+ZmFtaWxpZXM8L3NwYW4+PC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEpQRUc8L3NwYW4+PC9iPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlJm5ic3A7PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgb3V0cHV0IGRhdGEgbWFuYWdlbWVudAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiZuYnNwO0hBTF9KUEVHXzxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJncmFtZSI+UGF1c2UoPC9zcGFuPikgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlcmZvcm1lZCBkdXJpbmcgdGhlIGxhc3QgZGF0YQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VuZGluZzwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJDQyA8L3NwYW4+PC9iPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+dXBkYXRlPC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0iY2lyY2xlIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5FbmFibGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBXUiBvbmx5IGlmIG5lY2Vzc2FyeSBmb3IgTFNFCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uIGluIEhBTF9SQ0NfPHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImdyYW1lIj5Pc2NDb25maWcoPC9zcGFuPikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFQSTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlJlbmFtZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUkNDX0xQVElNMUNMS1NPVVJDRV9QQ0xLIGRlZmluZSB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUkNDX0xQVElNMUNMS1NPVVJDRV9QQ0xLMTwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5SZW5hbWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJDQ19ERlNETTFDTEtTT1VSQ0VfUENMSyBkZWZpbmUgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJDQ19ERlNETTFDTEtTT1VSQ0VfUENMSzI8L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1BJPC9zcGFuPjwvYj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkNsZWFyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSWCBGSUZPIGF0IHRoZSBlbmQgb2YgZWFjaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNhY3Rpb248L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVQVJUPC9zcGFuPjwvYj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlJlbW92ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVVNBUlRfQ1IyX0xJTkVOIGJpdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJpbmcmbmJzcDt3aGVuIGluaXRpYWxpemluZyBpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3luY2hyb25vdXMgPHNwYW4gY2xhc3M9ImdyYW1lIj5tb2RlPC9zcGFuPjwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVU0I8L3NwYW4+PC9iPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+QWRkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdXBwb3J0IG9mIGVtYmVkZGVkIFVTQiBQSFkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRyb2xsZXI8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5BZGQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1cHBvcnQgb2YgQmF0dGVyeSBDaGFyZ2luZyBEZXRlY3RvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEJDRCkgZmVhdHVyZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5MTAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0RNTUM8L3NwYW4+PC9iPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+QWRkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgU0RNTUNfQ21kU0RFcmFzZVN0YXJ0QWRkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0RNTUNfQ21kU0RFcmFzZUVuZEFkZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNETU1DX0NtZE9wQ29uZGl0aW9uIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0RNTUNfQ21kU3dpdGNoIGZ1bmN0aW9uczwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+TEwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVTQjwvc3Bhbj48L2I+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGU8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0iY2lyY2xlIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5VcGRhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBFTkEgYml0IGNsZWFyaW5nIGluIE9UR19IUFJUMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXI8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb2xsb3dpbmcgY2hhbmdlcyBkb25lIG9uIHRoZSBIQUwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRyaXZlcnMgcmVxdWlyZSBhbiB1cGRhdGUgb24gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbiBjb2RlIGJhc2VkIG9uIG9sZGVyIEhBTAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImdyYW1lIj52ZXJzaW9uczwvc3Bhbj48L3NwYW4+PC9iPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0iY2lyY2xlIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48Yj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNEPC9zcGFuPjwvYj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT0ic3F1YXJlIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+T3ZlcmFsbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXdvcmsgb2YgdGhlIGRyaXZlciBmb3IgYSBtb3JlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVmZmljaWVudCZuYnNwO2ltcGxlbWVudGF0aW9uPC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT0ic3F1YXJlIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+TW9kaWZ5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5pdGlhbGl6YXRpb24gQVBJIGFuZCA8c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImdyYW1lIj5zdHJ1Y3R1cmVzPC9zcGFuPjwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPk1vZGlmeQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlYWQgLyBXcml0ZSBzZXF1ZW5jZXM6IHNlcGFyYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmZXIgcHJvY2VzcyBhbmQgU0QgQ2FyZHMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZSA8c3BhbiBjbGFzcz0iZ3JhbWUiPm1hbmFnZW1lbnQ8L3NwYW4+Jm5ic3A7PC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+QWRkaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ZXJydXB0IG1vZGUgZm9yIFJlYWQgLyBXcml0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbnM8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIEhBTF9TRF9JUlFIYW5kbGVyIGZ1bmN0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnkgb3B0aW1pemluZyB0aGUgbWFuYWdlbWVudCBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVycnVwdCA8c3BhbiBjbGFzcz0iZ3JhbWUiPmVycm9yczwvc3Bhbj48L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlJlZmVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIHRoZSBmb2xsb3dpbmcgZXhhbXBsZSB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZGVudGlmeSB0aGUgY2hhbmdlczogQlNQIGV4YW1wbGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFVTQl9EZXZpY2UvTVNDX1N0YW5kYWxvbmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb248L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48Yj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJTTwvc3Bhbj48L2I+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGU8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9InNxdWFyZSI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkFkZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgQXV0b1JlbG9hZFByZWxvYWQgZmllbGQgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVElNX0Jhc2VfSW5pdFR5cGVEZWYgc3RydWN0dXJlPC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlJlZmVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIHRoZSBUSU0gZXhhbXBsZXMgdG8gaWRlbnRpZnkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIDxzcGFuIGNsYXNzPSJncmFtZSI+Y2hhbmdlczwvc3Bhbj48Yj4mbmJzcDs8L2I+PC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PGI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOQU5EPC9zcGFuPjwvYj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT0ic3F1YXJlIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+TW9kaWZ5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5BTkRfQWRkcmVzc1R5cGVEZWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5BTkRfRGV2aWNlQ29uZmlnVHlwZURlZiBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkFORF9IYW5kbGVUeXBlRGVmIHN0cnVjdHVyZXMgPHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iZ3JhbWUiPmZpZWxkczwvc3Bhbj48L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+QWRkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBIQUxfTkFORF9Db25maWdEZXZpY2UgQVBJPC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgzIHN0eWxlPSJiYWNrZ3JvdW5kOiByZ2IoNTEsIDEwMiwgMjU1KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9uZSByZXBlYXQgc2Nyb2xsIDAlIDUwJTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC1tb3otYmFja2dyb3VuZC1jbGlwOiAtbW96LWluaXRpYWw7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtbW96LWJhY2tncm91bmQtb3JpZ2luOiAtbW96LWluaXRpYWw7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtbW96LWJhY2tncm91bmQtaW5saW5lLXBvbGljeToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC1tb3otaW5pdGlhbDsgbWFyZ2luLXJpZ2h0OiA1MDBwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtBcmlhbCZxdW90OyxzYW5zLXNlcmlmOyBjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpdGU7Ij5WMS4xLjEgLyAwMS1KdWx5LTIwMTY8L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9oMz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luOiA0LjVwdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMGluIDQuNXB0IDAuMjVpbjsiPjxiPjx1PjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiBibGFjazsiPk1haW4gQ2hhbmdlczwvc3Bhbj48L3U+PC9iPjwvcD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImRpc2MiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRE1BPC9zcGFuPjwvYj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZSZuYnNwOzwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVwZGF0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFMX0RNQV88c3BhbiBjbGFzcz0iZ3JhbWUiPlBvbGxGb3JUcmFuc2Zlcig8L3NwYW4+KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gaW1wbGVtZW50YXRpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvJm5ic3A7YXZvaWQgZWFybHkgVElNRU9VVCBlcnJvci48L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPiA8bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEpQRUc8L3NwYW4+PC9iPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQUxfSlBFR188c3BhbiBjbGFzcz0iZ3JhbWUiPkNvbmZpZ0VuY29kaW5nKDwvc3Bhbj4pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB0byBwcm9wZXJseSBzZXQgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbWFnZUhlaWdodCBhbmQgSW1hZ2VXaWR0aDwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTUEk8L3NwYW4+PC9iPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTUElfPHNwYW4gY2xhc3M9ImdyYW1lIj5ETUFUcmFuc21pdFJlY2VpdmVDcGx0KDwvc3Bhbj4pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB0byBwcm9wZXJseSBoYW5kbGUgdGhlIENSQworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGF2b2lkIGNvbmRpdGlvbmFsIHN0YXRlbWVudAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHVwbGljYXRpb248L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDMgc3R5bGU9ImJhY2tncm91bmQ6IHJnYig1MSwgMTAyLCAyNTUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub25lIHJlcGVhdCBzY3JvbGwgMCUgNTAlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLW1vei1iYWNrZ3JvdW5kLWNsaXA6IC1tb3otaW5pdGlhbDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC1tb3otYmFja2dyb3VuZC1vcmlnaW46IC1tb3otaW5pdGlhbDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC1tb3otYmFja2dyb3VuZC1pbmxpbmUtcG9saWN5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLW1vei1pbml0aWFsOyBtYXJnaW4tcmlnaHQ6IDUwMHB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O0FyaWFsJnF1b3Q7LHNhbnMtc2VyaWY7IGNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGl0ZTsiPlYxLjEuMCAvIDIyLUFwcmlsLTIwMTY8L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9oMz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luOiA0LjVwdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMGluIDQuNXB0IDAuMjVpbjsiPjxiPjx1PjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiBibGFjazsiPk1haW4gQ2hhbmdlczwvc3Bhbj48L3U+PC9iPjwvcD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImRpc2MiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+T2ZmaWNpYWwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWxlYXNlIHRvIGFkZCB0aGUgc3VwcG9ydCBvZiA8Yj5TVE0zMkY3NjV4eCwKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1RNMzJGNzY3eHgsIFNUTTMyRjc2OHh4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1RNMzJGNzY5eHgsIFNUTTMyRjc3N3h4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1RNMzJGNzc4eHg8L2I+IDxiPmFuZCBTVE0zMkY3Nzl4eDwvYj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2VzPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5HZW5lcmFsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlcyB0byBmaXgga25vd24gZGVmZWN0cyBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmhhbmNlbWVudHMgPHNwYW4gY2xhc3M9ImdyYW1lIj5pbXBsZW1lbnRhdGlvbjwvc3Bhbj48L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+QWRkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IEhBTCBkcml2ZXJzIGZvcjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iYXBwbGUtY29udmVydGVkLXNwYWNlIj4gPC9zcGFuPjxiPkRGU0RNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFNJPHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImFwcGxlLWNvbnZlcnRlZC1zcGFjZSI+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBKUEVHIDwvc3Bhbj48L2I+YW5kPHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJhcHBsZS1jb252ZXJ0ZWQtc3BhY2UiPiA8L3NwYW4+PGI+TURJT1M8c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iYXBwbGUtY29udmVydGVkLXNwYWNlIj4gPC9zcGFuPjwvYj5wZXJpcGhlcmFsczwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5FbmhhbmNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFMIGRlbGF5IGFuZCB0aW1lYmFzZSA8c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImdyYW1lIj5pbXBsZW1lbnRhdGlvbjwvc3Bhbj48L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkFkZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IGRyaXZlcnMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0bTMyZjd4eF9oYWxfdGltZWJhc2VfdGltX3RlbXBsYXRlLmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG0zMmY3eHhfaGFsX3RpbWViYXNlX3J0Y19hbGFybV90ZW1wbGF0ZS5jCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0bTMyZjd4eF9oYWxfdGltZWJhc2VfcnRjX3dha2V1cF90ZW1wbGF0ZS5jCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGljaCBvdmVycmlkZSB0aGUgbmF0aXZlIEhBTCB0aW1lCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlIGZ1bmN0aW9ucyAoZGVmaW5lZCBhcyB3ZWFrKSB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWl0aGVyIHVzZSB0aGUgVElNIG9yIHRoZSBSVEMgYXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWUgYmFzZSB0aWNrIHNvdXJjZS4gRm9yIG1vcmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldGFpbHMgYWJvdXQgdGhlIHVzYWdlIG9mIHRoZXNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkcml2ZXJzLCBwbGVhc2UgcmVmZXIgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTFxIQUxfVGltZUJhc2UgZXhhbXBsZXMmbmJzcDs8c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0id2lkb3dzOiAxOyBmbG9hdDogbm9uZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd29yZC1zcGFjaW5nOiAwcHg7Ij5hbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnJlZVJUT1MtYmFzZWQgPHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iZ3JhbWUiPmFwcGxpY2F0aW9uczwvc3Bhbj48L3NwYW4+PC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5UaGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbGxvd2luZyBjaGFuZ2VzIGRvbmUgb24gdGhlIEhBTAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHJpdmVycyByZXF1aXJlIGFuIHVwZGF0ZSBvbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uIGNvZGUgYmFzZWQgb24gSEFMIFYxLjAuNDwvc3Bhbj48L2I+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxpPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUFSVCwgVVNBUlQsIElSREEsIFNNQVJUQ0FSRCwgU1BJLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJMkMsJm5ic3A7UVNQSSA8L3NwYW4+PC9pPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPihyZWZlcmVuY2VkCisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzIDxpPlBQUDwvaT4gaGVyZSBiZWxvdyk8aT4gPC9pPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJncmFtZSI+ZHJpdmVyczwvc3Bhbj48L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPSJzcXVhcmUiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5BZGQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFBQIGVycm9yIG1hbmFnZW1lbnQgZHVyaW5nIERNQQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzLiBUaGlzIHJlcXVpcmVzIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb2xsb3dpbmcgdXBkYXRlcyBvbiZuYnNwO3VzZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb246PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT0ic3F1YXJlIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+Q29uZmlndXJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGVuYWJsZSB0aGUgUFBQIElSUSBpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTF9QUFBfPHNwYW4gY2xhc3M9ImdyYW1lIj5Nc3BJbml0KDwvc3Bhbj4pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb248L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG0zMmY3eHhfaXQuYyBmaWxlLCBQUFBfPHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJncmFtZSI+SVJRSGFuZGxlcig8L3NwYW4+KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uOiBhZGQgYSBjYWxsIHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFMX1BQUF9JUlFIYW5kbGVyKCkgZnVuY3Rpb248L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj4gPG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+QWRkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGN1c3RvbWl6ZSB0aGUgRXJyb3IgQ2FsbGJhY2sKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBUEk6IEhBTF9QUFBfPHNwYW4gY2xhc3M9ImdyYW1lIj5FcnJvckNhbGxiYWNrKDwvc3Bhbj4pPC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxpPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSTJDPC9zcGFuPjwvaT48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZWZlcmVuY2VkIGFzIDxpPlBQUDwvaT4gaGVyZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVsb3cpPGk+IDwvaT5kcml2ZXJzOjwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+IDxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPSJzcXVhcmUiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5VcGRhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gYXZvaWQgd2FpdGluZyBvbiBTVE9QRi9CVEYvQUYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZyB1bmRlciBETUEgSVNSIGJ5IHVzaW5nIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUFAgZW5kIG9mIHRyYW5zZmVyIGludGVycnVwdCBpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgRE1BIHRyYW5zZmVyIHByb2Nlc3MuIFRoaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZXMgdGhlIGZvbGxvd2luZyB1cGRhdGVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uJm5ic3A7dXNlciBhcHBsaWNhdGlvbjo8L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPSJzcXVhcmUiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5Db25maWd1cmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgZW5hYmxlIHRoZSBQUFAgSVJRIGluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFMX1BQUF88c3BhbiBjbGFzcz0iZ3JhbWUiPk1zcEluaXQoPC9zcGFuPikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5JbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0bTMyZjd4eF9pdC5jIGZpbGUsIFBQUF88c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImdyYW1lIj5JUlFIYW5kbGVyKDwvc3Bhbj4pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb246IGFkZCBhIGNhbGwgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQUxfUFBQX0lSUUhhbmRsZXIoKSBmdW5jdGlvbjwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48aT48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElXREcgPC9zcGFuPjwvaT48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5kcml2ZXI6CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJld29yayBvdmVyYWxsIGRyaXZlciBmb3IgYmV0dGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbXBsZW1lbnRhdGlvbjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT0ic3F1YXJlIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+UmVtb3ZlJm5ic3A7SEFMX0lXREdfPHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iZ3JhbWUiPlN0YXJ0KDwvc3Bhbj4pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQUxfSVdER19Nc3BJbml0KCkgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTF9JV0RHX0dldFN0YXRlKCkmbmJzcDtBUElzPC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PGk+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXV0RHIDwvc3Bhbj48L2k+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+ZHJpdmVyOgorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXdvcmsgb3ZlcmFsbCBkcml2ZXIgZm9yIGJldHRlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1wbGVtZW50YXRpb248L3NwYW4+PHNwYW4gc3R5bGU9IiI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT0ic3F1YXJlIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+UmVtb3ZlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTF9XV0RHXzxzcGFuIGNsYXNzPSJncmFtZSI+U3RhcnQoPC9zcGFuPiksCisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFMX1dXREdfU3RhcnRfSVQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFMX1dXREdfTXNwRGVJbml0KCkgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTF9XV0RHX0dldFN0YXRlKCkgQVBJcyZuYnNwOzwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj4gPG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSZuYnNwOzwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7Q2FsaWJyaSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMX1dXREdfPHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iZ3JhbWUiPlJlZnJlc2goPC9zcGFuPldXREdfSGFuZGxlVHlwZURlZgorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpod3dkZywgdWludDMyX3QgY291bnRlcikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm5ic3A7ZnVuY3Rpb24gYW5kIEFQSSAmbmJzcDtieQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW1vdmluZyB0aGUgJm5ic3A7ImNvdW50ZXIiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtZXRlcjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxpPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVNQSSBkcml2ZXI6IDwvc3Bhbj48L2k+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+Jm5ic3A7RW5oYW5jZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIERNQSB0cmFuc21pdCBwcm9jZXNzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBieSZuYnNwO3VzaW5nJm5ic3A7UFBQIFRDIGludGVycnVwdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGVhZCBvZiB3YWl0aW5nIG9uIFRDIGZsYWcgdW5kZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERNQSBJU1IuJm5ic3A7VGhpcyByZXF1aXJlcyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbGxvd2luZyB1cGRhdGVzIG9uJm5ic3A7dXNlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb246PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPSJzcXVhcmUiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5Db25maWd1cmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGVuYWJsZSB0aGUgUVNQSSZuYnNwO0lSUSBpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQUxfUVNQSV88c3BhbiBjbGFzcz0iZ3JhbWUiPk1zcEluaXQoPC9zcGFuPikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb248L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RtMzJmN3h4X2l0LmMgZmlsZSwgUVNQSV88c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJncmFtZSI+SVJRSGFuZGxlcig8L3NwYW4+KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbjogYWRkIGEgY2FsbCB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQUxfUVNQSV9JUlFIYW5kbGVyKCkgZnVuY3Rpb248L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48aT48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENFQyBkcml2ZXI6IDwvc3Bhbj48L2k+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+Jm5ic3A7T3ZlcmFsbAorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkcml2ZXIgcmV3b3JrIHdpdGggY29tcGF0aWJpbGl0eQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdmVyc3VzIHByZXZpb3VzIEhBTCB2ZXJzaW9uPC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT0ic3F1YXJlIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+UmVtb3ZlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTCBDRUMgcG9sbGluZyBQcm9jZXNzIGZ1bmN0aW9uczoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFMX0NFQ188c3BhbiBjbGFzcz0iZ3JhbWUiPlRyYW5zbWl0KDwvc3Bhbj4pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBIQUxfQ0VDX1JlY2VpdmUoKTwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj4gPG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+UmVtb3ZlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTCBDRUMgcmVjZWl2ZSBpbnRlcnJ1cHQgcHJvY2VzcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiZuYnNwO0hBTF9DRUNfUmVjZWl2ZV88c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJncmFtZSI+SVQoPC9zcGFuPikgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZSB0aGUgInJlY2VpdmUiICZuYnNwO21vZGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHVyaW5nIHRoZSBJbml0IHBoYXNlPC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPiA8bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5SZW5hbWUmbmJzcDtIQUxfQ0VDXzxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImdyYW1lIj5HZXRSZWNlaXZlZEZyYW1lU2l6ZSg8L3NwYW4+KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW50aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvJm5ic3A7SEFMX0NFQ19HZXRMYXN0UmVjZWl2ZWRGcmFtZVNpemUoKTwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5BZGQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IEhBTCBBUElzOiBIQUxfQ0VDXzxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImdyYW1lIj5TZXREZXZpY2VBZGRyZXNzKDwvc3Bhbj4pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBIQUxfQ0VDX0NoYW5nZVJ4QnVmZmVyKCk8L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+IDxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlJlbW92ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUmbmJzcDsnSW5pdGlhdG9yQWRkcmVzcycgZmllbGQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbSB0aGUmbmJzcDtDRUNfSW5pdFR5cGVEZWYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0dXJlJm5ic3A7YW5kIG1hbmFnZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdCZuYnNwO2FzIGEgcGFyYW1ldGVyIGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQUxfQ0VDX1RyYW5zbWl0XzxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImdyYW1lIj5JVCg8L3NwYW4+KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbjwvc3Bhbj48c3BhbiBzdHlsZT0iIj4gPG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+QWRkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBwYXJhbWV0ZXIgJ1J4RnJhbWVTaXplJyBpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQUxfQ0VDXzxzcGFuIGNsYXNzPSJncmFtZSI+UnhDcGx0Q2FsbGJhY2soPC9zcGFuPikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb248L3NwYW4+PHNwYW4gc3R5bGU9IiI+IDxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPk1vdmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0VDIFJ4IGJ1ZmZlciBwb2ludGVyJm5ic3A7ZnJvbQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDRUNfSGFuZGxlVHlwZURlZiBzdHJ1Y3R1cmUgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0VDX0luaXRUeXBlRGVmIHN0cnVjdHVyZTwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENBTjwvc3Bhbj48L2I+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGUmbmJzcDs8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0iY2lyY2xlIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5BZGQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBzdXBwb3J0IG9mIDxzcGFuIGNsYXNzPSJncmFtZSI+Q0FOMzwvc3Bhbj48L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0VDPC9zcGFuPjwvYj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPk92ZXJhbGwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRyaXZlciByZXdvcmsgd2l0aCZuYnNwO2JyZWFrIG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wYXRpYmlsaXR5IHdpdGggSEFMIFYxLjAuNDwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9InNxdWFyZSI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlJlbW92ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgSEFMIENFQyBwb2xsaW5nIFByb2Nlc3M6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTF9DRUNfPHNwYW4gY2xhc3M9ImdyYW1lIj5UcmFuc21pdCg8L3NwYW4+KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgSEFMX0NFQ19SZWNlaXZlKCk8L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+UmVtb3ZlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBIQUwgQ0VDIHJlY2VpdmUgaW50ZXJydXB0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3MgKEhBTF9DRUNfUmVjZWl2ZV88c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJncmFtZSI+SVQoPC9zcGFuPikpIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYW5hZ2UgdGhlICJSZWNlaXZlIiBtb2RlIGVuYWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoaW4gdGhlIEluaXQgcGhhc2U8L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+IDxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlJlbmFtZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQUxfQ0VDXzxzcGFuIGNsYXNzPSJncmFtZSI+R2V0UmVjZWl2ZWRGcmFtZVNpemUoPC9zcGFuPikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8mbmJzcDtIQUxfQ0VDX0dldExhc3RSZWNlaXZlZEZyYW1lU2l6ZSgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkFkZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgSEFMIEFQSXM6IEhBTF9DRUNfPHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iZ3JhbWUiPlNldERldmljZUFkZHJlc3MoPC9zcGFuPikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIEhBTF9DRUNfQ2hhbmdlUnhCdWZmZXIoKTwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5SZW1vdmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlJm5ic3A7J0luaXRpYXRvckFkZHJlc3MnIGZpZWxkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb20gdGhlJm5ic3A7Q0VDX0luaXRUeXBlRGVmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdHVyZSZuYnNwO2FuZCBtYW5hZ2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQmbmJzcDthcyBhIHBhcmFtZXRlciBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFMX0NFQ19UcmFuc21pdF88c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJncmFtZSI+SVQoPC9zcGFuPikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb248L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+QWRkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBwYXJhbWV0ZXIgJ1J4RnJhbWVTaXplJyBpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQUxfQ0VDXzxzcGFuIGNsYXNzPSJncmFtZSI+UnhDcGx0Q2FsbGJhY2soPC9zcGFuPikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb248L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+TW92ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDRUMgUnggYnVmZmVyIHBvaW50ZXImbmJzcDtmcm9tCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENFQ19IYW5kbGVUeXBlRGVmIHN0cnVjdHVyZSB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDRUNfSW5pdFR5cGVEZWYgc3RydWN0dXJlIDxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkcml2ZXIgdG8gaW1wbGVtZW50IHRoZSBuZXcgQ0VDCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZSBtYWNoaW5lOiA8L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPSJzcXVhcmUiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5BZGQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3Jm5ic3A7InJ4U3RhdGUiIGZpZWxkIGluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENFQ19IYW5kbGVUeXBlRGVmIHN0cnVjdHVyZSB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm92aWRlIHRoZSBDRUMgc3RhdGUgaW5mb3JtYXRpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVsYXRlZCB0byBSeCA8c3BhbiBjbGFzcz0iZ3JhbWUiPk9wZXJhdGlvbnM8L3NwYW4+PC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlJlbmFtZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3RhdGUiIGZpZWxkIGluIENFQ19IYW5kbGVUeXBlRGVmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdHVyZSB0byAiZ3N0YXRlIjogQ0VDIHN0YXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZm9ybWF0aW9uIHJlbGF0ZWQgdG8gZ2xvYmFsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhhbmRsZSBtYW5hZ2VtZW50IGFuZCBUeCA8c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJncmFtZSI+T3BlcmF0aW9uczwvc3Bhbj48L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+IDxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVwZGF0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDRUMgcHJvY2VzcyB0byBtYW5hZ2UgdGhlIG5ldyBDRUMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGVzLjwvc3Bhbj48c3BhbiBzdHlsZT0iIj4gPG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fSEFMX0NFQ19SRVNFVF9IQU5ETEVfPHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iZ3JhbWUiPlNUQVRFKDwvc3Bhbj4pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hY3JvIHRvIGhhbmRsZSB0aGUgbmV3IENFQyBzdGF0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbWV0ZXJzIChnU3RhdGUsIHJ4U3RhdGUpPC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRE1BPC9zcGFuPjwvYj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZSZuYnNwOzwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkFkZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IEFQSXMgSEFMX0RNQV88c3BhbiBjbGFzcz0iZ3JhbWUiPlJlZ2lzdGVyQ2FsbGJhY2soPC9zcGFuPikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBIQUxfRE1BX1VuUmVnaXN0ZXJDYWxsYmFjayB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXIvdW5yZWdpc3RlciB0aGUgZGlmZmVyZW50CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFja3MgaWRlbnRpZmllZCBieSB0aGUgZW51bQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZWRlZiBIQUxfRE1BX0NhbGxiYWNrSURUeXBlRGVmPC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkFkZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IEFQSSBIQUxfRE1BX0Fib3J0XzxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJncmFtZSI+SVQoPC9zcGFuPikgdG8gYWJvcnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERNQSB0cmFuc2ZlciB1bmRlciBpbnRlcnJ1cHQgY29udGV4dDwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9InNxdWFyZSI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgcmVnaXN0ZXJlZCBBYm9ydCBjYWxsYmFjayBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsZWQgd2hlbiBETUEgdHJhbnNmZXIgYWJvcnRpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMgPHNwYW4gY2xhc3M9ImdyYW1lIj5jb21wbGV0ZWQ8L3NwYW4+PC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+QWRkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgY2hlY2sgb2YgY29tcGF0aWJpbGl0eSBiZXR3ZWVuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGSUZPIHRocmVzaG9sZCBsZXZlbCBhbmQgc2l6ZSBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lbW9yeSBidXJzdCBpbiB0aGUgSEFMX0RNQV88c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iZ3JhbWUiPkluaXQoPC9zcGFuPikgQVBJPC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj4gPG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5BZGQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBFcnJvciBDb2RlczoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTF9ETUFfRVJST1JfUEFSQU0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQUxfRE1BX0VSUk9SX05PX1hGRVIgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQUxfRE1BX0VSUk9SX05PVF9TVVBQT1JURUQ8L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmdiKDk4LCA5OCwgOTgpOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiBibGFjazsiPlJlbW92ZSBhbGwgRE1BIHN0YXRlcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVsYXRlZCB0byBNRU0wL01FTTEgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTF9ETUFfU3RhdGVUeXBlRGVmPC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiA5LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7SGVsdmV0aWNhJnF1b3Q7LHNhbnMtc2VyaWY7Ij48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0iZGlzYyI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBETUEyRDwvc3Bhbj48L2I+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGUmbmJzcDs8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0iY2lyY2xlIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5VcGRhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBIQUxfRE1BMkRfPHNwYW4gY2xhc3M9ImdyYW1lIj5EZUluaXQoPC9zcGFuPikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHRvOjwvc3Bhbj48c3BhbiBzdHlsZT0iIj4gPG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9InNxdWFyZSI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkFib3J0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZmVyIGluIGNhc2Ugb2Ygb25nb2luZyBETUEyRAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zlcjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5SZXNldAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBETUEyRCBjb250cm9sIDxzcGFuIGNsYXNzPSJncmFtZSI+cmVnaXN0ZXJzPC9zcGFuPjwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9IiI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQUxfRE1BMkRfPHNwYW4gY2xhc3M9ImdyYW1lIj5BYm9ydCg8L3NwYW4+KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gZGlzYWJsZSBETUEyRCBpbnRlcnJ1cHRzIGFmdGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9wcGluZyB0cmFuc2Zlcjwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+T3B0aW1pemUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTF9ETUEyRF88c3BhbiBjbGFzcz0iZ3JhbWUiPklSUUhhbmRsZXIoPC9zcGFuPikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ5IHJlYWRpbmcgc3RhdHVzIHJlZ2lzdGVycyBvbmx5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbmNlPC9zcGFuPjxzcGFuIHN0eWxlPSIiPiA8bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVwZGF0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFMX0RNQTJEXzxzcGFuIGNsYXNzPSJncmFtZSI+UHJvZ3JhbUxpbmVFdmVudCg8L3NwYW4+KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gdG86PC9zcGFuPjxzcGFuIHN0eWxlPSIiPiA8bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT0ic3F1YXJlIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+UmV0dXJuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTCBlcnJvciBzdGF0ZSBpbiBjYXNlIG9mIHdyb25nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUgPHNwYW4gY2xhc3M9ImdyYW1lIj52YWx1ZTwvc3Bhbj48L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+RW5hYmxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUgaW50ZXJydXB0IGFmdGVyIHNldHRpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUgd2F0ZXJtYXJrIDxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImdyYW1lIj5jb25maWd1cmF0aW9uPC9zcGFuPjwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkFkZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IEhBTF9ETUEyRF88c3BhbiBjbGFzcz0iZ3JhbWUiPkNMVVRMb2FkKDwvc3Bhbj4pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgSEFMX0RNQTJEX0NMVVRMb2FkX0lUKCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9ucyB0byBzdGFydCBETUEyRCBDTFVUCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2FkaW5nPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPSJzcXVhcmUiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUxfRE1BMkRfQ0xVVExvYWRpbmdfPHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iZ3JhbWUiPkFib3J0KDwvc3Bhbj4pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHRvIGFib3J0IHRoZSBETUEyRCBDTFVUCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRpbmc8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMX0RNQTJEX0NMVVRMb2FkaW5nXzxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImdyYW1lIj5TdXNwZW5kKDwvc3Bhbj4pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHRvIHN1c3BlbmQgdGhlIERNQTJEIENMVVQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9hZGluZzwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUxfRE1BMkRfQ0xVVExvYWRpbmdfPHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iZ3JhbWUiPlJlc3VtZSg8L3NwYW4+KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB0byByZXN1bWUgdGhlIERNQTJEIENMVVQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9hZGluZzwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkFkZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IERNQTJEIGRlYWQgdGltZSBtYW5hZ2VtZW50Ojwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9InNxdWFyZSI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTF9ETUEyRF88c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJncmFtZSI+RW5hYmxlRGVhZFRpbWUoPC9zcGFuPikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gdG8gZW5hYmxlIERNQTJEIGRlYWQgdGltZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZWF0dXJlPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTF9ETUEyRF88c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJncmFtZSI+RGlzYWJsZURlYWRUaW1lKDwvc3Bhbj4pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHRvIGRpc2FibGUgRE1BMkQgZGVhZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lIGZlYXR1cmU8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMX0RNQTJEXzxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImdyYW1lIj5Db25maWdEZWFkVGltZSg8L3NwYW4+KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB0byBjb25maWd1cmUgZGVhZCB0aW1lPC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgbmFtZSBvZiBETUEyRCBJbnB1dC9PdXRwdXQgY29sb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGUgZGVmaW5lcyB0byBiZSA8c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iZ3JhbWUiPm1vcmUgY2xlYXI8L3NwYW4+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgdXNlciAoRE1BMkRfSU5QVVRfWFhYIGZvciBpbnB1dAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXJzIENvbG9ycywgRE1BMkRfT1VUUFVUX1hYWCBmb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dCBmcmFtZWJ1ZmZlciBDb2xvcnMpPC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERDTUk8L3NwYW4+PC9iPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlJm5ic3A7PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+UmVuYW1lCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEQ01JX0RNQUNvbnZDcGx0IHRvIERDTUlfRE1BWGZlckNwbHQ8L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPiA8bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVwZGF0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFMX0RDTUlfU3RhcnRfPHNwYW4gY2xhc3M9ImdyYW1lIj5ETUEoPC9zcGFuPikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHRvJm5ic3A7RW5hYmxlIHRoZSBEQ01JCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZXJpcGhlcmFsPC9zcGFuPjxzcGFuIHN0eWxlPSIiPiA8bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkFkZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IHRpbWVvdXQgaW1wbGVtZW50YXRpb24gYmFzZWQgb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNwdSBjeWNsZXMgZm9yIERDTUkgPHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImdyYW1lIj5zdG9wPC9zcGFuPjwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+IDxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+QWRkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQUxfRENNSV88c3BhbiBjbGFzcz0iZ3JhbWUiPlN1c3BlbmQoPC9zcGFuPikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHRvIHN1c3BlbmQgRENNSSBjYXB0dXJlPC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj4gPG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5BZGQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTF9EQ01JXzxzcGFuIGNsYXNzPSJncmFtZSI+UmVzdW1lKDwvc3Bhbj4pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB0byByZXN1bWUgY2FwdHVyZSBhZnRlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRENNSSBzdXNwZW5kPC9zcGFuPjxzcGFuIHN0eWxlPSIiPiA8bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVwZGF0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jayBtZWNoYW5pc20gZm9yIERDTUkgcHJvY2Vzczwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+IDxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQUxfRENNSV88c3BhbiBjbGFzcz0iZ3JhbWUiPklSUUhhbmRsZXIoPC9zcGFuPikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHRvOjwvc3Bhbj48c3BhbiBzdHlsZT0iIj4gPG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9InNxdWFyZSI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkFkZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvciBtYW5hZ2VtZW50IGluIGNhc2UgRE1BCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycyB0aHJvdWdoIDxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImdyYW1lIj5YZmVyQWJvcnRDYWxsYmFjayg8L3NwYW4+KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgSEFMX0RNQV9BYm9ydF9JVCgpPC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPk9wdGltaXplCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGUgYnkgdXNpbmcgZGlyZWN0IHJlZ2lzdGVyIDxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImdyYW1lIj5yZWFkPC9zcGFuPjwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPk1vdmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBjb250ZW50IG9mIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RtMzJmN3h4X2hhbF9kY21pX2V4LmMvLmggZmlsZXMgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1vbiBkcml2ZXIgZmlsZXMgKHRoZSBleHRlbnNpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVzIGFyZSBrZXB0IGVtcHR5IGZvciBwcm9qZWN0cworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcGF0aWJpbGl0eSByZWFzb24pPC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZMQVNIPC9zcGFuPjwvYj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZSZuYnNwOzwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkFkZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHN1cHBvcnQgb2YgRHVhbCBCQU5LIGZlYXR1cmU8L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+QWRkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX0hBTF9GTEFTSF9DQUxDX0JPT1RfQkFTRV88c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iZ3JhbWUiPkFEUig8L3NwYW4+KSBtYWNybworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gY2FsY3VsYXRlIHRoZSBGTEFTSCBCb290IEJhc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFkcmVzczwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPk1vdmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZsYXNoIHRvdGFsIHNlY3RvciBkZWZpbmUgdG8gQ01TSVMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlciA8c3BhbiBjbGFzcz0iZ3JhbWUiPmZpbGVzPC9zcGFuPjwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGTUM8L3NwYW4+PC9iPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGTUNfTk9SU1JBTV88c3BhbiBjbGFzcz0iZ3JhbWUiPkluaXQoPC9zcGFuPikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIHJlbW92ZSB0aGUgQnVyc3QgYWNjZXNzIG1vZGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb248L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5VcGRhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZNQ19TRFJBTV9UaW1pbmdfPHNwYW4gY2xhc3M9ImdyYW1lIj5Jbml0KDwvc3Bhbj4pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byBmaXggaW5pdGlhbGl6YXRpb24gaXNzdWUgd2hlbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJpbmcgMiBTRFJBTSBiYW5rczwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQ0Q8L3NwYW4+PC9iPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQ0RfUG9ydF88c3BhbiBjbGFzcz0iZ3JhbWUiPklSUUhhbmRsZXIoPC9zcGFuPikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIGJlIGNvbXBsaWFudCB3aXRoIG5ldyBUaW1lIGJhc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltcGxlbWVudGF0aW9uPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSTJDPC9zcGFuPjwvYj48aT48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij4gPC9zcGFuPjwvaT48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZTwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPiA8bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkFkZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHN1cHBvcnQgb2YgSTJDIGZhc3QgbW9kZSBwbHVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoRk0rKTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVwZGF0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUG9sbGluZyBtYW5hZ2VtZW50Ojwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9InNxdWFyZSI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaW1lb3V0IHZhbHVlIG11c3QgYmUgZXN0aW1hdGVkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciB0aGUgb3ZlcmFsbCBwcm9jZXNzIGR1cmF0aW9uOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZ3JhbWUiPnRoZTwvc3Bhbj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGltZW91dCBtZWFzdXJlbWVudCBpcyBjdW11bGF0aXZlPC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+QWRkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgbWFuYWdlbWVudCBvZiBBYm9ydAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmljZTombmJzcDtBYm9ydCBETUEgdHJhbnNmZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm91Z2ggPHNwYW4gY2xhc3M9ImdyYW1lIj5pbnRlcnJ1cHQ8L3NwYW4+PC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT0ic3F1YXJlIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGNhc2Ugb2YgTWFzdGVyIEFib3J0IElUCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZmVyIHVzYWdlOjwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9InNxdWFyZSI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkFkZCZuYnNwO25ldworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXIgSEFMX0kyQ188c3BhbiBjbGFzcz0iZ3JhbWUiPkFib3J0Q3BsdENhbGxiYWNrKDwvc3Bhbj4pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gaW5mb3JtIHVzZXIgb2YgdGhlIGVuZCBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFib3J0IHByb2Nlc3M8L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5BCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IGFib3J0IHN0YXRlIGlzIGRlZmluZWQgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgSEFMX0kyQ19TdGF0ZVR5cGVEZWYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3R1cmU8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkFkZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIG1hbmFnZW1lbnQgb2YgSTJDIHBlcmlwaGVyYWwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycywgQUNLIGZhaWx1cmUgYW5kIFNUT1AKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmRpdGlvbiBkZXRlY3Rpb24gZHVyaW5nIERNQQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2Vzcy4gVGhpcyByZXF1aXJlcyB0aGUgZm9sbG93aW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVzIG9uIHVzZXIgYXBwbGljYXRpb246PC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT0ic3F1YXJlIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+Q29uZmlndXJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBlbmFibGUgdGhlIEkyQyBJUlEgaW4gSEFMX0kyQ188c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJncmFtZSI+TXNwSW5pdCg8L3NwYW4+KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5JbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG0zMmY3eHhfaXQuYyBmaWxlLCBJMkNfPHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iZ3JhbWUiPklSUUhhbmRsZXIoPC9zcGFuPikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb246IGFkZCBhIGNhbGwgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFMX0kyQ19JUlFIYW5kbGVyKCkgZnVuY3Rpb248L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+QWRkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBjdXN0b21pemUgdGhlIEVycm9yIENhbGxiYWNrCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFQSTogSEFMX0kyQ188c3BhbiBjbGFzcz0iZ3JhbWUiPkVycm9yQ2FsbGJhY2soPC9zcGFuPik8L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+UmVmZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gdGhlIEkyQ19FRVBST00gb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSTJDX1R3b0JvYXJkc19Db21ETUEgcHJvamVjdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGFtcGxlcyB1c2FnZSBvZiB0aGUgPHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iZ3JhbWUiPkFQSTwvc3Bhbj48L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkFkZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHN1cHBvcnQgb2YmbmJzcDtJMkMgcmVwZWF0ZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0IGZlYXR1cmU6PC9zcGFuPjxzcGFuIHN0eWxlPSIiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIHR5cGU9InNxdWFyZSI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPldpdGgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGZvbGxvd2luZyBuZXcgQVBJczwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCB0eXBlPSJzcXVhcmUiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTF9JMkNfTWFzdGVyX1NlcXVlbnRpYWxfVHJhbnNtaXRfPHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJncmFtZSI+SVQoPC9zcGFuPik8L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj4gPG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUxfSTJDX01hc3Rlcl9TZXF1ZW50aWFsX1JlY2VpdmVfPHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJncmFtZSI+SVQoPC9zcGFuPik8L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj4gPG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUxfSTJDX01hc3Rlcl9BYm9ydF88c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImdyYW1lIj5JVCg8L3NwYW4+KTwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPiA8bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTF9JMkNfU2xhdmVfU2VxdWVudGlhbF9UcmFuc21pdF88c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImdyYW1lIj5JVCg8L3NwYW4+KTwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPiA8bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTF9JMkNfU2xhdmVfU2VxdWVudGlhbF9SZWNlaXZlXzxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iZ3JhbWUiPklUKDwvc3Bhbj4pPC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+IDxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMX0kyQ19FbmFibGVMaXN0ZW5fPHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJncmFtZSI+SVQoPC9zcGFuPik8L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj4gPG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUxfSTJDX0Rpc2FibGVMaXN0ZW5fPHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJncmFtZSI+SVQoPC9zcGFuPik8L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkFkZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgdXNlciBjYWxsYmFja3M6PC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIHR5cGU9InNxdWFyZSI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMX0kyQ188c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImdyYW1lIj5MaXN0ZW5DcGx0Q2FsbGJhY2soPC9zcGFuPik8L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTF9JMkNfPHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJncmFtZSI+QWRkckNhbGxiYWNrKDwvc3Bhbj4pPC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+U2V2ZXJhbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlcyBvbiBIQUwgSTJDIGRyaXZlciB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1wbGVtZW50IHRoZSBuZXcgSTJDIHN0YXRlIG1hY2hpbmU6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCB0eXBlPSJzcXVhcmUiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5BZGQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IEFQSSB0byBnZXQgdGhlJm5ic3A7STJDIG1vZGU6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTF9JMkNfPHNwYW4gY2xhc3M9ImdyYW1lIj5HZXRNb2RlKDwvc3Bhbj4pPC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPiA8bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5VcGRhdGUmbmJzcDtJMkMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2VzcyB0byBtYW5hZ2UgdGhlIG5ldyZuYnNwO0kyQworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZ3JhbWUiPnN0YXRlczwvc3Bhbj48L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJV0RHPC9zcGFuPjwvYj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPk92ZXJhbGwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJld29yayBvZiB0aGUgZHJpdmVyIGZvciBhIG1vcmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVmZmljaWVudCZuYnNwO2ltcGxlbWVudGF0aW9uPC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT0ic3F1YXJlIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+UmVtb3ZlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBmb2xsb3dpbmcgQVBJczo8L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPSJzcXVhcmUiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUxfSVdER188c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImdyYW1lIj5TdGFydCg8L3NwYW4+KTwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTF9JV0RHXzxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iZ3JhbWUiPk1zcEluaXQoPC9zcGFuPik8L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUxfSVdER188c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImdyYW1lIj5HZXRTdGF0ZSg8L3NwYW4+KTwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltcGxlbWVudGF0aW9uOjwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9InNxdWFyZSI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTF9JV0RHXzxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iZ3JhbWUiPkluaXQoPC9zcGFuPikgOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMgZnVuY3Rpb24gaW5zdXJlcyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uIGFuZCB0aGUgc3RhcnQgb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgSVdERyBjb3VudGVyPC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMX0lXREdfPHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJncmFtZSI+UmVmcmVzaCg8L3NwYW4+KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogdGhpcyBmdW5jdGlvbiBpbnN1cmVzIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbG9hZCBvZiB0aGUgSVdERyBjb3VudGVyPC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5SZWZlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byB0aGUgZm9sbG93aW5nIGV4YW1wbGUgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWRlbnRpZnkgdGhlIGNoYW5nZXM6IElXREdfPHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iZ3JhbWUiPkV4YW1wbGU8L3NwYW4+PC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTFBUSU0gPC9zcGFuPjwvYj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZTwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQUxfTFBUSU1fVGltZU91dF9TdGFydF88c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iZ3JhbWUiPklUKDwvc3Bhbj4pIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFMX0xQVElNX0NvdW50ZXJfU3RhcnRfSVQoICkgQVBJcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gY29uZmlndXJlIFdha2VVcCBUaW1lciBFWFRJCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlcnJ1cHQgdG8gYmUgYWJsZSB0byB3YWtldXAgTUNVCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tIGxvdyBwb3dlciBtb2RlIGJ5IHByZXNzaW5nIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRVhUSSBsaW5lIDwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVwZGF0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFMX0xQVElNX1RpbWVPdXRfU3RvcF88c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iZ3JhbWUiPklUKDwvc3Bhbj4pIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFMX0xQVElNX0NvdW50ZXJfU3RvcF9JVCggKSBBUElzIHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlIFdha2VVcCBUaW1lciBFWFRJIGludGVycnVwdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExUREMgPC9zcGFuPjwvYj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZTwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQUxfTFREQ188c3BhbiBjbGFzcz0iZ3JhbWUiPklSUUhhbmRsZXIoPC9zcGFuPikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIG1hbmFnZSB0aGUgY2FzZSBvZiByZWxvYWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVycnVwdDwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkFkZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTFREQyBleHRlbnNpb24gZHJpdmVyIG5lZWRlZCB3aXRoIDxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJncmFtZSI+RFNJPC9zcGFuPjwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5BZGQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTF9MVERDXzxzcGFuIGNsYXNzPSJncmFtZSI+U2V0UGl0Y2goPC9zcGFuPikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGZvciBwaXRjaCByZWNvbmZpZ3VyYXRpb248L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+QWRkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgY2FsbGJhY2sgQVBJIEhBTF9MVERDXzxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJncmFtZSI+UmVsb2FkRXZlbnRDYWxsYmFjayg8L3NwYW4+KTwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+IDxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+QWRkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQUxfTFREQ188c3BhbiBjbGFzcz0iZ3JhbWUiPlJlbG9hZCg8L3NwYW4+KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gY29uZmlndXJlIExUREMgcmVsb2FkIGZlYXR1cmU8L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPiA8bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkFkZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IE5vIFJlbG9hZCBMVERDIHZhcmlhbnQgPHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImdyYW1lIj5BUElzPC9zcGFuPjwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9InNxdWFyZSI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTF9MVERDX0NvbmZpZ0xheWVyXzxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImdyYW1lIj5Ob1JlbG9hZCg8L3NwYW4+KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byBjb25maWd1cmUgdGhlIExUREMgTGF5ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWNjb3JkaW5nIHRvIHRoZSBzcGVjaWZpZWQgd2l0aG91dAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWxvYWRpbmc8L3NwYW4+PHNwYW4gc3R5bGU9IiI+IDxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTF9MVERDX1NldFdpbmRvd1NpemVfPHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iZ3JhbWUiPk5vUmVsb2FkKDwvc3Bhbj4pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIHNldCB0aGUgTFREQyB3aW5kb3cgc2l6ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRob3V0IHJlbG9hZGluZzwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj4gPG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMX0xURENfU2V0V2luZG93UG9zaXRpb25fPHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iZ3JhbWUiPk5vUmVsb2FkKDwvc3Bhbj4pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIHNldCB0aGUgTFREQyB3aW5kb3cgcG9zaXRpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aG91dCByZWxvYWRpbmc8L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+IDxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTF9MVERDX1NldFBpeGVsRm9ybWF0XzxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImdyYW1lIj5Ob1JlbG9hZCg8L3NwYW4+KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byByZWNvbmZpZ3VyZSB0aGUgcGl4ZWwgZm9ybWF0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhvdXQgcmVsb2FkaW5nPC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPiA8bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUxfTFREQ19TZXRBbHBoYV88c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJncmFtZSI+Tm9SZWxvYWQoPC9zcGFuPikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gcmVjb25maWd1cmUgdGhlIGxheWVyIGFscGhhCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlIHdpdGhvdXQgcmVsb2FkaW5nPC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPiA8bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUxfTFREQ19TZXRBZGRyZXNzXzxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImdyYW1lIj5Ob1JlbG9hZCg8L3NwYW4+KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byByZWNvbmZpZ3VyZSB0aGUgZnJhbWUgYnVmZmVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFkZHJlc3Mgd2l0aG91dCByZWxvYWRpbmc8L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+IDxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTF9MVERDX1NldFBpdGNoXzxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImdyYW1lIj5Ob1JlbG9hZCg8L3NwYW4+KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byByZWNvbmZpZ3VyZSB0aGUgcGl0Y2ggZm9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwZWNpZmljIGNhc2VzPC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPiA8bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUxfTFREQ19Db25maWdDb2xvcktleWluZ188c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJncmFtZSI+Tm9SZWxvYWQoPC9zcGFuPikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gY29uZmlndXJlIHRoZSBjb2xvciBrZXlpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aG91dCByZWxvYWRpbmc8L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+IDxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTF9MVERDX0VuYWJsZUNvbG9yS2V5aW5nXzxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImdyYW1lIj5Ob1JlbG9hZCg8L3NwYW4+KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byBlbmFibGUgdGhlIGNvbG9yIGtleWluZyB3aXRob3V0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbG9hZGluZzwvc3Bhbj48c3BhbiBzdHlsZT0iIj4gPG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMX0xURENfRGlzYWJsZUNvbG9yS2V5aW5nXzxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImdyYW1lIj5Ob1JlbG9hZCg8L3NwYW4+KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byBkaXNhYmxlIHRoZSBjb2xvciBrZXlpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aG91dCByZWxvYWRpbmc8L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+IDxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTF9MVERDX0VuYWJsZUNMVVRfPHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iZ3JhbWUiPk5vUmVsb2FkKDwvc3Bhbj4pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIGVuYWJsZSB0aGUgY29sb3IgbG9va3VwIHRhYmxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhvdXQgcmVsb2FkaW5nPC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPiA8bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUxfTFREQ19EaXNhYmxlQ0xVVF88c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJncmFtZSI+Tm9SZWxvYWQoPC9zcGFuPikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gZGlzYWJsZSB0aGUgY29sb3IgbG9va3VwIHRhYmxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhvdXQgcmVsb2FkaW5nPC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PGk+PHU+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPk5vdGU6PC9zcGFuPjwvdT48L2k+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYXJpYW50IGZ1bmN0aW9ucyB3aXRoIJNfTm9SZWxvYWSUCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc3QgZml4IGFsbG93cyB0byBzZXQgdGhlIExUREMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbi9zZXR0aW5ncyB3aXRob3V0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltbWVkaWF0ZSByZWxvYWQuIFRoaXMgaXMgdXNlZnVsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIGNhc2Ugd2hlbiB0aGUgcHJvZ3JhbSByZXF1aXJlcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byBtb2RpZnkgc2V2ZXJhbCBMVERDIHNldHRpbmdzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvbiBvbmUgb3IgYm90aCBsYXllcnMpIHRoZW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwbHlpbmcgKHJlbG9hZCkgdGhlc2Ugc2V0dGluZ3MKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gb25lIHNob3QgYnkgY2FsbGluZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gk0hBTF9MVERDXzxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImdyYW1lIj5SZWxvYWQ8L3NwYW4+lDwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5PUjwvc3Bhbj48L2I+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGU8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0iY2lyY2xlIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5VcGRhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5PUl9BRERSX1NISUZUIG1hY3JvIDxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJncmFtZSI+aW1wbGVtZW50YXRpb248L3NwYW4+PC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBDRDwvc3Bhbj48L2I+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGU8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0iY2lyY2xlIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5VcGRhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTF9QQ0RfPHNwYW4gY2xhc3M9ImdyYW1lIj5JUlFIYW5kbGVyKDwvc3Bhbj4pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byBnZXQgSENMSyBmcmVxdWVuY3kgYmVmb3JlIHNldHRpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSRFQgdmFsdWU8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRU1BJIDwvc3Bhbj48L2I+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij51cGRhdGU8L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVwZGF0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gbWFuYWdlIFFTUEkgZXJyb3IgbWFuYWdlbWVudAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHVyaW5nIERNQSA8c3BhbiBjbGFzcz0iZ3JhbWUiPnByb2Nlc3M8L3NwYW4+PC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkltcHJvdmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBETUEgdHJhbnNtaXQgcHJvY2VzcyBieSB1c2luZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVNQSSBUQyBpbnRlcnJ1cHQgaW5zdGVhZCBvZiB3YWl0aW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb29wIG9uIFRDIGZsYWcgdW5kZXIgRE1BIElTUjwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5UaGVzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHdvIGltcHJvdmVtZW50cyByZXF1aXJlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9sbG93aW5nIHVwZGF0ZXMgb24gdXNlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb246PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPSJzcXVhcmUiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5Db25maWd1cmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGVuYWJsZSB0aGUgUVNQSSBJUlEgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFMX1FTUElfPHNwYW4gY2xhc3M9ImdyYW1lIj5Nc3BJbml0KDwvc3Bhbj4pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0bTMyZjd4eF9pdC5jIGZpbGUsIFFTUElfPHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iZ3JhbWUiPklSUUhhbmRsZXIoPC9zcGFuPikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb246IGFkZCBhIGNhbGwgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFMX1FTUElfSVJRSGFuZGxlcigpIGZ1bmN0aW9uPC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkFkZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgY3VzdG9taXplIHRoZSBFcnJvciBDYWxsYmFjaworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBUEk6IEhBTF9RU1BJXzxzcGFuIGNsYXNzPSJncmFtZSI+RXJyb3JDYWxsYmFjayg8L3NwYW4+KTwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkFkZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIG1hbmFnZW1lbnQgb2Ygbm9uLWJsb2NraW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2ZlciBhYm9ydAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmljZTombmJzcDtIQUxfUVNQSV9BYm9ydF88c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iZ3JhbWUiPklUKDwvc3Bhbj4pLiBJbiB0aGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIHRoZSB1c2VyIG11c3Q6PC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT0ic3F1YXJlIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+QWRkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBjYWxsYmFjayBIQUxfUVNQSV88c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJncmFtZSI+QWJvcnRDcGx0Q2FsbGJhY2soPC9zcGFuPikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gaW5mb3JtIHVzZXIgYXQgdGhlIGVuZCBvZiBhYm9ydAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IHZhbHVlIG9mIFN0YXRlIGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQUxfUVNQSV9TdGF0ZVR5cGVEZWYgcHJvdmlkZXMgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnQgc3RhdGUgZHVyaW5nIHRoZSBhYm9ydCA8c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJncmFtZSI+cGhhc2U8L3NwYW4+PC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+UG9sbGluZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFuYWdlbWVudCB1cGRhdGU6PC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT0ic3F1YXJlIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbWVvdXQgdmFsdWUgdXNlciBtdXN0IGJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVzdGltYXRlZCBmb3IgdGhlIG92ZXJhbGwgcHJvY2VzcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkdXJhdGlvbjogPHNwYW4gY2xhc3M9ImdyYW1lIj50aGU8L3NwYW4+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbWVvdXQgbWVhc3VyZW1lbnQgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VtdWxhdGl2ZS4mbmJzcDs8L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5SZWZlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gdGhlIGZvbGxvd2luZyBleGFtcGxlcywgd2hpY2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaWJlIHRoZSBjaGFuZ2VzOjwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9InNxdWFyZSI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlFTUElfUmVhZFdyaXRlX0RNQTwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5RU1BJX01lbW9yeU1hcHBlZDwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5RU1BJX0V4ZWN1dGVJblBsYWNlPC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+QWRkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0d28gbmV3IEFQSXMgZm9yIHRoZSBRU1BJIGZpZm8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocmVzaG9sZDo8L3NwYW4+PHNwYW4gc3R5bGU9IiI+IDxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPSJzcXVhcmUiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUxfUVNQSV88c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJncmFtZSI+U2V0Rmlmb1RocmVzaG9sZCg8L3NwYW4+KToKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWd1cmUgdGhlIEZJRk8gdGhyZXNob2xkIG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBRU1BJPC9zcGFuPjxzcGFuIHN0eWxlPSIiPiA8bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUxfUVNQSV88c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJncmFtZSI+R2V0Rmlmb1RocmVzaG9sZCg8L3NwYW4+KToKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnaXZlIHRoZSBjdXJyZW50IEZJRk8gdGhyZXNob2xkPC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+Rml4CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cm9uZyBkYXRhIHNpemUgbWFuYWdlbWVudCBpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFMX1FTUElfUmVjZWl2ZV88c3BhbiBjbGFzcz0iZ3JhbWUiPkRNQSg8L3NwYW4+KTwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSQ0MgPC9zcGFuPjwvYj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZTwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQUxfUkNDXzxzcGFuIGNsYXNzPSJncmFtZSI+UGVyaXBoQ0xLQ29uZmlnKDwvc3Bhbj4pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB0byBhZGp1c3QgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTeXN0ZW1Db3JlQ2xvY2s8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5PcHRpbWl6ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFMX1JDQ188c3BhbiBjbGFzcz0iZ3JhbWUiPkNsb2NrQ29uZmlnKDwvc3Bhbj4pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBjb2RlPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+T3B0aW1pemUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVybmFsIG9zY2lsbGF0b3JzIGFuZCBQTEwgc3RhcnR1cAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImdyYW1lIj50aW1lczwvc3Bhbj48L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUlRDIDwvc3Bhbj48L2I+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij51cGRhdGUmbmJzcDs8L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVwZGF0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFMX1JUQ188c3BhbiBjbGFzcz0iZ3JhbWUiPkdldFRpbWUoPC9zcGFuPikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggcHJvcGVyICdTdWJTZWNvbmRzJyBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdTZWNvbmRGcmFjdGlvbicgbWFuYWdlbWVudDwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTQUkgPC9zcGFuPjwvYj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZSZuYnNwOzwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTQUkgc3RhdGUgaW4gY2FzZSBvZiBUSU1FT1VUIGVycm9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoaW4gdGhlIEhBTF9TQUlfPHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImdyYW1lIj5UcmFuc21pdCg8L3NwYW4+KSAvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQUxfU0FJX1JlY2VpdmUoKTwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+IDxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQUxfU0FJX0lSUUhhbmRsZXI6PC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj4gPG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9InNxdWFyZSI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkFkZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvciBtYW5hZ2VtZW50IGluIGNhc2UgRE1BCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycyB0aHJvdWdoIDxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImdyYW1lIj5YZmVyQWJvcnRDYWxsYmFjayg8L3NwYW4+KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgSEFMX0RNQV9BYm9ydF9JVCgpPC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPiA8bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5BZGQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IgbWFuYWdlbWVudCBpbiBjYXNlIG9mIDxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImdyYW1lIj5JVDwvc3Bhbj48L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5Nb3ZlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTQUlfPHNwYW4gY2xhc3M9ImdyYW1lIj5CbG9ja1N5bmNocm9Db25maWcoPC9zcGFuPikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBTQUlfR2V0SW5wdXRDbG9jaygpIGZ1bmN0aW9ucyB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RtMzJmN3h4X2hhbF9zYWkuYy8uaCBmaWxlcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGV4dGVuc2lvbiBmaWxlcyBhcmUga2VwdCBlbXB0eSBmb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3RzIGNvbXBhdGliaWxpdHkgcmVhc29uKTwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTUERJRlJYIDwvc3Bhbj48L2I+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij51cGRhdGU8L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPk92ZXJhbGwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJncmFtZSI+ZHJpdmVyPC9zcGFuPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlIGZvciB3YWl0IG9uIGZsYWcgbWFuYWdlbWVudAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW1pemF0aW9uIDwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNQSSA8L3NwYW4+PC9iPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+dXBkYXRlPC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0iY2lyY2xlIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5PdmVyYWxsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkcml2ZXIgb3B0aW1pemF0aW9uIHRvIGltcHJvdmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlcmZvcm1hbmNlIGluIHBvbGxpbmcvaW50ZXJydXB0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RlIHRvIHJlYWNoIG1heGltdW0gcGVyaXBoZXJhbCA8c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iZ3JhbWUiPmZyZXF1ZW5jeTwvc3Bhbj48L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPSJzcXVhcmUiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5Qb2xsaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGU6PC9zcGFuPjxzcGFuIHN0eWxlPSIiPiA8bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCB0eXBlPSJzcXVhcmUiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSIiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5SZXBsYWNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHVzZSBvZiBTUElfPHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJncmFtZSI+V2FpdE9uRmxhZ1VuaXRUaW1lb3V0KDwvc3Bhbj4pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gYnkgImlmIiBzdGF0ZW1lbnQgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGVjayBvbiBSWE5FL1RYRSBmbGFnZSB3aGlsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZmVycmluZyBkYXRhPC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+Jm5ic3A7SW50ZXJydXB0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGU6PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIHR5cGU9InNxdWFyZSI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9IiI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPk1pbmltaXplCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWNjZXNzIG9uIFNQSSA8c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImdyYW1lIj5yZWdpc3RlcnM8L3NwYW4+PC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsiPiA8bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkFsbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2Rlczo8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPSJzcXVhcmUiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5BZGQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgVVNFX1NQSV9DUkMgc3dpdGNoIHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWluaW1pemUgdGhlIG51bWJlciBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlbWVudHMgd2hlbiBDUkMgY2FsY3VsYXRpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcyA8c3BhbiBjbGFzcz0iZ3JhbWUiPmRpc2FibGVkPC9zcGFuPjwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVwZGF0ZSZuYnNwO3RpbWVvdXQKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hbmFnZW1lbnQgdG8gY2hlY2sgb24gZ2xvYmFsIDxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iZ3JhbWUiPnByb2Nlc3Nlczwvc3Bhbj48L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5VcGRhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvciBjb2RlIG1hbmFnZW1lbnQgaW4gYWxsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc2VzPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5VcGRhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERNQSBwcm9jZXNzOjwvc3Bhbj48c3BhbiBzdHlsZT0iIj4gPC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPSJzcXVhcmUiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5BZGQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIG1hbmFnZW1lbnQgb2YgU1BJIHBlcmlwaGVyYWwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzIGR1cmluZyBETUEgcHJvY2Vzcy4gVGhpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlcyB0aGUgZm9sbG93aW5nIHVwZGF0ZXMgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHVzZXIgYXBwbGljYXRpb246PC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT0ic3F1YXJlIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+Q29uZmlndXJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGVuYWJsZSB0aGUgU1BJIElSUSBpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTF9TUElfPHNwYW4gY2xhc3M9ImdyYW1lIj5Nc3BJbml0KDwvc3Bhbj4pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb248L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG0zMmY3eHhfaXQuYyBmaWxlLCBTUElfPHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJncmFtZSI+SVJRSGFuZGxlcig8L3NwYW4+KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uOiBhZGQgYSBjYWxsIHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFMX1NQSV9JUlFIYW5kbGVyKCkgZnVuY3Rpb248L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5BZGQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgY3VzdG9taXplIHRoZSBFcnJvciBDYWxsYmFjaworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFQSTogSEFMX1NQSV88c3BhbiBjbGFzcz0iZ3JhbWUiPkVycm9yQ2FsbGJhY2soPC9zcGFuPik8L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5SZWZlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIHRoZSBmb2xsb3dpbmcgZXhhbXBsZSB3aGljaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaWJlIHRoZSBjaGFuZ2VzOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNQSV9GdWxsRHVwbGV4X0NvbURNQTwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUSU0gPC9zcGFuPjwvYj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZSZuYnNwOzwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQUxfVElNXzxzcGFuIGNsYXNzPSJncmFtZSI+Q29uZmlnT0NyZWZDbGVhcig8L3NwYW4+KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gZm9yIHByb3BlciBjb25maWd1cmF0aW9uIG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgU01DUiByZWdpc3Rlcjwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5BZGQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBmdW5jdGlvbiBIQUxfVElNRXhfPHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImdyYW1lIj5Db25maWdCcmVha0lucHV0KDwvc3Bhbj4pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byBjb25maWd1cmUgdGhlIGJyZWFrIGlucHV0IHNvdXJjZTwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVQVJULCBVU0FSVCwgU01BUlRDQVJEIGFuZCBJUkRBIDwvc3Bhbj48L2I+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij4ocmVmZXJlbmNlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzIDxpPlBQUDwvaT4gaGVyZSBiZWxvdyk8aT4gPC9pPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iZ3JhbWUiPnVwZGF0ZTwvc3Bhbj48L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj4gPC9zcGFuPjxiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPjxvOnA+PC9vOnA+PC9zcGFuPjwvYj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVwZGF0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUG9sbGluZyBtYW5hZ2VtZW50Ojwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9InNxdWFyZSI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyIFRpbWVvdXQgdmFsdWUmbmJzcDttdXN0IGJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVzdGltYXRlZCBmb3IgdGhlIG92ZXJhbGwgcHJvY2VzcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkdXJhdGlvbjogPHNwYW4gY2xhc3M9ImdyYW1lIj50aGU8L3NwYW4+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbWVvdXQgbWVhc3VyZW1lbnQgaXMgY3VtdWxhdGl2ZTwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVwZGF0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRE1BIHByb2Nlc3M6PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPSJzcXVhcmUiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5VcGRhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIG1hbmFnZW1lbnQgb2YgUFBQIHBlcmlwaGVyYWwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzIGR1cmluZyBETUEgcHJvY2Vzcy4gVGhpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlcyB0aGUgZm9sbG93aW5nIHVwZGF0ZXMgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlciBhcHBsaWNhdGlvbjo8L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPSJzcXVhcmUiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5Db25maWd1cmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgZW5hYmxlIHRoZSBQUFAgSVJRIGluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFMX1BQUF88c3BhbiBjbGFzcz0iZ3JhbWUiPk1zcEluaXQoPC9zcGFuPikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5JbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0bTMyZjd4eF9pdC5jIGZpbGUsIFBQUF88c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImdyYW1lIj5JUlFIYW5kbGVyKDwvc3Bhbj4pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb246IGFkZCBhIGNhbGwgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQUxfUFBQX0lSUUhhbmRsZXIoKSBmdW5jdGlvbjwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkFkZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBjdXN0b21pemUgdGhlIEVycm9yIENhbGxiYWNrCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVBJOiBIQUxfUFBQXzxzcGFuIGNsYXNzPSJncmFtZSI+RXJyb3JDYWxsYmFjayg8L3NwYW4+KTwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXV0RHIDwvc3Bhbj48L2I+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij51cGRhdGUmbmJzcDs8L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPk92ZXJhbGwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJld29yayBvZiB0aGUgZHJpdmVyIGZvciBtb3JlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlZmZpY2llbnQgaW1wbGVtZW50YXRpb248L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPSJzcXVhcmUiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5SZW1vdmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGZvbGxvd2luZyBBUElzOjwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9InNxdWFyZSI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTF9XV0RHXzxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iZ3JhbWUiPlN0YXJ0KDwvc3Bhbj4pPC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMX1dXREdfU3RhcnRfPHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJncmFtZSI+SVQoPC9zcGFuPik8L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUxfV1dER188c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImdyYW1lIj5Nc3BEZUluaXQoPC9zcGFuPik8L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUxfV1dER188c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImdyYW1lIj5HZXRTdGF0ZSg8L3NwYW4+KTwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltcGxlbWVudGF0aW9uOjwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9InNxdWFyZSI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTF9XV0RHXzxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iZ3JhbWUiPkluaXQoPC9zcGFuPik8L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPSJzcXVhcmUiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5BJm5ic3A7bmV3CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbWV0ZXIgaW4gdGhlIEluaXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cnVjdHVyZTombmJzcDtFV0lNb2RlPC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMX1dXREdfPHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJncmFtZSI+TXNwSW5pdCg8L3NwYW4+KTwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTF9XV0RHXzxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iZ3JhbWUiPlJlZnJlc2goPC9zcGFuPikmbmJzcDs8L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPSJzcXVhcmUiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5UaGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBpbnN1cmVzIHRoZSByZWxvYWQgb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSA8c3BhbiBjbGFzcz0iZ3JhbWUiPmNvdW50ZXI8L3NwYW4+PC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5UaGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb3VudGVyIiBwYXJhbWV0ZXIgaGFzIGJlZW4gPHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImdyYW1lIj5yZW1vdmVkPC9zcGFuPjwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTF9XV0RHXzxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iZ3JhbWUiPklSUUhhbmRsZXIoPC9zcGFuPik8L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUxfV1dER188c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImdyYW1lIj5FYXJseVdha2V1cENhbGxiYWNrKDwvc3Bhbj4pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMgdGhlIG5ldyBwcm90b3R5cGUgb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQUxfV1dER19XYWtldXBDYWxsYmFjaygpPC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlJlZmVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byB0aGUgZm9sbG93aW5nIGV4YW1wbGUgdG8gaWRlbnRpZnkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBjaGFuZ2VzOiBXV0RHXzxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJncmFtZSI+RXhhbXBsZTwvc3Bhbj48L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgzIHN0eWxlPSJiYWNrZ3JvdW5kOiByZ2IoNTEsIDEwMiwgMjU1KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9uZSByZXBlYXQgc2Nyb2xsIDAlIDUwJTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC1tb3otYmFja2dyb3VuZC1jbGlwOiAtbW96LWluaXRpYWw7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtbW96LWJhY2tncm91bmQtb3JpZ2luOiAtbW96LWluaXRpYWw7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtbW96LWJhY2tncm91bmQtaW5saW5lLXBvbGljeToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC1tb3otaW5pdGlhbDsgbWFyZ2luLXJpZ2h0OiA1MDBwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtBcmlhbCZxdW90OyxzYW5zLXNlcmlmOyBjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpdGU7Ij5WMS4wLjQgLyAwOS1EZWNlbWJlci0yMDE1PC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvaDM+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbjogNC41cHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDBpbiA0LjVwdCAwLjI1aW47Ij48Yj48dT48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogYmxhY2s7Ij5NYWluIENoYW5nZXM8L3NwYW4+PC91PjwvYj48L3A+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJkaXNjIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdlbmVyaWMgPC9zcGFuPjwvYj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZTwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQUwgd2VhayBlbXB0eSBjYWxsYmFja3MgdG8gcHJldmVudAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW51c2VkIGFyZ3VtZW50IGNvbXBpbGF0aW9uIHdhcm5pbmdzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIHNvbWUgY29tcGlsZXJzIGJ5IGNhbGxpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb2xsb3dpbmcgbGluZTo8L3NwYW4+PHNwYW4gc3R5bGU9IiI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT0ic3F1YXJlIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iZ3JhbWUiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5VTlVTRUQoPC9zcGFuPjwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+aHBwcCk7PC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRVRIPC9zcGFuPjwvYj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZSZuYnNwOzwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVwZGF0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFMX0VUSF88c3BhbiBjbGFzcz0iZ3JhbWUiPkluaXQoPC9zcGFuPikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHRvIGFkZCB0aW1lb3V0IG9uIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU29mdHdhcmUgcmVzZXQgbWFuYWdlbWVudDwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDMgc3R5bGU9ImJhY2tncm91bmQ6IHJnYig1MSwgMTAyLCAyNTUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub25lIHJlcGVhdCBzY3JvbGwgMCUgNTAlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLW1vei1iYWNrZ3JvdW5kLWNsaXA6IC1tb3otaW5pdGlhbDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC1tb3otYmFja2dyb3VuZC1vcmlnaW46IC1tb3otaW5pdGlhbDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC1tb3otYmFja2dyb3VuZC1pbmxpbmUtcG9saWN5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLW1vei1pbml0aWFsOyBtYXJnaW4tcmlnaHQ6IDUwMHB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O0FyaWFsJnF1b3Q7LHNhbnMtc2VyaWY7IGNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGl0ZTsiPlYxLjAuMyAvIDEzLU5vdmVtYmVyLTIwMTU8L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9oMz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luOiA0LjVwdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMGluIDQuNXB0IDAuMjVpbjsiPjxiPjx1PjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiBibGFjazsiPk1haW4gQ2hhbmdlczwvc3Bhbj48L3U+PC9iPjwvcD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImRpc2MiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+R2VuZXJhbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZXMgdG8gZml4IGtub3duIGRlZmVjdHMgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5oYW5jZW1lbnRzIDxzcGFuIGNsYXNzPSJncmFtZSI+aW1wbGVtZW50YXRpb248L3NwYW4+PC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5PbmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZSBkb25lIG9uIHRoZSBIQUwgQ1JZUCByZXF1aXJlcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW4gdXBkYXRlIG9uIHRoZSBhcHBsaWNhdGlvbiBjb2RlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlZCBvbiBIQUwgVjEuMC4yPC9zcGFuPjwvYj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPiA8bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVwZGF0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFMX0NSWVBfREVTRUNCXzxzcGFuIGNsYXNzPSJncmFtZSI+RGVjcnlwdCg8L3NwYW4+KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVBJIHRvIGludmVydCBwUGxhaW5EYXRhIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcEN5cGhlckRhdGEgcGFyYW1ldGVyczwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmljIDwvc3Bhbj48L2I+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij51cGRhdGU8L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVwZGF0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFMIHdlYWsgZW1wdHkgY2FsbGJhY2tzIHRvIHByZXZlbnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVudXNlZCBhcmd1bWVudCBjb21waWxhdGlvbiB3YXJuaW5ncworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBzb21lIGNvbXBpbGVycyBieSBjYWxsaW5nIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9sbG93aW5nIGxpbmU6PC9zcGFuPjxzcGFuIHN0eWxlPSIiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9InNxdWFyZSI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImdyYW1lIj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VU5VU0VEKDwvc3Bhbj48L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPmhwcHApOzwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlJlbW92ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmZXJlbmNlcyB0byBTVE0zMkN1YmVNWCBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1pY3JvWHBsb3JlciBmcm9tCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG0zMmY3eHhfaGFsX21zcF90ZW1wbGF0ZS5jIDxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJncmFtZSI+ZmlsZTwvc3Bhbj48L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQURDPC9zcGFuPjwvYj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlJlcGxhY2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFEQ19DSEFOTkVMX1RFTVBTRU5TT1IgZGVmaW5pdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbSBBRENfQ0hBTk5FTF8xNiB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQURDX0NIQU5ORUxfMTggJm5ic3A7PC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVwZGF0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFMIEFEQyBkcml2ZXIgc3RhdGUgbWFjaGluZSBmb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGUgZWZmaWNpZW5jeTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkFkZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IGxpdGVyYWw6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBRENfSU5KRUNURURfU09GVFdBUkVfU1RBUlQgdG8gYmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZWQgYXMgcG9zc2libGUgdmFsdWUgZm9yIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXh0ZXJuYWxUcmlnSW5qZWNDb252RWRnZSBwYXJhbWV0ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIHRoZSBBRENfSW5pdFR5cGVEZWYgc3RydWN0dXJlIHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3QgdGhlIEFEQyBzb2Z0d2FyZSB0cmlnZ2VyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RlLjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENPUlRFWCA8L3NwYW4+PC9iPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+dXBkYXRlPC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+IDxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+UmVtb3ZlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkdXBsaWNhdGlvbiBmb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fSEFMX0NPUlRFWF9TWVNUSUNLQ0xLXzxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJncmFtZSI+Q09ORklHKDwvc3Bhbj4pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYWNybzwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENSWVAgPC9zcGFuPjwvYj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZTwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQUxfQ1JZUF9ERVNFQ0JfPHNwYW4gY2xhc3M9ImdyYW1lIj5EZWNyeXB0KDwvc3Bhbj4pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBUEkgdG8gZml4IHRoZSBpbnZlcnRlZCBwUGxhaW5EYXRhCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgcEN5cGhlckRhdGEgcGFyYW1ldGVycyBpc3N1ZSA8L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRkxBU0ggPC9zcGFuPjwvYj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZTwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQl9JV0RHX1NUT1BfQUNUSVZFIGRlZmluaXRpb248L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQl9SRFBfTEVWRUxfeCBkZWZpbml0aW9uIGJ5IHByb3BlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGTEFTSF88c3BhbiBjbGFzcz0iZ3JhbWUiPk1hc3NFcmFzZSg8L3NwYW4+KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gdG8gY29uc2lkZXIgdGhlIHZvbHRhZ2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhbmdlIHBhcmFtZXRlciBpbiB0aGUgbWFzcyBlcmFzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbiA8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSQ0M8L3NwYW4+PC9iPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+dXBkYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXMgZm9yIExTRSBEcml2ZSBjYXBhYmlsaXR5IDxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJncmFtZSI+ZGVmaW5lczwvc3Bhbj48L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+dXBkYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQTExOIG1pbiB2YWx1ZSA1MCBpbnN0ZWFkIG9mIDxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJncmFtZSI+MTAwPC9zcGFuPjwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5hZGQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJDQ19QTExJMlNQX0RJVnggZGVmaW5lcyBmb3IgUExMSTJTUAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvY2sgPHNwYW4gY2xhc3M9ImdyYW1lIj5kaXZpZGVyPC9zcGFuPjwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5VcGRhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fSEFMX1JDQ19VU0JfT1RHX0ZTX0NMS188c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iZ3JhbWUiPkRJU0FCTEUoPC9zcGFuPikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hY3JvIHRvIHJlbW92ZSB0aGUgZGlzYWJsZSBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNZU0NGRyZuYnNwOzwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVwZGF0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFMX1JDQ0V4XzxzcGFuIGNsYXNzPSJncmFtZSI+R2V0UGVyaXBoQ0xLRnJlcSg8L3NwYW4+KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gZm9yIHByb3BlciBTQUkgY2xvY2sKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb248L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTQUkgPC9zcGFuPjwvYj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZTwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+dXBkYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgcHJvcGVyIG1hbmFnZW1lbnQgb2YgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRlcm5hbCBzeW5jaHJvbml6YXRpb24gaW5wdXQgPHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImdyYW1lIj5zZWxlY3Rpb248L3NwYW4+PC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT0ic3F1YXJlIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+dXBkYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mJm5ic3A7SEFMX1NBSV9Jbml0ICgpIGZ1bmNpdG9uPC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbml0aW9uIG9mIFNBSV9CbG9ja19TeW5jRXh0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBTQUlfQmxvY2tfU3luY2hyb25pemF0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyb3Vwczwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0FJX1NMT1RBQ1RJVkVfPHNwYW4gY2xhc3M9ImdyYW1lIj5YCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZuYnNwO2RlZmluZXM8L3NwYW4+IHZhbHVlczwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij51cGRhdGUmbmJzcDtIQUxfU0FJXzxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJncmFtZSI+SW5pdCg8L3NwYW4+KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gZm9yIHByb3BlciBjb21wYW5kaW5nIG1vZGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hbmFnZW1lbnQ8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij51cGRhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNBSV9UcmFuc21pdF88c3BhbiBjbGFzcz0iZ3JhbWUiPklUeHhCaXQoPC9zcGFuPikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9ucyB0byBhZGQgdGhlIGNoZWNrIG9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2ZlciBjb3VudGVyIGJlZm9yZSB3cml0aW5nIG5ldworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSB0byBTQUl4X0RSIHJlZ2lzdGVyczwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij51cGRhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNBSV88c3BhbiBjbGFzcz0iZ3JhbWUiPkZpbGxGaWZvKDwvc3Bhbj4pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB0byBhdm9pZCBpc3N1ZSB3aGVuIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtYmVyIG9mIGRhdGEgdG8gdHJhbnNtaXQgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNtYWxsZXIgdGhhbiB0aGUgRklGTyBzaXplPC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFMX1NBSV88c3BhbiBjbGFzcz0iZ3JhbWUiPkVuYWJsZVJ4TXV0ZU1vZGUoPC9zcGFuPikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGZvciBwcm9wZXIgbXV0ZSBtYW5hZ2VtZW50PC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0FJXzxzcGFuIGNsYXNzPSJncmFtZSI+SW5pdFBDTSg8L3NwYW4+KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gdG8gc3VwcG9ydCAyNGJpdHMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb248L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTRCA8L3NwYW4+PC9iPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+dXBkYXRlPC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0iY2lyY2xlIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij51cGRhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTF9TRF9HZXRfPHNwYW4gY2xhc3M9ImdyYW1lIj5DYXJkSW5mbyg8L3NwYW4+KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gcHJvcGVybHkgc3VwcG9ydCBoaWdoIGNhcGFjaXR5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXJkczwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNQRElGUlggPC9zcGFuPjwvYj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZTwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+dXBkYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTUERJRlJYXzxzcGFuIGNsYXNzPSJncmFtZSI+RE1BUnhDcGx0KDwvc3Bhbj4pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBpbXBsZW1lbnRhdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8mbmJzcDtjaGVjayBvbiBjaXJjdWxhciBtb2RlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWZvcmUgZGlzYWJsaW5nIHRoZSBETUE8L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVElNIDwvc3Bhbj48L2I+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij51cGRhdGU8L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVwZGF0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFMX1RJTV88c3BhbiBjbGFzcz0iZ3JhbWUiPkNvbmZpZ0Nsb2NrU291cmNlKDwvc3Bhbj4pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBpbXBsZW1lbnRhdGlvbiBmb3IgcHJvcGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbWV0ZXJzIGNoZWNrPC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVBUlQ8L3NwYW4+PC9iPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX0hBTF9VQVJUX0NMRUFSX0lUIG1hY3JvIGZvciBwcm9wZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9ubmluZyZuYnNwOzwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+bGwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZNQzwvc3Bhbj48L2I+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGU8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0iY2lyY2xlIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5hZGQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZNQ19QQUdFX1NJWkVfNTEyIGRlZmluZTwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+bGwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNETU1DPC9zcGFuPjwvYj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0RNTUNfPHNwYW4gY2xhc3M9ImdyYW1lIj5TZXRTRE1NQ1JlYWRXYWl0TW9kZSg8L3NwYW4+KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gZm9yIHByb3BlciBmdW5jdGlvbm5pbmc8L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgzIHN0eWxlPSJiYWNrZ3JvdW5kOiByZ2IoNTEsIDEwMiwgMjU1KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9uZSByZXBlYXQgc2Nyb2xsIDAlIDUwJTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC1tb3otYmFja2dyb3VuZC1jbGlwOiAtbW96LWluaXRpYWw7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtbW96LWJhY2tncm91bmQtb3JpZ2luOiAtbW96LWluaXRpYWw7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtbW96LWJhY2tncm91bmQtaW5saW5lLXBvbGljeToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC1tb3otaW5pdGlhbDsgbWFyZ2luLXJpZ2h0OiA1MDBwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtBcmlhbCZxdW90OyxzYW5zLXNlcmlmOyBjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpdGU7Ij5WMS4wLjIgLyAyMS1TZXB0ZW1iZXItMjAxNTwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2gzPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW46IDQuNXB0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwaW4gNC41cHQgMC4yNWluOyI+PGI+PHU+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6IGJsYWNrOyI+TWFpbiBDaGFuZ2VzPC9zcGFuPjwvdT48L2I+PC9wPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0iZGlzYyI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmljIDwvc3Bhbj48L2I+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij51cGRhdGU8L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnN0bTMyZjd4eF9oYWwuY29uZl90ZW1wbGF0ZS5oOgorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGUmbmJzcDtIU0VfU1RBUlRVUF9USU1FT1VUPC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnN0bTMyZjd4eF9oYWxfZGVmLmg6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGUgdGhlIHF1b3RhdGlvbiBtYXJrcyB1c2VkIGluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjZXJyb3IiVVNFX1JUT1Mgc2hvdWxkIGJlIDAgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50IEhBTCA8c3BhbiBjbGFzcz0iZ3JhbWUiPnJlbGVhc2U8L3NwYW4+Ijwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBETUE8L3NwYW4+PC9iPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+T3ZlcmFsbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImdyYW1lIj5kcml2ZXI8L3NwYW4+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGUgZm9yIGNvZGUgb3B0aW1pemF0aW9uPC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT0ic3F1YXJlIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+YWRkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmVhbUJhc2VBZGRyZXNzIGFuZCBTdHJlYW1JbmRleAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgZmllbGRzIGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBETUFfSGFuZGxlVHlwZURlZiBzdHJ1Y3R1cmU8L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+IDxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPmFkZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBETUFfQmFzZV9SZWdpc3RlcnMgcHJpdmF0ZSA8c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJncmFtZSI+c3RydWN0dXJlPC9zcGFuPjwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj4gPG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+YWRkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpYyBmdW5jdGlvbiBETUFfPHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iZ3JhbWUiPkNhbGNCYXNlQW5kQml0c2hpZnQoPC9zcGFuPik8L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+IDxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQUxfRE1BXzxzcGFuIGNsYXNzPSJncmFtZSI+SW5pdCg8L3NwYW4+KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB0byB1c2UgdGhlIG5ldyBhZGRlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWMgZnVuY3Rpb248L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+IDxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQUxfRE1BXzxzcGFuIGNsYXNzPSJncmFtZSI+RGVJbml0KDwvc3Bhbj4pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHRvIG9wdGltaXplIGNsZWFyIGZsYWcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0aW9uczwvc3Bhbj48c3BhbiBzdHlsZT0iIj4gPG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+dXBkYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTF9ETUFfU3RhcnRfPHNwYW4gY2xhc3M9ImdyYW1lIj5JVCg8L3NwYW4+KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB0byBvcHRpbWl6ZSBpbnRlcnJ1cHRzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj4gPG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+dXBkYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTF9ETUFfPHNwYW4gY2xhc3M9ImdyYW1lIj5Qb2xsRm9yVHJhbnNmZXIoPC9zcGFuPikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gdG8gb3B0aW1pemUgY2hlY2sgb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3M8L3NwYW4+PHNwYW4gc3R5bGU9IiI+IDxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQUxfRE1BXzxzcGFuIGNsYXNzPSJncmFtZSI+SVJRSGFuZGxlcig8L3NwYW4+KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB0byBvcHRpbWl6ZSBpbnRlcnJ1cHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZyBtYW5hZ2VtZW50PC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRVRIJm5ic3A7PC9zcGFuPjwvYj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZTwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+cmVtb3ZlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkdXBsaWNhdGVkIG1hY3JvIElTX0VUSF9SWF88c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iZ3JhbWUiPk1PREUoPC9zcGFuPik8L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1BJTyA8L3NwYW4+PC9iPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+dXBkYXRlPC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0iY2lyY2xlIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5SZW5hbWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdQSU9fU1BFRURfTE9XIGRlZmluZSB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1BJT19TUEVFRF9GUkVRX0xPVzwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+IDxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+UmVuYW1lCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHUElPX1NQRUVEX01FRElVTSBkZWZpbmUgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdQSU9fU1BFRURfRlJFUV9NRURJVU08L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPiA8bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlJlbmFtZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1BJT19TUEVFRF9GQVNUIGRlZmluZSB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1BJT19TUEVFRF9GUkVRX0hJR0g8L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPiA8bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlJlbmFtZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1BJT19TUEVFRF9ISUdIIGRlZmluZSB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1BJT19TUEVFRF9GUkVRX1ZFUllfSElHSDwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQVNIIDwvc3Bhbj48L2I+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij51cGRhdGU8L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlJlbmFtZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFMX0hBU0hfU1RBVEVUeXBlRGVmIHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQUxfSEFTSF9TdGF0ZVR5cGVEZWY8L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPiA8bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlJlbmFtZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFMX0hBU0hfUGhhc2VUeXBlRGVmIHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQUxfSEFTSFBoYXNlVHlwZURlZjwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSQ0MgPC9zcGFuPjwvYj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZTwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+dXBkYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXMgZm9yIExTRSBEcml2ZSBjYXBhYmlsaXR5IDxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJncmFtZSI+ZGVmaW5lczwvc3Bhbj48L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+dXBkYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQTExOL1BMTEkyU04vUExMU0FJIFZDTyBtaW4gdmFsdWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwME1IeiBpbnN0ZWFkIG9mIDxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJncmFtZSI+MTkyTUh6PC9zcGFuPjwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5hZGQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fSEFMX1JDQ19NQ08xXzxzcGFuIGNsYXNzPSJncmFtZSI+Q09ORklHKDwvc3Bhbj4pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgX19IQUxfUkNDX01DTzJfQ09ORklHKCkgbWFjcm9zPC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFMX1JDQ0V4XzxzcGFuIGNsYXNzPSJncmFtZSI+UGVyaXBoQ0xLQ29uZmlnKDwvc3Bhbj4pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB0byByZXNldCB0aGUgQmFja3VwIGRvbWFpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25seSBpZiB0aGUgUlRDIENsb2NrIHNvdXJjZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0aW9uIGlzIG1vZGlmaWVkJm5ic3A7PC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJTTwvc3Bhbj48L2I+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGU8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0iY2lyY2xlIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij51cGRhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBfX0hBTF9USU1fU0VUXzxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJncmFtZSI+Q09NUEFSRSg8L3NwYW4+KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFjcm88L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5yZW1vdmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZWxlc3MgPHNwYW4gY2xhc3M9ImdyYW1lIj5hc3NlcnQoPC9zcGFuPikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluJm5ic3A7SEFMX1RJTV9QV01fQ29uZmlnQ2hhbm5lbCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVElNX09DMl9TZXRDb25maWcoKSBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTF9USU1fUFdNX0NvbmZpZ0NoYW5uZWwoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb25zPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0FOPC9zcGFuPjwvYj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPmFkZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGNsZWFyIGZsYWcgRVJSSSBiaXQgaW4gSEFMX0NBTl88c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iZ3JhbWUiPklSUUhhbmRsZXIoPC9zcGFuPik8L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSTJTPC9zcGFuPjwvYj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSTJTIEhBTF9JMlNfPHNwYW4gY2xhc3M9ImdyYW1lIj5UcmFuc21pdCg8L3NwYW4+KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVBJJm5ic3A7dG8ga2VlcCB0aGUgY2hlY2sgb24gYnVzeQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZyBvbmx5IGZvciB0aGUgc2xhdmU8L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVNQSTwvc3Bhbj48L2I+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGU8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0iY2lyY2xlIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5BZGQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fSEFMX1FTUElfQ0xFQVJfPHNwYW4gY2xhc3M9ImdyYW1lIj5GTEFHKDwvc3Bhbj4pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWZvcmUgUVNQSV9Db25maWcoKTwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVQVJUPC9zcGFuPjwvYj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlJlbW92ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxpbmcgb2YgRVJSIElUIHNvdXJjZSBhbmQgUEUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZSBmcm9tIEhBTF9VQVJUX1RyYW5zbWl0XzxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJncmFtZSI+SVQoPC9zcGFuPikgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW1vdmUgdGhlIGNvcnJlc3BvbmRpbmcgZGlzYWJsaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFUlIvUEUgSVQgZnJvbSBVQVJUX0VuZFRyYW5zbWl0X0lUKCk8L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUENEPC9zcGFuPjwvYj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZTwvc3Bhbj48Yj48c3BhbiBzdHlsZT0iIj4mbmJzcDs8L3NwYW4+PC9iPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0iY2lyY2xlIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5DbGVhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzIHBoYXNlIHJlY2VpdmVkIGludGVycnVwdCB3aGVuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBETUEgbW9kZSA8c3BhbiBjbGFzcz0iZ3JhbWUiPmVuYWJsZWQ8L3NwYW4+Jm5ic3A7PC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhDRCA8L3NwYW4+PC9iPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+dXBkYXRlPC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0iY2lyY2xlIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5VcGRhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIHVzZSBsb2NhbCB2YXJpYWJsZSBpbiBVU0IgSG9zdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhbm5lbCByZS08c3BhbiBjbGFzcz0iZ3JhbWUiPmFjdGl2YXRpb248L3NwYW4+PC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5sbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRk1DPC9zcGFuPjwvYj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGRlZmluZSBGTUMgV3JpdGUgRklGTworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGlzYWJsZS9FbmFibGU6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGTUNfV1JJVEVfRklGT19ESVNBQkxFIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRk1DX1dSSVRFX0ZJRk9fRU5BQkxFPC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnJlbW92ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEhBTF9FUlJPUiBmcm9tIEZNQ19TRFJBTV88c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iZ3JhbWUiPlNlbmRDb21tYW5kKDwvc3Bhbj4pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMyBzdHlsZT0iYmFja2dyb3VuZDogcmdiKDUxLCAxMDIsIDI1NSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbmUgcmVwZWF0IHNjcm9sbCAwJSA1MCU7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtbW96LWJhY2tncm91bmQtY2xpcDogLW1vei1pbml0aWFsOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLW1vei1iYWNrZ3JvdW5kLW9yaWdpbjogLW1vei1pbml0aWFsOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLW1vei1iYWNrZ3JvdW5kLWlubGluZS1wb2xpY3k6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtbW96LWluaXRpYWw7IG1hcmdpbi1yaWdodDogNTAwcHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7QXJpYWwmcXVvdDssc2Fucy1zZXJpZjsgY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaXRlOyI+VjEuMC4xIC8gMjUtSnVuZS0yMDE1PC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvaDM+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbjogNC41cHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDBpbiA0LjVwdCAwLjI1aW47Ij48Yj48dT48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogYmxhY2s7Ij5NYWluIENoYW5nZXM8L3NwYW4+PC91PjwvYj48L3A+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJkaXNjIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkdlbmVyYWwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVzIHRvIGZpeCBrbm93biBkZWZlY3RzIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuaGFuY2VtZW50cyA8c3BhbiBjbGFzcz0iZ3JhbWUiPmltcGxlbWVudGF0aW9uPC9zcGFuPjwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDUkMmbmJzcDs8L3NwYW4+PC9iPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+dXBkYXRlPC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0iY2lyY2xlIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij51cGRhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fSEFMX0NSQ19TRVRfPHNwYW4gY2xhc3M9ImdyYW1lIj5JRFIoPC9zcGFuPikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hY3JvIGltcGxlbWVudGF0aW9uIHRvIHVzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV1JJVEVfUkVHKCkgaW5zdGVhZCBvZiBNT0RJRllfUkVHKCk8L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0VDJm5ic3A7PC9zcGFuPjwvYj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZTwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+dXBkYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lb3V0IG1hbmFnZW1lbnQgaW4gSEFMX0NFQ188c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iZ3JhbWUiPlRyYW5zbWl0KDwvc3Bhbj4pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgSEFMX0NFQ19SZWNlaXZlKCkgZnVuY3Rpb25zPC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvcnRleCA8L3NwYW4+PC9iPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+dXBkYXRlPC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0iY2lyY2xlIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij51cGRhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTF9NUFVfPHNwYW4gY2xhc3M9ImdyYW1lIj5Db25maWdSZWdpb24oPC9zcGFuPikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHRvIGJlIG1pc3JhIGNvbXBsaWFudDwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFVEggPC9zcGFuPjwvYj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZTwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+UmVtb3ZlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkdXBsaWNhdGVkIElTX0VUSF9EVVBMRVhfPHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImdyYW1lIj5NT0RFKDwvc3Bhbj4pIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSVNfRVRIX1JYX01PREUoKSBtYWNyb3M8L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+UmVtb3ZlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbGxlZ2FsIHNwYWNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFVEhfTUFDX1JFQURDT05UUk9MTEVSX0ZMVVNISU5HCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYWNybzwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVwZGF0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRVRIX01BQ19SRUFEQ09OVFJPTExFUl9YWFggZGVmaW5lZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzIChYWFggY2FuIGJlIElETEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSRUFESU5HX0RBVEEgYW5kIFJFQURJTkdfU1RBVFVTKTwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGTEFTSCA8L3NwYW4+PC9iPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+dXBkYXRlPC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0iY2lyY2xlIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij51cGRhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZMQVNIX09CXzxzcGFuIGNsYXNzPSJncmFtZSI+R2V0UkRQKDwvc3Bhbj4pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB0byByZXR1cm4gdWludDhfdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm5ic3A7aW5zdGVhZCBvZiBGbGFnU3RhdHVzPC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0JfUkRQX0xFVkVMeCBkZWZpbml0aW9uPC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPmFkZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19IQUxfRkxBU0hfR0VUXzxzcGFuIGNsYXNzPSJncmFtZSI+TEFURU5DWSg8L3NwYW4+KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFjcm88L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQVNIIDwvc3Bhbj48L2I+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij51cGRhdGU8L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFTSF88c3BhbiBjbGFzcz0iZ3JhbWUiPkRNQVhmZXJDcGx0KDwvc3Bhbj4pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgSEFTSEV4X0RNQVhmZXJDcGx0KCkgZnVuY3Rpb25zCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byBwcm9wZXJseSBjb25maWd1cmUgdGhlIG51bWJlciBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWQgYml0cyBpbiBsYXN0IHdvcmQgb2YgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+dXBkYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQUxfSEFTSF9TSEExXzxzcGFuIGNsYXNzPSJncmFtZSI+QWNjdW11bGF0ZSg8L3NwYW4+KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gdG8gY2hlY2sgb24gdGhlIGxlbmd0aCBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGlucHV0IGJ1ZmZlcjwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij51cGRhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTF9IQVNIXzxiPjxpPk1PREU8L2k+PC9iPl9TdGFydF88c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iZ3JhbWUiPklUKDwvc3Bhbj4pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbnMgKDxiPjxpPk1vZGUgPC9pPjwvYj5zdGFuZHMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBNRDUsIFNIQTEsIFNIQTIyNCBhbmQgU0hBMjU2PGI+PGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaT48L2I+KSB0byA6PC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT0ic3F1YXJlIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+Rml4CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3NpbmcgZmFpbCBmb3Igc21hbGwgaW5wdXQgPHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iZ3JhbWUiPmJ1ZmZlcnM8L3NwYW4+PC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPiA8bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij50bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmxvY2sgdGhlIHByb2Nlc3MgYW5kIGNhbGwgcmV0dXJuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTF9PSyBhdCB0aGUgZW5kIG9mIEhBU0gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc2luZyB0byBhdm9pZCBpbmNvcnJlY3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwZWF0aW5nIDxzcGFuIGNsYXNzPSJncmFtZSI+c29mdHdhcmU8L3NwYW4+PC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPiA8bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5wcm9wZXJseQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byBtYW5hZ2UgdGhlIEhhc2hJVENvdW50ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWZmaWNpZW5jeSA8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIGNhbGwgdGhlIEhBTF9IQVNIXzxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImdyYW1lIj5JbkNwbHRDYWxsYmFjayg8L3NwYW4+KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdCB0aGUgZW5kIG9mIHRoZSBjb21wbGV0ZSBidWZmZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGVhZCBvZiBldmVyeSBlYWNoIDUxMiBiaXRzIDwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFTSF9JVF9ESU5JIGFuZCBIQVNIX0lUX0RDSQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5pdGlvbjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19IQUxfSEFTSF9HRVRfPHNwYW4gY2xhc3M9ImdyYW1lIj5GTEFHKDwvc3Bhbj4pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYWNybyBkZWZpbml0aW9uPC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEkyUyA8L3NwYW4+PC9iPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+dXBkYXRlPC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0iY2lyY2xlIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij51cGRhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTF9JMlNfPHNwYW4gY2xhc3M9ImdyYW1lIj5UcmFuc21pdCg8L3NwYW4+KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gdG8gZW5zdXJlIHRoZSB3YWl0aW5nIG9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCdXN5IGZsYWcgaW4gY2FzZSBvZiBzbGF2ZSBtb2RlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3Rpb248L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSVEMgPC9zcGFuPjwvYj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZTwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+dXBkYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQUxfUlRDRXhfPHNwYW4gY2xhc3M9ImdyYW1lIj5TZXRXYWtlVXBUaW1lcig8L3NwYW4+KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIEhBTF9SVENFeF9TZXRXYWtlVXBUaW1lcl9JVCgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbnMgdG8gcHJvcGVybHkgY2hlY2sgb24gV1VUV0YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWc8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5yZW5hbWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJUQ19USU1FU1RBTVBQSU5fUEk4IGRlZmluZSB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUlRDX1RJTUVTVEFNUFBJTl9QT1MxPC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnJlbmFtZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUlRDX1RJTUVTVEFNUFBJTl9QQzEgZGVmaW5lIHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSVENfVElNRVNUQU1QUElOX1BPUzI8L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+dXBkYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX0hBTF9SVENfV0FLRVVQVElNRVJfQ0xFQVJfPHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImdyYW1lIj5GTEFHKDwvc3Bhbj4pIG1hY3JvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbml0aW9uPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+dXBkYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX0hBTF9SVENfVEFNUEVSX0dFVF88c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iZ3JhbWUiPklUKDwvc3Bhbj4pIG1hY3JvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbml0aW9uPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+dXBkYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX0hBTF9SVENfVEFNUEVSX0NMRUFSXzxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJncmFtZSI+RkxBRyg8L3NwYW4+KSBtYWNybworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5pdGlvbjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19IQUxfUlRDX1RJTUVTVEFNUF9DTEVBUl88c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iZ3JhbWUiPkZMQUcoPC9zcGFuPikgbWFjcm8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluaXRpb248L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij51cGRhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fSEFMX1JUQ19UQU1QRVJfVElNRVNUQU1QX0VYVElfR0VUXzxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJncmFtZSI+RkxBRyg8L3NwYW4+KSBtYWNybworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5pdGlvbjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPmFkZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUlRDX1RBTVBDUl9UQU1QWEUgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSVENfVEFNUENSX1RBTVBYSUUgZGVmaW5lczwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTTUFSVENBUkQgPC9zcGFuPjwvYj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZTwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+YWRkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTTUFSVENBUkRfRkxBR19JRExFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU01BUlRDQVJEX0lUX0lETEUgPHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImdyYW1lIj5hbmQmbmJzcDsgU01BUlRDQVJEPC9zcGFuPl9DTEVBUl9JRExFRgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lczwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVBUlQgPC9zcGFuPjwvYj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZTwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+dXBkYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQUxfVUFSVF88c3BhbiBjbGFzcz0iZ3JhbWUiPkRNQVJlc3VtZSg8L3NwYW4+KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gdG8gY2xlYXIgb3ZlcnJ1biBmbGFnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWZvcmUgcmVzdW1pbmcgdGhlIFJ4IHRyYW5zZmVyPC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUFSVF9GTEFHX1NCS0YgZGVmaW5pdGlvbjwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVU0FSVCA8L3NwYW4+PC9iPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+dXBkYXRlPC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0iY2lyY2xlIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij51cGRhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTF9VU0FSVF88c3BhbiBjbGFzcz0iZ3JhbWUiPkRNQVJlc3VtZSg8L3NwYW4+KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gdG8gY2xlYXIgb3ZlcnJ1biBmbGFnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWZvcmUgcmVzdW1pbmcgdGhlIFJ4IHRyYW5zZmVyPC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5MTAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRk1DIDwvc3Bhbj48L2I+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij51cGRhdGU8L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkFORCB0aW1pbmcgbWF4aW11bSA8c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iZ3JhbWUiPnZhbHVlczwvc3Bhbj48L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkxMCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVU0IgPC9zcGFuPjwvYj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZTwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPiA8bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVTQl9GbHVzaFR4RmlmbworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVBJOiB1cGRhdGUgdG8gZmx1c2ggYWxsIFR4IDxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJncmFtZSI+RklGTzwvc3Bhbj48L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPiA8bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVwZGF0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gdXNlIGxvY2FsIHZhcmlhYmxlIGluIFVTQiBIb3N0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFubmVsIHJlLTxzcGFuIGNsYXNzPSJncmFtZSI+YWN0aXZhdGlvbjwvc3Bhbj48L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgzIHN0eWxlPSJiYWNrZ3JvdW5kOiByZ2IoNTEsIDEwMiwgMjU1KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9uZSByZXBlYXQgc2Nyb2xsIDAlIDUwJTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC1tb3otYmFja2dyb3VuZC1jbGlwOiAtbW96LWluaXRpYWw7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtbW96LWJhY2tncm91bmQtb3JpZ2luOiAtbW96LWluaXRpYWw7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtbW96LWJhY2tncm91bmQtaW5saW5lLXBvbGljeToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC1tb3otaW5pdGlhbDsgbWFyZ2luLXJpZ2h0OiA1MDBwdDsiPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtBcmlhbCZxdW90OyxzYW5zLXNlcmlmOyBjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpdGU7Ij5WMS4wLjAgLyAxMi1NYXktMjAxNTwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2gzPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW46IDQuNXB0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwaW4gNC41cHQgMC4yNWluOyI+PGI+PHU+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6IGJsYWNrOyI+TWFpbiBDaGFuZ2VzPC9zcGFuPjwvdT48L2I+PC9wPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0iZGlzYyI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5GaXJzdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZmljaWFsIHJlbGVhc2UgZm9yPGI+PGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNUTTMyRjc1Nnh4Lzc0Nnh4Lzc0NXh4PC9pPjwvYj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2VzPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDIgc3R5bGU9ImJhY2tncm91bmQ6IHJnYig1MSwgMTAyLCAyNTUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub25lIHJlcGVhdCBzY3JvbGwgMCUgNTAlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLW1vei1iYWNrZ3JvdW5kLWNsaXA6IC1tb3otaW5pdGlhbDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC1tb3otYmFja2dyb3VuZC1vcmlnaW46IC1tb3otaW5pdGlhbDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC1tb3otYmFja2dyb3VuZC1pbmxpbmUtcG9saWN5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLW1vei1pbml0aWFsOyI+PGEgbmFtZT0iTGljZW5zZSI+PC9hPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEycHQ7IGNvbG9yOiB3aGl0ZTsiPkxpY2Vuc2U8bzpwPjwvbzpwPjwvc3Bhbj48L2gyPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJ0ZXh0LWFsaWduOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAganVzdGlmeTsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5SZWRpc3RyaWJ1dGlvbgorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3Igd2l0aG91dCBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJlIG1ldDo8L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTBwdDsiPjxvOnA+PC9vOnA+PC9zcGFuPjwvcD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgdHlwZT0iZGlzYyI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9InRleHQtYWxpZ246CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGp1c3RpZnk7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlJlZGlzdHJpYnV0aW9ucworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNjbGFpbWVyLjwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7Ij48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJ0ZXh0LWFsaWduOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqdXN0aWZ5OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5SZWRpc3RyaWJ1dGlvbnMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXN0cmlidXRpb24uPC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9InRleHQtYWxpZ246CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGp1c3RpZnk7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPk5laXRoZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgbmFtZSBvZiBTVE1pY3JvZWxlY3Ryb25pY3Mgbm9yIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWVzIG9mIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0idGV4dC1hbGlnbjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGp1c3RpZnk7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLjwvc3Bhbj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyI+PGJyPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlRISVMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ09QWVJJR0hUIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuPC9zcGFuPjxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7Ij4gPG86cD48L286cD48L3NwYW4+PC9wPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9InRleHQtYWxpZ246CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZW50ZXI7IiBhbGlnbj0iY2VudGVyIj48c3BhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iY29sb3I6IGJsYWNrOyI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxociBzaXplPSIxIiBhbGlnbj0iY2VudGVyIiB3aWR0aD0iMTAwJSI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+PC9kaXY+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbjogNC41cHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDBpbiA0LjVwdCAwLjI1aW47IHRleHQtYWxpZ246IGNlbnRlcjsiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGlnbj0iY2VudGVyIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMHB0OyBmb250LWZhbWlseToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyBjb2xvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2s7Ij5Gb3IgY29tcGxldGUgZG9jdW1lbnRhdGlvbiBvbiA8L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlNUTTMyPHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iY29sb3I6IGJsYWNrOyI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWljcm9jb250cm9sbGVycyB2aXNpdCA8L3NwYW4+PHU+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJjb2xvcjogYmx1ZTsiPjxhCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY9Imh0dHA6Ly93d3cuc3QuY29tL2ludGVybmV0L21jdS9mYW1pbHkvMTQxLmpzcCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0PSJfYmxhbmsiPnd3dy5zdC5jb20vU1RNMzI8L2E+PC9zcGFuPjwvdT48L3NwYW4+PHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImNvbG9yOiBibGFjazsiPjxvOnA+PC9vOnA+PC9zcGFuPjwvcD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CisgICAgICAgICAgICAgICAgICAgICAgICA8dHIgc3R5bGU9IiI+CisgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBzdHlsZT0icGFkZGluZzogMGluOyIgdmFsaWduPSJ0b3AiPjxicj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CisgICAgICAgICAgICAgICAgICAgICAgPC90Ym9keT4KKyAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KKyAgICAgICAgICAgICAgICAgIDwvdGQ+CisgICAgICAgICAgICAgICAgPC90cj4KKyAgICAgICAgICAgICAgPC90Ym9keT4KKyAgICAgICAgICAgIDwvdGFibGU+CisgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgPHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9IiI+PHNwYW4gc3R5bGU9IiIgbGFuZz0iRlIiPjxvOnA+Jm5ic3A7PC9vOnA+PC9zcGFuPjwvcD4KKyAgICAgICAgPC9kaXY+CisgICAgICA8L2Rpdj4KKyAgICA8L2Rpdj4KKyAgPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvU3JjL0xlZ2FjeS9zdG0zMmY3eHhfaGFsX2Nhbi5jIGIvU3JjL0xlZ2FjeS9zdG0zMmY3eHhfaGFsX2Nhbi5jCmluZGV4IDMzYzcwZTkuLmYyNWU5NTIgMTAwNjQ0Ci0tLSBhL1NyYy9MZWdhY3kvc3RtMzJmN3h4X2hhbF9jYW4uYworKysgYi9TcmMvTGVnYWN5L3N0bTMyZjd4eF9oYWxfY2FuLmMKQEAgLTEwLDYgKzEwLDE3IEBACiAgICogICAgICAgICAgICsgUGVyaXBoZXJhbCBDb250cm9sIGZ1bmN0aW9ucwogICAqICAgICAgICAgICArIFBlcmlwaGVyYWwgU3RhdGUgYW5kIEVycm9yIGZ1bmN0aW9ucwogICAqCisgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAqIEBhdHRlbnRpb24KKyAgKgorICAqIENvcHlyaWdodCAoYykgMjAxNyBTVE1pY3JvZWxlY3Ryb25pY3MuCisgICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAgKgorICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgdW5kZXIgdGVybXMgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZQorICAqIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvZnR3YXJlIGNvbXBvbmVudC4KKyAgKiBJZiBubyBMSUNFTlNFIGZpbGUgY29tZXMgd2l0aCB0aGlzIHNvZnR3YXJlLCBpdCBpcyBwcm92aWRlZCBBUy1JUy4KKyAgKgorICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgQHZlcmJhdGltCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyMjIyMgVXNlciBOT1RFICMjIyMjCkBAIC04MywyOSArOTQsMTIgQEAKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgICogQGF0dGVudGlvbgogICAqCi0gICogPGgyPjxjZW50ZXI+JmNvcHk7IENPUFlSSUdIVChjKSAyMDE3IFNUTWljcm9lbGVjdHJvbmljczwvY2VudGVyPjwvaDI+CisgICogQ29weXJpZ2h0IChjKSAyMDE3IFNUTWljcm9lbGVjdHJvbmljcy4KKyAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAqCi0gICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwKLSAgKiBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6Ci0gICogICAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsCi0gICogICAgICB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICAqICAgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLAotICAqICAgICAgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbgotICAqICAgICAgYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gICogICAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIFNUTWljcm9lbGVjdHJvbmljcyBub3IgdGhlIG5hbWVzIG9mIGl0cyBjb250cmlidXRvcnMKLSAgKiAgICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZQotICAqICAgICAgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gICoKLSAgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIKLSAgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQotICAqIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0gICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKLSAgKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgotICAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCi0gICogT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgdW5kZXIgdGVybXMgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZQorICAqIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvZnR3YXJlIGNvbXBvbmVudC4KKyAgKiBJZiBubyBMSUNFTlNFIGZpbGUgY29tZXMgd2l0aCB0aGlzIHNvZnR3YXJlLCBpdCBpcyBwcm92aWRlZCBBUy1JUy4KICAgKgogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgKi8KQEAgLTE2ODQsNSArMTY3OCwzIEBACiAvKioKICAgKiBAfQogICAqLwotCi0vKioqKioqKioqKioqKioqKioqKioqKioqIChDKSBDT1BZUklHSFQgU1RNaWNyb2VsZWN0cm9uaWNzICoqKioqRU5EIE9GIEZJTEUqKioqLwpkaWZmIC0tZ2l0IGEvU3JjL3N0bTMyZjd4eF9oYWwuYyBiL1NyYy9zdG0zMmY3eHhfaGFsLmMKaW5kZXggZTY1ZTM2Zi4uOWY4MmUzNiAxMDA2NDQKLS0tIGEvU3JjL3N0bTMyZjd4eF9oYWwuYworKysgYi9TcmMvc3RtMzJmN3h4X2hhbC5jCkBAIC01LDYgKzUsMTcgQEAKICAgKiBAYnJpZWYgICBIQUwgbW9kdWxlIGRyaXZlci4KICAgKiAgICAgICAgICBUaGlzIGlzIHRoZSBjb21tb24gcGFydCBvZiB0aGUgSEFMIGluaXRpYWxpemF0aW9uCiAgICoKKyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICogQGF0dGVudGlvbgorICAqCisgICogQ29weXJpZ2h0IChjKSAyMDE3IFNUTWljcm9lbGVjdHJvbmljcy4KKyAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICAqCisgICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCB1bmRlciB0ZXJtcyB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlCisgICogaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc29mdHdhcmUgY29tcG9uZW50LgorICAqIElmIG5vIExJQ0VOU0UgZmlsZSBjb21lcyB3aXRoIHRoaXMgc29mdHdhcmUsIGl0IGlzIHByb3ZpZGVkIEFTLUlTLgorICAqCisgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICBAdmVyYmF0aW0KICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgICAgICAgICAgICAgICAgICAgICAjIyMjIyBIb3cgdG8gdXNlIHRoaXMgZHJpdmVyICMjIyMjCkBAIC0xOSwxNyArMzAsNiBAQAogCiAgIEBlbmR2ZXJiYXRpbQogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAgKiBAYXR0ZW50aW9uCi0gICoKLSAgKiA8aDI+PGNlbnRlcj4mY29weTsgQ29weXJpZ2h0IChjKSAyMDE3IFNUTWljcm9lbGVjdHJvbmljcy4KLSAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLjwvY2VudGVyPjwvaDI+Ci0gICoKLSAgKiBUaGlzIHNvZnR3YXJlIGNvbXBvbmVudCBpcyBsaWNlbnNlZCBieSBTVCB1bmRlciBCU0QgMy1DbGF1c2UgbGljZW5zZSwKLSAgKiB0aGUgIkxpY2Vuc2UiOyBZb3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlCi0gICogTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0OgotICAqICAgICAgICAgICAgICAgICAgICAgICAgb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvQlNELTMtQ2xhdXNlCi0gICoKLSAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgICovIAogCiAvKiBJbmNsdWRlcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwpAQCAtNTAsMTEgKzUwLDExIEBACiAgICogQHsKICAgKi8KIC8qKgotICogQGJyaWVmIFNUTTMyRjd4eCBIQUwgRHJpdmVyIHZlcnNpb24gbnVtYmVyIFYxLjIuOQorICogQGJyaWVmIFNUTTMyRjd4eCBIQUwgRHJpdmVyIHZlcnNpb24gbnVtYmVyIFYxLjIuMTAKICAgICovCiAjZGVmaW5lIF9fU1RNMzJGN3h4X0hBTF9WRVJTSU9OX01BSU4gICAoMHgwMSkgLyohPCBbMzE6MjRdIG1haW4gdmVyc2lvbiAqLwogI2RlZmluZSBfX1NUTTMyRjd4eF9IQUxfVkVSU0lPTl9TVUIxICAgKDB4MDIpIC8qITwgWzIzOjE2XSBzdWIxIHZlcnNpb24gKi8KLSNkZWZpbmUgX19TVE0zMkY3eHhfSEFMX1ZFUlNJT05fU1VCMiAgICgweDA5KSAvKiE8IFsxNTo4XSAgc3ViMiB2ZXJzaW9uICovCisjZGVmaW5lIF9fU1RNMzJGN3h4X0hBTF9WRVJTSU9OX1NVQjIgICAoMHgwQSkgLyohPCBbMTU6OF0gIHN1YjIgdmVyc2lvbiAqLwogI2RlZmluZSBfX1NUTTMyRjd4eF9IQUxfVkVSU0lPTl9SQyAgICAgKDB4MDApIC8qITwgWzc6MF0gIHJlbGVhc2UgY2FuZGlkYXRlICovIAogI2RlZmluZSBfX1NUTTMyRjd4eF9IQUxfVkVSU0lPTiAgICAgICAgICgoX19TVE0zMkY3eHhfSEFMX1ZFUlNJT05fTUFJTiA8PCAyNClcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfChfX1NUTTMyRjd4eF9IQUxfVkVSU0lPTl9TVUIxIDw8IDE2KVwKQEAgLTEzOSw3ICsxMzksNyBAQAogewogICAvKiBDb25maWd1cmUgSW5zdHJ1Y3Rpb24gY2FjaGUgdGhyb3VnaCBBUlQgYWNjZWxlcmF0b3IgKi8gCiAjaWYgKEFSVF9BQ0NMRVJBVE9SX0VOQUJMRSAhPSAwKQotICAgX19IQUxfRkxBU0hfQVJUX0VOQUJMRSgpOworICBfX0hBTF9GTEFTSF9BUlRfRU5BQkxFKCk7CiAjZW5kaWYgLyogQVJUX0FDQ0xFUkFUT1JfRU5BQkxFICovCiAKICAgLyogQ29uZmlndXJlIEZsYXNoIHByZWZldGNoICovCkBAIC0xNTIsMTAgKzE1MiwxMCBAQAogCiAgIC8qIFVzZSBzeXN0aWNrIGFzIHRpbWUgYmFzZSBzb3VyY2UgYW5kIGNvbmZpZ3VyZSAxbXMgdGljayAoZGVmYXVsdCBjbG9jayBhZnRlciBSZXNldCBpcyBIU0kpICovCiAgIEhBTF9Jbml0VGljayhUSUNLX0lOVF9QUklPUklUWSk7Ci0gIAorCiAgIC8qIEluaXQgdGhlIGxvdyBsZXZlbCBoYXJkd2FyZSAqLwogICBIQUxfTXNwSW5pdCgpOwotICAKKwogICAvKiBSZXR1cm4gZnVuY3Rpb24gc3RhdHVzICovCiAgIHJldHVybiBIQUxfT0s7CiB9CkBAIC0xODUsNyArMTg1LDcgQEAKIAogICAvKiBEZS1Jbml0IHRoZSBsb3cgbGV2ZWwgaGFyZHdhcmUgKi8KICAgSEFMX01zcERlSW5pdCgpOwotICAgIAorCiAgIC8qIFJldHVybiBmdW5jdGlvbiBzdGF0dXMgKi8KICAgcmV0dXJuIEhBTF9PSzsKIH0KQEAgLTQxOCw3ICs0MTgsNyBAQAogICAqLwogdWludDMyX3QgSEFMX0dldEhhbFZlcnNpb24odm9pZCkKIHsKLSByZXR1cm4gX19TVE0zMkY3eHhfSEFMX1ZFUlNJT047CisgIHJldHVybiBfX1NUTTMyRjd4eF9IQUxfVkVSU0lPTjsKIH0KIAogLyoqCkBAIC00NDUsNyArNDQ1LDcgQEAKICAgKi8KIHVpbnQzMl90IEhBTF9HZXRVSUR3MCh2b2lkKQogewotICAgcmV0dXJuKFJFQURfUkVHKCooKHVpbnQzMl90ICopVUlEX0JBU0UpKSk7CisgIHJldHVybihSRUFEX1JFRygqKCh1aW50MzJfdCAqKVVJRF9CQVNFKSkpOwogfQogCiAvKioKQEAgLTQ1NCw3ICs0NTQsNyBAQAogICAqLwogdWludDMyX3QgSEFMX0dldFVJRHcxKHZvaWQpCiB7Ci0gICByZXR1cm4oUkVBRF9SRUcoKigodWludDMyX3QgKikoVUlEX0JBU0UgKyA0VSkpKSk7CisgIHJldHVybihSRUFEX1JFRygqKCh1aW50MzJfdCAqKShVSURfQkFTRSArIDRVKSkpKTsKIH0KIAogLyoqCkBAIC00NjMsNyArNDYzLDcgQEAKICAgKi8KIHVpbnQzMl90IEhBTF9HZXRVSUR3Mih2b2lkKQogewotICAgcmV0dXJuKFJFQURfUkVHKCooKHVpbnQzMl90ICopKFVJRF9CQVNFICsgOFUpKSkpOworICByZXR1cm4oUkVBRF9SRUcoKigodWludDMyX3QgKikoVUlEX0JBU0UgKyA4VSkpKSk7CiB9CiAKIC8qKgpAQCAtNTY1LDcgKzU2NSw2IEBACiAgICovCiB2b2lkIEhBTF9EaXNhYmxlRk1DTWVtb3J5U3dhcHBpbmcodm9pZCkKIHsKLQogICBTWVNDRkctPk1FTVJNUCAmPSAodWludDMyX3QpfigodWludDMyX3QpU1lTQ0ZHX01FTVJNUF9TV1BfRk1DKTsKIH0KIApAQCAtNjE3LDQgKzYxNiw0IEBACiAgICogQH0KICAgKi8KIAotLyoqKioqKioqKioqKioqKioqKioqKioqKiAoQykgQ09QWVJJR0hUIFNUTWljcm9lbGVjdHJvbmljcyAqKioqKkVORCBPRiBGSUxFKioqKi8KKwpkaWZmIC0tZ2l0IGEvU3JjL3N0bTMyZjd4eF9oYWxfYWRjLmMgYi9TcmMvc3RtMzJmN3h4X2hhbF9hZGMuYwppbmRleCBjMjQ0ZmMyLi4zYjgzMWRiIDEwMDY0NAotLS0gYS9TcmMvc3RtMzJmN3h4X2hhbF9hZGMuYworKysgYi9TcmMvc3RtMzJmN3h4X2hhbF9hZGMuYwpAQCAtNSw5ICs1LDIwIEBACiAgICogQGJyaWVmICAgVGhpcyBmaWxlIHByb3ZpZGVzIGZpcm13YXJlIGZ1bmN0aW9ucyB0byBtYW5hZ2UgdGhlIGZvbGxvd2luZyAKICAgKiAgICAgICAgICBmdW5jdGlvbmFsaXRpZXMgb2YgdGhlIEFuYWxvZyB0byBEaWdpdGFsIENvbnZlcnRlciAoQURDKSBwZXJpcGhlcmFsOgogICAqICAgICAgICAgICArIEluaXRpYWxpemF0aW9uIGFuZCBkZS1pbml0aWFsaXphdGlvbiBmdW5jdGlvbnMKLSAgKiAgICAgICAgICAgKyBJTyBvcGVyYXRpb24gZnVuY3Rpb25zCi0gICogICAgICAgICAgICsgU3RhdGUgYW5kIGVycm9ycyBmdW5jdGlvbnMKLSAgKiAgICAgICAgIAorICAqICAgICAgICAgICArIFBlcmlwaGVyYWwgQ29udHJvbCBmdW5jdGlvbnMKKyAgKiAgICAgICAgICAgKyBQZXJpcGhlcmFsIFN0YXRlIGZ1bmN0aW9ucworICAqCisgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAqIEBhdHRlbnRpb24KKyAgKgorICAqIENvcHlyaWdodCAoYykgMjAxNyBTVE1pY3JvZWxlY3Ryb25pY3MuCisgICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAgKgorICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgdW5kZXIgdGVybXMgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZQorICAqIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvZnR3YXJlIGNvbXBvbmVudC4KKyAgKiBJZiBubyBMSUNFTlNFIGZpbGUgY29tZXMgd2l0aCB0aGlzIHNvZnR3YXJlLCBpdCBpcyBwcm92aWRlZCBBUy1JUy4KKyAgKgorICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgQHZlcmJhdGltCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICAgICAgICAgICAgICAgICAgICAjIyMjIyBBREMgUGVyaXBoZXJhbCBmZWF0dXJlcyAjIyMjIwpAQCAtMTcyLDExICsxODMsMTEgQEAKIAogICAgICBUaGUgY29tcGlsYXRpb24gZmxhZyBVU0VfSEFMX0FEQ19SRUdJU1RFUl9DQUxMQkFDS1MsIHdoZW4gc2V0IHRvIDEsCiAgICAgIGFsbG93cyB0aGUgdXNlciB0byBjb25maWd1cmUgZHluYW1pY2FsbHkgdGhlIGRyaXZlciBjYWxsYmFja3MuCi0gICAgIFVzZSBGdW5jdGlvbnMgQHJlZiBIQUxfQURDX1JlZ2lzdGVyQ2FsbGJhY2soKQorICAgICBVc2UgRnVuY3Rpb25zIEhBTF9BRENfUmVnaXN0ZXJDYWxsYmFjaygpCiAgICAgIHRvIHJlZ2lzdGVyIGFuIGludGVycnVwdCBjYWxsYmFjay4KICAgICBbLi5dCiAKLSAgICAgRnVuY3Rpb24gQHJlZiBIQUxfQURDX1JlZ2lzdGVyQ2FsbGJhY2soKSBhbGxvd3MgdG8gcmVnaXN0ZXIgZm9sbG93aW5nIGNhbGxiYWNrczoKKyAgICAgRnVuY3Rpb24gSEFMX0FEQ19SZWdpc3RlckNhbGxiYWNrKCkgYWxsb3dzIHRvIHJlZ2lzdGVyIGZvbGxvd2luZyBjYWxsYmFja3M6CiAgICAgICAgKCspIENvbnZDcGx0Q2FsbGJhY2sgICAgICAgICAgICAgICA6IEFEQyBjb252ZXJzaW9uIGNvbXBsZXRlIGNhbGxiYWNrCiAgICAgICAgKCspIENvbnZIYWxmQ3BsdENhbGxiYWNrICAgICAgICAgICA6IEFEQyBjb252ZXJzaW9uIERNQSBoYWxmLXRyYW5zZmVyIGNhbGxiYWNrCiAgICAgICAgKCspIExldmVsT3V0T2ZXaW5kb3dDYWxsYmFjayAgICAgICA6IEFEQyBhbmFsb2cgd2F0Y2hkb2cgMSBjYWxsYmFjawpAQCAtMTkyLDExICsyMDMsMTEgQEAKICAgICAgYW5kIGEgcG9pbnRlciB0byB0aGUgdXNlciBjYWxsYmFjayBmdW5jdGlvbi4KICAgICBbLi5dCiAKLSAgICAgVXNlIGZ1bmN0aW9uIEByZWYgSEFMX0FEQ19VblJlZ2lzdGVyQ2FsbGJhY2sgdG8gcmVzZXQgYSBjYWxsYmFjayB0byB0aGUgZGVmYXVsdAorICAgICBVc2UgZnVuY3Rpb24gSEFMX0FEQ19VblJlZ2lzdGVyQ2FsbGJhY2sgdG8gcmVzZXQgYSBjYWxsYmFjayB0byB0aGUgZGVmYXVsdAogICAgICB3ZWFrIGZ1bmN0aW9uLgogICAgIFsuLl0KIAotICAgICBAcmVmIEhBTF9BRENfVW5SZWdpc3RlckNhbGxiYWNrIHRha2VzIGFzIHBhcmFtZXRlcnMgdGhlIEhBTCBwZXJpcGhlcmFsIGhhbmRsZSwKKyAgICAgSEFMX0FEQ19VblJlZ2lzdGVyQ2FsbGJhY2sgdGFrZXMgYXMgcGFyYW1ldGVycyB0aGUgSEFMIHBlcmlwaGVyYWwgaGFuZGxlLAogICAgICBhbmQgdGhlIENhbGxiYWNrIElELgogICAgICBUaGlzIGZ1bmN0aW9uIGFsbG93cyB0byByZXNldCBmb2xsb3dpbmcgY2FsbGJhY2tzOgogICAgICAgICgrKSBDb252Q3BsdENhbGxiYWNrICAgICAgICAgICAgICAgOiBBREMgY29udmVyc2lvbiBjb21wbGV0ZSBjYWxsYmFjawpAQCAtMjEyLDI3ICsyMjMsMjcgQEAKICAgICAgICAoKykgTXNwRGVJbml0Q2FsbGJhY2sgICAgICAgICAgICAgIDogQURDIE1zcCBEZUluaXQgY2FsbGJhY2sKICAgICAgWy4uXQogCi0gICAgIEJ5IGRlZmF1bHQsIGFmdGVyIHRoZSBAcmVmIEhBTF9BRENfSW5pdCgpIGFuZCB3aGVuIHRoZSBzdGF0ZSBpcyBAcmVmIEhBTF9BRENfU1RBVEVfUkVTRVQKKyAgICAgQnkgZGVmYXVsdCwgYWZ0ZXIgdGhlIEhBTF9BRENfSW5pdCgpIGFuZCB3aGVuIHRoZSBzdGF0ZSBpcyBIQUxfQURDX1NUQVRFX1JFU0VUCiAgICAgIGFsbCBjYWxsYmFja3MgYXJlIHNldCB0byB0aGUgY29ycmVzcG9uZGluZyB3ZWFrIGZ1bmN0aW9uczoKLSAgICAgZXhhbXBsZXMgQHJlZiBIQUxfQURDX0NvbnZDcGx0Q2FsbGJhY2soKSwgQHJlZiBIQUxfQURDX0Vycm9yQ2FsbGJhY2soKS4KKyAgICAgZXhhbXBsZXMgSEFMX0FEQ19Db252Q3BsdENhbGxiYWNrKCksIEhBTF9BRENfRXJyb3JDYWxsYmFjaygpLgogICAgICBFeGNlcHRpb24gZG9uZSBmb3IgTXNwSW5pdCBhbmQgTXNwRGVJbml0IGZ1bmN0aW9ucyB0aGF0IGFyZQotICAgICByZXNldCB0byB0aGUgbGVnYWN5IHdlYWsgZnVuY3Rpb25zIGluIHRoZSBAcmVmIEhBTF9BRENfSW5pdCgpLyBAcmVmIEhBTF9BRENfRGVJbml0KCkgb25seSB3aGVuCisgICAgIHJlc2V0IHRvIHRoZSBsZWdhY3kgd2VhayBmdW5jdGlvbnMgaW4gdGhlIEhBTF9BRENfSW5pdCgpLyBIQUxfQURDX0RlSW5pdCgpIG9ubHkgd2hlbgogICAgICB0aGVzZSBjYWxsYmFja3MgYXJlIG51bGwgKG5vdCByZWdpc3RlcmVkIGJlZm9yZWhhbmQpLgogICAgIFsuLl0KIAotICAgICBJZiBNc3BJbml0IG9yIE1zcERlSW5pdCBhcmUgbm90IG51bGwsIHRoZSBAcmVmIEhBTF9BRENfSW5pdCgpLyBAcmVmIEhBTF9BRENfRGVJbml0KCkKKyAgICAgSWYgTXNwSW5pdCBvciBNc3BEZUluaXQgYXJlIG5vdCBudWxsLCB0aGUgSEFMX0FEQ19Jbml0KCkvIEhBTF9BRENfRGVJbml0KCkKICAgICAga2VlcCBhbmQgdXNlIHRoZSB1c2VyIE1zcEluaXQvTXNwRGVJbml0IGNhbGxiYWNrcyAocmVnaXN0ZXJlZCBiZWZvcmVoYW5kKSB3aGF0ZXZlciB0aGUgc3RhdGUuCiAgICAgIFsuLl0KIAotICAgICBDYWxsYmFja3MgY2FuIGJlIHJlZ2lzdGVyZWQvdW5yZWdpc3RlcmVkIGluIEByZWYgSEFMX0FEQ19TVEFURV9SRUFEWSBzdGF0ZSBvbmx5LgorICAgICBDYWxsYmFja3MgY2FuIGJlIHJlZ2lzdGVyZWQvdW5yZWdpc3RlcmVkIGluIEhBTF9BRENfU1RBVEVfUkVBRFkgc3RhdGUgb25seS4KICAgICAgRXhjZXB0aW9uIGRvbmUgTXNwSW5pdC9Nc3BEZUluaXQgZnVuY3Rpb25zIHRoYXQgY2FuIGJlIHJlZ2lzdGVyZWQvdW5yZWdpc3RlcmVkCi0gICAgIGluIEByZWYgSEFMX0FEQ19TVEFURV9SRUFEWSBvciBAcmVmIEhBTF9BRENfU1RBVEVfUkVTRVQgc3RhdGUsCisgICAgIGluIEhBTF9BRENfU1RBVEVfUkVBRFkgb3IgSEFMX0FEQ19TVEFURV9SRVNFVCBzdGF0ZSwKICAgICAgdGh1cyByZWdpc3RlcmVkICh1c2VyKSBNc3BJbml0L0RlSW5pdCBjYWxsYmFja3MgY2FuIGJlIHVzZWQgZHVyaW5nIHRoZSBJbml0L0RlSW5pdC4KICAgICBbLi5dCiAKICAgICAgVGhlbiwgdGhlIHVzZXIgZmlyc3QgcmVnaXN0ZXJzIHRoZSBNc3BJbml0L01zcERlSW5pdCB1c2VyIGNhbGxiYWNrcwotICAgICB1c2luZyBAcmVmIEhBTF9BRENfUmVnaXN0ZXJDYWxsYmFjaygpIGJlZm9yZSBjYWxsaW5nIEByZWYgSEFMX0FEQ19EZUluaXQoKQotICAgICBvciBAcmVmIEhBTF9BRENfSW5pdCgpIGZ1bmN0aW9uLgorICAgICB1c2luZyBIQUxfQURDX1JlZ2lzdGVyQ2FsbGJhY2soKSBiZWZvcmUgY2FsbGluZyBIQUxfQURDX0RlSW5pdCgpCisgICAgIG9yIEhBTF9BRENfSW5pdCgpIGZ1bmN0aW9uLgogICAgICBbLi5dCiAKICAgICAgV2hlbiB0aGUgY29tcGlsYXRpb24gZmxhZyBVU0VfSEFMX0FEQ19SRUdJU1RFUl9DQUxMQkFDS1MgaXMgc2V0IHRvIDAgb3IKQEAgLTI0MSwxNyArMjUyLDYgQEAKIAogICAgIEBlbmR2ZXJiYXRpbQogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAgKiBAYXR0ZW50aW9uCi0gICoKLSAgKiA8aDI+PGNlbnRlcj4mY29weTsgQ29weXJpZ2h0IChjKSAyMDE3IFNUTWljcm9lbGVjdHJvbmljcy4KLSAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLjwvY2VudGVyPjwvaDI+Ci0gICoKLSAgKiBUaGlzIHNvZnR3YXJlIGNvbXBvbmVudCBpcyBsaWNlbnNlZCBieSBTVCB1bmRlciBCU0QgMy1DbGF1c2UgbGljZW5zZSwKLSAgKiB0aGUgIkxpY2Vuc2UiOyBZb3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlCi0gICogTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0OgotICAqICAgICAgICAgICAgICAgICAgICAgICAgb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvQlNELTMtQ2xhdXNlCi0gICoKLSAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgICovIAogCiAvKiBJbmNsdWRlcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwpAQCAtMTIwOSwxNCArMTIwOSwxOCBAQAogdm9pZCBIQUxfQURDX0lSUUhhbmRsZXIoQURDX0hhbmRsZVR5cGVEZWYqIGhhZGMpCiB7CiAgIHVpbnQzMl90IHRtcDEgPSAwLCB0bXAyID0gMDsKLSAgCisKKyAgdWludDMyX3QgdG1wX3NyID0gaGFkYy0+SW5zdGFuY2UtPlNSOworICB1aW50MzJfdCB0bXBfY3IxID0gaGFkYy0+SW5zdGFuY2UtPkNSMTsKKwogICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLwogICBhc3NlcnRfcGFyYW0oSVNfRlVOQ1RJT05BTF9TVEFURShoYWRjLT5Jbml0LkNvbnRpbnVvdXNDb252TW9kZSkpOwogICBhc3NlcnRfcGFyYW0oSVNfQURDX1JFR1VMQVJfTEVOR1RIKGhhZGMtPkluaXQuTmJyT2ZDb252ZXJzaW9uKSk7CiAgIGFzc2VydF9wYXJhbShJU19BRENfRU9DU2VsZWN0aW9uKGhhZGMtPkluaXQuRU9DU2VsZWN0aW9uKSk7Ci0gIAotICB0bXAxID0gX19IQUxfQURDX0dFVF9GTEFHKGhhZGMsIEFEQ19GTEFHX0VPQyk7Ci0gIHRtcDIgPSBfX0hBTF9BRENfR0VUX0lUX1NPVVJDRShoYWRjLCBBRENfSVRfRU9DKTsKKworICB0bXAxID0gdG1wX3NyICYgQURDX0ZMQUdfRU9DOworICB0bXAyID0gdG1wX2NyMSAmIEFEQ19JVF9FT0M7CisKICAgLyogQ2hlY2sgRW5kIG9mIGNvbnZlcnNpb24gZmxhZyBmb3IgcmVndWxhciBjaGFubmVscyAqLwogICBpZih0bXAxICYmIHRtcDIpCiAgIHsKQEAgLTEyNjQsOCArMTI2OCw4IEBACiAgICAgX19IQUxfQURDX0NMRUFSX0ZMQUcoaGFkYywgQURDX0ZMQUdfU1RSVCB8IEFEQ19GTEFHX0VPQyk7CiAgIH0KICAgCi0gIHRtcDEgPSBfX0hBTF9BRENfR0VUX0ZMQUcoaGFkYywgQURDX0ZMQUdfSkVPQyk7Ci0gIHRtcDIgPSBfX0hBTF9BRENfR0VUX0lUX1NPVVJDRShoYWRjLCBBRENfSVRfSkVPQyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICB0bXAxID0gdG1wX3NyICYgQURDX0ZMQUdfSkVPQzsKKyAgdG1wMiA9IHRtcF9jcjEgJiBBRENfSVRfSkVPQzsKICAgLyogQ2hlY2sgRW5kIG9mIGNvbnZlcnNpb24gZmxhZyBmb3IgaW5qZWN0ZWQgY2hhbm5lbHMgKi8KICAgaWYodG1wMSAmJiB0bXAyKQogICB7CkBAIC0xMzEwLDggKzEzMTQsOCBAQAogICAgIF9fSEFMX0FEQ19DTEVBUl9GTEFHKGhhZGMsIChBRENfRkxBR19KU1RSVCB8IEFEQ19GTEFHX0pFT0MpKTsKICAgfQogICAKLSAgdG1wMSA9IF9fSEFMX0FEQ19HRVRfRkxBRyhoYWRjLCBBRENfRkxBR19BV0QpOwotICB0bXAyID0gX19IQUxfQURDX0dFVF9JVF9TT1VSQ0UoaGFkYywgQURDX0lUX0FXRCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgdG1wMSA9IHRtcF9zciAmIEFEQ19GTEFHX0FXRDsKKyAgdG1wMiA9IHRtcF9jcjEgJiBBRENfSVRfQVdEOwogICAvKiBDaGVjayBBbmFsb2cgd2F0Y2hkb2cgZmxhZyAqLwogICBpZih0bXAxICYmIHRtcDIpCiAgIHsKQEAgLTEzMzMsOCArMTMzNyw4IEBACiAgICAgfQogICB9CiAgIAotICB0bXAxID0gX19IQUxfQURDX0dFVF9GTEFHKGhhZGMsIEFEQ19GTEFHX09WUik7Ci0gIHRtcDIgPSBfX0hBTF9BRENfR0VUX0lUX1NPVVJDRShoYWRjLCBBRENfSVRfT1ZSKTsKKyAgdG1wMSA9IHRtcF9zciAmIEFEQ19GTEFHX09WUjsKKyAgdG1wMiA9IHRtcF9jcjEgJiBBRENfSVRfT1ZSOwogICAvKiBDaGVjayBPdmVycnVuIGZsYWcgKi8KICAgaWYodG1wMSAmJiB0bXAyKQogICB7CkBAIC0xNzM5LDYgKzE3NDMsOSBAQAogICAvKiBpZiBBREMxIENoYW5uZWxfMTggaXMgc2VsZWN0ZWQgZW5hYmxlIFZCQVQgQ2hhbm5lbCAqLwogICBpZiAoKGhhZGMtPkluc3RhbmNlID09IEFEQzEpICYmIChzQ29uZmlnLT5DaGFubmVsID09IEFEQ19DSEFOTkVMX1ZCQVQpKQogICB7CisgICAgLyogRGlzYWJsZSB0aGUgVEVNUFNFTlNPUiBjaGFubmVsIGFzIGl0IGlzIG11bHRpcGxpeGVkIHdpdGggdGhlIFZCQVQgY2hhbm5lbCAqLworICAgIEFEQy0+Q0NSICY9IH5BRENfQ0NSX1RTVlJFRkU7CisKICAgICAvKiBFbmFibGUgdGhlIFZCQVQgY2hhbm5lbCovCiAgICAgQURDLT5DQ1IgfD0gQURDX0NDUl9WQkFURTsKICAgfQpAQCAtMTc0Niw2ICsxNzUzLDkgQEAKICAgLyogaWYgQURDMSBDaGFubmVsXzE4IG9yIENoYW5uZWxfMTcgaXMgc2VsZWN0ZWQgZW5hYmxlIFRTVlJFRkUgQ2hhbm5lbChUZW1wZXJhdHVyZSBzZW5zb3IgYW5kIFZSRUZJTlQpICovCiAgIGlmICgoaGFkYy0+SW5zdGFuY2UgPT0gQURDMSkgJiYgKChzQ29uZmlnLT5DaGFubmVsID09IEFEQ19DSEFOTkVMX1RFTVBTRU5TT1IpIHx8IChzQ29uZmlnLT5DaGFubmVsID09IEFEQ19DSEFOTkVMX1ZSRUZJTlQpKSkKICAgeworICAgIC8qIERpc2FibGUgdGhlIFZCQVQgY2hhbm5lbCBhcyBpdCBpcyBtdWx0aXBsaXhlZCB3aXRoIFRFTVBTRU5TT1IgY2hhbm5lbCAqLworICAgIEFEQy0+Q0NSICY9IH5BRENfQ0NSX1ZCQVRFOworCiAgICAgLyogRW5hYmxlIHRoZSBUU1ZSRUZFIGNoYW5uZWwqLwogICAgIEFEQy0+Q0NSIHw9IEFEQ19DQ1JfVFNWUkVGRTsKIApAQCAtMjEwMiw0ICsyMTEyLDMgQEAKICAgKiBAfQogICAqLyAKIAotLyoqKioqKioqKioqKioqKioqKioqKioqKiAoQykgQ09QWVJJR0hUIFNUTWljcm9lbGVjdHJvbmljcyAqKioqKkVORCBPRiBGSUxFKioqKi8KZGlmZiAtLWdpdCBhL1NyYy9zdG0zMmY3eHhfaGFsX2FkY19leC5jIGIvU3JjL3N0bTMyZjd4eF9oYWxfYWRjX2V4LmMKaW5kZXggZWMyNmIzNS4uNzAyYTYyZCAxMDA2NDQKLS0tIGEvU3JjL3N0bTMyZjd4eF9oYWxfYWRjX2V4LmMKKysrIGIvU3JjL3N0bTMyZjd4eF9oYWxfYWRjX2V4LmMKQEAgLTYsNiArNiwxNyBAQAogICAqICAgICAgICAgIGZ1bmN0aW9uYWxpdGllcyBvZiB0aGUgQURDIGV4dGVuc2lvbiBwZXJpcGhlcmFsOgogICAqICAgICAgICAgICArIEV4dGVuZGVkIGZlYXR1cmVzIGZ1bmN0aW9ucwogICAqCisgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAqIEBhdHRlbnRpb24KKyAgKgorICAqIENvcHlyaWdodCAoYykgMjAxNyBTVE1pY3JvZWxlY3Ryb25pY3MuCisgICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAgKgorICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgdW5kZXIgdGVybXMgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZQorICAqIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvZnR3YXJlIGNvbXBvbmVudC4KKyAgKiBJZiBubyBMSUNFTlNFIGZpbGUgY29tZXMgd2l0aCB0aGlzIHNvZnR3YXJlLCBpdCBpcyBwcm92aWRlZCBBUy1JUy4KKyAgKgorICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgQHZlcmJhdGltCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICAgICAgICAgICAgICAgICAgICAjIyMjIyBIb3cgdG8gdXNlIHRoaXMgZHJpdmVyICMjIyMjCkBAIC03MCwxNyArODEsNiBAQAogCiAgICAgQGVuZHZlcmJhdGltCiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICAqIEBhdHRlbnRpb24KLSAgKgotICAqIDxoMj48Y2VudGVyPiZjb3B5OyBDb3B5cmlnaHQgKGMpIDIwMTcgU1RNaWNyb2VsZWN0cm9uaWNzLgotICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuPC9jZW50ZXI+PC9oMj4KLSAgKgotICAqIFRoaXMgc29mdHdhcmUgY29tcG9uZW50IGlzIGxpY2Vuc2VkIGJ5IFNUIHVuZGVyIEJTRCAzLUNsYXVzZSBsaWNlbnNlLAotICAqIHRoZSAiTGljZW5zZSI7IFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUKLSAgKiBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQ6Ci0gICogICAgICAgICAgICAgICAgICAgICAgICBvcGVuc291cmNlLm9yZy9saWNlbnNlcy9CU0QtMy1DbGF1c2UKLSAgKgotICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgKi8KIAogLyogSW5jbHVkZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KQEAgLTEwNjQsNCArMTA2NCwzIEBACiAgICogQH0KICAgKi8gCiAKLS8qKioqKioqKioqKioqKioqKioqKioqKiogKEMpIENPUFlSSUdIVCBTVE1pY3JvZWxlY3Ryb25pY3MgKioqKipFTkQgT0YgRklMRSoqKiovCmRpZmYgLS1naXQgYS9TcmMvc3RtMzJmN3h4X2hhbF9jYW4uYyBiL1NyYy9zdG0zMmY3eHhfaGFsX2Nhbi5jCmluZGV4IDk2YzZkODAuLjMwNWUzZWQgMTAwNjQ0Ci0tLSBhL1NyYy9zdG0zMmY3eHhfaGFsX2Nhbi5jCisrKyBiL1NyYy9zdG0zMmY3eHhfaGFsX2Nhbi5jCkBAIC0xMiw2ICsxMiwxNyBAQAogICAqICAgICAgICAgICArIENhbGxiYWNrcyBmdW5jdGlvbnMKICAgKiAgICAgICAgICAgKyBQZXJpcGhlcmFsIFN0YXRlIGFuZCBFcnJvciBmdW5jdGlvbnMKICAgKgorICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgKiBAYXR0ZW50aW9uCisgICoKKyAgKiBDb3B5cmlnaHQgKGMpIDIwMTcgU1RNaWNyb2VsZWN0cm9uaWNzLgorICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgICoKKyAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIHVuZGVyIHRlcm1zIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUKKyAgKiBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb2Z0d2FyZSBjb21wb25lbnQuCisgICogSWYgbm8gTElDRU5TRSBmaWxlIGNvbWVzIHdpdGggdGhpcyBzb2Z0d2FyZSwgaXQgaXMgcHJvdmlkZWQgQVMtSVMuCisgICoKKyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgIEB2ZXJiYXRpbQogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgICAgICAgICAgICAgICAgICAgICAgICMjIyMjIEhvdyB0byB1c2UgdGhpcyBkcml2ZXIgIyMjIyMKQEAgLTEzMSw5ICsxNDIsOSBAQAogCiAgIFRoZSBjb21waWxhdGlvbiBkZWZpbmUgIFVTRV9IQUxfQ0FOX1JFR0lTVEVSX0NBTExCQUNLUyB3aGVuIHNldCB0byAxCiAgIGFsbG93cyB0aGUgdXNlciB0byBjb25maWd1cmUgZHluYW1pY2FsbHkgdGhlIGRyaXZlciBjYWxsYmFja3MuCi0gIFVzZSBGdW5jdGlvbiBAcmVmIEhBTF9DQU5fUmVnaXN0ZXJDYWxsYmFjaygpIHRvIHJlZ2lzdGVyIGFuIGludGVycnVwdCBjYWxsYmFjay4KKyAgVXNlIEZ1bmN0aW9uIEhBTF9DQU5fUmVnaXN0ZXJDYWxsYmFjaygpIHRvIHJlZ2lzdGVyIGFuIGludGVycnVwdCBjYWxsYmFjay4KIAotICBGdW5jdGlvbiBAcmVmIEhBTF9DQU5fUmVnaXN0ZXJDYWxsYmFjaygpIGFsbG93cyB0byByZWdpc3RlciBmb2xsb3dpbmcgY2FsbGJhY2tzOgorICBGdW5jdGlvbiBIQUxfQ0FOX1JlZ2lzdGVyQ2FsbGJhY2soKSBhbGxvd3MgdG8gcmVnaXN0ZXIgZm9sbG93aW5nIGNhbGxiYWNrczoKICAgICAoKykgVHhNYWlsYm94MENvbXBsZXRlQ2FsbGJhY2sgICA6IFR4IE1haWxib3ggMCBDb21wbGV0ZSBDYWxsYmFjay4KICAgICAoKykgVHhNYWlsYm94MUNvbXBsZXRlQ2FsbGJhY2sgICA6IFR4IE1haWxib3ggMSBDb21wbGV0ZSBDYWxsYmFjay4KICAgICAoKykgVHhNYWlsYm94MkNvbXBsZXRlQ2FsbGJhY2sgICA6IFR4IE1haWxib3ggMiBDb21wbGV0ZSBDYWxsYmFjay4KQEAgLTE1Miw5ICsxNjMsOSBAQAogICBUaGlzIGZ1bmN0aW9uIHRha2VzIGFzIHBhcmFtZXRlcnMgdGhlIEhBTCBwZXJpcGhlcmFsIGhhbmRsZSwgdGhlIENhbGxiYWNrIElECiAgIGFuZCBhIHBvaW50ZXIgdG8gdGhlIHVzZXIgY2FsbGJhY2sgZnVuY3Rpb24uCiAKLSAgVXNlIGZ1bmN0aW9uIEByZWYgSEFMX0NBTl9VblJlZ2lzdGVyQ2FsbGJhY2soKSB0byByZXNldCBhIGNhbGxiYWNrIHRvIHRoZSBkZWZhdWx0CisgIFVzZSBmdW5jdGlvbiBIQUxfQ0FOX1VuUmVnaXN0ZXJDYWxsYmFjaygpIHRvIHJlc2V0IGEgY2FsbGJhY2sgdG8gdGhlIGRlZmF1bHQKICAgd2VhayBmdW5jdGlvbi4KLSAgQHJlZiBIQUxfQ0FOX1VuUmVnaXN0ZXJDYWxsYmFjayB0YWtlcyBhcyBwYXJhbWV0ZXJzIHRoZSBIQUwgcGVyaXBoZXJhbCBoYW5kbGUsCisgIEhBTF9DQU5fVW5SZWdpc3RlckNhbGxiYWNrIHRha2VzIGFzIHBhcmFtZXRlcnMgdGhlIEhBTCBwZXJpcGhlcmFsIGhhbmRsZSwKICAgYW5kIHRoZSBDYWxsYmFjayBJRC4KICAgVGhpcyBmdW5jdGlvbiBhbGxvd3MgdG8gcmVzZXQgZm9sbG93aW5nIGNhbGxiYWNrczoKICAgICAoKykgVHhNYWlsYm94MENvbXBsZXRlQ2FsbGJhY2sgICA6IFR4IE1haWxib3ggMCBDb21wbGV0ZSBDYWxsYmFjay4KQEAgLTE3MywxMyArMTg0LDEzIEBACiAgICAgKCspIE1zcEluaXRDYWxsYmFjayAgICAgICAgICAgICAgOiBDQU4gTXNwSW5pdC4KICAgICAoKykgTXNwRGVJbml0Q2FsbGJhY2sgICAgICAgICAgICA6IENBTiBNc3BEZUluaXQuCiAKLSAgQnkgZGVmYXVsdCwgYWZ0ZXIgdGhlIEByZWYgSEFMX0NBTl9Jbml0KCkgYW5kIHdoZW4gdGhlIHN0YXRlIGlzIEhBTF9DQU5fU1RBVEVfUkVTRVQsCisgIEJ5IGRlZmF1bHQsIGFmdGVyIHRoZSBIQUxfQ0FOX0luaXQoKSBhbmQgd2hlbiB0aGUgc3RhdGUgaXMgSEFMX0NBTl9TVEFURV9SRVNFVCwKICAgYWxsIGNhbGxiYWNrcyBhcmUgc2V0IHRvIHRoZSBjb3JyZXNwb25kaW5nIHdlYWsgZnVuY3Rpb25zOgotICBleGFtcGxlIEByZWYgSEFMX0NBTl9FcnJvckNhbGxiYWNrKCkuCisgIGV4YW1wbGUgSEFMX0NBTl9FcnJvckNhbGxiYWNrKCkuCiAgIEV4Y2VwdGlvbiBkb25lIGZvciBNc3BJbml0IGFuZCBNc3BEZUluaXQgZnVuY3Rpb25zIHRoYXQgYXJlCi0gIHJlc2V0IHRvIHRoZSBsZWdhY3kgd2VhayBmdW5jdGlvbiBpbiB0aGUgQHJlZiBIQUxfQ0FOX0luaXQoKS8gQHJlZiBIQUxfQ0FOX0RlSW5pdCgpIG9ubHkgd2hlbgorICByZXNldCB0byB0aGUgbGVnYWN5IHdlYWsgZnVuY3Rpb24gaW4gdGhlIEhBTF9DQU5fSW5pdCgpLyBIQUxfQ0FOX0RlSW5pdCgpIG9ubHkgd2hlbgogICB0aGVzZSBjYWxsYmFja3MgYXJlIG51bGwgKG5vdCByZWdpc3RlcmVkIGJlZm9yZWhhbmQpLgotICBpZiBub3QsIE1zcEluaXQgb3IgTXNwRGVJbml0IGFyZSBub3QgbnVsbCwgdGhlIEByZWYgSEFMX0NBTl9Jbml0KCkvIEByZWYgSEFMX0NBTl9EZUluaXQoKQorICBpZiBub3QsIE1zcEluaXQgb3IgTXNwRGVJbml0IGFyZSBub3QgbnVsbCwgdGhlIEhBTF9DQU5fSW5pdCgpLyBIQUxfQ0FOX0RlSW5pdCgpCiAgIGtlZXAgYW5kIHVzZSB0aGUgdXNlciBNc3BJbml0L01zcERlSW5pdCBjYWxsYmFja3MgKHJlZ2lzdGVyZWQgYmVmb3JlaGFuZCkKIAogICBDYWxsYmFja3MgY2FuIGJlIHJlZ2lzdGVyZWQvdW5yZWdpc3RlcmVkIGluIEhBTF9DQU5fU1RBVEVfUkVBRFkgc3RhdGUgb25seS4KQEAgLTE4Nyw4ICsxOTgsOCBAQAogICBpbiBIQUxfQ0FOX1NUQVRFX1JFQURZIG9yIEhBTF9DQU5fU1RBVEVfUkVTRVQgc3RhdGUsCiAgIHRodXMgcmVnaXN0ZXJlZCAodXNlcikgTXNwSW5pdC9EZUluaXQgY2FsbGJhY2tzIGNhbiBiZSB1c2VkIGR1cmluZyB0aGUgSW5pdC9EZUluaXQuCiAgIEluIHRoYXQgY2FzZSBmaXJzdCByZWdpc3RlciB0aGUgTXNwSW5pdC9Nc3BEZUluaXQgdXNlciBjYWxsYmFja3MKLSAgdXNpbmcgQHJlZiBIQUxfQ0FOX1JlZ2lzdGVyQ2FsbGJhY2soKSBiZWZvcmUgY2FsbGluZyBAcmVmIEhBTF9DQU5fRGVJbml0KCkKLSAgb3IgQHJlZiBIQUxfQ0FOX0luaXQoKSBmdW5jdGlvbi4KKyAgdXNpbmcgSEFMX0NBTl9SZWdpc3RlckNhbGxiYWNrKCkgYmVmb3JlIGNhbGxpbmcgSEFMX0NBTl9EZUluaXQoKQorICBvciBIQUxfQ0FOX0luaXQoKSBmdW5jdGlvbi4KIAogICBXaGVuIFRoZSBjb21waWxhdGlvbiBkZWZpbmUgVVNFX0hBTF9DQU5fUkVHSVNURVJfQ0FMTEJBQ0tTIGlzIHNldCB0byAwIG9yCiAgIG5vdCBkZWZpbmVkLCB0aGUgY2FsbGJhY2sgcmVnaXN0cmF0aW9uIGZlYXR1cmUgaXMgbm90IGF2YWlsYWJsZSBhbmQgYWxsIGNhbGxiYWNrcwpAQCAtMTk2LDE3ICsyMDcsNiBAQAogCiAgIEBlbmR2ZXJiYXRpbQogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAgKiBAYXR0ZW50aW9uCi0gICoKLSAgKiA8aDI+PGNlbnRlcj4mY29weTsgQ29weXJpZ2h0IChjKSAyMDE3IFNUTWljcm9lbGVjdHJvbmljcy4KLSAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLjwvY2VudGVyPjwvaDI+Ci0gICoKLSAgKiBUaGlzIHNvZnR3YXJlIGNvbXBvbmVudCBpcyBsaWNlbnNlZCBieSBTVCB1bmRlciBCU0QgMy1DbGF1c2UgbGljZW5zZSwKLSAgKiB0aGUgIkxpY2Vuc2UiOyBZb3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlCi0gICogTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0OgotICAqICAgICAgICAgICAgICAgICAgICAgICAgb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvQlNELTMtQ2xhdXNlCi0gICoKLSAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgICovCiAKIC8qIEluY2x1ZGVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCkBAIC0zMzAsMTQgKzMzMCwxNCBAQAogICB9CiAjZW5kaWYgLyogKFVTRV9IQUxfQ0FOX1JFR0lTVEVSX0NBTExCQUNLUykgKi8KIAotICAvKiBFeGl0IGZyb20gc2xlZXAgbW9kZSAqLwotICBDTEVBUl9CSVQoaGNhbi0+SW5zdGFuY2UtPk1DUiwgQ0FOX01DUl9TTEVFUCk7CisgIC8qIFJlcXVlc3QgaW5pdGlhbGlzYXRpb24gKi8KKyAgU0VUX0JJVChoY2FuLT5JbnN0YW5jZS0+TUNSLCBDQU5fTUNSX0lOUlEpOwogCiAgIC8qIEdldCB0aWNrICovCiAgIHRpY2tzdGFydCA9IEhBTF9HZXRUaWNrKCk7CiAKLSAgLyogQ2hlY2sgU2xlZXAgbW9kZSBsZWF2ZSBhY2tub3dsZWRnZSAqLwotICB3aGlsZSAoKGhjYW4tPkluc3RhbmNlLT5NU1IgJiBDQU5fTVNSX1NMQUspICE9IDBVKQorICAvKiBXYWl0IGluaXRpYWxpc2F0aW9uIGFja25vd2xlZGdlICovCisgIHdoaWxlICgoaGNhbi0+SW5zdGFuY2UtPk1TUiAmIENBTl9NU1JfSU5BSykgPT0gMFUpCiAgIHsKICAgICBpZiAoKEhBTF9HZXRUaWNrKCkgLSB0aWNrc3RhcnQpID4gQ0FOX1RJTUVPVVRfVkFMVUUpCiAgICAgewpAQCAtMzUxLDE0ICszNTEsMTQgQEAKICAgICB9CiAgIH0KIAotICAvKiBSZXF1ZXN0IGluaXRpYWxpc2F0aW9uICovCi0gIFNFVF9CSVQoaGNhbi0+SW5zdGFuY2UtPk1DUiwgQ0FOX01DUl9JTlJRKTsKKyAgLyogRXhpdCBmcm9tIHNsZWVwIG1vZGUgKi8KKyAgQ0xFQVJfQklUKGhjYW4tPkluc3RhbmNlLT5NQ1IsIENBTl9NQ1JfU0xFRVApOwogCiAgIC8qIEdldCB0aWNrICovCiAgIHRpY2tzdGFydCA9IEhBTF9HZXRUaWNrKCk7CiAKLSAgLyogV2FpdCBpbml0aWFsaXNhdGlvbiBhY2tub3dsZWRnZSAqLwotICB3aGlsZSAoKGhjYW4tPkluc3RhbmNlLT5NU1IgJiBDQU5fTVNSX0lOQUspID09IDBVKQorICAvKiBDaGVjayBTbGVlcCBtb2RlIGxlYXZlIGFja25vd2xlZGdlICovCisgIHdoaWxlICgoaGNhbi0+SW5zdGFuY2UtPk1TUiAmIENBTl9NU1JfU0xBSykgIT0gMFUpCiAgIHsKICAgICBpZiAoKEhBTF9HZXRUaWNrKCkgLSB0aWNrc3RhcnQpID4gQ0FOX1RJTUVPVVRfVkFMVUUpCiAgICAgewpAQCAtNTM3LDE5ICs1MzcsMTkgQEAKICAgKiAgICAgICAgIHRoZSBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uIGZvciBDQU4gbW9kdWxlCiAgICogQHBhcmFtICBDYWxsYmFja0lEIElEIG9mIHRoZSBjYWxsYmFjayB0byBiZSByZWdpc3RlcmVkCiAgICogICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOgotICAqICAgICAgICAgICBAYXJnIEByZWYgSEFMX0NBTl9UWF9NQUlMQk9YMF9DT01QTEVURV9DQUxMQkFDS19DQl9JRCBUeCBNYWlsYm94IDAgQ29tcGxldGUgY2FsbGJhY2sgSUQKLSAgKiAgICAgICAgICAgQGFyZyBAcmVmIEhBTF9DQU5fVFhfTUFJTEJPWDFfQ09NUExFVEVfQ0FMTEJBQ0tfQ0JfSUQgVHggTWFpbGJveCAxIENvbXBsZXRlIGNhbGxiYWNrIElECi0gICogICAgICAgICAgIEBhcmcgQHJlZiBIQUxfQ0FOX1RYX01BSUxCT1gyX0NPTVBMRVRFX0NBTExCQUNLX0NCX0lEIFR4IE1haWxib3ggMiBDb21wbGV0ZSBjYWxsYmFjayBJRAotICAqICAgICAgICAgICBAYXJnIEByZWYgSEFMX0NBTl9UWF9NQUlMQk9YMF9BQk9SVF9DQUxMQkFDS19DQl9JRCBUeCBNYWlsYm94IDAgQWJvcnQgY2FsbGJhY2sgSUQKLSAgKiAgICAgICAgICAgQGFyZyBAcmVmIEhBTF9DQU5fVFhfTUFJTEJPWDFfQUJPUlRfQ0FMTEJBQ0tfQ0JfSUQgVHggTWFpbGJveCAxIEFib3J0IGNhbGxiYWNrIElECi0gICogICAgICAgICAgIEBhcmcgQHJlZiBIQUxfQ0FOX1RYX01BSUxCT1gyX0FCT1JUX0NBTExCQUNLX0NCX0lEIFR4IE1haWxib3ggMiBBYm9ydCBjYWxsYmFjayBJRAotICAqICAgICAgICAgICBAYXJnIEByZWYgSEFMX0NBTl9SWF9GSUZPMF9NU0dfUEVORElOR19DQUxMQkFDS19DQl9JRCBSeCBGaWZvIDAgbWVzc2FnZSBwZW5kaW5nIGNhbGxiYWNrIElECi0gICogICAgICAgICAgIEBhcmcgQHJlZiBIQUxfQ0FOX1JYX0ZJRk8wX0ZVTExfQ0FMTEJBQ0tfQ0JfSUQgUnggRmlmbyAwIGZ1bGwgY2FsbGJhY2sgSUQKLSAgKiAgICAgICAgICAgQGFyZyBAcmVmIEhBTF9DQU5fUlhfRklGTzFfTVNHUEVORElOR19DQUxMQkFDS19DQl9JRCBSeCBGaWZvIDEgbWVzc2FnZSBwZW5kaW5nIGNhbGxiYWNrIElECi0gICogICAgICAgICAgIEBhcmcgQHJlZiBIQUxfQ0FOX1JYX0ZJRk8xX0ZVTExfQ0FMTEJBQ0tfQ0JfSUQgUnggRmlmbyAxIGZ1bGwgY2FsbGJhY2sgSUQKLSAgKiAgICAgICAgICAgQGFyZyBAcmVmIEhBTF9DQU5fU0xFRVBfQ0FMTEJBQ0tfQ0JfSUQgU2xlZXAgY2FsbGJhY2sgSUQKLSAgKiAgICAgICAgICAgQGFyZyBAcmVmIEhBTF9DQU5fV0FLRVVQX0ZST01fUlhfTVNHX0NBTExCQUNLX0NCX0lEIFdha2UgVXAgZnJvbSBSeCBtZXNzYWdlIGNhbGxiYWNrIElECi0gICogICAgICAgICAgIEBhcmcgQHJlZiBIQUxfQ0FOX0VSUk9SX0NBTExCQUNLX0NCX0lEIEVycm9yIGNhbGxiYWNrIElECisgICogICAgICAgICAgIEBhcmcgQHJlZiBIQUxfQ0FOX1RYX01BSUxCT1gwX0NPTVBMRVRFX0NCX0lEIFR4IE1haWxib3ggMCBDb21wbGV0ZSBjYWxsYmFjayBJRAorICAqICAgICAgICAgICBAYXJnIEByZWYgSEFMX0NBTl9UWF9NQUlMQk9YMV9DT01QTEVURV9DQl9JRCBUeCBNYWlsYm94IDEgQ29tcGxldGUgY2FsbGJhY2sgSUQKKyAgKiAgICAgICAgICAgQGFyZyBAcmVmIEhBTF9DQU5fVFhfTUFJTEJPWDJfQ09NUExFVEVfQ0JfSUQgVHggTWFpbGJveCAyIENvbXBsZXRlIGNhbGxiYWNrIElECisgICogICAgICAgICAgIEBhcmcgQHJlZiBIQUxfQ0FOX1RYX01BSUxCT1gwX0FCT1JUX0NCX0lEIFR4IE1haWxib3ggMCBBYm9ydCBjYWxsYmFjayBJRAorICAqICAgICAgICAgICBAYXJnIEByZWYgSEFMX0NBTl9UWF9NQUlMQk9YMV9BQk9SVF9DQl9JRCBUeCBNYWlsYm94IDEgQWJvcnQgY2FsbGJhY2sgSUQKKyAgKiAgICAgICAgICAgQGFyZyBAcmVmIEhBTF9DQU5fVFhfTUFJTEJPWDJfQUJPUlRfQ0JfSUQgVHggTWFpbGJveCAyIEFib3J0IGNhbGxiYWNrIElECisgICogICAgICAgICAgIEBhcmcgQHJlZiBIQUxfQ0FOX1JYX0ZJRk8wX01TR19QRU5ESU5HX0NCX0lEIFJ4IEZpZm8gMCBtZXNzYWdlIHBlbmRpbmcgY2FsbGJhY2sgSUQKKyAgKiAgICAgICAgICAgQGFyZyBAcmVmIEhBTF9DQU5fUlhfRklGTzBfRlVMTF9DQl9JRCBSeCBGaWZvIDAgZnVsbCBjYWxsYmFjayBJRAorICAqICAgICAgICAgICBAYXJnIEByZWYgSEFMX0NBTl9SWF9GSUZPMV9NU0dfUEVORElOR19DQl9JRCBSeCBGaWZvIDEgbWVzc2FnZSBwZW5kaW5nIGNhbGxiYWNrIElECisgICogICAgICAgICAgIEBhcmcgQHJlZiBIQUxfQ0FOX1JYX0ZJRk8xX0ZVTExfQ0JfSUQgUnggRmlmbyAxIGZ1bGwgY2FsbGJhY2sgSUQKKyAgKiAgICAgICAgICAgQGFyZyBAcmVmIEhBTF9DQU5fU0xFRVBfQ0JfSUQgU2xlZXAgY2FsbGJhY2sgSUQKKyAgKiAgICAgICAgICAgQGFyZyBAcmVmIEhBTF9DQU5fV0FLRVVQX0ZST01fUlhfTVNHX0NCX0lEIFdha2UgVXAgZnJvbSBSeCBtZXNzYWdlIGNhbGxiYWNrIElECisgICogICAgICAgICAgIEBhcmcgQHJlZiBIQUxfQ0FOX0VSUk9SX0NCX0lEIEVycm9yIGNhbGxiYWNrIElECiAgICogICAgICAgICAgIEBhcmcgQHJlZiBIQUxfQ0FOX01TUElOSVRfQ0JfSUQgTXNwSW5pdCBjYWxsYmFjayBJRAogICAqICAgICAgICAgICBAYXJnIEByZWYgSEFMX0NBTl9NU1BERUlOSVRfQ0JfSUQgTXNwRGVJbml0IGNhbGxiYWNrIElECiAgICogQHBhcmFtICBwQ2FsbGJhY2sgcG9pbnRlciB0byB0aGUgQ2FsbGJhY2sgZnVuY3Rpb24KQEAgLTY4MCwxOSArNjgwLDE5IEBACiAgICogICAgICAgICB0aGUgY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbiBmb3IgQ0FOIG1vZHVsZQogICAqIEBwYXJhbSAgQ2FsbGJhY2tJRCBJRCBvZiB0aGUgY2FsbGJhY2sgdG8gYmUgdW5yZWdpc3RlcmVkCiAgICogICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOgotICAqICAgICAgICAgICBAYXJnIEByZWYgSEFMX0NBTl9UWF9NQUlMQk9YMF9DT01QTEVURV9DQUxMQkFDS19DQl9JRCBUeCBNYWlsYm94IDAgQ29tcGxldGUgY2FsbGJhY2sgSUQKLSAgKiAgICAgICAgICAgQGFyZyBAcmVmIEhBTF9DQU5fVFhfTUFJTEJPWDFfQ09NUExFVEVfQ0FMTEJBQ0tfQ0JfSUQgVHggTWFpbGJveCAxIENvbXBsZXRlIGNhbGxiYWNrIElECi0gICogICAgICAgICAgIEBhcmcgQHJlZiBIQUxfQ0FOX1RYX01BSUxCT1gyX0NPTVBMRVRFX0NBTExCQUNLX0NCX0lEIFR4IE1haWxib3ggMiBDb21wbGV0ZSBjYWxsYmFjayBJRAotICAqICAgICAgICAgICBAYXJnIEByZWYgSEFMX0NBTl9UWF9NQUlMQk9YMF9BQk9SVF9DQUxMQkFDS19DQl9JRCBUeCBNYWlsYm94IDAgQWJvcnQgY2FsbGJhY2sgSUQKLSAgKiAgICAgICAgICAgQGFyZyBAcmVmIEhBTF9DQU5fVFhfTUFJTEJPWDFfQUJPUlRfQ0FMTEJBQ0tfQ0JfSUQgVHggTWFpbGJveCAxIEFib3J0IGNhbGxiYWNrIElECi0gICogICAgICAgICAgIEBhcmcgQHJlZiBIQUxfQ0FOX1RYX01BSUxCT1gyX0FCT1JUX0NBTExCQUNLX0NCX0lEIFR4IE1haWxib3ggMiBBYm9ydCBjYWxsYmFjayBJRAotICAqICAgICAgICAgICBAYXJnIEByZWYgSEFMX0NBTl9SWF9GSUZPMF9NU0dfUEVORElOR19DQUxMQkFDS19DQl9JRCBSeCBGaWZvIDAgbWVzc2FnZSBwZW5kaW5nIGNhbGxiYWNrIElECi0gICogICAgICAgICAgIEBhcmcgQHJlZiBIQUxfQ0FOX1JYX0ZJRk8wX0ZVTExfQ0FMTEJBQ0tfQ0JfSUQgUnggRmlmbyAwIGZ1bGwgY2FsbGJhY2sgSUQKLSAgKiAgICAgICAgICAgQGFyZyBAcmVmIEhBTF9DQU5fUlhfRklGTzFfTVNHUEVORElOR19DQUxMQkFDS19DQl9JRCBSeCBGaWZvIDEgbWVzc2FnZSBwZW5kaW5nIGNhbGxiYWNrIElECi0gICogICAgICAgICAgIEBhcmcgQHJlZiBIQUxfQ0FOX1JYX0ZJRk8xX0ZVTExfQ0FMTEJBQ0tfQ0JfSUQgUnggRmlmbyAxIGZ1bGwgY2FsbGJhY2sgSUQKLSAgKiAgICAgICAgICAgQGFyZyBAcmVmIEhBTF9DQU5fU0xFRVBfQ0FMTEJBQ0tfQ0JfSUQgU2xlZXAgY2FsbGJhY2sgSUQKLSAgKiAgICAgICAgICAgQGFyZyBAcmVmIEhBTF9DQU5fV0FLRVVQX0ZST01fUlhfTVNHX0NBTExCQUNLX0NCX0lEIFdha2UgVXAgZnJvbSBSeCBtZXNzYWdlIGNhbGxiYWNrIElECi0gICogICAgICAgICAgIEBhcmcgQHJlZiBIQUxfQ0FOX0VSUk9SX0NBTExCQUNLX0NCX0lEIEVycm9yIGNhbGxiYWNrIElECisgICogICAgICAgICAgIEBhcmcgQHJlZiBIQUxfQ0FOX1RYX01BSUxCT1gwX0NPTVBMRVRFX0NCX0lEIFR4IE1haWxib3ggMCBDb21wbGV0ZSBjYWxsYmFjayBJRAorICAqICAgICAgICAgICBAYXJnIEByZWYgSEFMX0NBTl9UWF9NQUlMQk9YMV9DT01QTEVURV9DQl9JRCBUeCBNYWlsYm94IDEgQ29tcGxldGUgY2FsbGJhY2sgSUQKKyAgKiAgICAgICAgICAgQGFyZyBAcmVmIEhBTF9DQU5fVFhfTUFJTEJPWDJfQ09NUExFVEVfQ0JfSUQgVHggTWFpbGJveCAyIENvbXBsZXRlIGNhbGxiYWNrIElECisgICogICAgICAgICAgIEBhcmcgQHJlZiBIQUxfQ0FOX1RYX01BSUxCT1gwX0FCT1JUX0NCX0lEIFR4IE1haWxib3ggMCBBYm9ydCBjYWxsYmFjayBJRAorICAqICAgICAgICAgICBAYXJnIEByZWYgSEFMX0NBTl9UWF9NQUlMQk9YMV9BQk9SVF9DQl9JRCBUeCBNYWlsYm94IDEgQWJvcnQgY2FsbGJhY2sgSUQKKyAgKiAgICAgICAgICAgQGFyZyBAcmVmIEhBTF9DQU5fVFhfTUFJTEJPWDJfQUJPUlRfQ0JfSUQgVHggTWFpbGJveCAyIEFib3J0IGNhbGxiYWNrIElECisgICogICAgICAgICAgIEBhcmcgQHJlZiBIQUxfQ0FOX1JYX0ZJRk8wX01TR19QRU5ESU5HX0NCX0lEIFJ4IEZpZm8gMCBtZXNzYWdlIHBlbmRpbmcgY2FsbGJhY2sgSUQKKyAgKiAgICAgICAgICAgQGFyZyBAcmVmIEhBTF9DQU5fUlhfRklGTzBfRlVMTF9DQl9JRCBSeCBGaWZvIDAgZnVsbCBjYWxsYmFjayBJRAorICAqICAgICAgICAgICBAYXJnIEByZWYgSEFMX0NBTl9SWF9GSUZPMV9NU0dfUEVORElOR19DQl9JRCBSeCBGaWZvIDEgbWVzc2FnZSBwZW5kaW5nIGNhbGxiYWNrIElECisgICogICAgICAgICAgIEBhcmcgQHJlZiBIQUxfQ0FOX1JYX0ZJRk8xX0ZVTExfQ0JfSUQgUnggRmlmbyAxIGZ1bGwgY2FsbGJhY2sgSUQKKyAgKiAgICAgICAgICAgQGFyZyBAcmVmIEhBTF9DQU5fU0xFRVBfQ0JfSUQgU2xlZXAgY2FsbGJhY2sgSUQKKyAgKiAgICAgICAgICAgQGFyZyBAcmVmIEhBTF9DQU5fV0FLRVVQX0ZST01fUlhfTVNHX0NCX0lEIFdha2UgVXAgZnJvbSBSeCBtZXNzYWdlIGNhbGxiYWNrIElECisgICogICAgICAgICAgIEBhcmcgQHJlZiBIQUxfQ0FOX0VSUk9SX0NCX0lEIEVycm9yIGNhbGxiYWNrIElECiAgICogICAgICAgICAgIEBhcmcgQHJlZiBIQUxfQ0FOX01TUElOSVRfQ0JfSUQgTXNwSW5pdCBjYWxsYmFjayBJRAogICAqICAgICAgICAgICBAYXJnIEByZWYgSEFMX0NBTl9NU1BERUlOSVRfQ0JfSUQgTXNwRGVJbml0IGNhbGxiYWNrIElECiAgICogQHJldHZhbCBIQUwgc3RhdHVzCkBAIC0yNDYwLDUgKzI0NjAsMyBAQAogLyoqCiAgICogQH0KICAgKi8KLQotLyoqKioqKioqKioqKioqKioqKioqKioqKiAoQykgQ09QWVJJR0hUIFNUTWljcm9lbGVjdHJvbmljcyAqKioqKkVORCBPRiBGSUxFKioqKi8KZGlmZiAtLWdpdCBhL1NyYy9zdG0zMmY3eHhfaGFsX2NlYy5jIGIvU3JjL3N0bTMyZjd4eF9oYWxfY2VjLmMKaW5kZXggNWUyODc3Yi4uMGI5MjM3NSAxMDA2NDQKLS0tIGEvU3JjL3N0bTMyZjd4eF9oYWxfY2VjLmMKKysrIGIvU3JjL3N0bTMyZjd4eF9oYWxfY2VjLmMKQEAgLTExLDYgKzExLDE3IEBACiAgICogICAgICAgICAgICsgUGVyaXBoZXJhbCBDb250cm9sIGZ1bmN0aW9uCiAgICoKICAgKgorICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgKiBAYXR0ZW50aW9uCisgICoKKyAgKiBDb3B5cmlnaHQgKGMpIDIwMTcgU1RNaWNyb2VsZWN0cm9uaWNzLgorICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgICoKKyAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIHVuZGVyIHRlcm1zIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUKKyAgKiBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb2Z0d2FyZSBjb21wb25lbnQuCisgICogSWYgbm8gTElDRU5TRSBmaWxlIGNvbWVzIHdpdGggdGhpcyBzb2Z0d2FyZSwgaXQgaXMgcHJvdmlkZWQgQVMtSVMuCisgICoKKyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgIEB2ZXJiYXRpbQogID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgICAgICAgICAgICAgICAgICAgICAgICMjIyMjIEhvdyB0byB1c2UgdGhpcyBkcml2ZXIgIyMjIyMKQEAgLTQ3LDEwICs1OCwxMCBAQAogCiAgIFRoZSBjb21waWxhdGlvbiBkZWZpbmUgIFVTRV9IQUxfQ0VDX1JFR0lTVEVSX0NBTExCQUNLUyB3aGVuIHNldCB0byAxCiAgIGFsbG93cyB0aGUgdXNlciB0byBjb25maWd1cmUgZHluYW1pY2FsbHkgdGhlIGRyaXZlciBjYWxsYmFja3MuCi0gIFVzZSBGdW5jdGlvbnMgQHJlZiBIQUxfQ0VDX1JlZ2lzdGVyQ2FsbGJhY2soKSBvciBIQUxfQ0VDX1JlZ2lzdGVyWFhYQ2FsbGJhY2soKQorICBVc2UgRnVuY3Rpb25zIEhBTF9DRUNfUmVnaXN0ZXJDYWxsYmFjaygpIG9yIEhBTF9DRUNfUmVnaXN0ZXJYWFhDYWxsYmFjaygpCiAgIHRvIHJlZ2lzdGVyIGFuIGludGVycnVwdCBjYWxsYmFjay4KIAotICBGdW5jdGlvbiBAcmVmIEhBTF9DRUNfUmVnaXN0ZXJDYWxsYmFjaygpIGFsbG93cyB0byByZWdpc3RlciBmb2xsb3dpbmcgY2FsbGJhY2tzOgorICBGdW5jdGlvbiBIQUxfQ0VDX1JlZ2lzdGVyQ2FsbGJhY2soKSBhbGxvd3MgdG8gcmVnaXN0ZXIgZm9sbG93aW5nIGNhbGxiYWNrczoKICAgICAoKykgVHhDcGx0Q2FsbGJhY2sgICAgIDogVHggVHJhbnNmZXIgY29tcGxldGVkIGNhbGxiYWNrLgogICAgICgrKSBFcnJvckNhbGxiYWNrICAgICAgOiBjYWxsYmFjayBmb3IgZXJyb3IgZGV0ZWN0aW9uLgogICAgICgrKSBNc3BJbml0Q2FsbGJhY2sgICAgOiBDRUMgTXNwSW5pdC4KQEAgLTU5LDExICs3MCwxMSBAQAogICBhbmQgYSBwb2ludGVyIHRvIHRoZSB1c2VyIGNhbGxiYWNrIGZ1bmN0aW9uLgogCiAgIEZvciBzcGVjaWZpYyBjYWxsYmFjayBIQUxfQ0VDX1J4Q3BsdENhbGxiYWNrIHVzZSBkZWRpY2F0ZWQgcmVnaXN0ZXIgY2FsbGJhY2tzCi0gIEByZWYgSEFMX0NFQ19SZWdpc3RlclJ4Q3BsdENhbGxiYWNrKCkuCisgIEhBTF9DRUNfUmVnaXN0ZXJSeENwbHRDYWxsYmFjaygpLgogCi0gIFVzZSBmdW5jdGlvbiBAcmVmIEhBTF9DRUNfVW5SZWdpc3RlckNhbGxiYWNrKCkgdG8gcmVzZXQgYSBjYWxsYmFjayB0byB0aGUgZGVmYXVsdAorICBVc2UgZnVuY3Rpb24gSEFMX0NFQ19VblJlZ2lzdGVyQ2FsbGJhY2soKSB0byByZXNldCBhIGNhbGxiYWNrIHRvIHRoZSBkZWZhdWx0CiAgIHdlYWsgZnVuY3Rpb24uCi0gIEByZWYgSEFMX0NFQ19VblJlZ2lzdGVyQ2FsbGJhY2soKSB0YWtlcyBhcyBwYXJhbWV0ZXJzIHRoZSBIQUwgcGVyaXBoZXJhbCBoYW5kbGUsCisgIEhBTF9DRUNfVW5SZWdpc3RlckNhbGxiYWNrKCkgdGFrZXMgYXMgcGFyYW1ldGVycyB0aGUgSEFMIHBlcmlwaGVyYWwgaGFuZGxlLAogICBhbmQgdGhlIENhbGxiYWNrIElELgogICBUaGlzIGZ1bmN0aW9uIGFsbG93cyB0byByZXNldCBmb2xsb3dpbmcgY2FsbGJhY2tzOgogICAgICgrKSBUeENwbHRDYWxsYmFjayAgICAgOiBUeCBUcmFuc2ZlciBjb21wbGV0ZWQgY2FsbGJhY2suCkBAIC03MiwxNSArODMsMTUgQEAKICAgICAoKykgTXNwRGVJbml0Q2FsbGJhY2sgIDogQ0VDIE1zcERlSW5pdC4KIAogICBGb3IgY2FsbGJhY2sgSEFMX0NFQ19SeENwbHRDYWxsYmFjayB1c2UgZGVkaWNhdGVkIHVucmVnaXN0ZXIgY2FsbGJhY2sgOgotICBAcmVmIEhBTF9DRUNfVW5SZWdpc3RlclJ4Q3BsdENhbGxiYWNrKCkuCisgIEhBTF9DRUNfVW5SZWdpc3RlclJ4Q3BsdENhbGxiYWNrKCkuCiAKLSAgQnkgZGVmYXVsdCwgYWZ0ZXIgdGhlIEByZWYgSEFMX0NFQ19Jbml0KCkgYW5kIHdoZW4gdGhlIHN0YXRlIGlzIEhBTF9DRUNfU1RBVEVfUkVTRVQKKyAgQnkgZGVmYXVsdCwgYWZ0ZXIgdGhlIEhBTF9DRUNfSW5pdCgpIGFuZCB3aGVuIHRoZSBzdGF0ZSBpcyBIQUxfQ0VDX1NUQVRFX1JFU0VUCiAgIGFsbCBjYWxsYmFja3MgYXJlIHNldCB0byB0aGUgY29ycmVzcG9uZGluZyB3ZWFrIGZ1bmN0aW9ucyA6Ci0gIGV4YW1wbGVzIEByZWYgSEFMX0NFQ19UeENwbHRDYWxsYmFjaygpICwgQHJlZiBIQUxfQ0VDX1J4Q3BsdENhbGxiYWNrKCkuCisgIGV4YW1wbGVzIEhBTF9DRUNfVHhDcGx0Q2FsbGJhY2soKSAsIEhBTF9DRUNfUnhDcGx0Q2FsbGJhY2soKS4KICAgRXhjZXB0aW9uIGRvbmUgZm9yIE1zcEluaXQgYW5kIE1zcERlSW5pdCBmdW5jdGlvbnMgdGhhdCBhcmUKLSAgcmVzZXQgdG8gdGhlIGxlZ2FjeSB3ZWFrIGZ1bmN0aW9uIGluIHRoZSBAcmVmIEhBTF9DRUNfSW5pdCgpLyBAcmVmIEhBTF9DRUNfRGVJbml0KCkgb25seSB3aGVuCisgIHJlc2V0IHRvIHRoZSBsZWdhY3kgd2VhayBmdW5jdGlvbiBpbiB0aGUgSEFMX0NFQ19Jbml0KCkvIEhBTF9DRUNfRGVJbml0KCkgb25seSB3aGVuCiAgIHRoZXNlIGNhbGxiYWNrcyBhcmUgbnVsbCAobm90IHJlZ2lzdGVyZWQgYmVmb3JlaGFuZCkuCi0gIGlmIG5vdCwgTXNwSW5pdCBvciBNc3BEZUluaXQgYXJlIG5vdCBudWxsLCB0aGUgQHJlZiBIQUxfQ0VDX0luaXQoKSAvIEByZWYgSEFMX0NFQ19EZUluaXQoKQorICBpZiBub3QsIE1zcEluaXQgb3IgTXNwRGVJbml0IGFyZSBub3QgbnVsbCwgdGhlIEhBTF9DRUNfSW5pdCgpIC8gSEFMX0NFQ19EZUluaXQoKQogICBrZWVwIGFuZCB1c2UgdGhlIHVzZXIgTXNwSW5pdC9Nc3BEZUluaXQgZnVuY3Rpb25zIChyZWdpc3RlcmVkIGJlZm9yZWhhbmQpCiAKICAgQ2FsbGJhY2tzIGNhbiBiZSByZWdpc3RlcmVkL3VucmVnaXN0ZXJlZCBpbiBIQUxfQ0VDX1NUQVRFX1JFQURZIHN0YXRlIG9ubHkuCkBAIC04OCwyNSArOTksMTQgQEAKICAgaW4gSEFMX0NFQ19TVEFURV9SRUFEWSBvciBIQUxfQ0VDX1NUQVRFX1JFU0VUIHN0YXRlLAogICB0aHVzIHJlZ2lzdGVyZWQgKHVzZXIpIE1zcEluaXQvRGVJbml0IGNhbGxiYWNrcyBjYW4gYmUgdXNlZCBkdXJpbmcgdGhlIEluaXQvRGVJbml0LgogICBJbiB0aGF0IGNhc2UgZmlyc3QgcmVnaXN0ZXIgdGhlIE1zcEluaXQvTXNwRGVJbml0IHVzZXIgY2FsbGJhY2tzCi0gIHVzaW5nIEByZWYgSEFMX0NFQ19SZWdpc3RlckNhbGxiYWNrKCkgYmVmb3JlIGNhbGxpbmcgQHJlZiBIQUxfQ0VDX0RlSW5pdCgpCi0gIG9yIEByZWYgSEFMX0NFQ19Jbml0KCkgZnVuY3Rpb24uCisgIHVzaW5nIEhBTF9DRUNfUmVnaXN0ZXJDYWxsYmFjaygpIGJlZm9yZSBjYWxsaW5nIEhBTF9DRUNfRGVJbml0KCkKKyAgb3IgSEFMX0NFQ19Jbml0KCkgZnVuY3Rpb24uCiAKICAgV2hlbiB0aGUgY29tcGlsYXRpb24gZGVmaW5lIFVTRV9IQUxfQ0VDX1JFR0lTVEVSX0NBTExCQUNLUyBpcyBzZXQgdG8gMCBvcgogICBub3QgZGVmaW5lZCwgdGhlIGNhbGxiYWNrIHJlZ2lzdHJhdGlvbiBmZWF0dXJlIGlzIG5vdCBhdmFpbGFibGUgYW5kIGFsbCBjYWxsYmFja3MKICAgYXJlIHNldCB0byB0aGUgY29ycmVzcG9uZGluZyB3ZWFrIGZ1bmN0aW9ucy4KICAgQGVuZHZlcmJhdGltCiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICAqIEBhdHRlbnRpb24KLSAgKgotICAqIDxoMj48Y2VudGVyPiZjb3B5OyBDb3B5cmlnaHQgKGMpIDIwMTcgU1RNaWNyb2VsZWN0cm9uaWNzLgotICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuPC9jZW50ZXI+PC9oMj4KLSAgKgotICAqIFRoaXMgc29mdHdhcmUgY29tcG9uZW50IGlzIGxpY2Vuc2VkIGJ5IFNUIHVuZGVyIEJTRCAzLUNsYXVzZSBsaWNlbnNlLAotICAqIHRoZSAiTGljZW5zZSI7IFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUKLSAgKiBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQ6Ci0gICogICAgICAgICAgICAgICAgICAgICAgICBvcGVuc291cmNlLm9yZy9saWNlbnNlcy9CU0QtMy1DbGF1c2UKLSAgKgotICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgKi8KIAogLyogSW5jbHVkZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KQEAgLTY5Niw3ICs2OTYsNyBAQAogSEFMX1N0YXR1c1R5cGVEZWYgSEFMX0NFQ19UcmFuc21pdF9JVChDRUNfSGFuZGxlVHlwZURlZiAqaGNlYywgdWludDhfdCBJbml0aWF0b3JBZGRyZXNzLCB1aW50OF90IERlc3RpbmF0aW9uQWRkcmVzcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqcERhdGEsIHVpbnQzMl90IFNpemUpCiB7Ci0gIC8qIGlmIHRoZSBJUCBpc24ndCBhbHJlYWR5IGJ1c3kgYW5kIGlmIHRoZXJlIGlzIG5vIHByZXZpb3VzIHRyYW5zbWlzc2lvbgorICAvKiBpZiB0aGUgcGVyaXBoZXJhbCBpc24ndCBhbHJlYWR5IGJ1c3kgYW5kIGlmIHRoZXJlIGlzIG5vIHByZXZpb3VzIHRyYW5zbWlzc2lvbgogICAgICBhbHJlYWR5IHBlbmRpbmcgZHVlIHRvIGFyYml0cmF0aW9uIGxvc3QgKi8KICAgaWYgKGhjZWMtPmdTdGF0ZSA9PSBIQUxfQ0VDX1NUQVRFX1JFQURZKQogICB7CkBAIC05OTQsNCArOTk0LDMgQEAKICAgKiBAfQogICAqLwogCi0vKioqKioqKioqKioqKioqKioqKioqKioqIChDKSBDT1BZUklHSFQgU1RNaWNyb2VsZWN0cm9uaWNzICoqKioqRU5EIE9GIEZJTEUqKioqLwpkaWZmIC0tZ2l0IGEvU3JjL3N0bTMyZjd4eF9oYWxfY29ydGV4LmMgYi9TcmMvc3RtMzJmN3h4X2hhbF9jb3J0ZXguYwppbmRleCBhMzM4ZDA3Li44YWZmMWI1IDEwMDY0NAotLS0gYS9TcmMvc3RtMzJmN3h4X2hhbF9jb3J0ZXguYworKysgYi9TcmMvc3RtMzJmN3h4X2hhbF9jb3J0ZXguYwpAQCAtNjgsMTMgKzY4LDEyIEBACiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAqIEBhdHRlbnRpb24KICAgKgotICAqIDxoMj48Y2VudGVyPiZjb3B5OyBDb3B5cmlnaHQgKGMpIDIwMTcgU1RNaWNyb2VsZWN0cm9uaWNzLgotICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuPC9jZW50ZXI+PC9oMj4KKyAgKiBDb3B5cmlnaHQgKGMpIDIwMTcgU1RNaWNyb2VsZWN0cm9uaWNzLgorICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICoKLSAgKiBUaGlzIHNvZnR3YXJlIGNvbXBvbmVudCBpcyBsaWNlbnNlZCBieSBTVCB1bmRlciBCU0QgMy1DbGF1c2UgbGljZW5zZSwKLSAgKiB0aGUgIkxpY2Vuc2UiOyBZb3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlCi0gICogTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0OgotICAqICAgICAgICAgICAgICAgICAgICAgICAgb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvQlNELTMtQ2xhdXNlCisgICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCB1bmRlciB0ZXJtcyB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluCisgICogdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc29mdHdhcmUgY29tcG9uZW50LgorICAqIElmIG5vIExJQ0VOU0UgZmlsZSBjb21lcyB3aXRoIHRoaXMgc29mdHdhcmUsIGl0IGlzIHByb3ZpZGVkIEFTLUlTLgogICAqCiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAqLwpAQCAtNTAyLDQgKzUwMSwzIEBACiAgICogQH0KICAgKi8KIAotLyoqKioqKioqKioqKioqKioqKioqKioqKiAoQykgQ09QWVJJR0hUIFNUTWljcm9lbGVjdHJvbmljcyAqKioqKkVORCBPRiBGSUxFKioqKi8KZGlmZiAtLWdpdCBhL1NyYy9zdG0zMmY3eHhfaGFsX2NyYy5jIGIvU3JjL3N0bTMyZjd4eF9oYWxfY3JjLmMKaW5kZXggMWJhNTFhZC4uYmE5ODViYSAxMDA2NDQKLS0tIGEvU3JjL3N0bTMyZjd4eF9oYWxfY3JjLmMKKysrIGIvU3JjL3N0bTMyZjd4eF9oYWxfY3JjLmMKQEAgLTksNiArOSwxNyBAQAogICAqICAgICAgICAgICArIFBlcmlwaGVyYWwgQ29udHJvbCBmdW5jdGlvbnMKICAgKiAgICAgICAgICAgKyBQZXJpcGhlcmFsIFN0YXRlIGZ1bmN0aW9ucwogICAqCisgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAqIEBhdHRlbnRpb24KKyAgKgorICAqIENvcHlyaWdodCAoYykgMjAxNyBTVE1pY3JvZWxlY3Ryb25pY3MuCisgICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAgKgorICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgdW5kZXIgdGVybXMgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZQorICAqIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvZnR3YXJlIGNvbXBvbmVudC4KKyAgKiBJZiBubyBMSUNFTlNFIGZpbGUgY29tZXMgd2l0aCB0aGlzIHNvZnR3YXJlLCBpdCBpcyBwcm92aWRlZCBBUy1JUy4KKyAgKgorICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgQHZlcmJhdGltCiAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICAgICAgICAgICAgICAgICAgICAgIyMjIyMgSG93IHRvIHVzZSB0aGlzIGRyaXZlciAjIyMjIwpAQCAtMjksMTcgKzQwLDYgQEAKIAogICBAZW5kdmVyYmF0aW0KICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gICogQGF0dGVudGlvbgotICAqCi0gICogPGgyPjxjZW50ZXI+JmNvcHk7IENvcHlyaWdodCAoYykgMjAxNyBTVE1pY3JvZWxlY3Ryb25pY3MuCi0gICogQWxsIHJpZ2h0cyByZXNlcnZlZC48L2NlbnRlcj48L2gyPgotICAqCi0gICogVGhpcyBzb2Z0d2FyZSBjb21wb25lbnQgaXMgbGljZW5zZWQgYnkgU1QgdW5kZXIgQlNEIDMtQ2xhdXNlIGxpY2Vuc2UsCi0gICogdGhlICJMaWNlbnNlIjsgWW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZQotICAqIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdDoKLSAgKiAgICAgICAgICAgICAgICAgICAgICAgIG9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0JTRC0zLUNsYXVzZQotICAqCi0gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAqLwogCiAvKiBJbmNsdWRlcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwpAQCAtNjIsOCArNjIsOCBAQAogLyogUHJpdmF0ZSB2YXJpYWJsZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KIC8qIFByaXZhdGUgZnVuY3Rpb24gcHJvdG90eXBlcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAvKiogQGRlZmdyb3VwIENSQ19Qcml2YXRlX0Z1bmN0aW9ucyBDUkMgUHJpdmF0ZSBGdW5jdGlvbnMKLSAqIEB7Ci0gKi8KKyAgKiBAeworICAqLwogc3RhdGljIHVpbnQzMl90IENSQ19IYW5kbGVfOChDUkNfSGFuZGxlVHlwZURlZiAqaGNyYywgdWludDhfdCBwQnVmZmVyW10sIHVpbnQzMl90IEJ1ZmZlckxlbmd0aCk7CiBzdGF0aWMgdWludDMyX3QgQ1JDX0hhbmRsZV8xNihDUkNfSGFuZGxlVHlwZURlZiAqaGNyYywgdWludDE2X3QgcEJ1ZmZlcltdLCB1aW50MzJfdCBCdWZmZXJMZW5ndGgpOwogLyoqCkBAIC03Nyw4ICs3Nyw4IEBACiAgICovCiAKIC8qKiBAZGVmZ3JvdXAgQ1JDX0V4cG9ydGVkX0Z1bmN0aW9uc19Hcm91cDEgSW5pdGlhbGl6YXRpb24gYW5kIGRlLWluaXRpYWxpemF0aW9uIGZ1bmN0aW9ucwotICogIEBicmllZiAgICBJbml0aWFsaXphdGlvbiBhbmQgQ29uZmlndXJhdGlvbiBmdW5jdGlvbnMuCi0gKgorICAqICBAYnJpZWYgICAgSW5pdGlhbGl6YXRpb24gYW5kIENvbmZpZ3VyYXRpb24gZnVuY3Rpb25zLgorICAqCiBAdmVyYmF0aW0KICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgICAgICAgICAgICAjIyMjIyBJbml0aWFsaXphdGlvbiBhbmQgZGUtaW5pdGlhbGl6YXRpb24gZnVuY3Rpb25zICMjIyMjCkBAIC0yNTAsOCArMjUwLDggQEAKICAgKi8KIAogLyoqIEBkZWZncm91cCBDUkNfRXhwb3J0ZWRfRnVuY3Rpb25zX0dyb3VwMiBQZXJpcGhlcmFsIENvbnRyb2wgZnVuY3Rpb25zCi0gKiAgQGJyaWVmICAgIG1hbmFnZW1lbnQgZnVuY3Rpb25zLgotICoKKyAgKiAgQGJyaWVmICAgIG1hbmFnZW1lbnQgZnVuY3Rpb25zLgorICAqCiBAdmVyYmF0aW0KICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgICAgICAgICAgICAgICAgICAgICAgIyMjIyMgUGVyaXBoZXJhbCBDb250cm9sIGZ1bmN0aW9ucyAjIyMjIwpAQCAtMzg1LDggKzM4NSw4IEBACiAgICovCiAKIC8qKiBAZGVmZ3JvdXAgQ1JDX0V4cG9ydGVkX0Z1bmN0aW9uc19Hcm91cDMgUGVyaXBoZXJhbCBTdGF0ZSBmdW5jdGlvbnMKLSAqICBAYnJpZWYgICAgUGVyaXBoZXJhbCBTdGF0ZSBmdW5jdGlvbnMuCi0gKgorICAqICBAYnJpZWYgICAgUGVyaXBoZXJhbCBTdGF0ZSBmdW5jdGlvbnMuCisgICoKIEB2ZXJiYXRpbQogID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgICAgICAgICAgICAgICAgICAgICAjIyMjIyBQZXJpcGhlcmFsIFN0YXRlIGZ1bmN0aW9ucyAjIyMjIwpAQCAtNDE4LDggKzQxOCw4IEBACiAgICovCiAKIC8qKiBAYWRkdG9ncm91cCBDUkNfUHJpdmF0ZV9GdW5jdGlvbnMKLSAqIEB7Ci0gKi8KKyAgKiBAeworICAqLwogCiAvKioKICAgKiBAYnJpZWYgIEVudGVyIDgtYml0IGlucHV0IGRhdGEgdG8gdGhlIENSQyBjYWxjdWxhdG9yLgpAQCAtNTE0LDUgKzUxNCwzIEBACiAvKioKICAgKiBAfQogICAqLwotCi0vKioqKioqKioqKioqKioqKioqKioqKioqIChDKSBDT1BZUklHSFQgU1RNaWNyb2VsZWN0cm9uaWNzICoqKioqRU5EIE9GIEZJTEUqKioqLwpkaWZmIC0tZ2l0IGEvU3JjL3N0bTMyZjd4eF9oYWxfY3JjX2V4LmMgYi9TcmMvc3RtMzJmN3h4X2hhbF9jcmNfZXguYwppbmRleCBkNTQyZGExLi5hNDk4YWI3IDEwMDY0NAotLS0gYS9TcmMvc3RtMzJmN3h4X2hhbF9jcmNfZXguYworKysgYi9TcmMvc3RtMzJmN3h4X2hhbF9jcmNfZXguYwpAQCAtNiw2ICs2LDE3IEBACiAgICogICAgICAgICAgVGhpcyBmaWxlIHByb3ZpZGVzIGZpcm13YXJlIGZ1bmN0aW9ucyB0byBtYW5hZ2UgdGhlIGV4dGVuZGVkCiAgICogICAgICAgICAgZnVuY3Rpb25hbGl0aWVzIG9mIHRoZSBDUkMgcGVyaXBoZXJhbC4KICAgKgorICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgKiBAYXR0ZW50aW9uCisgICoKKyAgKiBDb3B5cmlnaHQgKGMpIDIwMTcgU1RNaWNyb2VsZWN0cm9uaWNzLgorICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgICoKKyAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIHVuZGVyIHRlcm1zIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUKKyAgKiBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb2Z0d2FyZSBjb21wb25lbnQuCisgICogSWYgbm8gTElDRU5TRSBmaWxlIGNvbWVzIHdpdGggdGhpcyBzb2Z0d2FyZSwgaXQgaXMgcHJvdmlkZWQgQVMtSVMuCisgICoKKyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgIEB2ZXJiYXRpbQogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgICAgICAgICAgICMjIyMjIEhvdyB0byB1c2UgdGhpcyBkcml2ZXIgIyMjIyMKQEAgLTE2LDE3ICsyNyw2IEBACiAKICAgQGVuZHZlcmJhdGltCiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICAqIEBhdHRlbnRpb24KLSAgKgotICAqIDxoMj48Y2VudGVyPiZjb3B5OyBDb3B5cmlnaHQgKGMpIDIwMTcgU1RNaWNyb2VsZWN0cm9uaWNzLgotICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuPC9jZW50ZXI+PC9oMj4KLSAgKgotICAqIFRoaXMgc29mdHdhcmUgY29tcG9uZW50IGlzIGxpY2Vuc2VkIGJ5IFNUIHVuZGVyIEJTRCAzLUNsYXVzZSBsaWNlbnNlLAotICAqIHRoZSAiTGljZW5zZSI7IFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUKLSAgKiBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQ6Ci0gICogICAgICAgICAgICAgICAgICAgICAgICBvcGVuc291cmNlLm9yZy9saWNlbnNlcy9CU0QtMy1DbGF1c2UKLSAgKgotICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgKi8KIAogLyogSW5jbHVkZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KQEAgLTIyMSw1ICsyMjEsMyBAQAogLyoqCiAgICogQH0KICAgKi8KLQotLyoqKioqKioqKioqKioqKioqKioqKioqKiAoQykgQ09QWVJJR0hUIFNUTWljcm9lbGVjdHJvbmljcyAqKioqKkVORCBPRiBGSUxFKioqKi8KZGlmZiAtLWdpdCBhL1NyYy9zdG0zMmY3eHhfaGFsX2NyeXAuYyBiL1NyYy9zdG0zMmY3eHhfaGFsX2NyeXAuYwppbmRleCA2Yjk0MjQ0Li5kNDZmY2I2IDEwMDY0NAotLS0gYS9TcmMvc3RtMzJmN3h4X2hhbF9jcnlwLmMKKysrIGIvU3JjL3N0bTMyZjd4eF9oYWxfY3J5cC5jCkBAIC0xMSw2ICsxMSwxNyBAQAogICAqICAgICAgICAgICArIENSWVAgSVJRIGhhbmRsZXIgbWFuYWdlbWVudAogICAqICAgICAgICAgICArIFBlcmlwaGVyYWwgU3RhdGUgZnVuY3Rpb25zCiAgICoKKyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICogQGF0dGVudGlvbgorICAqCisgICogQ29weXJpZ2h0IChjKSAyMDE3IFNUTWljcm9lbGVjdHJvbmljcy4KKyAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICAqCisgICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCB1bmRlciB0ZXJtcyB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlCisgICogaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc29mdHdhcmUgY29tcG9uZW50LgorICAqIElmIG5vIExJQ0VOU0UgZmlsZSBjb21lcyB3aXRoIHRoaXMgc29mdHdhcmUsIGl0IGlzIHByb3ZpZGVkIEFTLUlTLgorICAqCisgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICBAdmVyYmF0aW0KICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgICAgICAgICAgICAgICAgICAgICAjIyMjIyBIb3cgdG8gdXNlIHRoaXMgZHJpdmVyICMjIyMjCkBAIC0xNDgsMTAgKzE1OSwxMCBAQAogCiAgIFRoZSBjb21waWxhdGlvbiBkZWZpbmUgIFVTRV9IQUxfQ1JZUF9SRUdJU1RFUl9DQUxMQkFDS1Mgd2hlbiBzZXQgdG8gMQogICBhbGxvd3MgdGhlIHVzZXIgdG8gY29uZmlndXJlIGR5bmFtaWNhbGx5IHRoZSBkcml2ZXIgY2FsbGJhY2tzLgotICBVc2UgRnVuY3Rpb25zIEByZWYgSEFMX0NSWVBfUmVnaXN0ZXJDYWxsYmFjaygpIG9yIEhBTF9DUllQX1JlZ2lzdGVyWFhYQ2FsbGJhY2soKQorICBVc2UgRnVuY3Rpb25zIEhBTF9DUllQX1JlZ2lzdGVyQ2FsbGJhY2soKSBvciBIQUxfQ1JZUF9SZWdpc3RlclhYWENhbGxiYWNrKCkKICAgdG8gcmVnaXN0ZXIgYW4gaW50ZXJydXB0IGNhbGxiYWNrLgogCi0gIEZ1bmN0aW9uIEByZWYgSEFMX0NSWVBfUmVnaXN0ZXJDYWxsYmFjaygpIGFsbG93cyB0byByZWdpc3RlciBmb2xsb3dpbmcgY2FsbGJhY2tzOgorICBGdW5jdGlvbiBIQUxfQ1JZUF9SZWdpc3RlckNhbGxiYWNrKCkgYWxsb3dzIHRvIHJlZ2lzdGVyIGZvbGxvd2luZyBjYWxsYmFja3M6CiAgICAgKCspIEluQ3BsdENhbGxiYWNrICAgICA6ICBJbnB1dCBGSUZPIHRyYW5zZmVyIGNvbXBsZXRlZCBjYWxsYmFjay4KICAgICAoKykgT3V0Q3BsdENhbGxiYWNrICAgIDogT3V0cHV0IEZJRk8gdHJhbnNmZXIgY29tcGxldGVkIGNhbGxiYWNrLgogICAgICgrKSBFcnJvckNhbGxiYWNrICAgICAgOiBjYWxsYmFjayBmb3IgZXJyb3IgZGV0ZWN0aW9uLgpAQCAtMTYwLDkgKzE3MSw5IEBACiAgIFRoaXMgZnVuY3Rpb24gdGFrZXMgYXMgcGFyYW1ldGVycyB0aGUgSEFMIHBlcmlwaGVyYWwgaGFuZGxlLCB0aGUgQ2FsbGJhY2sgSUQKICAgYW5kIGEgcG9pbnRlciB0byB0aGUgdXNlciBjYWxsYmFjayBmdW5jdGlvbi4KIAotICBVc2UgZnVuY3Rpb24gQHJlZiBIQUxfQ1JZUF9VblJlZ2lzdGVyQ2FsbGJhY2soKSB0byByZXNldCBhIGNhbGxiYWNrIHRvIHRoZSBkZWZhdWx0CisgIFVzZSBmdW5jdGlvbiBIQUxfQ1JZUF9VblJlZ2lzdGVyQ2FsbGJhY2soKSB0byByZXNldCBhIGNhbGxiYWNrIHRvIHRoZSBkZWZhdWx0CiAgIHdlYWsgZnVuY3Rpb24uCi0gIEByZWYgSEFMX0NSWVBfVW5SZWdpc3RlckNhbGxiYWNrKCkgdGFrZXMgYXMgcGFyYW1ldGVycyB0aGUgSEFMIHBlcmlwaGVyYWwgaGFuZGxlLAorICBIQUxfQ1JZUF9VblJlZ2lzdGVyQ2FsbGJhY2soKSB0YWtlcyBhcyBwYXJhbWV0ZXJzIHRoZSBIQUwgcGVyaXBoZXJhbCBoYW5kbGUsCiAgIGFuZCB0aGUgQ2FsbGJhY2sgSUQuCiAgIFRoaXMgZnVuY3Rpb24gYWxsb3dzIHRvIHJlc2V0IGZvbGxvd2luZyBjYWxsYmFja3M6CiAgICAgKCspIEluQ3BsdENhbGxiYWNrICAgICA6ICBJbnB1dCBGSUZPIHRyYW5zZmVyIGNvbXBsZXRlZCBjYWxsYmFjay4KQEAgLTE3MSwxMyArMTgyLDEzIEBACiAgICAgKCspIE1zcEluaXRDYWxsYmFjayAgICA6IENSWVAgTXNwSW5pdC4KICAgICAoKykgTXNwRGVJbml0Q2FsbGJhY2sgIDogQ1JZUCBNc3BEZUluaXQuCiAKLSAgQnkgZGVmYXVsdCwgYWZ0ZXIgdGhlIEByZWYgSEFMX0NSWVBfSW5pdCgpIGFuZCB3aGVuIHRoZSBzdGF0ZSBpcyBIQUxfQ1JZUF9TVEFURV9SRVNFVAorICBCeSBkZWZhdWx0LCBhZnRlciB0aGUgSEFMX0NSWVBfSW5pdCgpIGFuZCB3aGVuIHRoZSBzdGF0ZSBpcyBIQUxfQ1JZUF9TVEFURV9SRVNFVAogICBhbGwgY2FsbGJhY2tzIGFyZSBzZXQgdG8gdGhlIGNvcnJlc3BvbmRpbmcgd2VhayBmdW5jdGlvbnMgOgotICBleGFtcGxlcyBAcmVmIEhBTF9DUllQX0luQ3BsdENhbGxiYWNrKCkgLCBAcmVmIEhBTF9DUllQX091dENwbHRDYWxsYmFjaygpLgorICBleGFtcGxlcyBIQUxfQ1JZUF9JbkNwbHRDYWxsYmFjaygpICwgSEFMX0NSWVBfT3V0Q3BsdENhbGxiYWNrKCkuCiAgIEV4Y2VwdGlvbiBkb25lIGZvciBNc3BJbml0IGFuZCBNc3BEZUluaXQgZnVuY3Rpb25zIHRoYXQgYXJlCi0gIHJlc2V0IHRvIHRoZSBsZWdhY3kgd2VhayBmdW5jdGlvbiBpbiB0aGUgQHJlZiBIQUxfQ1JZUF9Jbml0KCkvIEByZWYgSEFMX0NSWVBfRGVJbml0KCkgb25seSB3aGVuCisgIHJlc2V0IHRvIHRoZSBsZWdhY3kgd2VhayBmdW5jdGlvbiBpbiB0aGUgSEFMX0NSWVBfSW5pdCgpLyBIQUxfQ1JZUF9EZUluaXQoKSBvbmx5IHdoZW4KICAgdGhlc2UgY2FsbGJhY2tzIGFyZSBudWxsIChub3QgcmVnaXN0ZXJlZCBiZWZvcmVoYW5kKS4KLSAgaWYgbm90LCBNc3BJbml0IG9yIE1zcERlSW5pdCBhcmUgbm90IG51bGwsIHRoZSBAcmVmIEhBTF9DUllQX0luaXQoKSAvIEByZWYgSEFMX0NSWVBfRGVJbml0KCkKKyAgaWYgbm90LCBNc3BJbml0IG9yIE1zcERlSW5pdCBhcmUgbm90IG51bGwsIHRoZSBIQUxfQ1JZUF9Jbml0KCkgLyBIQUxfQ1JZUF9EZUluaXQoKQogICBrZWVwIGFuZCB1c2UgdGhlIHVzZXIgTXNwSW5pdC9Nc3BEZUluaXQgZnVuY3Rpb25zIChyZWdpc3RlcmVkIGJlZm9yZWhhbmQpCiAKICAgQ2FsbGJhY2tzIGNhbiBiZSByZWdpc3RlcmVkL3VucmVnaXN0ZXJlZCBpbiBIQUxfQ1JZUF9TVEFURV9SRUFEWSBzdGF0ZSBvbmx5LgpAQCAtMTg1LDggKzE5Niw4IEBACiAgIGluIEhBTF9DUllQX1NUQVRFX1JFQURZIG9yIEhBTF9DUllQX1NUQVRFX1JFU0VUIHN0YXRlLAogICB0aHVzIHJlZ2lzdGVyZWQgKHVzZXIpIE1zcEluaXQvRGVJbml0IGNhbGxiYWNrcyBjYW4gYmUgdXNlZCBkdXJpbmcgdGhlIEluaXQvRGVJbml0LgogICBJbiB0aGF0IGNhc2UgZmlyc3QgcmVnaXN0ZXIgdGhlIE1zcEluaXQvTXNwRGVJbml0IHVzZXIgY2FsbGJhY2tzCi0gIHVzaW5nIEByZWYgSEFMX0NSWVBfUmVnaXN0ZXJDYWxsYmFjaygpIGJlZm9yZSBjYWxsaW5nIEByZWYgSEFMX0NSWVBfRGVJbml0KCkKLSAgb3IgQHJlZiBIQUxfQ1JZUF9Jbml0KCkgZnVuY3Rpb24uCisgIHVzaW5nIEhBTF9DUllQX1JlZ2lzdGVyQ2FsbGJhY2soKSBiZWZvcmUgY2FsbGluZyBIQUxfQ1JZUF9EZUluaXQoKQorICBvciBIQUxfQ1JZUF9Jbml0KCkgZnVuY3Rpb24uCiAKICAgV2hlbiBUaGUgY29tcGlsYXRpb24gZGVmaW5lIFVTRV9IQUxfQ1JZUF9SRUdJU1RFUl9DQUxMQkFDS1MgaXMgc2V0IHRvIDAgb3IKICAgbm90IGRlZmluZWQsIHRoZSBjYWxsYmFjayByZWdpc3RyYXRpb24gZmVhdHVyZSBpcyBub3QgYXZhaWxhYmxlIGFuZCBhbGwgY2FsbGJhY2tzCkBAIC0yNDEsMTcgKzI1Miw2IEBACiAKICAgQGVuZHZlcmJhdGltCiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICAqIEBhdHRlbnRpb24KLSAgKgotICAqIDxoMj48Y2VudGVyPiZjb3B5OyBDb3B5cmlnaHQgKGMpIDIwMTYgU1RNaWNyb2VsZWN0cm9uaWNzLgotICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuPC9jZW50ZXI+PC9oMj4KLSAgKgotICAqIFRoaXMgc29mdHdhcmUgY29tcG9uZW50IGlzIGxpY2Vuc2VkIGJ5IFNUIHVuZGVyIEJTRCAzLUNsYXVzZSBsaWNlbnNlLAotICAqIHRoZSAiTGljZW5zZSI7IFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUKLSAgKiBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQ6Ci0gICogICAgICAgICAgICAgICAgICAgICAgICBvcGVuc291cmNlLm9yZy9saWNlbnNlcy9CU0QtMy1DbGF1c2UKLSAgKgotICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgKi8KIAogLyogSW5jbHVkZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KQEAgLTQ3MCw3ICs0NzAsNyBAQAogICB9CiAjZW5kaWYgLyogKFVTRV9IQUxfQ1JZUF9SRUdJU1RFUl9DQUxMQkFDS1MpICovCiAKLSAgLyogU2V0IHRoZSBrZXkgc2l6ZShUaGlzIGJpdCBmaWVsZCBpcyBkb26SdCBjYXJlIGluIHRoZSBERVMgb3IgVERFUyBtb2RlcykgZGF0YSB0eXBlIGFuZCBBbGdvcml0aG0gKi8KKyAgLyogU2V0IHRoZSBrZXkgc2l6ZShUaGlzIGJpdCBmaWVsZCBpcyBkb24ndCBjYXJlIGluIHRoZSBERVMgb3IgVERFUyBtb2RlcykgZGF0YSB0eXBlIGFuZCBBbGdvcml0aG0gKi8KICNpZiBkZWZpbmVkIChDUllQKQogCiAgIE1PRElGWV9SRUcoaGNyeXAtPkluc3RhbmNlLT5DUiwgQ1JZUF9DUl9EQVRBVFlQRSB8IENSWVBfQ1JfS0VZU0laRSB8IENSWVBfQ1JfQUxHT01PREUsCkBAIC01ODksNyArNTg5LDcgQEAKICAgICBoY3J5cC0+SW5pdC5LZXlJVkNvbmZpZ1NraXAgPSBwQ29uZi0+S2V5SVZDb25maWdTa2lwOwogICAgIGhjcnlwLT5Jbml0LkhlYWRlcldpZHRoVW5pdCA9IHBDb25mLT5IZWFkZXJXaWR0aFVuaXQ7CiAKLSAgICAvKiBTZXQgdGhlIGtleSBzaXplKFRoaXMgYml0IGZpZWxkIGlzIGRvbpJ0IGNhcmUgaW4gdGhlIERFUyBvciBUREVTIG1vZGVzKSBkYXRhIHR5cGUsIEFsZ29Nb2RlIGFuZCBvcGVyYXRpbmcgbW9kZSovCisgICAgLyogU2V0IHRoZSBrZXkgc2l6ZShUaGlzIGJpdCBmaWVsZCBpcyBkb24ndCBjYXJlIGluIHRoZSBERVMgb3IgVERFUyBtb2RlcykgZGF0YSB0eXBlLCBBbGdvTW9kZSBhbmQgb3BlcmF0aW5nIG1vZGUqLwogI2lmIGRlZmluZWQgKENSWVApCiAKICAgICBNT0RJRllfUkVHKGhjcnlwLT5JbnN0YW5jZS0+Q1IsIENSWVBfQ1JfREFUQVRZUEUgfCBDUllQX0NSX0tFWVNJWkUgfCBDUllQX0NSX0FMR09NT0RFLApAQCAtNzEyNCw0ICs3MTI0LDMgQEAKICAgKiBAfQogICAqLwogCi0vKioqKioqKioqKioqKioqKioqKioqKioqIChDKSBDT1BZUklHSFQgU1RNaWNyb2VsZWN0cm9uaWNzICoqKioqRU5EIE9GIEZJTEUqKioqLwpkaWZmIC0tZ2l0IGEvU3JjL3N0bTMyZjd4eF9oYWxfY3J5cF9leC5jIGIvU3JjL3N0bTMyZjd4eF9oYWxfY3J5cF9leC5jCmluZGV4IDViY2NlMzUuLjAxNzA2MzIgMTAwNjQ0Ci0tLSBhL1NyYy9zdG0zMmY3eHhfaGFsX2NyeXBfZXguYworKysgYi9TcmMvc3RtMzJmN3h4X2hhbF9jcnlwX2V4LmMKQEAgLTcsNiArNywxNyBAQAogICAqICAgICAgICAgIGZ1bmN0aW9uYWxpdGllcyBvZiBDUllQIGV4dGVuc2lvbiBwZXJpcGhlcmFsOgogICAqICAgICAgICAgICArIEV4dGVuZGVkIEFFUyBwcm9jZXNzaW5nIGZ1bmN0aW9ucwogICAqCisgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAqIEBhdHRlbnRpb24KKyAgKgorICAqIENvcHlyaWdodCAoYykgMjAxNyBTVE1pY3JvZWxlY3Ryb25pY3MuCisgICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAgKgorICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgdW5kZXIgdGVybXMgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZQorICAqIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvZnR3YXJlIGNvbXBvbmVudC4KKyAgKiBJZiBubyBMSUNFTlNFIGZpbGUgY29tZXMgd2l0aCB0aGlzIHNvZnR3YXJlLCBpdCBpcyBwcm92aWRlZCBBUy1JUy4KKyAgKgorICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgQHZlcmJhdGltCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICAgICAgICAgICAgICAgICAgICAgIyMjIyMgSG93IHRvIHVzZSB0aGlzIGRyaXZlciAjIyMjIwpAQCAtMjAsMTcgKzMxLDYgQEAKIAogICBAZW5kdmVyYmF0aW0KICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gICogQGF0dGVudGlvbgotICAqCi0gICogPGgyPjxjZW50ZXI+JmNvcHk7IENvcHlyaWdodCAoYykgMjAxNiBTVE1pY3JvZWxlY3Ryb25pY3MuCi0gICogQWxsIHJpZ2h0cyByZXNlcnZlZC48L2NlbnRlcj48L2gyPgotICAqCi0gICogVGhpcyBzb2Z0d2FyZSBjb21wb25lbnQgaXMgbGljZW5zZWQgYnkgU1QgdW5kZXIgQlNEIDMtQ2xhdXNlIGxpY2Vuc2UsCi0gICogdGhlICJMaWNlbnNlIjsgWW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZQotICAqIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdDoKLSAgKiAgICAgICAgICAgICAgICAgICAgICAgIG9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0JTRC0zLUNsYXVzZQotICAqCi0gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAqLwogCiAvKiBJbmNsdWRlcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwpAQCAtMTc3LDcgKzE3Nyw3IEBACiAgICAgLyogU2VsZWN0IGZpbmFsIHBoYXNlICovCiAgICAgTU9ESUZZX1JFRyhoY3J5cC0+SW5zdGFuY2UtPkNSLCBDUllQX0NSX0dDTV9DQ01QSCwgQ1JZUF9QSEFTRV9GSU5BTCk7CiAKLSAgICAvKkFMR09ESVIgYml0IG11c3QgYmUgc2V0IHRvIJEwki4qLworICAgIC8qQUxHT0RJUiBiaXQgbXVzdCBiZSBzZXQgdG8gJzAnLiovCiAgICAgaGNyeXAtPkluc3RhbmNlLT5DUiAmPSAgfkNSWVBfQ1JfQUxHT0RJUjsKIAogICAgIC8qIEVuYWJsZSB0aGUgQ1JZUCBwZXJpcGhlcmFsICovCkBAIC0zOTUsNyArMzk1LDcgQEAKICAgICAvKiBEaXNhYmxlIENSWVAgdG8gc3RhcnQgdGhlIGZpbmFsIHBoYXNlICovCiAgICAgX19IQUxfQ1JZUF9ESVNBQkxFKGhjcnlwKTsKIAotICAgIC8qIFNlbGVjdCBmaW5hbCBwaGFzZSAmIEFMR09ESVIgYml0IG11c3QgYmUgc2V0IHRvIJEwki4gKi8KKyAgICAvKiBTZWxlY3QgZmluYWwgcGhhc2UgJiBBTEdPRElSIGJpdCBtdXN0IGJlIHNldCB0byAnMCcuICovCiAgICAgTU9ESUZZX1JFRyhoY3J5cC0+SW5zdGFuY2UtPkNSLCBDUllQX0NSX0dDTV9DQ01QSCB8IENSWVBfQ1JfQUxHT0RJUiwgQ1JZUF9QSEFTRV9GSU5BTCB8IENSWVBfT1BFUkFUSU5HTU9ERV9FTkNSWVBUKTsKIAogICAgIC8qIEVuYWJsZSB0aGUgQ1JZUCBwZXJpcGhlcmFsICovCkBAIC02NzgsNCArNjc4LDMgQEAKICAgKiBAfQogICAqLwogCi0vKioqKioqKioqKioqKioqKioqKioqKioqIChDKSBDT1BZUklHSFQgU1RNaWNyb2VsZWN0cm9uaWNzICoqKioqRU5EIE9GIEZJTEUqKioqLwpkaWZmIC0tZ2l0IGEvU3JjL3N0bTMyZjd4eF9oYWxfZGFjLmMgYi9TcmMvc3RtMzJmN3h4X2hhbF9kYWMuYwppbmRleCA5OGI1N2MyLi5mNDQxYTI5IDEwMDY0NAotLS0gYS9TcmMvc3RtMzJmN3h4X2hhbF9kYWMuYworKysgYi9TcmMvc3RtMzJmN3h4X2hhbF9kYWMuYwpAQCAtMTEsNiArMTEsMTcgQEAKICAgKiAgICAgICAgICAgKyBQZXJpcGhlcmFsIFN0YXRlIGFuZCBFcnJvcnMgZnVuY3Rpb25zCiAgICoKICAgKgorICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgKiBAYXR0ZW50aW9uCisgICoKKyAgKiBDb3B5cmlnaHQgKGMpIDIwMTcgU1RNaWNyb2VsZWN0cm9uaWNzLgorICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgICoKKyAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIHVuZGVyIHRlcm1zIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUKKyAgKiBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb2Z0d2FyZSBjb21wb25lbnQuCisgICogSWYgbm8gTElDRU5TRSBmaWxlIGNvbWVzIHdpdGggdGhpcyBzb2Z0d2FyZSwgaXQgaXMgcHJvdmlkZWQgQVMtSVMuCisgICoKKyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgIEB2ZXJiYXRpbQogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgICAgICAgICAgICAgICAgICAgICAjIyMjIyBEQUMgUGVyaXBoZXJhbCBmZWF0dXJlcyAjIyMjIwpAQCAtMTM5LDcgKzE1MCw3IEBACiAgICAgICBUaGUgY29tcGlsYXRpb24gZGVmaW5lICBVU0VfSEFMX0RBQ19SRUdJU1RFUl9DQUxMQkFDS1Mgd2hlbiBzZXQgdG8gMQogICAgICAgYWxsb3dzIHRoZSB1c2VyIHRvIGNvbmZpZ3VyZSBkeW5hbWljYWxseSB0aGUgZHJpdmVyIGNhbGxiYWNrcy4KIAotICAgIFVzZSBGdW5jdGlvbnMgQHJlZiBIQUxfREFDX1JlZ2lzdGVyQ2FsbGJhY2soKSB0byByZWdpc3RlciBhIHVzZXIgY2FsbGJhY2ssCisgICAgVXNlIEZ1bmN0aW9ucyBIQUxfREFDX1JlZ2lzdGVyQ2FsbGJhY2soKSB0byByZWdpc3RlciBhIHVzZXIgY2FsbGJhY2ssCiAgICAgICBpdCBhbGxvd3MgdG8gcmVnaXN0ZXIgZm9sbG93aW5nIGNhbGxiYWNrczoKICAgICAgICgrKSBDb252Q3BsdENhbGxiYWNrQ2gxICAgICA6IGNhbGxiYWNrIHdoZW4gYSBoYWxmIHRyYW5zZmVyIGlzIGNvbXBsZXRlZCBvbiBDaDEuCiAgICAgICAoKykgQ29udkhhbGZDcGx0Q2FsbGJhY2tDaDEgOiBjYWxsYmFjayB3aGVuIGEgdHJhbnNmZXIgaXMgY29tcGxldGVkIG9uIENoMS4KQEAgLTE1NCw3ICsxNjUsNyBAQAogICAgICAgVGhpcyBmdW5jdGlvbiB0YWtlcyBhcyBwYXJhbWV0ZXJzIHRoZSBIQUwgcGVyaXBoZXJhbCBoYW5kbGUsIHRoZSBDYWxsYmFjayBJRAogICAgICAgYW5kIGEgcG9pbnRlciB0byB0aGUgdXNlciBjYWxsYmFjayBmdW5jdGlvbi4KIAotICAgIFVzZSBmdW5jdGlvbiBAcmVmIEhBTF9EQUNfVW5SZWdpc3RlckNhbGxiYWNrKCkgdG8gcmVzZXQgYSBjYWxsYmFjayB0byB0aGUgZGVmYXVsdAorICAgIFVzZSBmdW5jdGlvbiBIQUxfREFDX1VuUmVnaXN0ZXJDYWxsYmFjaygpIHRvIHJlc2V0IGEgY2FsbGJhY2sgdG8gdGhlIGRlZmF1bHQKICAgICAgIHdlYWsgKHN1cmNoYXJnZWQpIGZ1bmN0aW9uLiBJdCBhbGxvd3MgdG8gcmVzZXQgZm9sbG93aW5nIGNhbGxiYWNrczoKICAgICAgICgrKSBDb252Q3BsdENhbGxiYWNrQ2gxICAgICA6IGNhbGxiYWNrIHdoZW4gYSBoYWxmIHRyYW5zZmVyIGlzIGNvbXBsZXRlZCBvbiBDaDEuCiAgICAgICAoKykgQ29udkhhbGZDcGx0Q2FsbGJhY2tDaDEgOiBjYWxsYmFjayB3aGVuIGEgdHJhbnNmZXIgaXMgY29tcGxldGVkIG9uIENoMS4KQEAgLTE2OSwxMiArMTgwLDEyIEBACiAgICAgICAoKykgQWxsIENhbGxiYWNrcwogICAgICAgVGhpcyBmdW5jdGlvbikgdGFrZXMgYXMgcGFyYW1ldGVycyB0aGUgSEFMIHBlcmlwaGVyYWwgaGFuZGxlIGFuZCB0aGUgQ2FsbGJhY2sgSUQuCiAKLSAgICAgIEJ5IGRlZmF1bHQsIGFmdGVyIHRoZSBAcmVmIEhBTF9EQUNfSW5pdCBhbmQgaWYgdGhlIHN0YXRlIGlzIEhBTF9EQUNfU1RBVEVfUkVTRVQKKyAgICAgIEJ5IGRlZmF1bHQsIGFmdGVyIHRoZSBIQUxfREFDX0luaXQgYW5kIGlmIHRoZSBzdGF0ZSBpcyBIQUxfREFDX1NUQVRFX1JFU0VUCiAgICAgICBhbGwgY2FsbGJhY2tzIGFyZSByZXNldCB0byB0aGUgY29ycmVzcG9uZGluZyBsZWdhY3kgd2VhayAoc3VyY2hhcmdlZCkgZnVuY3Rpb25zLgogICAgICAgRXhjZXB0aW9uIGRvbmUgZm9yIE1zcEluaXQgYW5kIE1zcERlSW5pdCBjYWxsYmFja3MgdGhhdCBhcmUgcmVzcGVjdGl2ZWx5Ci0gICAgICByZXNldCB0byB0aGUgbGVnYWN5IHdlYWsgKHN1cmNoYXJnZWQpIGZ1bmN0aW9ucyBpbiB0aGUgQHJlZiBIQUxfREFDX0luaXQKLSAgICAgIGFuZCBAcmVmICBIQUxfREFDX0RlSW5pdCBvbmx5IHdoZW4gdGhlc2UgY2FsbGJhY2tzIGFyZSBudWxsIChub3QgcmVnaXN0ZXJlZCBiZWZvcmVoYW5kKS4KLSAgICAgIElmIG5vdCwgTXNwSW5pdCBvciBNc3BEZUluaXQgYXJlIG5vdCBudWxsLCB0aGUgQHJlZiBIQUxfREFDX0luaXQgYW5kIEByZWYgSEFMX0RBQ19EZUluaXQKKyAgICAgIHJlc2V0IHRvIHRoZSBsZWdhY3kgd2VhayAoc3VyY2hhcmdlZCkgZnVuY3Rpb25zIGluIHRoZSBIQUxfREFDX0luaXQKKyAgICAgIGFuZCAgSEFMX0RBQ19EZUluaXQgb25seSB3aGVuIHRoZXNlIGNhbGxiYWNrcyBhcmUgbnVsbCAobm90IHJlZ2lzdGVyZWQgYmVmb3JlaGFuZCkuCisgICAgICBJZiBub3QsIE1zcEluaXQgb3IgTXNwRGVJbml0IGFyZSBub3QgbnVsbCwgdGhlIEhBTF9EQUNfSW5pdCBhbmQgSEFMX0RBQ19EZUluaXQKICAgICAgIGtlZXAgYW5kIHVzZSB0aGUgdXNlciBNc3BJbml0L01zcERlSW5pdCBjYWxsYmFja3MgKHJlZ2lzdGVyZWQgYmVmb3JlaGFuZCkKIAogICAgICAgQ2FsbGJhY2tzIGNhbiBiZSByZWdpc3RlcmVkL3VucmVnaXN0ZXJlZCBpbiBSRUFEWSBzdGF0ZSBvbmx5LgpAQCAtMTgyLDggKzE5Myw4IEBACiAgICAgICBpbiBSRUFEWSBvciBSRVNFVCBzdGF0ZSwgdGh1cyByZWdpc3RlcmVkICh1c2VyKSBNc3BJbml0L0RlSW5pdCBjYWxsYmFja3MgY2FuIGJlIHVzZWQKICAgICAgIGR1cmluZyB0aGUgSW5pdC9EZUluaXQuCiAgICAgICBJbiB0aGF0IGNhc2UgZmlyc3QgcmVnaXN0ZXIgdGhlIE1zcEluaXQvTXNwRGVJbml0IHVzZXIgY2FsbGJhY2tzCi0gICAgICB1c2luZyBAcmVmIEhBTF9EQUNfUmVnaXN0ZXJDYWxsYmFjayBiZWZvcmUgY2FsbGluZyBAcmVmIEhBTF9EQUNfRGVJbml0Ci0gICAgICBvciBAcmVmIEhBTF9EQUNfSW5pdCBmdW5jdGlvbi4KKyAgICAgIHVzaW5nIEhBTF9EQUNfUmVnaXN0ZXJDYWxsYmFjayBiZWZvcmUgY2FsbGluZyBIQUxfREFDX0RlSW5pdAorICAgICAgb3IgSEFMX0RBQ19Jbml0IGZ1bmN0aW9uLgogCiAgICAgICBXaGVuIFRoZSBjb21waWxhdGlvbiBkZWZpbmUgVVNFX0hBTF9EQUNfUkVHSVNURVJfQ0FMTEJBQ0tTIGlzIHNldCB0byAwIG9yCiAgICAgICBub3QgZGVmaW5lZCwgdGhlIGNhbGxiYWNrIHJlZ2lzdGVyaW5nIGZlYXR1cmUgaXMgbm90IGF2YWlsYWJsZQpAQCAtMjA0LDE3ICsyMTUsNiBAQAogCiBAZW5kdmVyYmF0aW0KICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gICogQGF0dGVudGlvbgotICAqCi0gICogPGgyPjxjZW50ZXI+JmNvcHk7IENvcHlyaWdodCAoYykgMjAxNyBTVE1pY3JvZWxlY3Ryb25pY3MuCi0gICogQWxsIHJpZ2h0cyByZXNlcnZlZC48L2NlbnRlcj48L2gyPgotICAqCi0gICogVGhpcyBzb2Z0d2FyZSBjb21wb25lbnQgaXMgbGljZW5zZWQgYnkgU1QgdW5kZXIgQlNEIDMtQ2xhdXNlIGxpY2Vuc2UsCi0gICogdGhlICJMaWNlbnNlIjsgWW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZQotICAqIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdDoKLSAgKiAgICAgICAgICAgICAgICAgICAgICAgIG9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0JTRC0zLUNsYXVzZQotICAqCi0gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAqLwogCiAvKiBJbmNsdWRlcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwpAQCAtNTIwLDcgKzUyMCw3IEBACiBIQUxfU3RhdHVzVHlwZURlZiBIQUxfREFDX1N0YXJ0X0RNQShEQUNfSGFuZGxlVHlwZURlZiAqaGRhYywgdWludDMyX3QgQ2hhbm5lbCwgdWludDMyX3QgKnBEYXRhLCB1aW50MzJfdCBMZW5ndGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBBbGlnbm1lbnQpCiB7Ci0gIEhBTF9TdGF0dXNUeXBlRGVmIHN0YXR1cyA9IEhBTF9FUlJPUjsKKyAgSEFMX1N0YXR1c1R5cGVEZWYgc3RhdHVzOwogICB1aW50MzJfdCB0bXByZWcgPSAwVTsKIAogICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLwpAQCAtODkzLDIzICs4OTMsMjMgQEAKICAgKi8KIHVpbnQzMl90IEhBTF9EQUNfR2V0VmFsdWUoREFDX0hhbmRsZVR5cGVEZWYgKmhkYWMsIHVpbnQzMl90IENoYW5uZWwpCiB7Ci0gIHVpbnQzMl90IHRtcCA9IDBVOworICB1aW50MzJfdCByZXN1bHQ7CiAKICAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8KICAgYXNzZXJ0X3BhcmFtKElTX0RBQ19DSEFOTkVMKENoYW5uZWwpKTsKIAogICBpZiAoQ2hhbm5lbCA9PSBEQUNfQ0hBTk5FTF8xKQogICB7Ci0gICAgdG1wID0gaGRhYy0+SW5zdGFuY2UtPkRPUjE7CisgICAgcmVzdWx0ID0gaGRhYy0+SW5zdGFuY2UtPkRPUjE7CiAgIH0KIAogICBlbHNlCiAgIHsKLSAgICB0bXAgPSBoZGFjLT5JbnN0YW5jZS0+RE9SMjsKKyAgICByZXN1bHQgPSBoZGFjLT5JbnN0YW5jZS0+RE9SMjsKICAgfQogCiAgIC8qIFJldHVybnMgdGhlIERBQyBjaGFubmVsIGRhdGEgb3V0cHV0IHJlZ2lzdGVyIHZhbHVlICovCi0gIHJldHVybiB0bXA7CisgIHJldHVybiByZXN1bHQ7CiB9CiAKIC8qKgpAQCAtMTMzNyw0ICsxMzM3LDMgQEAKICAgKiBAfQogICAqLwogCi0vKioqKioqKioqKioqKioqKioqKioqKioqIChDKSBDT1BZUklHSFQgU1RNaWNyb2VsZWN0cm9uaWNzICoqKioqRU5EIE9GIEZJTEUqKioqLwpkaWZmIC0tZ2l0IGEvU3JjL3N0bTMyZjd4eF9oYWxfZGFjX2V4LmMgYi9TcmMvc3RtMzJmN3h4X2hhbF9kYWNfZXguYwppbmRleCAyODcxZTc4Li5jYjZjZjY5IDEwMDY0NAotLS0gYS9TcmMvc3RtMzJmN3h4X2hhbF9kYWNfZXguYworKysgYi9TcmMvc3RtMzJmN3h4X2hhbF9kYWNfZXguYwpAQCAtNyw2ICs3LDE3IEBACiAgICogICAgICAgICAgZnVuY3Rpb25hbGl0aWVzIG9mIHRoZSBEQUMgcGVyaXBoZXJhbC4KICAgKgogICAqCisgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAqIEBhdHRlbnRpb24KKyAgKgorICAqIENvcHlyaWdodCAoYykgMjAxNyBTVE1pY3JvZWxlY3Ryb25pY3MuCisgICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAgKgorICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgdW5kZXIgdGVybXMgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZQorICAqIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvZnR3YXJlIGNvbXBvbmVudC4KKyAgKiBJZiBubyBMSUNFTlNFIGZpbGUgY29tZXMgd2l0aCB0aGlzIHNvZnR3YXJlLCBpdCBpcyBwcm92aWRlZCBBUy1JUy4KKyAgKgorICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgQHZlcmJhdGltCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICAgICAgICAgICAgICAgICAgICAgICMjIyMjIEhvdyB0byB1c2UgdGhpcyBkcml2ZXIgIyMjIyMKQEAgLTI5LDE3ICs0MCw2IEBACiAKICBAZW5kdmVyYmF0aW0KICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gICogQGF0dGVudGlvbgotICAqCi0gICogPGgyPjxjZW50ZXI+JmNvcHk7IENvcHlyaWdodCAoYykgMjAxNyBTVE1pY3JvZWxlY3Ryb25pY3MuCi0gICogQWxsIHJpZ2h0cyByZXNlcnZlZC48L2NlbnRlcj48L2gyPgotICAqCi0gICogVGhpcyBzb2Z0d2FyZSBjb21wb25lbnQgaXMgbGljZW5zZWQgYnkgU1QgdW5kZXIgQlNEIDMtQ2xhdXNlIGxpY2Vuc2UsCi0gICogdGhlICJMaWNlbnNlIjsgWW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZQotICAqIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdDoKLSAgKiAgICAgICAgICAgICAgICAgICAgICAgIG9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0JTRC0zLUNsYXVzZQotICAqCi0gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAqLwogCiAKQEAgLTE1NCw3ICsxNTQsNiBAQAogfQogCiAKLQogLyoqCiAgICogQGJyaWVmICBFbmFibGUgb3IgZGlzYWJsZSB0aGUgc2VsZWN0ZWQgREFDIGNoYW5uZWwgd2F2ZSBnZW5lcmF0aW9uLgogICAqIEBwYXJhbSAgaGRhYyBwb2ludGVyIHRvIGEgREFDX0hhbmRsZVR5cGVEZWYgc3RydWN0dXJlIHRoYXQgY29udGFpbnMKQEAgLTQ5NCw0ICs0OTMsMyBAQAogICAqIEB9CiAgICovCiAKLS8qKioqKioqKioqKioqKioqKioqKioqKiogKEMpIENPUFlSSUdIVCBTVE1pY3JvZWxlY3Ryb25pY3MgKioqKipFTkQgT0YgRklMRSoqKiovCmRpZmYgLS1naXQgYS9TcmMvc3RtMzJmN3h4X2hhbF9kY21pLmMgYi9TcmMvc3RtMzJmN3h4X2hhbF9kY21pLmMKaW5kZXggMjljMjJmNi4uMTI2N2ViZCAxMDA2NDQKLS0tIGEvU3JjL3N0bTMyZjd4eF9oYWxfZGNtaS5jCisrKyBiL1NyYy9zdG0zMmY3eHhfaGFsX2RjbWkuYwpAQCAtMTAsNiArMTAsMTcgQEAKICAgKiAgICAgICAgICAgKyBQZXJpcGhlcmFsIENvbnRyb2wgZnVuY3Rpb25zCiAgICogICAgICAgICAgICsgUGVyaXBoZXJhbCBTdGF0ZSBhbmQgRXJyb3IgZnVuY3Rpb25zCiAgICoKKyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICogQGF0dGVudGlvbgorICAqCisgICogQ29weXJpZ2h0IChjKSAyMDE3IFNUTWljcm9lbGVjdHJvbmljcy4KKyAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICAqCisgICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCB1bmRlciB0ZXJtcyB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlCisgICogaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc29mdHdhcmUgY29tcG9uZW50LgorICAqIElmIG5vIExJQ0VOU0UgZmlsZSBjb21lcyB3aXRoIHRoaXMgc29mdHdhcmUsIGl0IGlzIHByb3ZpZGVkIEFTLUlTLgorICAqCisgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICBAdmVyYmF0aW0KICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgICAgICAgICAgICAgICAgICAgICAgICAjIyMjIyBIb3cgdG8gdXNlIHRoaXMgZHJpdmVyICMjIyMjCkBAIC02Miw5ICs3Myw5IEBACiAKICAgICBUaGUgY29tcGlsYXRpb24gZGVmaW5lIFVTRV9IQUxfRENNSV9SRUdJU1RFUl9DQUxMQkFDS1Mgd2hlbiBzZXQgdG8gMQogICAgIGFsbG93cyB0aGUgdXNlciB0byBjb25maWd1cmUgZHluYW1pY2FsbHkgdGhlIGRyaXZlciBjYWxsYmFja3MuCi0gICAgVXNlIGZ1bmN0aW9ucyBAcmVmIEhBTF9EQ01JX1JlZ2lzdGVyQ2FsbGJhY2soKSB0byByZWdpc3RlciBhIHVzZXIgY2FsbGJhY2suCisgICAgVXNlIGZ1bmN0aW9ucyBIQUxfRENNSV9SZWdpc3RlckNhbGxiYWNrKCkgdG8gcmVnaXN0ZXIgYSB1c2VyIGNhbGxiYWNrLgogCi0gICAgRnVuY3Rpb24gQHJlZiBIQUxfRENNSV9SZWdpc3RlckNhbGxiYWNrKCkgYWxsb3dzIHRvIHJlZ2lzdGVyIGZvbGxvd2luZyBjYWxsYmFja3M6CisgICAgRnVuY3Rpb24gSEFMX0RDTUlfUmVnaXN0ZXJDYWxsYmFjaygpIGFsbG93cyB0byByZWdpc3RlciBmb2xsb3dpbmcgY2FsbGJhY2tzOgogICAgICAgKCspIEZyYW1lRXZlbnRDYWxsYmFjayA6IERDTUkgRnJhbWUgRXZlbnQuCiAgICAgICAoKykgVnN5bmNFdmVudENhbGxiYWNrIDogRENNSSBWc3luYyBFdmVudC4KICAgICAgICgrKSBMaW5lRXZlbnRDYWxsYmFjayAgOiBEQ01JIExpbmUgRXZlbnQuCkBAIC03NCw5ICs4NSw5IEBACiAgICAgVGhpcyBmdW5jdGlvbiB0YWtlcyBhcyBwYXJhbWV0ZXJzIHRoZSBIQUwgcGVyaXBoZXJhbCBoYW5kbGUsIHRoZSBjYWxsYmFjayBJRAogICAgIGFuZCBhIHBvaW50ZXIgdG8gdGhlIHVzZXIgY2FsbGJhY2sgZnVuY3Rpb24uCiAKLSAgICBVc2UgZnVuY3Rpb24gQHJlZiBIQUxfRENNSV9VblJlZ2lzdGVyQ2FsbGJhY2soKSB0byByZXNldCBhIGNhbGxiYWNrIHRvIHRoZSBkZWZhdWx0CisgICAgVXNlIGZ1bmN0aW9uIEhBTF9EQ01JX1VuUmVnaXN0ZXJDYWxsYmFjaygpIHRvIHJlc2V0IGEgY2FsbGJhY2sgdG8gdGhlIGRlZmF1bHQKICAgICB3ZWFrIChzdXJjaGFyZ2VkKSBmdW5jdGlvbi4KLSAgICBAcmVmIEhBTF9EQ01JX1VuUmVnaXN0ZXJDYWxsYmFjaygpIHRha2VzIGFzIHBhcmFtZXRlcnMgdGhlIEhBTCBwZXJpcGhlcmFsIGhhbmRsZSwKKyAgICBIQUxfRENNSV9VblJlZ2lzdGVyQ2FsbGJhY2soKSB0YWtlcyBhcyBwYXJhbWV0ZXJzIHRoZSBIQUwgcGVyaXBoZXJhbCBoYW5kbGUsCiAgICAgYW5kIHRoZSBjYWxsYmFjayBJRC4KICAgICBUaGlzIGZ1bmN0aW9uIGFsbG93cyB0byByZXNldCBmb2xsb3dpbmcgY2FsbGJhY2tzOgogICAgICAgKCspIEZyYW1lRXZlbnRDYWxsYmFjayA6IERDTUkgRnJhbWUgRXZlbnQuCkBAIC04NiwxMyArOTcsMTMgQEAKICAgICAgICgrKSBNc3BJbml0Q2FsbGJhY2sgICAgOiBEQ01JIE1zcEluaXQuCiAgICAgICAoKykgTXNwRGVJbml0Q2FsbGJhY2sgIDogRENNSSBNc3BEZUluaXQuCiAKLSAgICBCeSBkZWZhdWx0LCBhZnRlciB0aGUgQHJlZiBIQUxfRENNSV9Jbml0IGFuZCBpZiB0aGUgc3RhdGUgaXMgSEFMX0RDTUlfU1RBVEVfUkVTRVQKKyAgICBCeSBkZWZhdWx0LCBhZnRlciB0aGUgSEFMX0RDTUlfSW5pdCBhbmQgaWYgdGhlIHN0YXRlIGlzIEhBTF9EQ01JX1NUQVRFX1JFU0VUCiAgICAgYWxsIGNhbGxiYWNrcyBhcmUgcmVzZXQgdG8gdGhlIGNvcnJlc3BvbmRpbmcgbGVnYWN5IHdlYWsgKHN1cmNoYXJnZWQpIGZ1bmN0aW9uczoKLSAgICBleGFtcGxlcyBAcmVmIEZyYW1lRXZlbnRDYWxsYmFjaygpLCBAcmVmIEhBTF9EQ01JX0Vycm9yQ2FsbGJhY2soKS4KKyAgICBleGFtcGxlcyBGcmFtZUV2ZW50Q2FsbGJhY2soKSwgSEFMX0RDTUlfRXJyb3JDYWxsYmFjaygpLgogICAgIEV4Y2VwdGlvbiBkb25lIGZvciBNc3BJbml0IGFuZCBNc3BEZUluaXQgY2FsbGJhY2tzIHRoYXQgYXJlIHJlc3BlY3RpdmVseQotICAgIHJlc2V0IHRvIHRoZSBsZWdhY3kgd2VhayAoc3VyY2hhcmdlZCkgZnVuY3Rpb25zIGluIHRoZSBAcmVmIEhBTF9EQ01JX0luaXQKLSAgICBhbmQgQHJlZiAgSEFMX0RDTUlfRGVJbml0IG9ubHkgd2hlbiB0aGVzZSBjYWxsYmFja3MgYXJlIG51bGwgKG5vdCByZWdpc3RlcmVkIGJlZm9yZWhhbmQpLgotICAgIElmIG5vdCwgTXNwSW5pdCBvciBNc3BEZUluaXQgYXJlIG5vdCBudWxsLCB0aGUgQHJlZiBIQUxfRENNSV9Jbml0IGFuZCBAcmVmIEhBTF9EQ01JX0RlSW5pdAorICAgIHJlc2V0IHRvIHRoZSBsZWdhY3kgd2VhayAoc3VyY2hhcmdlZCkgZnVuY3Rpb25zIGluIHRoZSBIQUxfRENNSV9Jbml0CisgICAgYW5kICBIQUxfRENNSV9EZUluaXQgb25seSB3aGVuIHRoZXNlIGNhbGxiYWNrcyBhcmUgbnVsbCAobm90IHJlZ2lzdGVyZWQgYmVmb3JlaGFuZCkuCisgICAgSWYgbm90LCBNc3BJbml0IG9yIE1zcERlSW5pdCBhcmUgbm90IG51bGwsIHRoZSBIQUxfRENNSV9Jbml0IGFuZCBIQUxfRENNSV9EZUluaXQKICAgICBrZWVwIGFuZCB1c2UgdGhlIHVzZXIgTXNwSW5pdC9Nc3BEZUluaXQgY2FsbGJhY2tzIChyZWdpc3RlcmVkIGJlZm9yZWhhbmQpLgogCiAgICAgQ2FsbGJhY2tzIGNhbiBiZSByZWdpc3RlcmVkL3VucmVnaXN0ZXJlZCBpbiBSRUFEWSBzdGF0ZSBvbmx5LgpAQCAtMTAwLDggKzExMSw4IEBACiAgICAgaW4gUkVBRFkgb3IgUkVTRVQgc3RhdGUsIHRodXMgcmVnaXN0ZXJlZCAodXNlcikgTXNwSW5pdC9EZUluaXQgY2FsbGJhY2tzIGNhbiBiZSB1c2VkCiAgICAgZHVyaW5nIHRoZSBJbml0L0RlSW5pdC4KICAgICBJbiB0aGF0IGNhc2UgZmlyc3QgcmVnaXN0ZXIgdGhlIE1zcEluaXQvTXNwRGVJbml0IHVzZXIgY2FsbGJhY2tzCi0gICAgdXNpbmcgQHJlZiBIQUxfRENNSV9SZWdpc3RlckNhbGxiYWNrIGJlZm9yZSBjYWxsaW5nIEByZWYgSEFMX0RDTUlfRGVJbml0Ci0gICAgb3IgQHJlZiBIQUxfRENNSV9Jbml0IGZ1bmN0aW9uLgorICAgIHVzaW5nIEhBTF9EQ01JX1JlZ2lzdGVyQ2FsbGJhY2sgYmVmb3JlIGNhbGxpbmcgSEFMX0RDTUlfRGVJbml0CisgICAgb3IgSEFMX0RDTUlfSW5pdCBmdW5jdGlvbi4KIAogICAgIFdoZW4gdGhlIGNvbXBpbGF0aW9uIGRlZmluZSBVU0VfSEFMX0RDTUlfUkVHSVNURVJfQ0FMTEJBQ0tTIGlzIHNldCB0byAwIG9yCiAgICAgbm90IGRlZmluZWQsIHRoZSBjYWxsYmFjayByZWdpc3RlcmluZyBmZWF0dXJlIGlzIG5vdCBhdmFpbGFibGUKQEAgLTEwOSwxNyArMTIwLDYgQEAKIAogICBAZW5kdmVyYmF0aW0KICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gICogQGF0dGVudGlvbgotICAqCi0gICogPGgyPjxjZW50ZXI+JmNvcHk7IENvcHlyaWdodCAoYykgMjAxNyBTVE1pY3JvZWxlY3Ryb25pY3MuCi0gICogQWxsIHJpZ2h0cyByZXNlcnZlZC48L2NlbnRlcj48L2gyPgotICAqCi0gICogVGhpcyBzb2Z0d2FyZSBjb21wb25lbnQgaXMgbGljZW5zZWQgYnkgU1QgdW5kZXIgQlNEIDMtQ2xhdXNlIGxpY2Vuc2UsCi0gICogdGhlICJMaWNlbnNlIjsgWW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZQotICAqIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdDoKLSAgKiAgICAgICAgICAgICAgICAgICAgICAgIG9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0JTRC0zLUNsYXVzZQotICAqCi0gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAqLwogCiAvKiBJbmNsdWRlcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwpAQCAtMTIwMyw0ICsxMjAzLDMgQEAKICAgKiBAfQogICAqLwogCi0vKioqKioqKioqKioqKioqKioqKioqKioqIChDKSBDT1BZUklHSFQgU1RNaWNyb2VsZWN0cm9uaWNzICoqKioqRU5EIE9GIEZJTEUqKioqLwpkaWZmIC0tZ2l0IGEvU3JjL3N0bTMyZjd4eF9oYWxfZGNtaV9leC5jIGIvU3JjL3N0bTMyZjd4eF9oYWxfZGNtaV9leC5jCmluZGV4IDlhMDU5YjEuLjJlNWUyYmYgMTAwNjQ0Ci0tLSBhL1NyYy9zdG0zMmY3eHhfaGFsX2RjbWlfZXguYworKysgYi9TcmMvc3RtMzJmN3h4X2hhbF9kY21pX2V4LmMKQEAgLTEwLDEzICsxMCwxMiBAQAogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgKiBAYXR0ZW50aW9uCiAgICoKLSAgKiA8aDI+PGNlbnRlcj4mY29weTsgQ29weXJpZ2h0IChjKSAyMDE3IFNUTWljcm9lbGVjdHJvbmljcy4KLSAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLjwvY2VudGVyPjwvaDI+CisgICogQ29weXJpZ2h0IChjKSAyMDE3IFNUTWljcm9lbGVjdHJvbmljcy4KKyAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAqCi0gICogVGhpcyBzb2Z0d2FyZSBjb21wb25lbnQgaXMgbGljZW5zZWQgYnkgU1QgdW5kZXIgQlNEIDMtQ2xhdXNlIGxpY2Vuc2UsCi0gICogdGhlICJMaWNlbnNlIjsgWW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZQotICAqIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdDoKLSAgKiAgICAgICAgICAgICAgICAgICAgICAgIG9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0JTRC0zLUNsYXVzZQorICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgdW5kZXIgdGVybXMgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZQorICAqIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvZnR3YXJlIGNvbXBvbmVudC4KKyAgKiBJZiBubyBMSUNFTlNFIGZpbGUgY29tZXMgd2l0aCB0aGlzIHNvZnR3YXJlLCBpdCBpcyBwcm92aWRlZCBBUy1JUy4KICAgKgogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgKi8KQEAgLTMwLDUgKzI5LDMgQEAKIC8qIFByaXZhdGUgZnVuY3Rpb24gcHJvdG90eXBlcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAvKiBFeHBvcnRlZCBmdW5jdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogCi0KLS8qKioqKioqKioqKioqKioqKioqKioqKiogKEMpIENPUFlSSUdIVCBTVE1pY3JvZWxlY3Ryb25pY3MgKioqKipFTkQgT0YgRklMRSoqKiovCmRpZmYgLS1naXQgYS9TcmMvc3RtMzJmN3h4X2hhbF9kZnNkbS5jIGIvU3JjL3N0bTMyZjd4eF9oYWxfZGZzZG0uYwppbmRleCBjYWYzMzk4Li5mYmFhZDliIDEwMDY0NAotLS0gYS9TcmMvc3RtMzJmN3h4X2hhbF9kZnNkbS5jCisrKyBiL1NyYy9zdG0zMmY3eHhfaGFsX2Rmc2RtLmMKQEAgLTE1LDcgKzE1LDE4IEBACiAgICogICAgICAgICAgICsgRXh0cmVtZXMgZGV0ZWN0b3IgZmVhdHVyZQogICAqICAgICAgICAgICArIENsb2NrIGFic2VuY2UgZGV0ZWN0b3IgZmVhdHVyZQogICAqICAgICAgICAgICArIEJyZWFrIGdlbmVyYXRpb24gb24gYW5hbG9nIHdhdGNoZG9nIG9yIHNob3J0LWNpcmN1aXQgZXZlbnQKLSAgKiAgICAgICAgIAorICAqCisgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAqIEBhdHRlbnRpb24KKyAgKgorICAqIENvcHlyaWdodCAoYykgMjAxNyBTVE1pY3JvZWxlY3Ryb25pY3MuCisgICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAgKgorICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgdW5kZXIgdGVybXMgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZQorICAqIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvZnR3YXJlIGNvbXBvbmVudC4KKyAgKiBJZiBubyBMSUNFTlNFIGZpbGUgY29tZXMgd2l0aCB0aGlzIHNvZnR3YXJlLCBpdCBpcyBwcm92aWRlZCBBUy1JUy4KKyAgKgorICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgQHZlcmJhdGltCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICAgICAgICAgICAgICAgICAgICAgIyMjIyMgSG93IHRvIHVzZSB0aGlzIGRyaXZlciAjIyMjIwpAQCAtMjUxLDE3ICsyNjIsNiBAQAogCiAgICAgQGVuZHZlcmJhdGltCiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICAqIEBhdHRlbnRpb24KLSAgKgotICAqIDxoMj48Y2VudGVyPiZjb3B5OyBDb3B5cmlnaHQgKGMpIDIwMTcgU1RNaWNyb2VsZWN0cm9uaWNzLgotICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuPC9jZW50ZXI+PC9oMj4KLSAgKgotICAqIFRoaXMgc29mdHdhcmUgY29tcG9uZW50IGlzIGxpY2Vuc2VkIGJ5IFNUIHVuZGVyIEJTRCAzLUNsYXVzZSBsaWNlbnNlLAotICAqIHRoZSAiTGljZW5zZSI7IFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUKLSAgKiBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQ6Ci0gICogICAgICAgICAgICAgICAgICAgICAgICBvcGVuc291cmNlLm9yZy9saWNlbnNlcy9CU0QtMy1DbGF1c2UKLSAgKgotICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgKi8KIAogLyogSW5jbHVkZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KQEAgLTM1NDcsNSArMzU0NywzIEBACiAvKioKICAgKiBAfQogICAqLwotCi0vKioqKioqKioqKioqKioqKioqKioqKioqIChDKSBDT1BZUklHSFQgU1RNaWNyb2VsZWN0cm9uaWNzICoqKioqRU5EIE9GIEZJTEUqKioqLwpkaWZmIC0tZ2l0IGEvU3JjL3N0bTMyZjd4eF9oYWxfZG1hLmMgYi9TcmMvc3RtMzJmN3h4X2hhbF9kbWEuYwppbmRleCA5YjNhYmUzLi5kZjNkMjg1IDEwMDY0NAotLS0gYS9TcmMvc3RtMzJmN3h4X2hhbF9kbWEuYworKysgYi9TcmMvc3RtMzJmN3h4X2hhbF9kbWEuYwpAQCAtODQsMTMgKzg0LDEyIEBACiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAqIEBhdHRlbnRpb24KICAgKgotICAqIDxoMj48Y2VudGVyPiZjb3B5OyBDb3B5cmlnaHQgKGMpIDIwMTcgU1RNaWNyb2VsZWN0cm9uaWNzLgotICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuPC9jZW50ZXI+PC9oMj4KKyAgKiBDb3B5cmlnaHQgKGMpIDIwMTcgU1RNaWNyb2VsZWN0cm9uaWNzLgorICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICoKLSAgKiBUaGlzIHNvZnR3YXJlIGNvbXBvbmVudCBpcyBsaWNlbnNlZCBieSBTVCB1bmRlciBCU0QgMy1DbGF1c2UgbGljZW5zZSwKLSAgKiB0aGUgIkxpY2Vuc2UiOyBZb3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlCi0gICogTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0OgotICAqICAgICAgICAgICAgICAgICAgICAgICAgb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvQlNELTMtQ2xhdXNlCisgICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCB1bmRlciB0ZXJtcyB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluCisgICogdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc29mdHdhcmUgY29tcG9uZW50LgorICAqIElmIG5vIExJQ0VOU0UgZmlsZSBjb21lcyB3aXRoIHRoaXMgc29mdHdhcmUsIGl0IGlzIHByb3ZpZGVkIEFTLUlTLgogICAqCiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAqLyAKQEAgLTIwMSwxMSArMjAwLDEyIEBACiAgICAgYXNzZXJ0X3BhcmFtKElTX0RNQV9QRVJJUEhFUkFMX0JVUlNUKGhkbWEtPkluaXQuUGVyaXBoQnVyc3QpKTsKICAgfQogICAKKyAgLyogQ2hhbmdlIERNQSBwZXJpcGhlcmFsIHN0YXRlICovCisgIGhkbWEtPlN0YXRlID0gSEFMX0RNQV9TVEFURV9CVVNZOworICAKICAgLyogQWxsb2NhdGUgbG9jayByZXNvdXJjZSAqLwogICBfX0hBTF9VTkxPQ0soaGRtYSk7CiAKLSAgLyogQ2hhbmdlIERNQSBwZXJpcGhlcmFsIHN0YXRlICovCi0gIGhkbWEtPlN0YXRlID0gSEFMX0RNQV9TVEFURV9CVVNZOwogICAKICAgLyogRGlzYWJsZSB0aGUgcGVyaXBoZXJhbCAqLwogICBfX0hBTF9ETUFfRElTQUJMRShoZG1hKTsKQEAgLTU1MiwxMiArNTUyLDEyIEBACiAgICAgICAgIC8qIFVwZGF0ZSBlcnJvciBjb2RlICovCiAgICAgICAgIGhkbWEtPkVycm9yQ29kZSA9IEhBTF9ETUFfRVJST1JfVElNRU9VVDsKICAgICAgICAgCi0gICAgICAgIC8qIFByb2Nlc3MgVW5sb2NrZWQgKi8KLSAgICAgICAgX19IQUxfVU5MT0NLKGhkbWEpOwotICAgICAgICAKICAgICAgICAgLyogQ2hhbmdlIHRoZSBETUEgc3RhdGUgKi8KICAgICAgICAgaGRtYS0+U3RhdGUgPSBIQUxfRE1BX1NUQVRFX1RJTUVPVVQ7CiAgICAgICAgIAorICAgICAgICAvKiBQcm9jZXNzIFVubG9ja2VkICovCisgICAgICAgIF9fSEFMX1VOTE9DSyhoZG1hKTsKKwogICAgICAgICByZXR1cm4gSEFMX1RJTUVPVVQ7CiAgICAgICB9CiAgICAgfQpAQCAtNTY1LDExICs1NjUsMTIgQEAKICAgICAvKiBDbGVhciBhbGwgaW50ZXJydXB0IGZsYWdzIGF0IGNvcnJlY3Qgb2Zmc2V0IHdpdGhpbiB0aGUgcmVnaXN0ZXIgKi8KICAgICByZWdzLT5JRkNSID0gMHgzRlUgPDwgaGRtYS0+U3RyZWFtSW5kZXg7CiAgICAgCisgICAgLyogQ2hhbmdlIHRoZSBETUEgc3RhdGUqLworICAgIGhkbWEtPlN0YXRlID0gSEFMX0RNQV9TVEFURV9SRUFEWTsKKyAgICAKICAgICAvKiBQcm9jZXNzIFVubG9ja2VkICovCiAgICAgX19IQUxfVU5MT0NLKGhkbWEpOwogICAgIAotICAgIC8qIENoYW5nZSB0aGUgRE1BIHN0YXRlKi8KLSAgICBoZG1hLT5TdGF0ZSA9IEhBTF9ETUFfU1RBVEVfUkVBRFk7CiAgIH0KICAgcmV0dXJuIEhBTF9PSzsKIH0KQEAgLTY1OSwxMyArNjYwLDEzIEBACiAgICAgICB7CiAgICAgICAgIC8qIFVwZGF0ZSBlcnJvciBjb2RlICovCiAgICAgICAgIGhkbWEtPkVycm9yQ29kZSA9IEhBTF9ETUFfRVJST1JfVElNRU9VVDsKLQotICAgICAgICAvKiBQcm9jZXNzIFVubG9ja2VkICovCi0gICAgICAgIF9fSEFMX1VOTE9DSyhoZG1hKTsKICAgICAgICAgCiAgICAgICAgIC8qIENoYW5nZSB0aGUgRE1BIHN0YXRlICovCiAgICAgICAgIGhkbWEtPlN0YXRlID0gSEFMX0RNQV9TVEFURV9SRUFEWTsKLSAgICAgICAgCisKKyAgICAgICAgLyogUHJvY2VzcyBVbmxvY2tlZCAqLworICAgICAgICBfX0hBTF9VTkxPQ0soaGRtYSk7CisKICAgICAgICAgcmV0dXJuIEhBTF9USU1FT1VUOwogICAgICAgfQogICAgIH0KQEAgLTcxMCwxMiArNzExLDEyIEBACiAgICAgICAvKiBDbGVhciB0aGUgaGFsZiB0cmFuc2ZlciBhbmQgdHJhbnNmZXIgY29tcGxldGUgZmxhZ3MgKi8KICAgICAgIHJlZ3MtPklGQ1IgPSAoRE1BX0ZMQUdfSFRJRjBfNCB8IERNQV9GTEFHX1RDSUYwXzQpIDw8IGhkbWEtPlN0cmVhbUluZGV4OwogICAgIAotICAgICAgLyogUHJvY2VzcyBVbmxvY2tlZCAqLwotICAgICAgX19IQUxfVU5MT0NLKGhkbWEpOwotCiAgICAgICAvKiBDaGFuZ2UgdGhlIERNQSBzdGF0ZSAqLwogICAgICAgaGRtYS0+U3RhdGU9IEhBTF9ETUFfU1RBVEVfUkVBRFk7CiAKKyAgICAgIC8qIFByb2Nlc3MgVW5sb2NrZWQgKi8KKyAgICAgIF9fSEFMX1VOTE9DSyhoZG1hKTsKKwogICAgICAgcmV0dXJuIEhBTF9FUlJPUjsKICAgIH0KICAgfQpAQCAtNzI2LDEwICs3MjcsMTEgQEAKICAgICAvKiBDbGVhciB0aGUgaGFsZiB0cmFuc2ZlciBhbmQgdHJhbnNmZXIgY29tcGxldGUgZmxhZ3MgKi8KICAgICByZWdzLT5JRkNSID0gKERNQV9GTEFHX0hUSUYwXzQgfCBETUFfRkxBR19UQ0lGMF80KSA8PCBoZG1hLT5TdHJlYW1JbmRleDsKICAgICAKKyAgICBoZG1hLT5TdGF0ZSA9IEhBTF9ETUFfU1RBVEVfUkVBRFk7CisKICAgICAvKiBQcm9jZXNzIFVubG9ja2VkICovCiAgICAgX19IQUxfVU5MT0NLKGhkbWEpOwogCi0gICAgaGRtYS0+U3RhdGUgPSBIQUxfRE1BX1NUQVRFX1JFQURZOwogICB9CiAgIGVsc2UKICAgewpAQCAtODY1LDEyICs4NjcsMTIgQEAKICAgICAgICAgLyogQ2xlYXIgYWxsIGludGVycnVwdCBmbGFncyBhdCBjb3JyZWN0IG9mZnNldCB3aXRoaW4gdGhlIHJlZ2lzdGVyICovCiAgICAgICAgIHJlZ3MtPklGQ1IgPSAweDNGVSA8PCBoZG1hLT5TdHJlYW1JbmRleDsKIAotICAgICAgICAvKiBQcm9jZXNzIFVubG9ja2VkICovCi0gICAgICAgIF9fSEFMX1VOTE9DSyhoZG1hKTsKLQogICAgICAgICAvKiBDaGFuZ2UgdGhlIERNQSBzdGF0ZSAqLwogICAgICAgICBoZG1hLT5TdGF0ZSA9IEhBTF9ETUFfU1RBVEVfUkVBRFk7CiAKKyAgICAgICAgLyogUHJvY2VzcyBVbmxvY2tlZCAqLworICAgICAgICBfX0hBTF9VTkxPQ0soaGRtYSk7CisKICAgICAgICAgaWYoaGRtYS0+WGZlckFib3J0Q2FsbGJhY2sgIT0gTlVMTCkKICAgICAgICAgewogICAgICAgICAgIGhkbWEtPlhmZXJBYm9ydENhbGxiYWNrKGhkbWEpOwpAQCAtOTA3LDExICs5MDksMTIgQEAKICAgICAgICAgICAvKiBEaXNhYmxlIHRoZSB0cmFuc2ZlciBjb21wbGV0ZSBpbnRlcnJ1cHQgKi8KICAgICAgICAgICBoZG1hLT5JbnN0YW5jZS0+Q1IgICY9IH4oRE1BX0lUX1RDKTsKIAorICAgICAgICAgIC8qIENoYW5nZSB0aGUgRE1BIHN0YXRlICovCisgICAgICAgICAgaGRtYS0+U3RhdGUgPSBIQUxfRE1BX1NUQVRFX1JFQURZOworCiAgICAgICAgICAgLyogUHJvY2VzcyBVbmxvY2tlZCAqLwogICAgICAgICAgIF9fSEFMX1VOTE9DSyhoZG1hKTsKIAotICAgICAgICAgIC8qIENoYW5nZSB0aGUgRE1BIHN0YXRlICovCi0gICAgICAgICAgaGRtYS0+U3RhdGUgPSBIQUxfRE1BX1NUQVRFX1JFQURZOwogICAgICAgICB9CiAKICAgICAgICAgaWYoaGRtYS0+WGZlckNwbHRDYWxsYmFjayAhPSBOVUxMKQpAQCAtOTQyLDExICs5NDUsMTIgQEAKICAgICAgIH0KICAgICAgIHdoaWxlKChoZG1hLT5JbnN0YW5jZS0+Q1IgJiBETUFfU3hDUl9FTikgIT0gUkVTRVQpOwogCisgICAgICAvKiBDaGFuZ2UgdGhlIERNQSBzdGF0ZSAqLworICAgICAgaGRtYS0+U3RhdGUgPSBIQUxfRE1BX1NUQVRFX1JFQURZOworCiAgICAgICAvKiBQcm9jZXNzIFVubG9ja2VkICovCiAgICAgICBfX0hBTF9VTkxPQ0soaGRtYSk7CiAKLSAgICAgIC8qIENoYW5nZSB0aGUgRE1BIHN0YXRlICovCi0gICAgICBoZG1hLT5TdGF0ZSA9IEhBTF9ETUFfU1RBVEVfUkVBRFk7CiAgICAgfQogCiAgICAgaWYoaGRtYS0+WGZlckVycm9yQ2FsbGJhY2sgIT0gTlVMTCkKQEAgLTEwMDQsNiArMTAwOCw4IEBACiAgICAgICBicmVhazsKIAogICAgIGRlZmF1bHQ6CisgICAgICAvKiBSZXR1cm4gZXJyb3Igc3RhdHVzICovCisgICAgICBzdGF0dXMgPSAgSEFMX0VSUk9SOwogICAgICAgYnJlYWs7CiAgICAgfQogICB9CkBAIC0xMzA0LDQgKzEzMTAsMyBAQAogICAqIEB9CiAgICovCiAKLS8qKioqKioqKioqKioqKioqKioqKioqKiogKEMpIENPUFlSSUdIVCBTVE1pY3JvZWxlY3Ryb25pY3MgKioqKipFTkQgT0YgRklMRSoqKiovCmRpZmYgLS1naXQgYS9TcmMvc3RtMzJmN3h4X2hhbF9kbWEyZC5jIGIvU3JjL3N0bTMyZjd4eF9oYWxfZG1hMmQuYwppbmRleCBlNTJiMjlmLi5jNjM1Mjk0IDEwMDY0NAotLS0gYS9TcmMvc3RtMzJmN3h4X2hhbF9kbWEyZC5jCisrKyBiL1NyYy9zdG0zMmY3eHhfaGFsX2RtYTJkLmMKQEAgLTEwLDYgKzEwLDE3IEBACiAgICogICAgICAgICAgICsgUGVyaXBoZXJhbCBDb250cm9sIGZ1bmN0aW9ucwogICAqICAgICAgICAgICArIFBlcmlwaGVyYWwgU3RhdGUgYW5kIEVycm9ycyBmdW5jdGlvbnMKICAgKgorICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgKiBAYXR0ZW50aW9uCisgICoKKyAgKiBDb3B5cmlnaHQgKGMpIDIwMTcgU1RNaWNyb2VsZWN0cm9uaWNzLgorICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgICoKKyAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIHVuZGVyIHRlcm1zIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUKKyAgKiBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb2Z0d2FyZSBjb21wb25lbnQuCisgICogSWYgbm8gTElDRU5TRSBmaWxlIGNvbWVzIHdpdGggdGhpcyBzb2Z0d2FyZSwgaXQgaXMgcHJvdmlkZWQgQVMtSVMuCisgICoKKyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgIEB2ZXJiYXRpbQogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgICAgICAgICAgICAgICAgICAgICAgICMjIyMjIEhvdyB0byB1c2UgdGhpcyBkcml2ZXIgIyMjIyMKQEAgLTE0NywxNyArMTU4LDYgQEAKIAogICBAZW5kdmVyYmF0aW0KICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gICogQGF0dGVudGlvbgotICAqCi0gICogPGgyPjxjZW50ZXI+JmNvcHk7IENvcHlyaWdodCAoYykgMjAxNyBTVE1pY3JvZWxlY3Ryb25pY3MuCi0gICogQWxsIHJpZ2h0cyByZXNlcnZlZC48L2NlbnRlcj48L2gyPgotICAqCi0gICogVGhpcyBzb2Z0d2FyZSBjb21wb25lbnQgaXMgbGljZW5zZWQgYnkgU1QgdW5kZXIgQlNEIDMtQ2xhdXNlIGxpY2Vuc2UsCi0gICogdGhlICJMaWNlbnNlIjsgWW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZQotICAqIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdDoKLSAgKiAgICAgICAgICAgICAgICAgICAgICAgIG9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0JTRC0zLUNsYXVzZQotICAqCi0gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAqLwogCiAvKiBJbmNsdWRlcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwpAQCAtMjE0NCw1ICsyMTQ0LDMgQEAKICAgKi8KICNlbmRpZiAvKiBETUEyRCAqLwogI2VuZGlmIC8qIEhBTF9ETUEyRF9NT0RVTEVfRU5BQkxFRCAqLwotCi0vKioqKioqKioqKioqKioqKioqKioqKioqIChDKSBDT1BZUklHSFQgU1RNaWNyb2VsZWN0cm9uaWNzICoqKioqRU5EIE9GIEZJTEUqKioqLwpkaWZmIC0tZ2l0IGEvU3JjL3N0bTMyZjd4eF9oYWxfZG1hX2V4LmMgYi9TcmMvc3RtMzJmN3h4X2hhbF9kbWFfZXguYwppbmRleCBjYjk2MTk3Li42Zjg2MzRkIDEwMDY0NAotLS0gYS9TcmMvc3RtMzJmN3h4X2hhbF9kbWFfZXguYworKysgYi9TcmMvc3RtMzJmN3h4X2hhbF9kbWFfZXguYwpAQCAtMjUsMTMgKzI1LDEyIEBACiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAqIEBhdHRlbnRpb24KICAgKgotICAqIDxoMj48Y2VudGVyPiZjb3B5OyBDb3B5cmlnaHQgKGMpIDIwMTcgU1RNaWNyb2VsZWN0cm9uaWNzLgotICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuPC9jZW50ZXI+PC9oMj4KKyAgKiBDb3B5cmlnaHQgKGMpIDIwMTcgU1RNaWNyb2VsZWN0cm9uaWNzLgorICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICoKLSAgKiBUaGlzIHNvZnR3YXJlIGNvbXBvbmVudCBpcyBsaWNlbnNlZCBieSBTVCB1bmRlciBCU0QgMy1DbGF1c2UgbGljZW5zZSwKLSAgKiB0aGUgIkxpY2Vuc2UiOyBZb3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlCi0gICogTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0OgotICAqICAgICAgICAgICAgICAgICAgICAgICAgb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvQlNELTMtQ2xhdXNlCisgICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCB1bmRlciB0ZXJtcyB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluCisgICogdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc29mdHdhcmUgY29tcG9uZW50LgorICAqIElmIG5vIExJQ0VOU0UgZmlsZSBjb21lcyB3aXRoIHRoaXMgc29mdHdhcmUsIGl0IGlzIHByb3ZpZGVkIEFTLUlTLgogICAqCiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAqLwpAQCAtMzA3LDQgKzMwNiwzIEBACiAgICogQH0KICAgKi8KIAotLyoqKioqKioqKioqKioqKioqKioqKioqKiAoQykgQ09QWVJJR0hUIFNUTWljcm9lbGVjdHJvbmljcyAqKioqKkVORCBPRiBGSUxFKioqKi8KZGlmZiAtLWdpdCBhL1NyYy9zdG0zMmY3eHhfaGFsX2RzaS5jIGIvU3JjL3N0bTMyZjd4eF9oYWxfZHNpLmMKaW5kZXggMzQxYjQ4ZC4uZDQ5ODkzOCAxMDA2NDQKLS0tIGEvU3JjL3N0bTMyZjd4eF9oYWxfZHNpLmMKKysrIGIvU3JjL3N0bTMyZjd4eF9oYWxfZHNpLmMKQEAgLTksNiArOSwxNyBAQAogICAqICAgICAgICAgICArIElPIG9wZXJhdGlvbiBmdW5jdGlvbnMKICAgKiAgICAgICAgICAgKyBQZXJpcGhlcmFsIENvbnRyb2wgZnVuY3Rpb25zCiAgICogICAgICAgICAgICsgUGVyaXBoZXJhbCBTdGF0ZSBhbmQgRXJyb3JzIGZ1bmN0aW9ucworICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgKiBAYXR0ZW50aW9uCisgICoKKyAgKiBDb3B5cmlnaHQgKGMpIDIwMTcgU1RNaWNyb2VsZWN0cm9uaWNzLgorICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgICoKKyAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIHVuZGVyIHRlcm1zIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUKKyAgKiBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb2Z0d2FyZSBjb21wb25lbnQuCisgICogSWYgbm8gTElDRU5TRSBmaWxlIGNvbWVzIHdpdGggdGhpcyBzb2Z0d2FyZSwgaXQgaXMgcHJvdmlkZWQgQVMtSVMuCisgICoKKyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgIEB2ZXJiYXRpbQogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgICAgICAgICAgICAgICAgICAgICAgICMjIyMjIEhvdyB0byB1c2UgdGhpcyBkcml2ZXIgIyMjIyMKQEAgLTE0MCwxNyArMTUxLDYgQEAKIAogICBAZW5kdmVyYmF0aW0KICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gICogQGF0dGVudGlvbgotICAqCi0gICogPGgyPjxjZW50ZXI+JmNvcHk7IENvcHlyaWdodCAoYykgMjAxNyBTVE1pY3JvZWxlY3Ryb25pY3MuCi0gICogQWxsIHJpZ2h0cyByZXNlcnZlZC48L2NlbnRlcj48L2gyPgotICAqCi0gICogVGhpcyBzb2Z0d2FyZSBjb21wb25lbnQgaXMgbGljZW5zZWQgYnkgU1QgdW5kZXIgQlNEIDMtQ2xhdXNlIGxpY2Vuc2UsCi0gICogdGhlICJMaWNlbnNlIjsgWW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZQotICAqIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdDoKLSAgKiAgICAgICAgICAgICAgICAgICAgICAgIG9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0JTRC0zLUNsYXVzZQotICAqCi0gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAqLwogCiAvKiBJbmNsdWRlcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwpAQCAtMTczLDcgKzE3Myw3IEBACiAvKiogQGFkZHRvZ3JvdXAgRFNJX1ByaXZhdGVfQ29uc3RhbnRzCiAgICogQHsKICAgKi8KLSNkZWZpbmUgRFNJX1RJTUVPVVRfVkFMVUUgKCh1aW50MzJfdCkxMDAwVSkgIC8qIDFzICovCisjZGVmaW5lIERTSV9USU1FT1VUX1ZBTFVFICgodWludDMyX3QpMTAwVSkgIC8qIDEwMG1zICovCiAKICNkZWZpbmUgRFNJX0VSUk9SX0FDS19NQVNLIChEU0lfSVNSMF9BRTAgfCBEU0lfSVNSMF9BRTEgfCBEU0lfSVNSMF9BRTIgfCBEU0lfSVNSMF9BRTMgfCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFNJX0lTUjBfQUU0IHwgRFNJX0lTUjBfQUU1IHwgRFNJX0lTUjBfQUU2IHwgRFNJX0lTUjBfQUU3IHwgXApAQCAtMjAwLDEyICsyMDAsMTQgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgRGF0YTEpOwogCiBzdGF0aWMgSEFMX1N0YXR1c1R5cGVEZWYgRFNJX1Nob3J0V3JpdGUoRFNJX0hhbmRsZVR5cGVEZWYgKmhkc2ksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgQ2hhbm5lbElELAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IE1vZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgUGFyYW0xLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IFBhcmFtMik7Ci0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBDaGFubmVsSUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgTW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBQYXJhbTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgUGFyYW0yKTsKIC8qIFByaXZhdGUgZnVuY3Rpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisvKiogQGRlZmdyb3VwIERTSV9Qcml2YXRlX0Z1bmN0aW9ucyBEU0kgUHJpdmF0ZSBGdW5jdGlvbnMKKyAgKiBAeworICAqLwogLyoqCiAgICogQGJyaWVmICBHZW5lcmljIERTSSBwYWNrZXQgaGVhZGVyIGNvbmZpZ3VyYXRpb24KICAgKiBAcGFyYW0gIERTSXggIFBvaW50ZXIgdG8gRFNJIHJlZ2lzdGVyIGJhc2UKQEAgLTI1NSwxMCArMjU3LDEwIEBACiAgIHRpY2tzdGFydCA9IEhBTF9HZXRUaWNrKCk7CiAKICAgLyogV2FpdCBmb3IgQ29tbWFuZCBGSUZPIEVtcHR5ICovCi0gIHdoaWxlKChoZHNpLT5JbnN0YW5jZS0+R1BTUiAmIERTSV9HUFNSX0NNREZFKSA9PSAwVSkKKyAgd2hpbGUgKChoZHNpLT5JbnN0YW5jZS0+R1BTUiAmIERTSV9HUFNSX0NNREZFKSA9PSAwVSkKICAgewogICAgIC8qIENoZWNrIGZvciB0aGUgVGltZW91dCAqLwotICAgIGlmKChIQUxfR2V0VGljaygpIC0gdGlja3N0YXJ0ICkgPiBEU0lfVElNRU9VVF9WQUxVRSkKKyAgICBpZiAoKEhBTF9HZXRUaWNrKCkgLSB0aWNrc3RhcnQpID4gRFNJX1RJTUVPVVRfVkFMVUUpCiAgICAgewogICAgICAgcmV0dXJuIEhBTF9USU1FT1VUOwogICAgIH0KQEAgLTI3MSw2ICsyNzMsMTAgQEAKICAgcmV0dXJuIEhBTF9PSzsKIH0KIAorLyoqCisgICogQH0KKyAgKi8KKwogLyogRXhwb3J0ZWQgZnVuY3Rpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KIC8qKiBAYWRkdG9ncm91cCBEU0lfRXhwb3J0ZWRfRnVuY3Rpb25zCiAgICogQHsKQEAgLTM2NSwxMSArMzcxLDE3IEBACiAKICAgLyogU2V0IHRoZSBQTEwgZGl2aXNpb24gZmFjdG9ycyAqLwogICBoZHNpLT5JbnN0YW5jZS0+V1JQQ1IgJj0gfihEU0lfV1JQQ1JfUExMX05ESVYgfCBEU0lfV1JQQ1JfUExMX0lERiB8IERTSV9XUlBDUl9QTExfT0RGKTsKLSAgaGRzaS0+SW5zdGFuY2UtPldSUENSIHw9ICgoKFBMTEluaXQtPlBMTE5ESVYpIDw8IDJVKSB8ICgoUExMSW5pdC0+UExMSURGKSA8PCAxMVUpIHwgKChQTExJbml0LT5QTExPREYpIDw8IDE2VSkpOworICBoZHNpLT5JbnN0YW5jZS0+V1JQQ1IgfD0gKCgoUExMSW5pdC0+UExMTkRJVikgPDwgRFNJX1dSUENSX1BMTF9ORElWX1BvcykgfCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChQTExJbml0LT5QTExJREYpIDw8IERTSV9XUlBDUl9QTExfSURGX1BvcykgfCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChQTExJbml0LT5QTExPREYpIDw8IERTSV9XUlBDUl9QTExfT0RGX1BvcykpOwogCiAgIC8qIEVuYWJsZSB0aGUgRFNJIFBMTCAqLwogICBfX0hBTF9EU0lfUExMX0VOQUJMRShoZHNpKTsKIAorICAvKiBSZXF1aXJlcyBtaW4gb2YgNDAwtXMgZGVsYXkgYmVmb3JlIHJlYWRpbmcgdGhlIFBMTExTIGZsYWcgKi8KKyAgLyogMW1zIGRlbGF5IGlzIGluc2VydGVkIHRoYXQgaXMgdGhlIG1pbmltdW0gSEFMIGRlbGF5IGdyYW51bGFyaXR5ICovCisgIEhBTF9EZWxheSgxKTsKKwogICAvKiBHZXQgdGljayAqLwogICB0aWNrc3RhcnQgPSBIQUxfR2V0VGljaygpOwogCkBAIC00MTksNyArNDMxLDcgQEAKICAgaGRzaS0+SW5zdGFuY2UtPklFUlsxVV0gPSAwVTsKICAgaGRzaS0+RXJyb3JNc2sgPSAwVTsKIAotICAvKiBJbml0aWFsaXNlIHRoZSBlcnJvciBjb2RlICovCisgIC8qIEluaXRpYWxpemUgdGhlIGVycm9yIGNvZGUgKi8KICAgaGRzaS0+RXJyb3JDb2RlID0gSEFMX0RTSV9FUlJPUl9OT05FOwogCiAgIC8qIEluaXRpYWxpemUgdGhlIERTSSBzdGF0ZSovCkBAIC00NzMsNyArNDg1LDcgQEAKICAgSEFMX0RTSV9Nc3BEZUluaXQoaGRzaSk7CiAjZW5kaWYgLyogVVNFX0hBTF9EU0lfUkVHSVNURVJfQ0FMTEJBQ0tTICovCiAKLSAgLyogSW5pdGlhbGlzZSB0aGUgZXJyb3IgY29kZSAqLworICAvKiBJbml0aWFsaXplIHRoZSBlcnJvciBjb2RlICovCiAgIGhkc2ktPkVycm9yQ29kZSA9IEhBTF9EU0lfRVJST1JfTk9ORTsKIAogICAvKiBJbml0aWFsaXplIHRoZSBEU0kgc3RhdGUqLwpAQCAtNzMzLDExICs3NDUsMTEgQEAKICAgICAgICAgYnJlYWs7CiAKICAgICAgIGNhc2UgSEFMX0RTSV9NU1BJTklUX0NCX0lEIDoKLSAgICAgICAgaGRzaS0+TXNwSW5pdENhbGxiYWNrID0gSEFMX0RTSV9Nc3BJbml0OyAgICAgICAgICAgICAgICAgICAgIC8qIExlZ2NheSB3ZWFrIE1zcEluaXQgQ2FsbGJhY2sgICAgICovCisgICAgICAgIGhkc2ktPk1zcEluaXRDYWxsYmFjayA9IEhBTF9EU0lfTXNwSW5pdDsgICAgICAgICAgICAgICAgICAgICAvKiBMZWdhY3kgd2VhayBNc3BJbml0IENhbGxiYWNrICAgICAqLwogICAgICAgICBicmVhazsKIAogICAgICAgY2FzZSBIQUxfRFNJX01TUERFSU5JVF9DQl9JRCA6Ci0gICAgICAgIGhkc2ktPk1zcERlSW5pdENhbGxiYWNrID0gSEFMX0RTSV9Nc3BEZUluaXQ7ICAgICAgICAgICAgICAgICAvKiBMZWdjYXkgd2VhayBNc3BEZUluaXQgQ2FsbGJhY2sgICAqLworICAgICAgICBoZHNpLT5Nc3BEZUluaXRDYWxsYmFjayA9IEhBTF9EU0lfTXNwRGVJbml0OyAgICAgICAgICAgICAgICAgLyogTGVnYWN5IHdlYWsgTXNwRGVJbml0IENhbGxiYWNrICAgKi8KICAgICAgICAgYnJlYWs7CiAKICAgICAgIGRlZmF1bHQgOgpAQCAtNzUzLDExICs3NjUsMTEgQEAKICAgICBzd2l0Y2ggKENhbGxiYWNrSUQpCiAgICAgewogICAgICAgY2FzZSBIQUxfRFNJX01TUElOSVRfQ0JfSUQgOgotICAgICAgICBoZHNpLT5Nc3BJbml0Q2FsbGJhY2sgPSBIQUxfRFNJX01zcEluaXQ7ICAgICAgICAgICAgICAgICAgLyogTGVnY2F5IHdlYWsgTXNwSW5pdCBDYWxsYmFjayAgICovCisgICAgICAgIGhkc2ktPk1zcEluaXRDYWxsYmFjayA9IEhBTF9EU0lfTXNwSW5pdDsgICAgICAgICAgICAgICAgICAvKiBMZWdhY3kgd2VhayBNc3BJbml0IENhbGxiYWNrICAgKi8KICAgICAgICAgYnJlYWs7CiAKICAgICAgIGNhc2UgSEFMX0RTSV9NU1BERUlOSVRfQ0JfSUQgOgotICAgICAgICBoZHNpLT5Nc3BEZUluaXRDYWxsYmFjayA9IEhBTF9EU0lfTXNwRGVJbml0OyAgICAgICAgICAgICAgLyogTGVnY2F5IHdlYWsgTXNwRGVJbml0IENhbGxiYWNrICovCisgICAgICAgIGhkc2ktPk1zcERlSW5pdENhbGxiYWNrID0gSEFMX0RTSV9Nc3BEZUluaXQ7ICAgICAgICAgICAgICAvKiBMZWdhY3kgd2VhayBNc3BEZUluaXQgQ2FsbGJhY2sgKi8KICAgICAgICAgYnJlYWs7CiAKICAgICAgIGRlZmF1bHQgOgpAQCAtODA4LDcgKzgyMCw4IEBACiAgICovCiB2b2lkIEhBTF9EU0lfSVJRSGFuZGxlcihEU0lfSGFuZGxlVHlwZURlZiAqaGRzaSkKIHsKLSAgdWludDMyX3QgRXJyb3JTdGF0dXMwLCBFcnJvclN0YXR1czE7CisgIHVpbnQzMl90IEVycm9yU3RhdHVzMDsKKyAgdWludDMyX3QgRXJyb3JTdGF0dXMxOwogCiAgIC8qIFRlYXJpbmcgRWZmZWN0IEludGVycnVwdCBtYW5hZ2VtZW50ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KICAgaWYgKF9fSEFMX0RTSV9HRVRfRkxBRyhoZHNpLCBEU0lfRkxBR19URSkgIT0gMFUpCkBAIC0xMzY1LDcgKzEzNzgsOCBAQAogICAgICBIaWdoLVNwZWVkIHRyYW5zbWlzc2lvbi4KICAgICAgVG8gZG8gc28sIHRoZSBEU0kgSG9zdCBjYWxjdWxhdGVzIHRoZSB0aW1lIHJlcXVpcmVkIGZvciB0aGUgY2xvY2sgbGFuZSB0byBjaGFuZ2UgZnJvbSBIaWdoU3BlZWQKICAgICAgdG8gTG93LVBvd2VyIGFuZCBmcm9tIExvdy1Qb3dlciB0byBIaWdoLVNwZWVkLgotICAgICBUaGlzIHRpbWluZ3MgYXJlIGNvbmZpZ3VyZWQgYnkgdGhlIEhTMkxQX1RJTUUgYW5kIExQMkhTX1RJTUUgaW4gdGhlIERTSSBIb3N0IENsb2NrIExhbmUgVGltZXIgQ29uZmlndXJhdGlvbiBSZWdpc3RlciAoRFNJX0NMVENSKS4KKyAgICAgVGhpcyB0aW1pbmdzIGFyZSBjb25maWd1cmVkIGJ5IHRoZSBIUzJMUF9USU1FIGFuZCBMUDJIU19USU1FIGluIHRoZSBEU0kgSG9zdCBDbG9jayBMYW5lIFRpbWVyIENvbmZpZ3VyYXRpb24KKyAgICAgUmVnaXN0ZXIgKERTSV9DTFRDUikuCiAgICAgIEJ1dCB0aGUgRFNJIEhvc3QgaXMgbm90IGNhbGN1bGF0aW5nIExQMkhTX1RJTUUgKyBIUzJMUF9USU1FIGJ1dCAyIHggSFMyTFBfVElNRS4KIAogICAgICBXb3JrYXJvdW5kIDogQ29uZmlndXJlIEhTMkxQX1RJTUUgYW5kIExQMkhTX1RJTUUgd2l0aCB0aGUgc2FtZSB2YWx1ZSBiZWluZyB0aGUgbWF4IG9mIEhTMkxQX1RJTUUgb3IgTFAySFNfVElNRS4KQEAgLTE1ODcsNyArMTYwMSw3IEBACiAgIC8qIFByb2Nlc3MgbG9ja2VkICovCiAgIF9fSEFMX0xPQ0soaGRzaSk7CiAKLSAgIHN0YXR1cyA9IERTSV9TaG9ydFdyaXRlKGhkc2ksIENoYW5uZWxJRCwgTW9kZSwgUGFyYW0xLCBQYXJhbTIpOworICBzdGF0dXMgPSBEU0lfU2hvcnRXcml0ZShoZHNpLCBDaGFubmVsSUQsIE1vZGUsIFBhcmFtMSwgUGFyYW0yKTsKIAogICAvKiBQcm9jZXNzIHVubG9ja2VkICovCiAgIF9fSEFMX1VOTE9DSyhoZHNpKTsKQEAgLTE2MTYsNyArMTYzMCw5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBQYXJhbTEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90ICpQYXJhbWV0ZXJzVGFibGUpCiB7Ci0gIHVpbnQzMl90IHVpY291bnRlciwgbmJCeXRlcywgY291bnQ7CisgIHVpbnQzMl90IHVpY291bnRlcjsKKyAgdWludDMyX3QgbmJCeXRlczsKKyAgdWludDMyX3QgY291bnQ7CiAgIHVpbnQzMl90IHRpY2tzdGFydDsKICAgdWludDMyX3QgZmlmb3dvcmQ7CiAgIHVpbnQ4X3QgKnBwYXJhbXMgPSBQYXJhbWV0ZXJzVGFibGU7CkBAIC0xNzIxLDcgKzE3MzcsNyBAQAogICB7CiAgICAgLyogc2V0IG1heCByZXR1cm4gcGFja2V0IHNpemUgKi8KICAgICBpZiAoRFNJX1Nob3J0V3JpdGUoaGRzaSwgQ2hhbm5lbE5iciwgRFNJX01BWF9SRVRVUk5fUEtUX1NJWkUsICgoZGF0YXNpemUpICYgMHhGRlUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgKCgoZGF0YXNpemUpID4+IDhVKSAmIDB4RkZVKSkgIT0gSEFMX09LKQorICAgICAgICAgICAgICAgICAgICAgICAoKChkYXRhc2l6ZSkgPj4gOFUpICYgMHhGRlUpKSAhPSBIQUxfT0spCiAgICAgewogICAgICAgLyogUHJvY2VzcyBVbmxvY2tlZCAqLwogICAgICAgX19IQUxfVU5MT0NLKGhkc2kpOwpAQCAtMjA3Nyw3ICsyMDkzLDcgQEAKICAgLyogRGUtYXNzZXJ0IHRoZSBVTFBNIHJlcXVlc3RzIGFuZCB0aGUgVUxQTSBleGl0IGJpdHMgKi8KICAgaGRzaS0+SW5zdGFuY2UtPlBVQ1IgPSAwVTsKIAotICAvKiBTd2l0Y2ggdGhlIGxhbmJ5dGVjbG9jayBzb3VyY2UgaW4gdGhlIFJDQyBmcm9tIHN5c3RlbSBQTEwgdG8gRC1QSFkgKi8KKyAgLyogU3dpdGNoIHRoZSBsYW5lIGJ5dGUgY2xvY2sgc291cmNlIGluIHRoZSBSQ0MgZnJvbSBzeXN0ZW0gUExMIHRvIEQtUEhZICovCiAgIF9fSEFMX1JDQ19EU0lfQ09ORklHKFJDQ19EU0lDTEtTT1VSQ0VfRFNJUEhZKTsKIAogICAvKiBSZXN0b3JlIGNsb2NrIGxhbmUgY29uZmlndXJhdGlvbiB0byBIUyAqLwpAQCAtMjcyNyw1ICsyNzQzLDMgQEAKIC8qKgogICAqIEB9CiAgICovCi0KLS8qKioqKioqKioqKioqKioqKioqKioqKiogKEMpIENPUFlSSUdIVCBTVE1pY3JvZWxlY3Ryb25pY3MgKioqKipFTkQgT0YgRklMRSoqKiovCmRpZmYgLS1naXQgYS9TcmMvc3RtMzJmN3h4X2hhbF9ldGguYyBiL1NyYy9zdG0zMmY3eHhfaGFsX2V0aC5jCmluZGV4IDIxNjQyMjkuLjM3MDM4YzUgMTAwNjQ0Ci0tLSBhL1NyYy9zdG0zMmY3eHhfaGFsX2V0aC5jCisrKyBiL1NyYy9zdG0zMmY3eHhfaGFsX2V0aC5jCkBAIC0xMCw2ICsxMCwxNyBAQAogICAqICAgICAgICAgICArIFBlcmlwaGVyYWwgQ29udHJvbCBmdW5jdGlvbnMgCiAgICogICAgICAgICAgICsgUGVyaXBoZXJhbCBTdGF0ZSBhbmQgRXJyb3JzIGZ1bmN0aW9ucwogICAqCisgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAqIEBhdHRlbnRpb24KKyAgKgorICAqIENvcHlyaWdodCAoYykgMjAxNyBTVE1pY3JvZWxlY3Ryb25pY3MuCisgICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAgKgorICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgdW5kZXIgdGVybXMgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZQorICAqIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvZnR3YXJlIGNvbXBvbmVudC4KKyAgKiBJZiBubyBMSUNFTlNFIGZpbGUgY29tZXMgd2l0aCB0aGlzIHNvZnR3YXJlLCBpdCBpcyBwcm92aWRlZCBBUy1JUy4KKyAgKgorICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgQHZlcmJhdGltCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICAgICAgICAgICAgICAgICAgICAjIyMjIyBIb3cgdG8gdXNlIHRoaXMgZHJpdmVyICMjIyMjCkBAIC0xMTMsMTcgKzEyNCw2IEBACiAKICAgQGVuZHZlcmJhdGltCiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICAqIEBhdHRlbnRpb24KLSAgKgotICAqIDxoMj48Y2VudGVyPiZjb3B5OyBDb3B5cmlnaHQgKGMpIDIwMTcgU1RNaWNyb2VsZWN0cm9uaWNzLgotICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuPC9jZW50ZXI+PC9oMj4KLSAgKgotICAqIFRoaXMgc29mdHdhcmUgY29tcG9uZW50IGlzIGxpY2Vuc2VkIGJ5IFNUIHVuZGVyIEJTRCAzLUNsYXVzZSBsaWNlbnNlLAotICAqIHRoZSAiTGljZW5zZSI7IFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUKLSAgKiBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQ6Ci0gICogICAgICAgICAgICAgICAgICAgICAgICBvcGVuc291cmNlLm9yZy9saWNlbnNlcy9CU0QtMy1DbGF1c2UKLSAgKgotICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgKi8KIAogLyogSW5jbHVkZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KQEAgLTIyODgsNCArMjI4OCwzIEBACiAgICogQH0KICAgKi8KIAotLyoqKioqKioqKioqKioqKioqKioqKioqKiAoQykgQ09QWVJJR0hUIFNUTWljcm9lbGVjdHJvbmljcyAqKioqKkVORCBPRiBGSUxFKioqKi8KZGlmZiAtLWdpdCBhL1NyYy9zdG0zMmY3eHhfaGFsX2V4dGkuYyBiL1NyYy9zdG0zMmY3eHhfaGFsX2V4dGkuYwppbmRleCBkNGZlMDg5Li5jNDNjMWRhIDEwMDY0NAotLS0gYS9TcmMvc3RtMzJmN3h4X2hhbF9leHRpLmMKKysrIGIvU3JjL3N0bTMyZjd4eF9oYWxfZXh0aS5jCkBAIC04LDYgKzgsMTcgQEAKICAgKiAgICAgICAgICAgKyBJbml0aWFsaXphdGlvbiBhbmQgZGUtaW5pdGlhbGl6YXRpb24gZnVuY3Rpb25zCiAgICogICAgICAgICAgICsgSU8gb3BlcmF0aW9uIGZ1bmN0aW9ucwogICAqCisgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAqIEBhdHRlbnRpb24KKyAgKgorICAqIENvcHlyaWdodCAoYykgMjAxOCBTVE1pY3JvZWxlY3Ryb25pY3MuCisgICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAgKgorICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgdW5kZXIgdGVybXMgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZQorICAqIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvZnR3YXJlIGNvbXBvbmVudC4KKyAgKiBJZiBubyBMSUNFTlNFIGZpbGUgY29tZXMgd2l0aCB0aGlzIHNvZnR3YXJlLCBpdCBpcyBwcm92aWRlZCBBUy1JUy4KKyAgKgorICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgQHZlcmJhdGltCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICAgICAgICAgICAgICAgICAgICAjIyMjIyBFWFRJIFBlcmlwaGVyYWwgZmVhdHVyZXMgIyMjIyMKQEAgLTY5LDE4ICs4MCw2IEBACiAgICAgKCMpIEdlbmVyYXRlIHNvZnR3YXJlIGludGVycnVwdCB1c2luZyBIQUxfRVhUSV9HZW5lcmF0ZVNXSSgpLgogCiAgIEBlbmR2ZXJiYXRpbQotICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAgKiBAYXR0ZW50aW9uCi0gICoKLSAgKiA8aDI+PGNlbnRlcj4mY29weTsgQ29weXJpZ2h0IChjKSAyMDE4IFNUTWljcm9lbGVjdHJvbmljcy4KLSAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLjwvY2VudGVyPjwvaDI+Ci0gICoKLSAgKiBUaGlzIHNvZnR3YXJlIGNvbXBvbmVudCBpcyBsaWNlbnNlZCBieSBTVCB1bmRlciBCU0QgMy1DbGF1c2UgbGljZW5zZSwKLSAgKiB0aGUgIkxpY2Vuc2UiOyBZb3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlCi0gICogTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0OgotICAqICAgICAgICAgICAgICAgICAgICAgICAgb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvQlNELTMtQ2xhdXNlCi0gICoKLSAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgICovCiAKIC8qIEluY2x1ZGVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCkBAIC0yNzYsNiArMjc1LDEwIEBACiAgICAgcEV4dGlDb25maWctPk1vZGUgfD0gRVhUSV9NT0RFX0VWRU5UOwogICB9CiAKKyAgLyogR2V0IGRlZmF1bHQgVHJpZ2dlciBhbmQgR1BJT1NlbCBjb25maWd1cmF0aW9uICovCisgIHBFeHRpQ29uZmlnLT5UcmlnZ2VyID0gRVhUSV9UUklHR0VSX05PTkU7CisgIHBFeHRpQ29uZmlnLT5HUElPU2VsID0gMHgwMHU7CisKICAgLyogMl0gR2V0IHRyaWdnZXIgZm9yIGNvbmZpZ3VyYWJsZSBsaW5lcyA6IHJpc2luZyAqLwogICBpZiAoKHBFeHRpQ29uZmlnLT5MaW5lICYgRVhUSV9DT05GSUcpICE9IDB4MDB1KQogICB7CkBAIC0yODQsMTAgKzI4Nyw2IEBACiAgICAgewogICAgICAgcEV4dGlDb25maWctPlRyaWdnZXIgPSBFWFRJX1RSSUdHRVJfUklTSU5HOwogICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgcEV4dGlDb25maWctPlRyaWdnZXIgPSBFWFRJX1RSSUdHRVJfTk9ORTsKLSAgICB9CiAKICAgICAvKiBHZXQgZmFsbGluZyBjb25maWd1cmF0aW9uICovCiAgICAgLyogQ2hlY2sgaWYgY29uZmlndXJhdGlvbiBvZiBzZWxlY3RlZCBsaW5lIGlzIGVuYWJsZSAqLwpAQCAtMzA0LDE2ICszMDMsNiBAQAogICAgICAgcmVndmFsID0gU1lTQ0ZHLT5FWFRJQ1JbbGluZXBvcyA+PiAydV07CiAgICAgICBwRXh0aUNvbmZpZy0+R1BJT1NlbCA9ICgocmVndmFsIDw8IChTWVNDRkdfRVhUSUNSMV9FWFRJMV9Qb3MgKiAoM3VMIC0gKGxpbmVwb3MgJiAweDAzdSkpKSkgPj4gMjQpOwogICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgcEV4dGlDb25maWctPkdQSU9TZWwgPSAweDAwdTsKLSAgICB9Ci0gIH0KLSAgZWxzZQotICB7Ci0gICAgLyogTm8gVHJpZ2dlciBzZWxlY3RlZCAqLwotICAgIHBFeHRpQ29uZmlnLT5UcmlnZ2VyID0gRVhUSV9UUklHR0VSX05PTkU7Ci0gICAgcEV4dGlDb25maWctPkdQSU9TZWwgPSAweDAwdTsKICAgfQogCiAgIHJldHVybiBIQUxfT0s7CkBAIC01NTYsNCArNTQ1LDMgQEAKICAgKiBAfQogICAqLwogCi0vKioqKioqKioqKioqKioqKioqKioqKioqIChDKSBDT1BZUklHSFQgU1RNaWNyb2VsZWN0cm9uaWNzICoqKioqRU5EIE9GIEZJTEUqKioqLwpkaWZmIC0tZ2l0IGEvU3JjL3N0bTMyZjd4eF9oYWxfZmxhc2guYyBiL1NyYy9zdG0zMmY3eHhfaGFsX2ZsYXNoLmMKaW5kZXggY2M4OTMyZS4uMjUwNzVhYiAxMDA2NDQKLS0tIGEvU3JjL3N0bTMyZjd4eF9oYWxfZmxhc2guYworKysgYi9TcmMvc3RtMzJmN3h4X2hhbF9mbGFzaC5jCkBAIC03MCwxNCArNzAsMTIgQEAKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgICogQGF0dGVudGlvbgogICAqCi0gICogPGgyPjxjZW50ZXI+JmNvcHk7IENvcHlyaWdodCAoYykgMjAxNyBTVE1pY3JvZWxlY3Ryb25pY3MuCi0gICogQWxsIHJpZ2h0cyByZXNlcnZlZC48L2NlbnRlcj48L2gyPgorICAqIENvcHlyaWdodCAoYykgMjAxNyBTVE1pY3JvZWxlY3Ryb25pY3MuCisgICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgKgotICAqIFRoaXMgc29mdHdhcmUgY29tcG9uZW50IGlzIGxpY2Vuc2VkIGJ5IFNUIHVuZGVyIEJTRCAzLUNsYXVzZSBsaWNlbnNlLAotICAqIHRoZSAiTGljZW5zZSI7IFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUKLSAgKiBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQ6Ci0gICogICAgICAgICAgICAgICAgICAgICAgICBvcGVuc291cmNlLm9yZy9saWNlbnNlcy9CU0QtMy1DbGF1c2UKLSAgKgorICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgdW5kZXIgdGVybXMgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbgorICAqIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvZnR3YXJlIGNvbXBvbmVudC4KKyAgKiBJZiBubyBMSUNFTlNFIGZpbGUgY29tZXMgd2l0aCB0aGlzIHNvZnR3YXJlLCBpdCBpcyBwcm92aWRlZCBBUy1JUy4KICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgICovIAogCkBAIC04MTksNCArODE3LDMgQEAKICAgKiBAfQogICAqLwogCi0vKioqKioqKioqKioqKioqKioqKioqKioqIChDKSBDT1BZUklHSFQgU1RNaWNyb2VsZWN0cm9uaWNzICoqKioqRU5EIE9GIEZJTEUqKioqLwpkaWZmIC0tZ2l0IGEvU3JjL3N0bTMyZjd4eF9oYWxfZmxhc2hfZXguYyBiL1NyYy9zdG0zMmY3eHhfaGFsX2ZsYXNoX2V4LmMKaW5kZXggODM1ZTI3NS4uNWZhNzRhYSAxMDA2NDQKLS0tIGEvU3JjL3N0bTMyZjd4eF9oYWxfZmxhc2hfZXguYworKysgYi9TcmMvc3RtMzJmN3h4X2hhbF9mbGFzaF9leC5jCkBAIC00MiwxNCArNDIsMTIgQEAKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgICogQGF0dGVudGlvbgogICAqCi0gICogPGgyPjxjZW50ZXI+JmNvcHk7IENvcHlyaWdodCAoYykgMjAxNyBTVE1pY3JvZWxlY3Ryb25pY3MuCi0gICogQWxsIHJpZ2h0cyByZXNlcnZlZC48L2NlbnRlcj48L2gyPgorICAqIENvcHlyaWdodCAoYykgMjAxNyBTVE1pY3JvZWxlY3Ryb25pY3MuCisgICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgKgotICAqIFRoaXMgc29mdHdhcmUgY29tcG9uZW50IGlzIGxpY2Vuc2VkIGJ5IFNUIHVuZGVyIEJTRCAzLUNsYXVzZSBsaWNlbnNlLAotICAqIHRoZSAiTGljZW5zZSI7IFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUKLSAgKiBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQ6Ci0gICogICAgICAgICAgICAgICAgICAgICAgICBvcGVuc291cmNlLm9yZy9saWNlbnNlcy9CU0QtMy1DbGF1c2UKLSAgKgorICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgdW5kZXIgdGVybXMgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbgorICAqIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvZnR3YXJlIGNvbXBvbmVudC4KKyAgKiBJZiBubyBMSUNFTlNFIGZpbGUgY29tZXMgd2l0aCB0aGlzIHNvZnR3YXJlLCBpdCBpcyBwcm92aWRlZCBBUy1JUy4KICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgICovIAogCkBAIC0xMTE5LDQgKzExMTcsMyBAQAogICAqIEB9CiAgICovCiAKLS8qKioqKioqKioqKioqKioqKioqKioqKiogKEMpIENPUFlSSUdIVCBTVE1pY3JvZWxlY3Ryb25pY3MgKioqKipFTkQgT0YgRklMRSoqKiovCmRpZmYgLS1naXQgYS9TcmMvc3RtMzJmN3h4X2hhbF9ncGlvLmMgYi9TcmMvc3RtMzJmN3h4X2hhbF9ncGlvLmMKaW5kZXggYzlkNGMxMi4uZDM1NGNkZSAxMDA2NDQKLS0tIGEvU3JjL3N0bTMyZjd4eF9oYWxfZ3Bpby5jCisrKyBiL1NyYy9zdG0zMmY3eHhfaGFsX2dwaW8uYwpAQCAtOCw2ICs4LDE3IEBACiAgICogICAgICAgICAgICsgSW5pdGlhbGl6YXRpb24gYW5kIGRlLWluaXRpYWxpemF0aW9uIGZ1bmN0aW9ucwogICAqICAgICAgICAgICArIElPIG9wZXJhdGlvbiBmdW5jdGlvbnMKICAgKgorICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgKiBAYXR0ZW50aW9uCisgICoKKyAgKiBDb3B5cmlnaHQgKGMpIDIwMTcgU1RNaWNyb2VsZWN0cm9uaWNzLgorICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgICoKKyAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIHVuZGVyIHRlcm1zIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUKKyAgKiBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb2Z0d2FyZSBjb21wb25lbnQuCisgICogSWYgbm8gTElDRU5TRSBmaWxlIGNvbWVzIHdpdGggdGhpcyBzb2Z0d2FyZSwgaXQgaXMgcHJvdmlkZWQgQVMtSVMuCisgICoKKyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgIEB2ZXJiYXRpbQogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgICAgICAgICAgICAgICAgICAgIyMjIyMgR1BJTyBQZXJpcGhlcmFsIGZlYXR1cmVzICMjIyMjCkBAIC05MSwxNyArMTAyLDYgQEAKICAgCiAgIEBlbmR2ZXJiYXRpbQogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAgKiBAYXR0ZW50aW9uCi0gICoKLSAgKiA8aDI+PGNlbnRlcj4mY29weTsgQ29weXJpZ2h0IChjKSAyMDE3IFNUTWljcm9lbGVjdHJvbmljcy4KLSAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLjwvY2VudGVyPjwvaDI+Ci0gICoKLSAgKiBUaGlzIHNvZnR3YXJlIGNvbXBvbmVudCBpcyBsaWNlbnNlZCBieSBTVCB1bmRlciBCU0QgMy1DbGF1c2UgbGljZW5zZSwKLSAgKiB0aGUgIkxpY2Vuc2UiOyBZb3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlCi0gICogTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0OgotICAqICAgICAgICAgICAgICAgICAgICAgICAgb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvQlNELTMtQ2xhdXNlCi0gICoKLSAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgICovIAogCiAvKiBJbmNsdWRlcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwpAQCAtMTIzLDEzICsxMjMsNiBAQAogLyoqIEBhZGR0b2dyb3VwIEdQSU9fUHJpdmF0ZV9Db25zdGFudHMgR1BJTyBQcml2YXRlIENvbnN0YW50cwogICAqIEB7CiAgICovCi0jZGVmaW5lIEdQSU9fTU9ERSAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDNVKQotI2RlZmluZSBFWFRJX01PREUgICAgICAgICAgICAgKCh1aW50MzJfdCkweDEwMDAwMDAwVSkKLSNkZWZpbmUgR1BJT19NT0RFX0lUICAgICAgICAgICgodWludDMyX3QpMHgwMDAxMDAwMFUpCi0jZGVmaW5lIEdQSU9fTU9ERV9FVlQgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMjAwMDBVKQotI2RlZmluZSBSSVNJTkdfRURHRSAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMTAwMDAwVSkKLSNkZWZpbmUgRkFMTElOR19FREdFICAgICAgICAgICgodWludDMyX3QpMHgwMDIwMDAwMFUpCi0jZGVmaW5lIEdQSU9fT1VUUFVUX1RZUEUgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMTBVKQogCiAjZGVmaW5lIEdQSU9fTlVNQkVSICAgICAgICAgICAoKHVpbnQzMl90KTE2VSkKIC8qKgpAQCAtMTc3LDcgKzE3MCw2IEBACiAgIGFzc2VydF9wYXJhbShJU19HUElPX0FMTF9JTlNUQU5DRShHUElPeCkpOwogICBhc3NlcnRfcGFyYW0oSVNfR1BJT19QSU4oR1BJT19Jbml0LT5QaW4pKTsKICAgYXNzZXJ0X3BhcmFtKElTX0dQSU9fTU9ERShHUElPX0luaXQtPk1vZGUpKTsKLSAgYXNzZXJ0X3BhcmFtKElTX0dQSU9fUFVMTChHUElPX0luaXQtPlB1bGwpKTsKIAogICAvKiBDb25maWd1cmUgdGhlIHBvcnQgcGlucyAqLwogICBmb3IocG9zaXRpb24gPSAwOyBwb3NpdGlvbiA8IEdQSU9fTlVNQkVSOyBwb3NpdGlvbisrKQpAQCAtMTkxLDggKzE4Myw3IEBACiAgICAgewogICAgICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0gR1BJTyBNb2RlIENvbmZpZ3VyYXRpb24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KICAgICAgIC8qIEluIGNhc2Ugb2YgT3V0cHV0IG9yIEFsdGVybmF0ZSBmdW5jdGlvbiBtb2RlIHNlbGVjdGlvbiAqLwotICAgICAgaWYoKEdQSU9fSW5pdC0+TW9kZSA9PSBHUElPX01PREVfT1VUUFVUX1BQKSB8fCAoR1BJT19Jbml0LT5Nb2RlID09IEdQSU9fTU9ERV9BRl9QUCkgfHwKLSAgICAgICAgIChHUElPX0luaXQtPk1vZGUgPT0gR1BJT19NT0RFX09VVFBVVF9PRCkgfHwgKEdQSU9fSW5pdC0+TW9kZSA9PSBHUElPX01PREVfQUZfT0QpKQorICAgICAgaWYoKChHUElPX0luaXQtPk1vZGUgJiBHUElPX01PREUpID09IE1PREVfT1VUUFVUKSB8fCAoKEdQSU9fSW5pdC0+TW9kZSAmIEdQSU9fTU9ERSkgPT0gTU9ERV9BRikpCiAgICAgICB7CiAgICAgICAgIC8qIENoZWNrIHRoZSBTcGVlZCBwYXJhbWV0ZXIgKi8KICAgICAgICAgYXNzZXJ0X3BhcmFtKElTX0dQSU9fU1BFRUQoR1BJT19Jbml0LT5TcGVlZCkpOwpAQCAtMjA1LDE4ICsxOTYsMjQgQEAKICAgICAgICAgLyogQ29uZmlndXJlIHRoZSBJTyBPdXRwdXQgVHlwZSAqLwogICAgICAgICB0ZW1wID0gR1BJT3gtPk9UWVBFUjsKICAgICAgICAgdGVtcCAmPSB+KEdQSU9fT1RZUEVSX09UXzAgPDwgcG9zaXRpb24pIDsKLSAgICAgICAgdGVtcCB8PSAoKChHUElPX0luaXQtPk1vZGUgJiBHUElPX09VVFBVVF9UWVBFKSA+PiA0KSA8PCBwb3NpdGlvbik7CisgICAgICAgIHRlbXAgfD0gKCgoR1BJT19Jbml0LT5Nb2RlICYgT1VUUFVUX1RZUEUpID4+IE9VVFBVVF9UWVBFX1BvcykgPDwgcG9zaXRpb24pOwogICAgICAgICBHUElPeC0+T1RZUEVSID0gdGVtcDsKICAgICAgIH0KKyAgICAgIAorICAgICAgaWYoKEdQSU9fSW5pdC0+TW9kZSAmIEdQSU9fTU9ERSkgIT0gTU9ERV9BTkFMT0cpCisgICAgICB7CisgICAgICAgIC8qIENoZWNrIHRoZSBQdWxsIHBhcmFtZXRlciAqLworICAgICAgICBhc3NlcnRfcGFyYW0oSVNfR1BJT19QVUxMKEdQSU9fSW5pdC0+UHVsbCkpOwogCi0gICAgICAvKiBBY3RpdmF0ZSB0aGUgUHVsbC11cCBvciBQdWxsIGRvd24gcmVzaXN0b3IgZm9yIHRoZSBjdXJyZW50IElPICovCi0gICAgICB0ZW1wID0gR1BJT3gtPlBVUERSOwotICAgICAgdGVtcCAmPSB+KEdQSU9fUFVQRFJfUFVQRFIwIDw8IChwb3NpdGlvbiAqIDIpKTsKLSAgICAgIHRlbXAgfD0gKChHUElPX0luaXQtPlB1bGwpIDw8IChwb3NpdGlvbiAqIDIpKTsKLSAgICAgIEdQSU94LT5QVVBEUiA9IHRlbXA7CisgICAgICAgIC8qIEFjdGl2YXRlIHRoZSBQdWxsLXVwIG9yIFB1bGwgZG93biByZXNpc3RvciBmb3IgdGhlIGN1cnJlbnQgSU8gKi8KKyAgICAgICAgdGVtcCA9IEdQSU94LT5QVVBEUjsKKyAgICAgICAgdGVtcCAmPSB+KEdQSU9fUFVQRFJfUFVQRFIwIDw8IChwb3NpdGlvbiAqIDIpKTsKKyAgICAgICAgdGVtcCB8PSAoKEdQSU9fSW5pdC0+UHVsbCkgPDwgKHBvc2l0aW9uICogMikpOworICAgICAgICBHUElPeC0+UFVQRFIgPSB0ZW1wOworICAgICAgfQogCiAgICAgICAvKiBJbiBjYXNlIG9mIEFsdGVybmF0ZSBmdW5jdGlvbiBtb2RlIHNlbGVjdGlvbiAqLwotICAgICAgaWYoKEdQSU9fSW5pdC0+TW9kZSA9PSBHUElPX01PREVfQUZfUFApIHx8IChHUElPX0luaXQtPk1vZGUgPT0gR1BJT19NT0RFX0FGX09EKSkKKyAgICAgIGlmKChHUElPX0luaXQtPk1vZGUgJiBHUElPX01PREUpID09IE1PREVfQUYpCiAgICAgICB7CiAgICAgICAgIC8qIENoZWNrIHRoZSBBbHRlcm5hdGUgZnVuY3Rpb24gcGFyYW1ldGVyICovCiAgICAgICAgIGFzc2VydF9wYXJhbShJU19HUElPX0FGKEdQSU9fSW5pdC0+QWx0ZXJuYXRlKSk7CkBAIC0yMzYsNyArMjMzLDcgQEAKIAogICAgICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0gRVhUSSBNb2RlIENvbmZpZ3VyYXRpb24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KICAgICAgIC8qIENvbmZpZ3VyZSB0aGUgRXh0ZXJuYWwgSW50ZXJydXB0IG9yIGV2ZW50IGZvciB0aGUgY3VycmVudCBJTyAqLwotICAgICAgaWYoKEdQSU9fSW5pdC0+TW9kZSAmIEVYVElfTU9ERSkgPT0gRVhUSV9NT0RFKQorICAgICAgaWYoKEdQSU9fSW5pdC0+TW9kZSAmIEVYVElfTU9ERSkgIT0gMHgwMHUpCiAgICAgICB7CiAgICAgICAgIC8qIEVuYWJsZSBTWVNDRkcgQ2xvY2sgKi8KICAgICAgICAgX19IQUxfUkNDX1NZU0NGR19DTEtfRU5BQkxFKCk7CkBAIC0yNDYsMjcgKzI0MywxMCBAQAogICAgICAgICB0ZW1wIHw9ICgodWludDMyX3QpKEdQSU9fR0VUX0lOREVYKEdQSU94KSkgPDwgKDQgKiAocG9zaXRpb24gJiAweDAzKSkpOwogICAgICAgICBTWVNDRkctPkVYVElDUltwb3NpdGlvbiA+PiAyXSA9IHRlbXA7CiAKLSAgICAgICAgLyogQ2xlYXIgRVhUSSBsaW5lIGNvbmZpZ3VyYXRpb24gKi8KLSAgICAgICAgdGVtcCA9IEVYVEktPklNUjsKLSAgICAgICAgdGVtcCAmPSB+KCh1aW50MzJfdClpb2N1cnJlbnQpOwotICAgICAgICBpZigoR1BJT19Jbml0LT5Nb2RlICYgR1BJT19NT0RFX0lUKSA9PSBHUElPX01PREVfSVQpCi0gICAgICAgIHsKLSAgICAgICAgICB0ZW1wIHw9IGlvY3VycmVudDsKLSAgICAgICAgfQotICAgICAgICBFWFRJLT5JTVIgPSB0ZW1wOwotCi0gICAgICAgIHRlbXAgPSBFWFRJLT5FTVI7Ci0gICAgICAgIHRlbXAgJj0gfigodWludDMyX3QpaW9jdXJyZW50KTsKLSAgICAgICAgaWYoKEdQSU9fSW5pdC0+TW9kZSAmIEdQSU9fTU9ERV9FVlQpID09IEdQSU9fTU9ERV9FVlQpCi0gICAgICAgIHsKLSAgICAgICAgICB0ZW1wIHw9IGlvY3VycmVudDsKLSAgICAgICAgfQotICAgICAgICBFWFRJLT5FTVIgPSB0ZW1wOwotCiAgICAgICAgIC8qIENsZWFyIFJpc2luZyBGYWxsaW5nIGVkZ2UgY29uZmlndXJhdGlvbiAqLwogICAgICAgICB0ZW1wID0gRVhUSS0+UlRTUjsKICAgICAgICAgdGVtcCAmPSB+KCh1aW50MzJfdClpb2N1cnJlbnQpOwotICAgICAgICBpZigoR1BJT19Jbml0LT5Nb2RlICYgUklTSU5HX0VER0UpID09IFJJU0lOR19FREdFKQorICAgICAgICBpZigoR1BJT19Jbml0LT5Nb2RlICYgVFJJR0dFUl9SSVNJTkcpICE9IDB4MDB1KQogICAgICAgICB7CiAgICAgICAgICAgdGVtcCB8PSBpb2N1cnJlbnQ7CiAgICAgICAgIH0KQEAgLTI3NCwxMSArMjU0LDI4IEBACiAKICAgICAgICAgdGVtcCA9IEVYVEktPkZUU1I7CiAgICAgICAgIHRlbXAgJj0gfigodWludDMyX3QpaW9jdXJyZW50KTsKLSAgICAgICAgaWYoKEdQSU9fSW5pdC0+TW9kZSAmIEZBTExJTkdfRURHRSkgPT0gRkFMTElOR19FREdFKQorICAgICAgICBpZigoR1BJT19Jbml0LT5Nb2RlICYgVFJJR0dFUl9GQUxMSU5HKSAhPSAweDAwdSkKICAgICAgICAgewogICAgICAgICAgIHRlbXAgfD0gaW9jdXJyZW50OwogICAgICAgICB9CiAgICAgICAgIEVYVEktPkZUU1IgPSB0ZW1wOworCisgICAgICAgIHRlbXAgPSBFWFRJLT5FTVI7CisgICAgICAgIHRlbXAgJj0gfigodWludDMyX3QpaW9jdXJyZW50KTsKKyAgICAgICAgaWYoKEdQSU9fSW5pdC0+TW9kZSAmIEVYVElfRVZUKSAhPSAweDAwdSkKKyAgICAgICAgeworICAgICAgICAgIHRlbXAgfD0gaW9jdXJyZW50OworICAgICAgICB9CisgICAgICAgIEVYVEktPkVNUiA9IHRlbXA7CisKKyAgICAgICAgLyogQ2xlYXIgRVhUSSBsaW5lIGNvbmZpZ3VyYXRpb24gKi8KKyAgICAgICAgdGVtcCA9IEVYVEktPklNUjsKKyAgICAgICAgdGVtcCAmPSB+KCh1aW50MzJfdClpb2N1cnJlbnQpOworICAgICAgICBpZigoR1BJT19Jbml0LT5Nb2RlICYgRVhUSV9JVCkgIT0gMHgwMHUpCisgICAgICAgIHsKKyAgICAgICAgICB0ZW1wIHw9IGlvY3VycmVudDsKKyAgICAgICAgfQorICAgICAgICBFWFRJLT5JTVIgPSB0ZW1wOwogICAgICAgfQogICAgIH0KICAgfQpAQCAtMzIxLDggKzMxOCw4IEBACiAgICAgICAgIEVYVEktPkVNUiAmPSB+KCh1aW50MzJfdClpb2N1cnJlbnQpOwogCiAgICAgICAgIC8qIENsZWFyIFJpc2luZyBGYWxsaW5nIGVkZ2UgY29uZmlndXJhdGlvbiAqLwotICAgICAgICBFWFRJLT5SVFNSICY9IH4oKHVpbnQzMl90KWlvY3VycmVudCk7CiAgICAgICAgIEVYVEktPkZUU1IgJj0gfigodWludDMyX3QpaW9jdXJyZW50KTsKKyAgICAgICAgRVhUSS0+UlRTUiAmPSB+KCh1aW50MzJfdClpb2N1cnJlbnQpOwogCiAgICAgICAgIC8qIENvbmZpZ3VyZSB0aGUgRXh0ZXJuYWwgSW50ZXJydXB0IG9yIGV2ZW50IGZvciB0aGUgY3VycmVudCBJTyAqLwogICAgICAgICB0bXAgPSAoKHVpbnQzMl90KTB4MEYpIDw8ICg0ICogKHBvc2l0aW9uICYgMHgwMykpOwpAQCAtNTI4LDQgKzUyNSwzIEBACiAgICogQH0KICAgKi8KIAotLyoqKioqKioqKioqKioqKioqKioqKioqKiAoQykgQ09QWVJJR0hUIFNUTWljcm9lbGVjdHJvbmljcyAqKioqKkVORCBPRiBGSUxFKioqKi8KZGlmZiAtLWdpdCBhL1NyYy9zdG0zMmY3eHhfaGFsX2hhc2guYyBiL1NyYy9zdG0zMmY3eHhfaGFsX2hhc2guYwppbmRleCA1MjFlMzk1Li41Yjk0Zjg2IDEwMDY0NAotLS0gYS9TcmMvc3RtMzJmN3h4X2hhbF9oYXNoLmMKKysrIGIvU3JjL3N0bTMyZjd4eF9oYWxfaGFzaC5jCkBAIC0xMiw2ICsxMiwxNyBAQAogICAqICAgICAgICAgICArIFBlcmlwaGVyYWwgU3RhdGUgbWV0aG9kcwogICAqICAgICAgICAgICArIEhBU0ggb3IgSE1BQyBwcm9jZXNzaW5nIHN1c3BlbnNpb24vcmVzdW1wdGlvbgogICAqCisgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAqIEBhdHRlbnRpb24KKyAgKgorICAqIENvcHlyaWdodCAoYykgMjAxNyBTVE1pY3JvZWxlY3Ryb25pY3MuCisgICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAgKgorICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgdW5kZXIgdGVybXMgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZQorICAqIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvZnR3YXJlIGNvbXBvbmVudC4KKyAgKiBJZiBubyBMSUNFTlNFIGZpbGUgY29tZXMgd2l0aCB0aGlzIHNvZnR3YXJlLCBpdCBpcyBwcm92aWRlZCBBUy1JUy4KKyAgKgorICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgQHZlcmJhdGltCiAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICAgICAgICAgICAgICAgICAgICAgIyMjIyMgSG93IHRvIHVzZSB0aGlzIGRyaXZlciAjIyMjIwpAQCAtMTQ3LDkgKzE1OCw5IEBACiAgICAgIFsuLl0KICAgICAgICgjKSBUaGUgY29tcGlsYXRpb24gZGVmaW5lICBVU0VfSEFMX0hBU0hfUkVHSVNURVJfQ0FMTEJBQ0tTIHdoZW4gc2V0IHRvIDEKICAgICAgICAgICBhbGxvd3MgdGhlIHVzZXIgdG8gY29uZmlndXJlIGR5bmFtaWNhbGx5IHRoZSBkcml2ZXIgY2FsbGJhY2tzLgotICAgICAgICAgIFVzZSBmdW5jdGlvbiBAcmVmIEhBTF9IQVNIX1JlZ2lzdGVyQ2FsbGJhY2soKSB0byByZWdpc3RlciBhIHVzZXIgY2FsbGJhY2suCisgICAgICAgICAgVXNlIGZ1bmN0aW9uIEhBTF9IQVNIX1JlZ2lzdGVyQ2FsbGJhY2soKSB0byByZWdpc3RlciBhIHVzZXIgY2FsbGJhY2suCiAKLSAgICAgICgjKSBGdW5jdGlvbiBAcmVmIEhBTF9IQVNIX1JlZ2lzdGVyQ2FsbGJhY2soKSBhbGxvd3MgdG8gcmVnaXN0ZXIgZm9sbG93aW5nIGNhbGxiYWNrczoKKyAgICAgICgjKSBGdW5jdGlvbiBIQUxfSEFTSF9SZWdpc3RlckNhbGxiYWNrKCkgYWxsb3dzIHRvIHJlZ2lzdGVyIGZvbGxvd2luZyBjYWxsYmFja3M6CiAgICAgICAgICAgICAoKykgSW5DcGx0Q2FsbGJhY2sgICAgOiBjYWxsYmFjayBmb3IgaW5wdXQgY29tcGxldGlvbi4KICAgICAgICAgICAgICgrKSBEZ3N0Q3BsdENhbGxiYWNrICA6IGNhbGxiYWNrIGZvciBkaWdlc3QgY29tcHV0YXRpb24gY29tcGxldGlvbi4KICAgICAgICAgICAgICgrKSBFcnJvckNhbGxiYWNrICAgICA6IGNhbGxiYWNrIGZvciBlcnJvci4KQEAgLTE1OCw5ICsxNjksOSBAQAogICAgICAgICAgIFRoaXMgZnVuY3Rpb24gdGFrZXMgYXMgcGFyYW1ldGVycyB0aGUgSEFMIHBlcmlwaGVyYWwgaGFuZGxlLCB0aGUgQ2FsbGJhY2sgSUQKICAgICAgICAgICBhbmQgYSBwb2ludGVyIHRvIHRoZSB1c2VyIGNhbGxiYWNrIGZ1bmN0aW9uLgogCi0gICAgICAoIykgVXNlIGZ1bmN0aW9uIEByZWYgSEFMX0hBU0hfVW5SZWdpc3RlckNhbGxiYWNrKCkgdG8gcmVzZXQgYSBjYWxsYmFjayB0byB0aGUgZGVmYXVsdAorICAgICAgKCMpIFVzZSBmdW5jdGlvbiBIQUxfSEFTSF9VblJlZ2lzdGVyQ2FsbGJhY2soKSB0byByZXNldCBhIGNhbGxiYWNrIHRvIHRoZSBkZWZhdWx0CiAgICAgICAgICAgd2VhayAoc3VyY2hhcmdlZCkgZnVuY3Rpb24uCi0gICAgICAgICAgQHJlZiBIQUxfSEFTSF9VblJlZ2lzdGVyQ2FsbGJhY2soKSB0YWtlcyBhcyBwYXJhbWV0ZXJzIHRoZSBIQUwgcGVyaXBoZXJhbCBoYW5kbGUsCisgICAgICAgICAgSEFMX0hBU0hfVW5SZWdpc3RlckNhbGxiYWNrKCkgdGFrZXMgYXMgcGFyYW1ldGVycyB0aGUgSEFMIHBlcmlwaGVyYWwgaGFuZGxlLAogICAgICAgICAgIGFuZCB0aGUgQ2FsbGJhY2sgSUQuCiAgICAgICAgICAgVGhpcyBmdW5jdGlvbiBhbGxvd3MgdG8gcmVzZXQgZm9sbG93aW5nIGNhbGxiYWNrczoKICAgICAgICAgICAgICgrKSBJbkNwbHRDYWxsYmFjayAgICA6IGNhbGxiYWNrIGZvciBpbnB1dCBjb21wbGV0aW9uLgpAQCAtMTY5LDEzICsxODAsMTMgQEAKICAgICAgICAgICAgICgrKSBNc3BJbml0Q2FsbGJhY2sgICA6IEhBU0ggTXNwSW5pdC4KICAgICAgICAgICAgICgrKSBNc3BEZUluaXRDYWxsYmFjayA6IEhBU0ggTXNwRGVJbml0LgogCi0gICAgICAoIykgQnkgZGVmYXVsdCwgYWZ0ZXIgdGhlIEByZWYgSEFMX0hBU0hfSW5pdCBhbmQgaWYgdGhlIHN0YXRlIGlzIEhBTF9IQVNIX1NUQVRFX1JFU0VUCisgICAgICAoIykgQnkgZGVmYXVsdCwgYWZ0ZXIgdGhlIEhBTF9IQVNIX0luaXQgYW5kIGlmIHRoZSBzdGF0ZSBpcyBIQUxfSEFTSF9TVEFURV9SRVNFVAogICAgICAgICAgIGFsbCBjYWxsYmFja3MgYXJlIHJlc2V0IHRvIHRoZSBjb3JyZXNwb25kaW5nIGxlZ2FjeSB3ZWFrIChzdXJjaGFyZ2VkKSBmdW5jdGlvbnM6Ci0gICAgICAgICAgZXhhbXBsZXMgQHJlZiBIQUxfSEFTSF9JbkNwbHRDYWxsYmFjaygpLCBAcmVmIEhBTF9IQVNIX0Rnc3RDcGx0Q2FsbGJhY2soKQorICAgICAgICAgIGV4YW1wbGVzIEhBTF9IQVNIX0luQ3BsdENhbGxiYWNrKCksIEhBTF9IQVNIX0Rnc3RDcGx0Q2FsbGJhY2soKQogICAgICAgICAgIEV4Y2VwdGlvbiBkb25lIGZvciBNc3BJbml0IGFuZCBNc3BEZUluaXQgY2FsbGJhY2tzIHRoYXQgYXJlIHJlc3BlY3RpdmVseQotICAgICAgICAgIHJlc2V0IHRvIHRoZSBsZWdhY3kgd2VhayAoc3VyY2hhcmdlZCkgZnVuY3Rpb25zIGluIHRoZSBAcmVmIEhBTF9IQVNIX0luaXQKLSAgICAgICAgICBhbmQgQHJlZiBIQUxfSEFTSF9EZUluaXQgb25seSB3aGVuIHRoZXNlIGNhbGxiYWNrcyBhcmUgbnVsbCAobm90IHJlZ2lzdGVyZWQgYmVmb3JlaGFuZCkKLSAgICAgICAgICBJZiBub3QsIE1zcEluaXQgb3IgTXNwRGVJbml0IGFyZSBub3QgbnVsbCwgdGhlIEByZWYgSEFMX0hBU0hfSW5pdCBhbmQgQHJlZiBIQUxfSEFTSF9EZUluaXQKKyAgICAgICAgICByZXNldCB0byB0aGUgbGVnYWN5IHdlYWsgKHN1cmNoYXJnZWQpIGZ1bmN0aW9ucyBpbiB0aGUgSEFMX0hBU0hfSW5pdAorICAgICAgICAgIGFuZCBIQUxfSEFTSF9EZUluaXQgb25seSB3aGVuIHRoZXNlIGNhbGxiYWNrcyBhcmUgbnVsbCAobm90IHJlZ2lzdGVyZWQgYmVmb3JlaGFuZCkKKyAgICAgICAgICBJZiBub3QsIE1zcEluaXQgb3IgTXNwRGVJbml0IGFyZSBub3QgbnVsbCwgdGhlIEhBTF9IQVNIX0luaXQgYW5kIEhBTF9IQVNIX0RlSW5pdAogICAgICAgICAgIGtlZXAgYW5kIHVzZSB0aGUgdXNlciBNc3BJbml0L01zcERlSW5pdCBjYWxsYmFja3MgKHJlZ2lzdGVyZWQgYmVmb3JlaGFuZCkuCiAKICAgICAgICAgICBDYWxsYmFja3MgY2FuIGJlIHJlZ2lzdGVyZWQvdW5yZWdpc3RlcmVkIGluIFJFQURZIHN0YXRlIG9ubHkuCkBAIC0xODMsOCArMTk0LDggQEAKICAgICAgICAgICBpbiBSRUFEWSBvciBSRVNFVCBzdGF0ZSwgdGh1cyByZWdpc3RlcmVkICh1c2VyKSBNc3BJbml0L0RlSW5pdCBjYWxsYmFja3MgY2FuIGJlIHVzZWQKICAgICAgICAgICBkdXJpbmcgdGhlIEluaXQvRGVJbml0LgogICAgICAgICAgIEluIHRoYXQgY2FzZSBmaXJzdCByZWdpc3RlciB0aGUgTXNwSW5pdC9Nc3BEZUluaXQgdXNlciBjYWxsYmFja3MKLSAgICAgICAgICB1c2luZyBAcmVmIEhBTF9IQVNIX1JlZ2lzdGVyQ2FsbGJhY2sgYmVmb3JlIGNhbGxpbmcgQHJlZiBIQUxfSEFTSF9EZUluaXQKLSAgICAgICAgICBvciBAcmVmIEhBTF9IQVNIX0luaXQgZnVuY3Rpb24uCisgICAgICAgICAgdXNpbmcgSEFMX0hBU0hfUmVnaXN0ZXJDYWxsYmFjayBiZWZvcmUgY2FsbGluZyBIQUxfSEFTSF9EZUluaXQKKyAgICAgICAgICBvciBIQUxfSEFTSF9Jbml0IGZ1bmN0aW9uLgogCiAgICAgICAgICAgV2hlbiBUaGUgY29tcGlsYXRpb24gZGVmaW5lIFVTRV9IQUxfSEFTSF9SRUdJU1RFUl9DQUxMQkFDS1MgaXMgc2V0IHRvIDAgb3IKICAgICAgICAgICBub3QgZGVmaW5lZCwgdGhlIGNhbGxiYWNrIHJlZ2lzdGVyaW5nIGZlYXR1cmUgaXMgbm90IGF2YWlsYWJsZQpAQCAtMTkyLDE3ICsyMDMsNiBAQAogCiAgIEBlbmR2ZXJiYXRpbQogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAgKiBAYXR0ZW50aW9uCi0gICoKLSAgKiA8aDI+PGNlbnRlcj4mY29weTsgQ29weXJpZ2h0IChjKSAyMDE3IFNUTWljcm9lbGVjdHJvbmljcy4KLSAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLjwvY2VudGVyPjwvaDI+Ci0gICoKLSAgKiBUaGlzIHNvZnR3YXJlIGNvbXBvbmVudCBpcyBsaWNlbnNlZCBieSBTVCB1bmRlciBCU0QgMy1DbGF1c2UgbGljZW5zZSwKLSAgKiB0aGUgIkxpY2Vuc2UiOyBZb3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlCi0gICogTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0OgotICAqICAgICAgICAgICAgICAgICAgICAgICAgb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvQlNELTMtQ2xhdXNlCi0gICoKLSAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgICovCiAKIC8qIEluY2x1ZGVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCkBAIC0xNzYwLDggKzE3NjAsNiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKChidWZmZXJzaXplICUgNFUpICE9IDBVKSA/ICgoYnVmZmVyc2l6ZSArICg0VSAtIChidWZmZXJzaXplICUgNFUpKSkgLyA0VSkgOiBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYnVmZmVyc2l6ZSAvIDRVKSkpOwogCi0KLQogICAgICAgLyogRW5hYmxlIERNQSByZXF1ZXN0cyAqLwogICAgICAgU0VUX0JJVChIQVNILT5DUiwgSEFTSF9DUl9ETUFFKTsKIApAQCAtMjg5Niw4ICsyODk0LDggQEAKICAgICAgICAgICAgVXBkYXRlIEhhc2hJbkNvdW50IGFuZCBwSGFzaEluQnVmZlB0ciBhY2NvcmRpbmdseS4gKi8KICAgICAgICAgaGhhc2gtPkhhc2hJbkNvdW50ID0gU2l6ZVZhcjsKICAgICAgICAgaGhhc2gtPnBIYXNoSW5CdWZmUHRyID0gKHVpbnQ4X3QgKilpbnB1dGFkZHI7Ci0gICAgICAgIF9fSEFMX0hBU0hfU0VUX05CVkFMSURCSVRTKAotICAgICAgICAgIFNpemVWYXIpOyAgLyogVXBkYXRlIHRoZSBjb25maWd1cmF0aW9uIG9mIHRoZSBudW1iZXIgb2YgdmFsaWQgYml0cyBpbiBsYXN0IHdvcmQgb2YgdGhlIG1lc3NhZ2UgKi8KKyAgICAgICAgLyogVXBkYXRlIHRoZSBjb25maWd1cmF0aW9uIG9mIHRoZSBudW1iZXIgb2YgdmFsaWQgYml0cyBpbiBsYXN0IHdvcmQgb2YgdGhlIG1lc3NhZ2UgKi8KKyAgICAgICAgX19IQUxfSEFTSF9TRVRfTkJWQUxJREJJVFMoU2l6ZVZhcik7CiAgICAgICAgIGhoYXNoLT5wSGFzaE91dEJ1ZmZQdHIgPSBwT3V0QnVmZmVyOyAgLyogUG9pbnRzIGF0IHRoZSBjb21wdXRlZCBkaWdlc3QgKi8KICAgICAgICAgaWYgKGluaXRpYWxpemF0aW9uX3NraXBwZWQgPT0gMVUpCiAgICAgICAgIHsKQEAgLTI5NjUsMTEgKzI5NjMsMTEgQEAKICAgSEFMX1N0YXR1c1R5cGVEZWYgc3RhdHVzIDsKICAgSEFMX0hBU0hfU3RhdGVUeXBlRGVmIFN0YXRlX3RtcCA9IGhoYXNoLT5TdGF0ZTsKIAotICAKKwogICAvKiBNYWtlIHN1cmUgdGhlIGlucHV0IGJ1ZmZlciBzaXplIChpbiBieXRlcykgaXMgYSBtdWx0aXBsZSBvZiA0IHdoZW4gTURNQVQgYml0IGlzIHNldAogICAgICAoY2FzZSBvZiBtdWx0aS1idWZmZXIgSEFTSCBwcm9jZXNzaW5nKSAqLwogICBhc3NlcnRfcGFyYW0oSVNfSEFTSF9ETUFfTVVMVElCVUZGRVJfU0laRShTaXplKSk7Ci0gIAorCiAgIC8qIElmIFN0YXRlIGlzIHJlYWR5IG9yIHN1c3BlbmRlZCwgc3RhcnQgb3IgcmVzdW1lIHBvbGxpbmctYmFzZWQgSEFTSCBwcm9jZXNzaW5nICovCiAgIGlmICgoU3RhdGVfdG1wID09IEhBTF9IQVNIX1NUQVRFX1JFQURZKSB8fCAoU3RhdGVfdG1wID09IEhBTF9IQVNIX1NUQVRFX1NVU1BFTkRFRCkpCiAgIHsKQEAgLTM0NDksNiArMzQ0Nyw3IEBACiAgICAgc3RhdHVzID0gSEFMX0RNQV9TdGFydF9JVChoaGFzaC0+aGRtYWluLCBpbnB1dGFkZHIsICh1aW50MzJfdCkmSEFTSC0+RElOLCAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCgoaW5wdXRTaXplICUgNFUpICE9IDBVKSA/ICgoaW5wdXRTaXplICsgKDRVIC0gKGlucHV0U2l6ZSAlIDRVKSkpIC8gNFUpIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogKGlucHV0U2l6ZSAvIDRVKSkpOworCiAgICAgLyogRW5hYmxlIERNQSByZXF1ZXN0cyAqLwogICAgIFNFVF9CSVQoSEFTSC0+Q1IsIEhBU0hfQ1JfRE1BRSk7CiAKQEAgLTM0ODQsNiArMzQ4MywzIEBACiAgICogQH0KICAgKi8KIAotCi0KLS8qKioqKioqKioqKioqKioqKioqKioqKiogKEMpIENPUFlSSUdIVCBTVE1pY3JvZWxlY3Ryb25pY3MgKioqKipFTkQgT0YgRklMRSoqKiovCmRpZmYgLS1naXQgYS9TcmMvc3RtMzJmN3h4X2hhbF9oYXNoX2V4LmMgYi9TcmMvc3RtMzJmN3h4X2hhbF9oYXNoX2V4LmMKaW5kZXggNzhmMWY0ZS4uZTZlNjA2MyAxMDA2NDQKLS0tIGEvU3JjL3N0bTMyZjd4eF9oYWxfaGFzaF9leC5jCisrKyBiL1NyYy9zdG0zMmY3eHhfaGFsX2hhc2hfZXguYwpAQCAtMTQsNiArMTQsMTcgQEAKICAgKiAgICAgICAgIGFuZCBTSEEtMjU2LgogICAqCiAgICoKKyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICogQGF0dGVudGlvbgorICAqCisgICogQ29weXJpZ2h0IChjKSAyMDE3IFNUTWljcm9lbGVjdHJvbmljcy4KKyAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICAqCisgICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCB1bmRlciB0ZXJtcyB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlCisgICogaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc29mdHdhcmUgY29tcG9uZW50LgorICAqIElmIG5vIExJQ0VOU0UgZmlsZSBjb21lcyB3aXRoIHRoaXMgc29mdHdhcmUsIGl0IGlzIHByb3ZpZGVkIEFTLUlTLgorICAqCisgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICBAdmVyYmF0aW0KICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgICAgICAgICAgICAgICAgICAgICAjIyMjIyBIQVNIIHBlcmlwaGVyYWwgZXh0ZW5kZWQgZmVhdHVyZXMgICMjIyMjCkBAIC02OSwxNyArODAsNiBAQAogCiAgIEBlbmR2ZXJiYXRpbQogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAgKiBAYXR0ZW50aW9uCi0gICoKLSAgKiA8aDI+PGNlbnRlcj4mY29weTsgQ29weXJpZ2h0IChjKSAyMDE3IFNUTWljcm9lbGVjdHJvbmljcy4KLSAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLjwvY2VudGVyPjwvaDI+Ci0gICoKLSAgKiBUaGlzIHNvZnR3YXJlIGNvbXBvbmVudCBpcyBsaWNlbnNlZCBieSBTVCB1bmRlciBCU0QgMy1DbGF1c2UgbGljZW5zZSwKLSAgKiB0aGUgIkxpY2Vuc2UiOyBZb3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlCi0gICogTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0OgotICAqICAgICAgICAgICAgICAgICAgICAgICAgb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvQlNELTMtQ2xhdXNlCi0gICoKLSAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgICovCiAKIC8qIEluY2x1ZGVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCkBAIC0xMDM4LDYgKzEwMzgsMyBAQAogICAqIEB9CiAgICovCiAKLQotCi0vKioqKioqKioqKioqKioqKioqKioqKioqIChDKSBDT1BZUklHSFQgU1RNaWNyb2VsZWN0cm9uaWNzICoqKioqRU5EIE9GIEZJTEUqKioqLwpkaWZmIC0tZ2l0IGEvU3JjL3N0bTMyZjd4eF9oYWxfaGNkLmMgYi9TcmMvc3RtMzJmN3h4X2hhbF9oY2QuYwppbmRleCA3ZGQ1ODE2Li5hZjAwNTFhIDEwMDY0NAotLS0gYS9TcmMvc3RtMzJmN3h4X2hhbF9oY2QuYworKysgYi9TcmMvc3RtMzJmN3h4X2hhbF9oY2QuYwpAQCAtMTAsNiArMTAsMTcgQEAKICAgKiAgICAgICAgICAgKyBQZXJpcGhlcmFsIENvbnRyb2wgZnVuY3Rpb25zCiAgICogICAgICAgICAgICsgUGVyaXBoZXJhbCBTdGF0ZSBmdW5jdGlvbnMKICAgKgorICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgKiBAYXR0ZW50aW9uCisgICoKKyAgKiBDb3B5cmlnaHQgKGMpIDIwMTcgU1RNaWNyb2VsZWN0cm9uaWNzLgorICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgICoKKyAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIHVuZGVyIHRlcm1zIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUKKyAgKiBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb2Z0d2FyZSBjb21wb25lbnQuCisgICogSWYgbm8gTElDRU5TRSBmaWxlIGNvbWVzIHdpdGggdGhpcyBzb2Z0d2FyZSwgaXQgaXMgcHJvdmlkZWQgQVMtSVMuCisgICoKKyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgIEB2ZXJiYXRpbQogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgICAgICAgICAgICAgICAgICAgIyMjIyMgSG93IHRvIHVzZSB0aGlzIGRyaXZlciAjIyMjIwpAQCAtNDAsMTcgKzUxLDYgQEAKIAogICBAZW5kdmVyYmF0aW0KICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gICogQGF0dGVudGlvbgotICAqCi0gICogPGgyPjxjZW50ZXI+JmNvcHk7IENvcHlyaWdodCAoYykgMjAxNyBTVE1pY3JvZWxlY3Ryb25pY3MuCi0gICogQWxsIHJpZ2h0cyByZXNlcnZlZC48L2NlbnRlcj48L2gyPgotICAqCi0gICogVGhpcyBzb2Z0d2FyZSBjb21wb25lbnQgaXMgbGljZW5zZWQgYnkgU1QgdW5kZXIgQlNEIDMtQ2xhdXNlIGxpY2Vuc2UsCi0gICogdGhlICJMaWNlbnNlIjsgWW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZQotICAqIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdDoKLSAgKiAgICAgICAgICAgICAgICAgICAgICAgIG9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0JTRC0zLUNsYXVzZQotICAqCi0gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAqLwogCiAvKiBJbmNsdWRlcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwpAQCAtNjEsNyArNjEsNiBAQAogICAqLwogCiAjaWZkZWYgSEFMX0hDRF9NT0RVTEVfRU5BQkxFRAotCiAjaWYgZGVmaW5lZCAoVVNCX09UR19GUykgfHwgZGVmaW5lZCAoVVNCX09UR19IUykKIAogLyoqIEBkZWZncm91cCBIQ0QgSENECkBAIC00OTUsNyArNDk0LDggQEAKIHsKICAgVVNCX09UR19HbG9iYWxUeXBlRGVmICpVU0J4ID0gaGhjZC0+SW5zdGFuY2U7CiAgIHVpbnQzMl90IFVTQnhfQkFTRSA9ICh1aW50MzJfdClVU0J4OwotICB1aW50MzJfdCBpLCBpbnRlcnJ1cHQ7CisgIHVpbnQzMl90IGk7CisgIHVpbnQzMl90IGludGVycnVwdDsKIAogICAvKiBFbnN1cmUgdGhhdCB3ZSBhcmUgaW4gZGV2aWNlIG1vZGUgKi8KICAgaWYgKFVTQl9HZXRNb2RlKGhoY2QtPkluc3RhbmNlKSA9PSBVU0JfT1RHX01PREVfSE9TVCkKQEAgLTUzNywxNCArNTM3LDE5IEBACiAKICAgICAgIGlmICgoVVNCeF9IUFJUMCAmIFVTQl9PVEdfSFBSVF9QQ1NUUykgPT0gMFUpCiAgICAgICB7CisgICAgICAgIC8qIEZsdXNoIFVTQiBGaWZvICovCisgICAgICAgICh2b2lkKVVTQl9GbHVzaFR4RmlmbyhVU0J4LCAweDEwVSk7CisgICAgICAgICh2b2lkKVVTQl9GbHVzaFJ4RmlmbyhVU0J4KTsKKworICAgICAgICAvKiBSZXN0b3JlIEZTIENsb2NrICovCisgICAgICAgICh2b2lkKVVTQl9Jbml0RlNMU1BDbGtTZWwoaGhjZC0+SW5zdGFuY2UsIEhDRkdfNDhfTUhaKTsKKwogICAgICAgICAvKiBIYW5kbGUgSG9zdCBQb3J0IERpc2Nvbm5lY3QgSW50ZXJydXB0ICovCiAjaWYgKFVTRV9IQUxfSENEX1JFR0lTVEVSX0NBTExCQUNLUyA9PSAxVSkKICAgICAgICAgaGhjZC0+RGlzY29ubmVjdENhbGxiYWNrKGhoY2QpOwogI2Vsc2UKICAgICAgICAgSEFMX0hDRF9EaXNjb25uZWN0X0NhbGxiYWNrKGhoY2QpOwogI2VuZGlmIC8qIFVTRV9IQUxfSENEX1JFR0lTVEVSX0NBTExCQUNLUyAqLwotCi0gICAgICAgICh2b2lkKVVTQl9Jbml0RlNMU1BDbGtTZWwoaGhjZC0+SW5zdGFuY2UsIEhDRkdfNDhfTUhaKTsKICAgICAgIH0KICAgICB9CiAKQEAgLTk2MSw3ICs5NjYsOCBAQAogCiAvKioKICAgKiBAYnJpZWYgIFVucmVnaXN0ZXIgdGhlIFVTQiBIQ0QgSG9zdCBDaGFubmVsIE5vdGlmeSBVUkIgQ2hhbmdlIENhbGxiYWNrCi0gICogICAgICAgICBVU0IgSENEIEhvc3QgQ2hhbm5lbCBOb3RpZnkgVVJCIENoYW5nZSBDYWxsYmFjayBpcyByZWRpcmVjdGVkIHRvIHRoZSB3ZWFrIEhBTF9IQ0RfSENfTm90aWZ5VVJCQ2hhbmdlX0NhbGxiYWNrKCkgcHJlZGVmaW5lZCBjYWxsYmFjaworICAqICAgICAgICAgVVNCIEhDRCBIb3N0IENoYW5uZWwgTm90aWZ5IFVSQiBDaGFuZ2UgQ2FsbGJhY2sgaXMgcmVkaXJlY3RlZAorICAqICAgICAgICAgdG8gdGhlIHdlYWsgSEFMX0hDRF9IQ19Ob3RpZnlVUkJDaGFuZ2VfQ2FsbGJhY2soKSBwcmVkZWZpbmVkIGNhbGxiYWNrCiAgICogQHBhcmFtICBoaGNkIEhDRCBoYW5kbGUKICAgKiBAcmV0dmFsIEhBTCBzdGF0dXMKICAgKi8KQEAgLTEwMTksOCArMTAyNSwxMSBAQAogSEFMX1N0YXR1c1R5cGVEZWYgSEFMX0hDRF9TdGFydChIQ0RfSGFuZGxlVHlwZURlZiAqaGhjZCkKIHsKICAgX19IQUxfTE9DSyhoaGNkKTsKLSAgX19IQUxfSENEX0VOQUJMRShoaGNkKTsKKyAgLyogRW5hYmxlIHBvcnQgcG93ZXIgKi8KICAgKHZvaWQpVVNCX0RyaXZlVmJ1cyhoaGNkLT5JbnN0YW5jZSwgMVUpOworCisgIC8qIEVuYWJsZSBnbG9iYWwgaW50ZXJydXB0ICovCisgIF9fSEFMX0hDRF9FTkFCTEUoaGhjZCk7CiAgIF9fSEFMX1VOTE9DSyhoaGNkKTsKIAogICByZXR1cm4gSEFMX09LOwpAQCAtMTE4MywxMyArMTE5MiwxMyBAQAogICBpZiAoKFVTQnhfSEMoY2hfbnVtKS0+SENJTlQgJiBVU0JfT1RHX0hDSU5UX0FIQkVSUikgPT0gVVNCX09UR19IQ0lOVF9BSEJFUlIpCiAgIHsKICAgICBfX0hBTF9IQ0RfQ0xFQVJfSENfSU5UKGNoX251bSwgVVNCX09UR19IQ0lOVF9BSEJFUlIpOwotICAgIF9fSEFMX0hDRF9VTk1BU0tfSEFMVF9IQ19JTlQoY2hfbnVtKTsKKyAgICBoaGNkLT5oY1tjaF9udW1dLnN0YXRlID0gSENfWEFDVEVSUjsKKyAgICAodm9pZClVU0JfSENfSGFsdChoaGNkLT5JbnN0YW5jZSwgKHVpbnQ4X3QpY2hfbnVtKTsKICAgfQogICBlbHNlIGlmICgoVVNCeF9IQyhjaF9udW0pLT5IQ0lOVCAmIFVTQl9PVEdfSENJTlRfQkJFUlIpID09IFVTQl9PVEdfSENJTlRfQkJFUlIpCiAgIHsKICAgICBfX0hBTF9IQ0RfQ0xFQVJfSENfSU5UKGNoX251bSwgVVNCX09UR19IQ0lOVF9CQkVSUik7CiAgICAgaGhjZC0+aGNbY2hfbnVtXS5zdGF0ZSA9IEhDX0JCTEVSUjsKLSAgICBfX0hBTF9IQ0RfVU5NQVNLX0hBTFRfSENfSU5UKGNoX251bSk7CiAgICAgKHZvaWQpVVNCX0hDX0hhbHQoaGhjZC0+SW5zdGFuY2UsICh1aW50OF90KWNoX251bSk7CiAgIH0KICAgZWxzZSBpZiAoKFVTQnhfSEMoY2hfbnVtKS0+SENJTlQgJiBVU0JfT1RHX0hDSU5UX0FDSykgPT0gVVNCX09UR19IQ0lOVF9BQ0spCkBAIC0xMTk4LDI2ICsxMjA3LDIxIEBACiAgIH0KICAgZWxzZSBpZiAoKFVTQnhfSEMoY2hfbnVtKS0+SENJTlQgJiBVU0JfT1RHX0hDSU5UX1NUQUxMKSA9PSBVU0JfT1RHX0hDSU5UX1NUQUxMKQogICB7Ci0gICAgX19IQUxfSENEX1VOTUFTS19IQUxUX0hDX0lOVChjaF9udW0pOwotICAgIGhoY2QtPmhjW2NoX251bV0uc3RhdGUgPSBIQ19TVEFMTDsKLSAgICBfX0hBTF9IQ0RfQ0xFQVJfSENfSU5UKGNoX251bSwgVVNCX09UR19IQ0lOVF9OQUspOwogICAgIF9fSEFMX0hDRF9DTEVBUl9IQ19JTlQoY2hfbnVtLCBVU0JfT1RHX0hDSU5UX1NUQUxMKTsKKyAgICBoaGNkLT5oY1tjaF9udW1dLnN0YXRlID0gSENfU1RBTEw7CiAgICAgKHZvaWQpVVNCX0hDX0hhbHQoaGhjZC0+SW5zdGFuY2UsICh1aW50OF90KWNoX251bSk7CiAgIH0KICAgZWxzZSBpZiAoKFVTQnhfSEMoY2hfbnVtKS0+SENJTlQgJiBVU0JfT1RHX0hDSU5UX0RURVJSKSA9PSBVU0JfT1RHX0hDSU5UX0RURVJSKQogICB7Ci0gICAgX19IQUxfSENEX1VOTUFTS19IQUxUX0hDX0lOVChjaF9udW0pOwotICAgIGhoY2QtPmhjW2NoX251bV0uc3RhdGUgPSBIQ19EQVRBVEdMRVJSOwotICAgIF9fSEFMX0hDRF9DTEVBUl9IQ19JTlQoY2hfbnVtLCBVU0JfT1RHX0hDSU5UX05BSyk7CiAgICAgX19IQUxfSENEX0NMRUFSX0hDX0lOVChjaF9udW0sIFVTQl9PVEdfSENJTlRfRFRFUlIpOworICAgIGhoY2QtPmhjW2NoX251bV0uc3RhdGUgPSBIQ19EQVRBVEdMRVJSOwogICAgICh2b2lkKVVTQl9IQ19IYWx0KGhoY2QtPkluc3RhbmNlLCAodWludDhfdCljaF9udW0pOwogICB9CiAgIGVsc2UgaWYgKChVU0J4X0hDKGNoX251bSktPkhDSU5UICYgVVNCX09UR19IQ0lOVF9UWEVSUikgPT0gVVNCX09UR19IQ0lOVF9UWEVSUikKICAgewotICAgIF9fSEFMX0hDRF9VTk1BU0tfSEFMVF9IQ19JTlQoY2hfbnVtKTsKKyAgICBfX0hBTF9IQ0RfQ0xFQVJfSENfSU5UKGNoX251bSwgVVNCX09UR19IQ0lOVF9UWEVSUik7CiAgICAgaGhjZC0+aGNbY2hfbnVtXS5zdGF0ZSA9IEhDX1hBQ1RFUlI7CiAgICAgKHZvaWQpVVNCX0hDX0hhbHQoaGhjZC0+SW5zdGFuY2UsICh1aW50OF90KWNoX251bSk7Ci0gICAgX19IQUxfSENEX0NMRUFSX0hDX0lOVChjaF9udW0sIFVTQl9PVEdfSENJTlRfVFhFUlIpOwogICB9CiAgIGVsc2UKICAgewpAQCAtMTIyNiw3ICsxMjMwLDYgQEAKIAogICBpZiAoKFVTQnhfSEMoY2hfbnVtKS0+SENJTlQgJiBVU0JfT1RHX0hDSU5UX0ZSTU9SKSA9PSBVU0JfT1RHX0hDSU5UX0ZSTU9SKQogICB7Ci0gICAgX19IQUxfSENEX1VOTUFTS19IQUxUX0hDX0lOVChjaF9udW0pOwogICAgICh2b2lkKVVTQl9IQ19IYWx0KGhoY2QtPkluc3RhbmNlLCAodWludDhfdCljaF9udW0pOwogICAgIF9fSEFMX0hDRF9DTEVBUl9IQ19JTlQoY2hfbnVtLCBVU0JfT1RHX0hDSU5UX0ZSTU9SKTsKICAgfQpAQCAtMTI0NSw3ICsxMjQ4LDYgQEAKICAgICBpZiAoKGhoY2QtPmhjW2NoX251bV0uZXBfdHlwZSA9PSBFUF9UWVBFX0NUUkwpIHx8CiAgICAgICAgIChoaGNkLT5oY1tjaF9udW1dLmVwX3R5cGUgPT0gRVBfVFlQRV9CVUxLKSkKICAgICB7Ci0gICAgICBfX0hBTF9IQ0RfVU5NQVNLX0hBTFRfSENfSU5UKGNoX251bSk7CiAgICAgICAodm9pZClVU0JfSENfSGFsdChoaGNkLT5JbnN0YW5jZSwgKHVpbnQ4X3QpY2hfbnVtKTsKICAgICAgIF9fSEFMX0hDRF9DTEVBUl9IQ19JTlQoY2hfbnVtLCBVU0JfT1RHX0hDSU5UX05BSyk7CiAgICAgfQpAQCAtMTI5MCw4ICsxMjkyLDYgQEAKICAgfQogICBlbHNlIGlmICgoVVNCeF9IQyhjaF9udW0pLT5IQ0lOVCAmIFVTQl9PVEdfSENJTlRfQ0hIKSA9PSBVU0JfT1RHX0hDSU5UX0NISCkKICAgewotICAgIF9fSEFMX0hDRF9NQVNLX0hBTFRfSENfSU5UKGNoX251bSk7Ci0KICAgICBpZiAoaGhjZC0+aGNbY2hfbnVtXS5zdGF0ZSA9PSBIQ19YRlJDKQogICAgIHsKICAgICAgIGhoY2QtPmhjW2NoX251bV0udXJiX3N0YXRlID0gVVJCX0RPTkU7CkBAIC0xMzQwLDE0ICsxMzQwLDE4IEBACiAgICAgICAvKiAuLi4gKi8KICAgICB9CiAgICAgX19IQUxfSENEX0NMRUFSX0hDX0lOVChjaF9udW0sIFVTQl9PVEdfSENJTlRfQ0hIKTsKKworI2lmIChVU0VfSEFMX0hDRF9SRUdJU1RFUl9DQUxMQkFDS1MgPT0gMVUpCisgICAgaGhjZC0+SENfTm90aWZ5VVJCQ2hhbmdlQ2FsbGJhY2soaGhjZCwgKHVpbnQ4X3QpY2hfbnVtLCBoaGNkLT5oY1tjaF9udW1dLnVyYl9zdGF0ZSk7CisjZWxzZQogICAgIEhBTF9IQ0RfSENfTm90aWZ5VVJCQ2hhbmdlX0NhbGxiYWNrKGhoY2QsICh1aW50OF90KWNoX251bSwgaGhjZC0+aGNbY2hfbnVtXS51cmJfc3RhdGUpOworI2VuZGlmIC8qIFVTRV9IQUxfSENEX1JFR0lTVEVSX0NBTExCQUNLUyAqLwogICB9CiAgIGVsc2UgaWYgKChVU0J4X0hDKGNoX251bSktPkhDSU5UICYgVVNCX09UR19IQ0lOVF9OQUspID09IFVTQl9PVEdfSENJTlRfTkFLKQogICB7CiAgICAgaWYgKGhoY2QtPmhjW2NoX251bV0uZXBfdHlwZSA9PSBFUF9UWVBFX0lOVFIpCiAgICAgewogICAgICAgaGhjZC0+aGNbY2hfbnVtXS5FcnJDbnQgPSAwVTsKLSAgICAgIF9fSEFMX0hDRF9VTk1BU0tfSEFMVF9IQ19JTlQoY2hfbnVtKTsKICAgICAgICh2b2lkKVVTQl9IQ19IYWx0KGhoY2QtPkluc3RhbmNlLCAodWludDhfdCljaF9udW0pOwogICAgIH0KICAgICBlbHNlIGlmICgoaGhjZC0+aGNbY2hfbnVtXS5lcF90eXBlID09IEVQX1RZUEVfQ1RSTCkgfHwKQEAgLTEzNTgsNyArMTM2Miw2IEBACiAgICAgICBpZiAoaGhjZC0+SW5pdC5kbWFfZW5hYmxlID09IDBVKQogICAgICAgewogICAgICAgICBoaGNkLT5oY1tjaF9udW1dLnN0YXRlID0gSENfTkFLOwotICAgICAgICBfX0hBTF9IQ0RfVU5NQVNLX0hBTFRfSENfSU5UKGNoX251bSk7CiAgICAgICAgICh2b2lkKVVTQl9IQ19IYWx0KGhoY2QtPkluc3RhbmNlLCAodWludDhfdCljaF9udW0pOwogICAgICAgfQogICAgIH0KQEAgLTEzOTIsNyArMTM5NSw4IEBACiAgIGlmICgoVVNCeF9IQyhjaF9udW0pLT5IQ0lOVCAmIFVTQl9PVEdfSENJTlRfQUhCRVJSKSA9PSBVU0JfT1RHX0hDSU5UX0FIQkVSUikKICAgewogICAgIF9fSEFMX0hDRF9DTEVBUl9IQ19JTlQoY2hfbnVtLCBVU0JfT1RHX0hDSU5UX0FIQkVSUik7Ci0gICAgX19IQUxfSENEX1VOTUFTS19IQUxUX0hDX0lOVChjaF9udW0pOworICAgIGhoY2QtPmhjW2NoX251bV0uc3RhdGUgPSBIQ19YQUNURVJSOworICAgICh2b2lkKVVTQl9IQ19IYWx0KGhoY2QtPkluc3RhbmNlLCAodWludDhfdCljaF9udW0pOwogICB9CiAgIGVsc2UgaWYgKChVU0J4X0hDKGNoX251bSktPkhDSU5UICYgVVNCX09UR19IQ0lOVF9BQ0spID09IFVTQl9PVEdfSENJTlRfQUNLKQogICB7CkBAIC0xNDAxLDE2ICsxNDA1LDE0IEBACiAgICAgaWYgKGhoY2QtPmhjW2NoX251bV0uZG9fcGluZyA9PSAxVSkKICAgICB7CiAgICAgICBoaGNkLT5oY1tjaF9udW1dLmRvX3BpbmcgPSAwVTsKLSAgICAgIGhoY2QtPmhjW2NoX251bV0udXJiX3N0YXRlICA9IFVSQl9OT1RSRUFEWTsKLSAgICAgIF9fSEFMX0hDRF9VTk1BU0tfSEFMVF9IQ19JTlQoY2hfbnVtKTsKKyAgICAgIGhoY2QtPmhjW2NoX251bV0udXJiX3N0YXRlID0gVVJCX05PVFJFQURZOwogICAgICAgKHZvaWQpVVNCX0hDX0hhbHQoaGhjZC0+SW5zdGFuY2UsICh1aW50OF90KWNoX251bSk7CiAgICAgfQogICB9CiAgIGVsc2UgaWYgKChVU0J4X0hDKGNoX251bSktPkhDSU5UICYgVVNCX09UR19IQ0lOVF9GUk1PUikgPT0gVVNCX09UR19IQ0lOVF9GUk1PUikKICAgewotICAgIF9fSEFMX0hDRF9VTk1BU0tfSEFMVF9IQ19JTlQoY2hfbnVtKTsKLSAgICAodm9pZClVU0JfSENfSGFsdChoaGNkLT5JbnN0YW5jZSwgKHVpbnQ4X3QpY2hfbnVtKTsKICAgICBfX0hBTF9IQ0RfQ0xFQVJfSENfSU5UKGNoX251bSwgVVNCX09UR19IQ0lOVF9GUk1PUik7CisgICAgKHZvaWQpVVNCX0hDX0hhbHQoaGhjZC0+SW5zdGFuY2UsICh1aW50OF90KWNoX251bSk7CiAgIH0KICAgZWxzZSBpZiAoKFVTQnhfSEMoY2hfbnVtKS0+SENJTlQgJiBVU0JfT1RHX0hDSU5UX1hGUkMpID09IFVTQl9PVEdfSENJTlRfWEZSQykKICAgewpAQCAtMTQyMiwyNiArMTQyNCwyMyBAQAogICAgICAgaGhjZC0+aGNbY2hfbnVtXS5kb19waW5nID0gMVU7CiAgICAgICBfX0hBTF9IQ0RfQ0xFQVJfSENfSU5UKGNoX251bSwgVVNCX09UR19IQ0lOVF9OWUVUKTsKICAgICB9Ci0gICAgX19IQUxfSENEX1VOTUFTS19IQUxUX0hDX0lOVChjaF9udW0pOwotICAgICh2b2lkKVVTQl9IQ19IYWx0KGhoY2QtPkluc3RhbmNlLCAodWludDhfdCljaF9udW0pOwogICAgIF9fSEFMX0hDRF9DTEVBUl9IQ19JTlQoY2hfbnVtLCBVU0JfT1RHX0hDSU5UX1hGUkMpOwogICAgIGhoY2QtPmhjW2NoX251bV0uc3RhdGUgPSBIQ19YRlJDOworICAgICh2b2lkKVVTQl9IQ19IYWx0KGhoY2QtPkluc3RhbmNlLCAodWludDhfdCljaF9udW0pOwogICB9CiAgIGVsc2UgaWYgKChVU0J4X0hDKGNoX251bSktPkhDSU5UICYgVVNCX09UR19IQ0lOVF9OWUVUKSA9PSBVU0JfT1RHX0hDSU5UX05ZRVQpCiAgIHsKICAgICBoaGNkLT5oY1tjaF9udW1dLnN0YXRlID0gSENfTllFVDsKICAgICBoaGNkLT5oY1tjaF9udW1dLmRvX3BpbmcgPSAxVTsKICAgICBoaGNkLT5oY1tjaF9udW1dLkVyckNudCA9IDBVOwotICAgIF9fSEFMX0hDRF9VTk1BU0tfSEFMVF9IQ19JTlQoY2hfbnVtKTsKICAgICAodm9pZClVU0JfSENfSGFsdChoaGNkLT5JbnN0YW5jZSwgKHVpbnQ4X3QpY2hfbnVtKTsKICAgICBfX0hBTF9IQ0RfQ0xFQVJfSENfSU5UKGNoX251bSwgVVNCX09UR19IQ0lOVF9OWUVUKTsKICAgfQogICBlbHNlIGlmICgoVVNCeF9IQyhjaF9udW0pLT5IQ0lOVCAmIFVTQl9PVEdfSENJTlRfU1RBTEwpID09IFVTQl9PVEdfSENJTlRfU1RBTEwpCiAgIHsKICAgICBfX0hBTF9IQ0RfQ0xFQVJfSENfSU5UKGNoX251bSwgVVNCX09UR19IQ0lOVF9TVEFMTCk7Ci0gICAgX19IQUxfSENEX1VOTUFTS19IQUxUX0hDX0lOVChjaF9udW0pOwotICAgICh2b2lkKVVTQl9IQ19IYWx0KGhoY2QtPkluc3RhbmNlLCAodWludDhfdCljaF9udW0pOwogICAgIGhoY2QtPmhjW2NoX251bV0uc3RhdGUgPSBIQ19TVEFMTDsKKyAgICAodm9pZClVU0JfSENfSGFsdChoaGNkLT5JbnN0YW5jZSwgKHVpbnQ4X3QpY2hfbnVtKTsKICAgfQogICBlbHNlIGlmICgoVVNCeF9IQyhjaF9udW0pLT5IQ0lOVCAmIFVTQl9PVEdfSENJTlRfTkFLKSA9PSBVU0JfT1RHX0hDSU5UX05BSykKICAgewpAQCAtMTQ1Niw3ICsxNDU1LDYgQEAKICAgICAgIH0KICAgICB9CiAKLSAgICBfX0hBTF9IQ0RfVU5NQVNLX0hBTFRfSENfSU5UKGNoX251bSk7CiAgICAgKHZvaWQpVVNCX0hDX0hhbHQoaGhjZC0+SW5zdGFuY2UsICh1aW50OF90KWNoX251bSk7CiAgICAgX19IQUxfSENEX0NMRUFSX0hDX0lOVChjaF9udW0sIFVTQl9PVEdfSENJTlRfTkFLKTsKICAgfQpAQCAtMTQ2NSw3ICsxNDYzLDYgQEAKICAgICBpZiAoaGhjZC0+SW5pdC5kbWFfZW5hYmxlID09IDBVKQogICAgIHsKICAgICAgIGhoY2QtPmhjW2NoX251bV0uc3RhdGUgPSBIQ19YQUNURVJSOwotICAgICAgX19IQUxfSENEX1VOTUFTS19IQUxUX0hDX0lOVChjaF9udW0pOwogICAgICAgKHZvaWQpVVNCX0hDX0hhbHQoaGhjZC0+SW5zdGFuY2UsICh1aW50OF90KWNoX251bSk7CiAgICAgfQogICAgIGVsc2UKQEAgLTE0NzUsNyArMTQ3MiwxMiBAQAogICAgICAgewogICAgICAgICBoaGNkLT5oY1tjaF9udW1dLkVyckNudCA9IDBVOwogICAgICAgICBoaGNkLT5oY1tjaF9udW1dLnVyYl9zdGF0ZSA9IFVSQl9FUlJPUjsKKworI2lmIChVU0VfSEFMX0hDRF9SRUdJU1RFUl9DQUxMQkFDS1MgPT0gMVUpCisgICAgICAgIGhoY2QtPkhDX05vdGlmeVVSQkNoYW5nZUNhbGxiYWNrKGhoY2QsICh1aW50OF90KWNoX251bSwgaGhjZC0+aGNbY2hfbnVtXS51cmJfc3RhdGUpOworI2Vsc2UKICAgICAgICAgSEFMX0hDRF9IQ19Ob3RpZnlVUkJDaGFuZ2VfQ2FsbGJhY2soaGhjZCwgKHVpbnQ4X3QpY2hfbnVtLCBoaGNkLT5oY1tjaF9udW1dLnVyYl9zdGF0ZSk7CisjZW5kaWYgLyogVVNFX0hBTF9IQ0RfUkVHSVNURVJfQ0FMTEJBQ0tTICovCiAgICAgICB9CiAgICAgICBlbHNlCiAgICAgICB7CkBAIC0xNDg2LDM4ICsxNDg4LDMyIEBACiAgIH0KICAgZWxzZSBpZiAoKFVTQnhfSEMoY2hfbnVtKS0+SENJTlQgJiBVU0JfT1RHX0hDSU5UX0RURVJSKSA9PSBVU0JfT1RHX0hDSU5UX0RURVJSKQogICB7Ci0gICAgX19IQUxfSENEX1VOTUFTS19IQUxUX0hDX0lOVChjaF9udW0pOwotICAgICh2b2lkKVVTQl9IQ19IYWx0KGhoY2QtPkluc3RhbmNlLCAodWludDhfdCljaF9udW0pOwotICAgIF9fSEFMX0hDRF9DTEVBUl9IQ19JTlQoY2hfbnVtLCBVU0JfT1RHX0hDSU5UX05BSyk7Ci0gICAgX19IQUxfSENEX0NMRUFSX0hDX0lOVChjaF9udW0sIFVTQl9PVEdfSENJTlRfRFRFUlIpOwogICAgIGhoY2QtPmhjW2NoX251bV0uc3RhdGUgPSBIQ19EQVRBVEdMRVJSOworICAgICh2b2lkKVVTQl9IQ19IYWx0KGhoY2QtPkluc3RhbmNlLCAodWludDhfdCljaF9udW0pOworICAgIF9fSEFMX0hDRF9DTEVBUl9IQ19JTlQoY2hfbnVtLCBVU0JfT1RHX0hDSU5UX0RURVJSKTsKICAgfQogICBlbHNlIGlmICgoVVNCeF9IQyhjaF9udW0pLT5IQ0lOVCAmIFVTQl9PVEdfSENJTlRfQ0hIKSA9PSBVU0JfT1RHX0hDSU5UX0NISCkKICAgewotICAgIF9fSEFMX0hDRF9NQVNLX0hBTFRfSENfSU5UKGNoX251bSk7Ci0KICAgICBpZiAoaGhjZC0+aGNbY2hfbnVtXS5zdGF0ZSA9PSBIQ19YRlJDKQogICAgIHsKICAgICAgIGhoY2QtPmhjW2NoX251bV0udXJiX3N0YXRlICA9IFVSQl9ET05FOwogICAgICAgaWYgKChoaGNkLT5oY1tjaF9udW1dLmVwX3R5cGUgPT0gRVBfVFlQRV9CVUxLKSB8fAogICAgICAgICAgIChoaGNkLT5oY1tjaF9udW1dLmVwX3R5cGUgPT0gRVBfVFlQRV9JTlRSKSkKICAgICAgIHsKLSAgICAgICAgaWYgKGhoY2QtPkluaXQuZG1hX2VuYWJsZSA9PSAxVSkKLSAgICAgICAgewotICAgICAgICAgIGlmIChoaGNkLT5oY1tjaF9udW1dLnhmZXJfbGVuID4gMFUpCi0gICAgICAgICAgewotICAgICAgICAgICAgbnVtX3BhY2tldHMgPSAoaGhjZC0+aGNbY2hfbnVtXS54ZmVyX2xlbiArIGhoY2QtPmhjW2NoX251bV0ubWF4X3BhY2tldCAtIDFVKSAvIGhoY2QtPmhjW2NoX251bV0ubWF4X3BhY2tldDsKLQotICAgICAgICAgICAgaWYgKChudW1fcGFja2V0cyAmIDFVKSAhPSAwVSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgaGhjZC0+aGNbY2hfbnVtXS50b2dnbGVfb3V0IF49IDFVOwotICAgICAgICAgICAgfQotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBlbHNlCisgICAgICAgIGlmIChoaGNkLT5Jbml0LmRtYV9lbmFibGUgPT0gMFUpCiAgICAgICAgIHsKICAgICAgICAgICBoaGNkLT5oY1tjaF9udW1dLnRvZ2dsZV9vdXQgXj0gMVU7CiAgICAgICAgIH0KKworICAgICAgICBpZiAoKGhoY2QtPkluaXQuZG1hX2VuYWJsZSA9PSAxVSkgJiYgKGhoY2QtPmhjW2NoX251bV0ueGZlcl9sZW4gPiAwVSkpCisgICAgICAgIHsKKyAgICAgICAgICBudW1fcGFja2V0cyA9IChoaGNkLT5oY1tjaF9udW1dLnhmZXJfbGVuICsgaGhjZC0+aGNbY2hfbnVtXS5tYXhfcGFja2V0IC0gMVUpIC8gaGhjZC0+aGNbY2hfbnVtXS5tYXhfcGFja2V0OworCisgICAgICAgICAgaWYgKChudW1fcGFja2V0cyAmIDFVKSAhPSAwVSkKKyAgICAgICAgICB7CisgICAgICAgICAgICBoaGNkLT5oY1tjaF9udW1dLnRvZ2dsZV9vdXQgXj0gMVU7CisgICAgICAgICAgfQorICAgICAgICB9CiAgICAgICB9CiAgICAgfQogICAgIGVsc2UgaWYgKGhoY2QtPmhjW2NoX251bV0uc3RhdGUgPT0gSENfTkFLKQpAQCAtMTU1OCw3ICsxNTU0LDEyIEBACiAgICAgfQogCiAgICAgX19IQUxfSENEX0NMRUFSX0hDX0lOVChjaF9udW0sIFVTQl9PVEdfSENJTlRfQ0hIKTsKKworI2lmIChVU0VfSEFMX0hDRF9SRUdJU1RFUl9DQUxMQkFDS1MgPT0gMVUpCisgICAgaGhjZC0+SENfTm90aWZ5VVJCQ2hhbmdlQ2FsbGJhY2soaGhjZCwgKHVpbnQ4X3QpY2hfbnVtLCBoaGNkLT5oY1tjaF9udW1dLnVyYl9zdGF0ZSk7CisjZWxzZQogICAgIEhBTF9IQ0RfSENfTm90aWZ5VVJCQ2hhbmdlX0NhbGxiYWNrKGhoY2QsICh1aW50OF90KWNoX251bSwgaGhjZC0+aGNbY2hfbnVtXS51cmJfc3RhdGUpOworI2VuZGlmIC8qIFVTRV9IQUxfSENEX1JFR0lTVEVSX0NBTExCQUNLUyAqLwogICB9CiAgIGVsc2UKICAgewpAQCAtMTY0MSw3ICsxNjQyLDggQEAKIHsKICAgVVNCX09UR19HbG9iYWxUeXBlRGVmICpVU0J4ID0gaGhjZC0+SW5zdGFuY2U7CiAgIHVpbnQzMl90IFVTQnhfQkFTRSA9ICh1aW50MzJfdClVU0J4OwotICBfX0lPIHVpbnQzMl90IGhwcnQwLCBocHJ0MF9kdXA7CisgIF9fSU8gdWludDMyX3QgaHBydDA7CisgIF9fSU8gdWludDMyX3QgaHBydDBfZHVwOwogCiAgIC8qIEhhbmRsZSBIb3N0IFBvcnQgSW50ZXJydXB0cyAqLwogICBocHJ0MCA9IFVTQnhfSFBSVDA7CkBAIC0xNjYxLDcgKzE2NjMsNyBAQAogICAgICAgSEFMX0hDRF9Db25uZWN0X0NhbGxiYWNrKGhoY2QpOwogI2VuZGlmIC8qIFVTRV9IQUxfSENEX1JFR0lTVEVSX0NBTExCQUNLUyAqLwogICAgIH0KLSAgICBocHJ0MF9kdXAgIHw9IFVTQl9PVEdfSFBSVF9QQ0RFVDsKKyAgICBocHJ0MF9kdXAgfD0gVVNCX09UR19IUFJUX1BDREVUOwogICB9CiAKICAgLyogQ2hlY2sgd2hldGhlciBQb3J0IEVuYWJsZSBDaGFuZ2VkICovCkBAIC0xNzM0LDUgKzE3MzYsMyBAQAogLyoqCiAgICogQH0KICAgKi8KLQotLyoqKioqKioqKioqKioqKioqKioqKioqKiAoQykgQ09QWVJJR0hUIFNUTWljcm9lbGVjdHJvbmljcyAqKioqKkVORCBPRiBGSUxFKioqKi8KZGlmZiAtLWdpdCBhL1NyYy9zdG0zMmY3eHhfaGFsX2kyYy5jIGIvU3JjL3N0bTMyZjd4eF9oYWxfaTJjLmMKaW5kZXggNjRlOWJhOS4uYzVlYzlhMSAxMDA2NDQKLS0tIGEvU3JjL3N0bTMyZjd4eF9oYWxfaTJjLmMKKysrIGIvU3JjL3N0bTMyZjd4eF9oYWxfaTJjLmMKQEAgLTksNiArOSwxNyBAQAogICAqICAgICAgICAgICArIElPIG9wZXJhdGlvbiBmdW5jdGlvbnMKICAgKiAgICAgICAgICAgKyBQZXJpcGhlcmFsIFN0YXRlIGFuZCBFcnJvcnMgZnVuY3Rpb25zCiAgICoKKyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICogQGF0dGVudGlvbgorICAqCisgICogQ29weXJpZ2h0IChjKSAyMDE3IFNUTWljcm9lbGVjdHJvbmljcy4KKyAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICAqCisgICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCB1bmRlciB0ZXJtcyB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlCisgICogaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc29mdHdhcmUgY29tcG9uZW50LgorICAqIElmIG5vIExJQ0VOU0UgZmlsZSBjb21lcyB3aXRoIHRoaXMgc29mdHdhcmUsIGl0IGlzIHByb3ZpZGVkIEFTLUlTLgorICAqCisgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICBAdmVyYmF0aW0KICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgICAgICAgICAgICAgICAgICAgICAgICAjIyMjIyBIb3cgdG8gdXNlIHRoaXMgZHJpdmVyICMjIyMjCkBAIC0xOSw3ICszMCw3IEBACiAgICAgKCMpIERlY2xhcmUgYSBJMkNfSGFuZGxlVHlwZURlZiBoYW5kbGUgc3RydWN0dXJlLCBmb3IgZXhhbXBsZToKICAgICAgICAgSTJDX0hhbmRsZVR5cGVEZWYgIGhpMmM7CiAKLSAgICAoIylJbml0aWFsaXplIHRoZSBJMkMgbG93IGxldmVsIHJlc291cmNlcyBieSBpbXBsZW1lbnRpbmcgdGhlIEByZWYgSEFMX0kyQ19Nc3BJbml0KCkgQVBJOgorICAgICgjKUluaXRpYWxpemUgdGhlIEkyQyBsb3cgbGV2ZWwgcmVzb3VyY2VzIGJ5IGltcGxlbWVudGluZyB0aGUgSEFMX0kyQ19Nc3BJbml0KCkgQVBJOgogICAgICAgICAoIyMpIEVuYWJsZSB0aGUgSTJDeCBpbnRlcmZhY2UgY2xvY2sKICAgICAgICAgKCMjKSBJMkMgcGlucyBjb25maWd1cmF0aW9uCiAgICAgICAgICAgICAoKysrKSBFbmFibGUgdGhlIGNsb2NrIGZvciB0aGUgSTJDIEdQSU9zCkBAIC0yOCw3ICszOSw4IEBACiAgICAgICAgICAgICAoKysrKSBDb25maWd1cmUgdGhlIEkyQ3ggaW50ZXJydXB0IHByaW9yaXR5CiAgICAgICAgICAgICAoKysrKSBFbmFibGUgdGhlIE5WSUMgSTJDIElSUSBDaGFubmVsCiAgICAgICAgICgjIykgRE1BIENvbmZpZ3VyYXRpb24gaWYgeW91IG5lZWQgdG8gdXNlIERNQSBwcm9jZXNzCi0gICAgICAgICAgICAoKysrKSBEZWNsYXJlIGEgRE1BX0hhbmRsZVR5cGVEZWYgaGFuZGxlIHN0cnVjdHVyZSBmb3IgdGhlIHRyYW5zbWl0IG9yIHJlY2VpdmUgc3RyZWFtCisgICAgICAgICAgICAoKysrKSBEZWNsYXJlIGEgRE1BX0hhbmRsZVR5cGVEZWYgaGFuZGxlIHN0cnVjdHVyZSBmb3IKKyAgICAgICAgICAgICAgICAgIHRoZSB0cmFuc21pdCBvciByZWNlaXZlIHN0cmVhbQogICAgICAgICAgICAgKCsrKykgRW5hYmxlIHRoZSBETUF4IGludGVyZmFjZSBjbG9jayB1c2luZwogICAgICAgICAgICAgKCsrKykgQ29uZmlndXJlIHRoZSBETUEgaGFuZGxlIHBhcmFtZXRlcnMKICAgICAgICAgICAgICgrKyspIENvbmZpZ3VyZSB0aGUgRE1BIFR4IG9yIFJ4IHN0cmVhbQpAQCAtMzksNDkgKzUxLDQ5IEBACiAgICAgKCMpIENvbmZpZ3VyZSB0aGUgQ29tbXVuaWNhdGlvbiBDbG9jayBUaW1pbmcsIE93biBBZGRyZXNzMSwgTWFzdGVyIEFkZHJlc3NpbmcgbW9kZSwgRHVhbCBBZGRyZXNzaW5nIG1vZGUsCiAgICAgICAgIE93biBBZGRyZXNzMiwgT3duIEFkZHJlc3MyIE1hc2ssIEdlbmVyYWwgY2FsbCBhbmQgTm9zdHJldGNoIG1vZGUgaW4gdGhlIGhpMmMgSW5pdCBzdHJ1Y3R1cmUuCiAKLSAgICAoIykgSW5pdGlhbGl6ZSB0aGUgSTJDIHJlZ2lzdGVycyBieSBjYWxsaW5nIHRoZSBAcmVmIEhBTF9JMkNfSW5pdCgpLCBjb25maWd1cmVzIGFsc28gdGhlIGxvdyBsZXZlbCBIYXJkd2FyZQotICAgICAgICAoR1BJTywgQ0xPQ0ssIE5WSUMuLi5ldGMpIGJ5IGNhbGxpbmcgdGhlIGN1c3RvbWl6ZWQgQHJlZiBIQUxfSTJDX01zcEluaXQoJmhpMmMpIEFQSS4KKyAgICAoIykgSW5pdGlhbGl6ZSB0aGUgSTJDIHJlZ2lzdGVycyBieSBjYWxsaW5nIHRoZSBIQUxfSTJDX0luaXQoKSwgY29uZmlndXJlcyBhbHNvIHRoZSBsb3cgbGV2ZWwgSGFyZHdhcmUKKyAgICAgICAgKEdQSU8sIENMT0NLLCBOVklDLi4uZXRjKSBieSBjYWxsaW5nIHRoZSBjdXN0b21pemVkIEhBTF9JMkNfTXNwSW5pdCgmaGkyYykgQVBJLgogCi0gICAgKCMpIFRvIGNoZWNrIGlmIHRhcmdldCBkZXZpY2UgaXMgcmVhZHkgZm9yIGNvbW11bmljYXRpb24sIHVzZSB0aGUgZnVuY3Rpb24gQHJlZiBIQUxfSTJDX0lzRGV2aWNlUmVhZHkoKQorICAgICgjKSBUbyBjaGVjayBpZiB0YXJnZXQgZGV2aWNlIGlzIHJlYWR5IGZvciBjb21tdW5pY2F0aW9uLCB1c2UgdGhlIGZ1bmN0aW9uIEhBTF9JMkNfSXNEZXZpY2VSZWFkeSgpCiAKICAgICAoIykgRm9yIEkyQyBJTyBhbmQgSU8gTUVNIG9wZXJhdGlvbnMsIHRocmVlIG9wZXJhdGlvbiBtb2RlcyBhcmUgYXZhaWxhYmxlIHdpdGhpbiB0aGlzIGRyaXZlciA6CiAKICAgICAqKiogUG9sbGluZyBtb2RlIElPIG9wZXJhdGlvbiAqKioKICAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgICBbLi5dCi0gICAgICAoKykgVHJhbnNtaXQgaW4gbWFzdGVyIG1vZGUgYW4gYW1vdW50IG9mIGRhdGEgaW4gYmxvY2tpbmcgbW9kZSB1c2luZyBAcmVmIEhBTF9JMkNfTWFzdGVyX1RyYW5zbWl0KCkKLSAgICAgICgrKSBSZWNlaXZlIGluIG1hc3RlciBtb2RlIGFuIGFtb3VudCBvZiBkYXRhIGluIGJsb2NraW5nIG1vZGUgdXNpbmcgQHJlZiBIQUxfSTJDX01hc3Rlcl9SZWNlaXZlKCkKLSAgICAgICgrKSBUcmFuc21pdCBpbiBzbGF2ZSBtb2RlIGFuIGFtb3VudCBvZiBkYXRhIGluIGJsb2NraW5nIG1vZGUgdXNpbmcgQHJlZiBIQUxfSTJDX1NsYXZlX1RyYW5zbWl0KCkKLSAgICAgICgrKSBSZWNlaXZlIGluIHNsYXZlIG1vZGUgYW4gYW1vdW50IG9mIGRhdGEgaW4gYmxvY2tpbmcgbW9kZSB1c2luZyBAcmVmIEhBTF9JMkNfU2xhdmVfUmVjZWl2ZSgpCisgICAgICAoKykgVHJhbnNtaXQgaW4gbWFzdGVyIG1vZGUgYW4gYW1vdW50IG9mIGRhdGEgaW4gYmxvY2tpbmcgbW9kZSB1c2luZyBIQUxfSTJDX01hc3Rlcl9UcmFuc21pdCgpCisgICAgICAoKykgUmVjZWl2ZSBpbiBtYXN0ZXIgbW9kZSBhbiBhbW91bnQgb2YgZGF0YSBpbiBibG9ja2luZyBtb2RlIHVzaW5nIEhBTF9JMkNfTWFzdGVyX1JlY2VpdmUoKQorICAgICAgKCspIFRyYW5zbWl0IGluIHNsYXZlIG1vZGUgYW4gYW1vdW50IG9mIGRhdGEgaW4gYmxvY2tpbmcgbW9kZSB1c2luZyBIQUxfSTJDX1NsYXZlX1RyYW5zbWl0KCkKKyAgICAgICgrKSBSZWNlaXZlIGluIHNsYXZlIG1vZGUgYW4gYW1vdW50IG9mIGRhdGEgaW4gYmxvY2tpbmcgbW9kZSB1c2luZyBIQUxfSTJDX1NsYXZlX1JlY2VpdmUoKQogCiAgICAgKioqIFBvbGxpbmcgbW9kZSBJTyBNRU0gb3BlcmF0aW9uICoqKgogICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgICBbLi5dCi0gICAgICAoKykgV3JpdGUgYW4gYW1vdW50IG9mIGRhdGEgaW4gYmxvY2tpbmcgbW9kZSB0byBhIHNwZWNpZmljIG1lbW9yeSBhZGRyZXNzIHVzaW5nIEByZWYgSEFMX0kyQ19NZW1fV3JpdGUoKQotICAgICAgKCspIFJlYWQgYW4gYW1vdW50IG9mIGRhdGEgaW4gYmxvY2tpbmcgbW9kZSBmcm9tIGEgc3BlY2lmaWMgbWVtb3J5IGFkZHJlc3MgdXNpbmcgQHJlZiBIQUxfSTJDX01lbV9SZWFkKCkKKyAgICAgICgrKSBXcml0ZSBhbiBhbW91bnQgb2YgZGF0YSBpbiBibG9ja2luZyBtb2RlIHRvIGEgc3BlY2lmaWMgbWVtb3J5IGFkZHJlc3MgdXNpbmcgSEFMX0kyQ19NZW1fV3JpdGUoKQorICAgICAgKCspIFJlYWQgYW4gYW1vdW50IG9mIGRhdGEgaW4gYmxvY2tpbmcgbW9kZSBmcm9tIGEgc3BlY2lmaWMgbWVtb3J5IGFkZHJlc3MgdXNpbmcgSEFMX0kyQ19NZW1fUmVhZCgpCiAKIAogICAgICoqKiBJbnRlcnJ1cHQgbW9kZSBJTyBvcGVyYXRpb24gKioqCiAgICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgICBbLi5dCi0gICAgICAoKykgVHJhbnNtaXQgaW4gbWFzdGVyIG1vZGUgYW4gYW1vdW50IG9mIGRhdGEgaW4gbm9uLWJsb2NraW5nIG1vZGUgdXNpbmcgQHJlZiBIQUxfSTJDX01hc3Rlcl9UcmFuc21pdF9JVCgpCi0gICAgICAoKykgQXQgdHJhbnNtaXNzaW9uIGVuZCBvZiB0cmFuc2ZlciwgQHJlZiBIQUxfSTJDX01hc3RlclR4Q3BsdENhbGxiYWNrKCkgaXMgZXhlY3V0ZWQgYW5kIHVzZXIgY2FuCi0gICAgICAgICAgIGFkZCBoaXMgb3duIGNvZGUgYnkgY3VzdG9taXphdGlvbiBvZiBmdW5jdGlvbiBwb2ludGVyIEByZWYgSEFMX0kyQ19NYXN0ZXJUeENwbHRDYWxsYmFjaygpCi0gICAgICAoKykgUmVjZWl2ZSBpbiBtYXN0ZXIgbW9kZSBhbiBhbW91bnQgb2YgZGF0YSBpbiBub24tYmxvY2tpbmcgbW9kZSB1c2luZyBAcmVmIEhBTF9JMkNfTWFzdGVyX1JlY2VpdmVfSVQoKQotICAgICAgKCspIEF0IHJlY2VwdGlvbiBlbmQgb2YgdHJhbnNmZXIsIEByZWYgSEFMX0kyQ19NYXN0ZXJSeENwbHRDYWxsYmFjaygpIGlzIGV4ZWN1dGVkIGFuZCB1c2VyIGNhbgotICAgICAgICAgICBhZGQgaGlzIG93biBjb2RlIGJ5IGN1c3RvbWl6YXRpb24gb2YgZnVuY3Rpb24gcG9pbnRlciBAcmVmIEhBTF9JMkNfTWFzdGVyUnhDcGx0Q2FsbGJhY2soKQotICAgICAgKCspIFRyYW5zbWl0IGluIHNsYXZlIG1vZGUgYW4gYW1vdW50IG9mIGRhdGEgaW4gbm9uLWJsb2NraW5nIG1vZGUgdXNpbmcgQHJlZiBIQUxfSTJDX1NsYXZlX1RyYW5zbWl0X0lUKCkKLSAgICAgICgrKSBBdCB0cmFuc21pc3Npb24gZW5kIG9mIHRyYW5zZmVyLCBAcmVmIEhBTF9JMkNfU2xhdmVUeENwbHRDYWxsYmFjaygpIGlzIGV4ZWN1dGVkIGFuZCB1c2VyIGNhbgotICAgICAgICAgICBhZGQgaGlzIG93biBjb2RlIGJ5IGN1c3RvbWl6YXRpb24gb2YgZnVuY3Rpb24gcG9pbnRlciBAcmVmIEhBTF9JMkNfU2xhdmVUeENwbHRDYWxsYmFjaygpCi0gICAgICAoKykgUmVjZWl2ZSBpbiBzbGF2ZSBtb2RlIGFuIGFtb3VudCBvZiBkYXRhIGluIG5vbi1ibG9ja2luZyBtb2RlIHVzaW5nIEByZWYgSEFMX0kyQ19TbGF2ZV9SZWNlaXZlX0lUKCkKLSAgICAgICgrKSBBdCByZWNlcHRpb24gZW5kIG9mIHRyYW5zZmVyLCBAcmVmIEhBTF9JMkNfU2xhdmVSeENwbHRDYWxsYmFjaygpIGlzIGV4ZWN1dGVkIGFuZCB1c2VyIGNhbgotICAgICAgICAgICBhZGQgaGlzIG93biBjb2RlIGJ5IGN1c3RvbWl6YXRpb24gb2YgZnVuY3Rpb24gcG9pbnRlciBAcmVmIEhBTF9JMkNfU2xhdmVSeENwbHRDYWxsYmFjaygpCi0gICAgICAoKykgSW4gY2FzZSBvZiB0cmFuc2ZlciBFcnJvciwgQHJlZiBIQUxfSTJDX0Vycm9yQ2FsbGJhY2soKSBmdW5jdGlvbiBpcyBleGVjdXRlZCBhbmQgdXNlciBjYW4KLSAgICAgICAgICAgYWRkIGhpcyBvd24gY29kZSBieSBjdXN0b21pemF0aW9uIG9mIGZ1bmN0aW9uIHBvaW50ZXIgQHJlZiBIQUxfSTJDX0Vycm9yQ2FsbGJhY2soKQotICAgICAgKCspIEFib3J0IGEgbWFzdGVyIEkyQyBwcm9jZXNzIGNvbW11bmljYXRpb24gd2l0aCBJbnRlcnJ1cHQgdXNpbmcgQHJlZiBIQUxfSTJDX01hc3Rlcl9BYm9ydF9JVCgpCi0gICAgICAoKykgRW5kIG9mIGFib3J0IHByb2Nlc3MsIEByZWYgSEFMX0kyQ19BYm9ydENwbHRDYWxsYmFjaygpIGlzIGV4ZWN1dGVkIGFuZCB1c2VyIGNhbgotICAgICAgICAgICBhZGQgaGlzIG93biBjb2RlIGJ5IGN1c3RvbWl6YXRpb24gb2YgZnVuY3Rpb24gcG9pbnRlciBAcmVmIEhBTF9JMkNfQWJvcnRDcGx0Q2FsbGJhY2soKQotICAgICAgKCspIERpc2NhcmQgYSBzbGF2ZSBJMkMgcHJvY2VzcyBjb21tdW5pY2F0aW9uIHVzaW5nIEByZWYgX19IQUxfSTJDX0dFTkVSQVRFX05BQ0soKSBtYWNyby4KKyAgICAgICgrKSBUcmFuc21pdCBpbiBtYXN0ZXIgbW9kZSBhbiBhbW91bnQgb2YgZGF0YSBpbiBub24tYmxvY2tpbmcgbW9kZSB1c2luZyBIQUxfSTJDX01hc3Rlcl9UcmFuc21pdF9JVCgpCisgICAgICAoKykgQXQgdHJhbnNtaXNzaW9uIGVuZCBvZiB0cmFuc2ZlciwgSEFMX0kyQ19NYXN0ZXJUeENwbHRDYWxsYmFjaygpIGlzIGV4ZWN1dGVkIGFuZCB1c2VycyBjYW4KKyAgICAgICAgICAgYWRkIHRoZWlyIG93biBjb2RlIGJ5IGN1c3RvbWl6YXRpb24gb2YgZnVuY3Rpb24gcG9pbnRlciBIQUxfSTJDX01hc3RlclR4Q3BsdENhbGxiYWNrKCkKKyAgICAgICgrKSBSZWNlaXZlIGluIG1hc3RlciBtb2RlIGFuIGFtb3VudCBvZiBkYXRhIGluIG5vbi1ibG9ja2luZyBtb2RlIHVzaW5nIEhBTF9JMkNfTWFzdGVyX1JlY2VpdmVfSVQoKQorICAgICAgKCspIEF0IHJlY2VwdGlvbiBlbmQgb2YgdHJhbnNmZXIsIEhBTF9JMkNfTWFzdGVyUnhDcGx0Q2FsbGJhY2soKSBpcyBleGVjdXRlZCBhbmQgdXNlcnMgY2FuCisgICAgICAgICAgIGFkZCB0aGVpciBvd24gY29kZSBieSBjdXN0b21pemF0aW9uIG9mIGZ1bmN0aW9uIHBvaW50ZXIgSEFMX0kyQ19NYXN0ZXJSeENwbHRDYWxsYmFjaygpCisgICAgICAoKykgVHJhbnNtaXQgaW4gc2xhdmUgbW9kZSBhbiBhbW91bnQgb2YgZGF0YSBpbiBub24tYmxvY2tpbmcgbW9kZSB1c2luZyBIQUxfSTJDX1NsYXZlX1RyYW5zbWl0X0lUKCkKKyAgICAgICgrKSBBdCB0cmFuc21pc3Npb24gZW5kIG9mIHRyYW5zZmVyLCBIQUxfSTJDX1NsYXZlVHhDcGx0Q2FsbGJhY2soKSBpcyBleGVjdXRlZCBhbmQgdXNlcnMgY2FuCisgICAgICAgICAgIGFkZCB0aGVpciBvd24gY29kZSBieSBjdXN0b21pemF0aW9uIG9mIGZ1bmN0aW9uIHBvaW50ZXIgSEFMX0kyQ19TbGF2ZVR4Q3BsdENhbGxiYWNrKCkKKyAgICAgICgrKSBSZWNlaXZlIGluIHNsYXZlIG1vZGUgYW4gYW1vdW50IG9mIGRhdGEgaW4gbm9uLWJsb2NraW5nIG1vZGUgdXNpbmcgSEFMX0kyQ19TbGF2ZV9SZWNlaXZlX0lUKCkKKyAgICAgICgrKSBBdCByZWNlcHRpb24gZW5kIG9mIHRyYW5zZmVyLCBIQUxfSTJDX1NsYXZlUnhDcGx0Q2FsbGJhY2soKSBpcyBleGVjdXRlZCBhbmQgdXNlcnMgY2FuCisgICAgICAgICAgIGFkZCB0aGVpciBvd24gY29kZSBieSBjdXN0b21pemF0aW9uIG9mIGZ1bmN0aW9uIHBvaW50ZXIgSEFMX0kyQ19TbGF2ZVJ4Q3BsdENhbGxiYWNrKCkKKyAgICAgICgrKSBJbiBjYXNlIG9mIHRyYW5zZmVyIEVycm9yLCBIQUxfSTJDX0Vycm9yQ2FsbGJhY2soKSBmdW5jdGlvbiBpcyBleGVjdXRlZCBhbmQgdXNlcnMgY2FuCisgICAgICAgICAgIGFkZCB0aGVpciBvd24gY29kZSBieSBjdXN0b21pemF0aW9uIG9mIGZ1bmN0aW9uIHBvaW50ZXIgSEFMX0kyQ19FcnJvckNhbGxiYWNrKCkKKyAgICAgICgrKSBBYm9ydCBhIG1hc3RlciBJMkMgcHJvY2VzcyBjb21tdW5pY2F0aW9uIHdpdGggSW50ZXJydXB0IHVzaW5nIEhBTF9JMkNfTWFzdGVyX0Fib3J0X0lUKCkKKyAgICAgICgrKSBFbmQgb2YgYWJvcnQgcHJvY2VzcywgSEFMX0kyQ19BYm9ydENwbHRDYWxsYmFjaygpIGlzIGV4ZWN1dGVkIGFuZCB1c2VycyBjYW4KKyAgICAgICAgICAgYWRkIHRoZWlyIG93biBjb2RlIGJ5IGN1c3RvbWl6YXRpb24gb2YgZnVuY3Rpb24gcG9pbnRlciBIQUxfSTJDX0Fib3J0Q3BsdENhbGxiYWNrKCkKKyAgICAgICgrKSBEaXNjYXJkIGEgc2xhdmUgSTJDIHByb2Nlc3MgY29tbXVuaWNhdGlvbiB1c2luZyBfX0hBTF9JMkNfR0VORVJBVEVfTkFDSygpIG1hY3JvLgogICAgICAgICAgICBUaGlzIGFjdGlvbiB3aWxsIGluZm9ybSBNYXN0ZXIgdG8gZ2VuZXJhdGUgYSBTdG9wIGNvbmRpdGlvbiB0byBkaXNjYXJkIHRoZSBjb21tdW5pY2F0aW9uLgogCiAKQEAgLTkyLDEyMCArMTA0LDEzNSBAQAogICAgICAgICAgIHdoZW4gYSBkaXJlY3Rpb24gY2hhbmdlIGR1cmluZyB0cmFuc2ZlcgogICAgIFsuLl0KICAgICAgICgrKSBBIHNwZWNpZmljIG9wdGlvbiBmaWVsZCBtYW5hZ2UgdGhlIGRpZmZlcmVudCBzdGVwcyBvZiBhIHNlcXVlbnRpYWwgdHJhbnNmZXIKLSAgICAgICgrKSBPcHRpb24gZmllbGQgdmFsdWVzIGFyZSBkZWZpbmVkIHRocm91Z2ggQHJlZiBJMkNfWEZFUk9QVElPTlMgYW5kIGFyZSBsaXN0ZWQgYmVsb3c6Ci0gICAgICAoKyspIEkyQ19GSVJTVF9BTkRfTEFTVF9GUkFNRTogTm8gc2VxdWVudGlhbCB1c2FnZSwgZnVuY3Rpb25hbCBpcyBzYW1lIGFzIGFzc29jaWF0ZWQgaW50ZXJmYWNlcyBpbiBubyBzZXF1ZW50aWFsIG1vZGUKKyAgICAgICgrKSBPcHRpb24gZmllbGQgdmFsdWVzIGFyZSBkZWZpbmVkIHRocm91Z2ggSTJDX1hGRVJPUFRJT05TIGFuZCBhcmUgbGlzdGVkIGJlbG93OgorICAgICAgKCsrKSBJMkNfRklSU1RfQU5EX0xBU1RfRlJBTUU6IE5vIHNlcXVlbnRpYWwgdXNhZ2UsIGZ1bmN0aW9uYWwgaXMgc2FtZSBhcyBhc3NvY2lhdGVkIGludGVyZmFjZXMgaW4KKyAgICAgICAgICAgbm8gc2VxdWVudGlhbCBtb2RlCiAgICAgICAoKyspIEkyQ19GSVJTVF9GUkFNRTogU2VxdWVudGlhbCB1c2FnZSwgdGhpcyBvcHRpb24gYWxsb3cgdG8gbWFuYWdlIGEgc2VxdWVuY2Ugd2l0aCBzdGFydCBjb25kaXRpb24sIGFkZHJlc3MKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgZGF0YSB0byB0cmFuc2ZlciB3aXRob3V0IGEgZmluYWwgc3RvcCBjb25kaXRpb24KLSAgICAgICgrKykgSTJDX0ZJUlNUX0FORF9ORVhUX0ZSQU1FOiBTZXF1ZW50aWFsIHVzYWdlIChNYXN0ZXIgb25seSksIHRoaXMgb3B0aW9uIGFsbG93IHRvIG1hbmFnZSBhIHNlcXVlbmNlIHdpdGggc3RhcnQgY29uZGl0aW9uLCBhZGRyZXNzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGRhdGEgdG8gdHJhbnNmZXIgd2l0aG91dCBhIGZpbmFsIHN0b3AgY29uZGl0aW9uLCBhbiB0aGVuIHBlcm1pdCBhIGNhbGwgdGhlIHNhbWUgbWFzdGVyIHNlcXVlbnRpYWwgaW50ZXJmYWNlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V2ZXJhbCB0aW1lcyAobGlrZSBAcmVmIEhBTF9JMkNfTWFzdGVyX1NlcV9UcmFuc21pdF9JVCgpIHRoZW4gQHJlZiBIQUxfSTJDX01hc3Rlcl9TZXFfVHJhbnNtaXRfSVQoKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yIEByZWYgSEFMX0kyQ19NYXN0ZXJfU2VxX1RyYW5zbWl0X0RNQSgpIHRoZW4gQHJlZiBIQUxfSTJDX01hc3Rlcl9TZXFfVHJhbnNtaXRfRE1BKCkpCisgICAgICAoKyspIEkyQ19GSVJTVF9BTkRfTkVYVF9GUkFNRTogU2VxdWVudGlhbCB1c2FnZSAoTWFzdGVyIG9ubHkpLCB0aGlzIG9wdGlvbiBhbGxvdyB0byBtYW5hZ2UgYSBzZXF1ZW5jZSB3aXRoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnQgY29uZGl0aW9uLCBhZGRyZXNzIGFuZCBkYXRhIHRvIHRyYW5zZmVyIHdpdGhvdXQgYSBmaW5hbCBzdG9wIGNvbmRpdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbiB0aGVuIHBlcm1pdCBhIGNhbGwgdGhlIHNhbWUgbWFzdGVyIHNlcXVlbnRpYWwgaW50ZXJmYWNlIHNldmVyYWwgdGltZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGlrZSBIQUxfSTJDX01hc3Rlcl9TZXFfVHJhbnNtaXRfSVQoKSB0aGVuIEhBTF9JMkNfTWFzdGVyX1NlcV9UcmFuc21pdF9JVCgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3IgSEFMX0kyQ19NYXN0ZXJfU2VxX1RyYW5zbWl0X0RNQSgpIHRoZW4gSEFMX0kyQ19NYXN0ZXJfU2VxX1RyYW5zbWl0X0RNQSgpKQogICAgICAgKCsrKSBJMkNfTkVYVF9GUkFNRTogU2VxdWVudGlhbCB1c2FnZSwgdGhpcyBvcHRpb24gYWxsb3cgdG8gbWFuYWdlIGEgc2VxdWVuY2Ugd2l0aCBhIHJlc3RhcnQgY29uZGl0aW9uLCBhZGRyZXNzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIHdpdGggbmV3IGRhdGEgdG8gdHJhbnNmZXIgaWYgdGhlIGRpcmVjdGlvbiBjaGFuZ2Ugb3IgbWFuYWdlIG9ubHkgdGhlIG5ldyBkYXRhIHRvIHRyYW5zZmVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIHdpdGggbmV3IGRhdGEgdG8gdHJhbnNmZXIgaWYgdGhlIGRpcmVjdGlvbiBjaGFuZ2Ugb3IgbWFuYWdlIG9ubHkgdGhlIG5ldyBkYXRhIHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBubyBkaXJlY3Rpb24gY2hhbmdlIGFuZCB3aXRob3V0IGEgZmluYWwgc3RvcCBjb25kaXRpb24gaW4gYm90aCBjYXNlcwogICAgICAgKCsrKSBJMkNfTEFTVF9GUkFNRTogU2VxdWVudGlhbCB1c2FnZSwgdGhpcyBvcHRpb24gYWxsb3cgdG8gbWFuYWdlIGEgc2VxdWFuY2Ugd2l0aCBhIHJlc3RhcnQgY29uZGl0aW9uLCBhZGRyZXNzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIHdpdGggbmV3IGRhdGEgdG8gdHJhbnNmZXIgaWYgdGhlIGRpcmVjdGlvbiBjaGFuZ2Ugb3IgbWFuYWdlIG9ubHkgdGhlIG5ldyBkYXRhIHRvIHRyYW5zZmVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIHdpdGggbmV3IGRhdGEgdG8gdHJhbnNmZXIgaWYgdGhlIGRpcmVjdGlvbiBjaGFuZ2Ugb3IgbWFuYWdlIG9ubHkgdGhlIG5ldyBkYXRhIHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBubyBkaXJlY3Rpb24gY2hhbmdlIGFuZCB3aXRoIGEgZmluYWwgc3RvcCBjb25kaXRpb24gaW4gYm90aCBjYXNlcwotICAgICAgKCsrKSBJMkNfTEFTVF9GUkFNRV9OT19TVE9QOiBTZXF1ZW50aWFsIHVzYWdlIChNYXN0ZXIgb25seSksIHRoaXMgb3B0aW9uIGFsbG93IHRvIG1hbmFnZSBhIHJlc3RhcnQgY29uZGl0aW9uIGFmdGVyIHNldmVyYWwgY2FsbCBvZiB0aGUgc2FtZSBtYXN0ZXIgc2VxdWVudGlhbAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVyZmFjZSBzZXZlcmFsIHRpbWVzIChsaW5rIHdpdGggb3B0aW9uIEkyQ19GSVJTVF9BTkRfTkVYVF9GUkFNRSkuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVXNhZ2UgY2FuLCB0cmFuc2ZlciBzZXZlcmFsIGJ5dGVzIG9uZSBieSBvbmUgdXNpbmcgSEFMX0kyQ19NYXN0ZXJfU2VxX1RyYW5zbWl0X0lUKG9wdGlvbiBJMkNfRklSU1RfQU5EX05FWFRfRlJBTUUgdGhlbiBJMkNfTkVYVF9GUkFNRSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yIEhBTF9JMkNfTWFzdGVyX1NlcV9SZWNlaXZlX0lUKG9wdGlvbiBJMkNfRklSU1RfQU5EX05FWFRfRlJBTUUgdGhlbiBJMkNfTkVYVF9GUkFNRSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yIEhBTF9JMkNfTWFzdGVyX1NlcV9UcmFuc21pdF9ETUEob3B0aW9uIEkyQ19GSVJTVF9BTkRfTkVYVF9GUkFNRSB0aGVuIEkyQ19ORVhUX0ZSQU1FKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3IgSEFMX0kyQ19NYXN0ZXJfU2VxX1JlY2VpdmVfRE1BKG9wdGlvbiBJMkNfRklSU1RfQU5EX05FWFRfRlJBTUUgdGhlbiBJMkNfTkVYVF9GUkFNRSkuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlbiB1c2FnZSBvZiB0aGlzIG9wdGlvbiBJMkNfTEFTVF9GUkFNRV9OT19TVE9QIGF0IHRoZSBsYXN0IFRyYW5zbWl0IG9yIFJlY2VpdmUgc2VxdWVuY2UgcGVybWl0IHRvIGNhbGwgdGhlIG9wcG9zaXRlIGludGVyZmFjZSBSZWNlaXZlIG9yIFRyYW5zbWl0CisgICAgICAoKyspIEkyQ19MQVNUX0ZSQU1FX05PX1NUT1A6IFNlcXVlbnRpYWwgdXNhZ2UgKE1hc3RlciBvbmx5KSwgdGhpcyBvcHRpb24gYWxsb3cgdG8gbWFuYWdlIGEgcmVzdGFydCBjb25kaXRpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZnRlciBzZXZlcmFsIGNhbGwgb2YgdGhlIHNhbWUgbWFzdGVyIHNlcXVlbnRpYWwgaW50ZXJmYWNlIHNldmVyYWwgdGltZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGluayB3aXRoIG9wdGlvbiBJMkNfRklSU1RfQU5EX05FWFRfRlJBTUUpLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVzYWdlIGNhbiwgdHJhbnNmZXIgc2V2ZXJhbCBieXRlcyBvbmUgYnkgb25lIHVzaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQUxfSTJDX01hc3Rlcl9TZXFfVHJhbnNtaXRfSVQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yIEhBTF9JMkNfTWFzdGVyX1NlcV9SZWNlaXZlX0lUCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvciBIQUxfSTJDX01hc3Rlcl9TZXFfVHJhbnNtaXRfRE1BCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvciBIQUxfSTJDX01hc3Rlcl9TZXFfUmVjZWl2ZV9ETUEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggb3B0aW9uIEkyQ19GSVJTVF9BTkRfTkVYVF9GUkFNRSB0aGVuIEkyQ19ORVhUX0ZSQU1FLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGVuIHVzYWdlIG9mIHRoaXMgb3B0aW9uIEkyQ19MQVNUX0ZSQU1FX05PX1NUT1AgYXQgdGhlIGxhc3QgVHJhbnNtaXQgb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlY2VpdmUgc2VxdWVuY2UgcGVybWl0IHRvIGNhbGwgdGhlIG9wcG9zaXRlIGludGVyZmFjZSBSZWNlaXZlIG9yIFRyYW5zbWl0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRob3V0IHN0b3BwaW5nIHRoZSBjb21tdW5pY2F0aW9uIGFuZCBzbyBnZW5lcmF0ZSBhIHJlc3RhcnQgY29uZGl0aW9uLgotICAgICAgKCsrKSBJMkNfT1RIRVJfRlJBTUU6IFNlcXVlbnRpYWwgdXNhZ2UgKE1hc3RlciBvbmx5KSwgdGhpcyBvcHRpb24gYWxsb3cgdG8gbWFuYWdlIGEgcmVzdGFydCBjb25kaXRpb24gYWZ0ZXIgZWFjaCBjYWxsIG9mIHRoZSBzYW1lIG1hc3RlciBzZXF1ZW50aWFsCisgICAgICAoKyspIEkyQ19PVEhFUl9GUkFNRTogU2VxdWVudGlhbCB1c2FnZSAoTWFzdGVyIG9ubHkpLCB0aGlzIG9wdGlvbiBhbGxvdyB0byBtYW5hZ2UgYSByZXN0YXJ0IGNvbmRpdGlvbiBhZnRlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVhY2ggY2FsbCBvZiB0aGUgc2FtZSBtYXN0ZXIgc2VxdWVudGlhbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVyZmFjZS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBVc2FnZSBjYW4sIHRyYW5zZmVyIHNldmVyYWwgYnl0ZXMgb25lIGJ5IG9uZSB3aXRoIGEgcmVzdGFydCB3aXRoIHNsYXZlIGFkZHJlc3MgYmV0d2VlbiBlYWNoIGJ5dGVzIHVzaW5nIEhBTF9JMkNfTWFzdGVyX1NlcV9UcmFuc21pdF9JVChvcHRpb24gSTJDX0ZJUlNUX0ZSQU1FIHRoZW4gSTJDX09USEVSX0ZSQU1FKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3IgSEFMX0kyQ19NYXN0ZXJfU2VxX1JlY2VpdmVfSVQob3B0aW9uIEkyQ19GSVJTVF9GUkFNRSB0aGVuIEkyQ19PVEhFUl9GUkFNRSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yIEhBTF9JMkNfTWFzdGVyX1NlcV9UcmFuc21pdF9ETUEob3B0aW9uIEkyQ19GSVJTVF9GUkFNRSB0aGVuIEkyQ19PVEhFUl9GUkFNRSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yIEhBTF9JMkNfTWFzdGVyX1NlcV9SZWNlaXZlX0RNQShvcHRpb24gSTJDX0ZJUlNUX0ZSQU1FIHRoZW4gSTJDX09USEVSX0ZSQU1FKS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGVuIHVzYWdlIG9mIHRoaXMgb3B0aW9uIEkyQ19PVEhFUl9BTkRfTEFTVF9GUkFNRSBhdCB0aGUgbGFzdCBmcmFtZSB0byBoZWxwIGF1dG9tYXRpYyBnZW5lcmF0aW9uIG9mIFNUT1AgY29uZGl0aW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVzYWdlIGNhbiwgdHJhbnNmZXIgc2V2ZXJhbCBieXRlcyBvbmUgYnkgb25lIHdpdGggYSByZXN0YXJ0IHdpdGggc2xhdmUgYWRkcmVzcyBiZXR3ZWVuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWFjaCBieXRlcyB1c2luZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFMX0kyQ19NYXN0ZXJfU2VxX1RyYW5zbWl0X0lUCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvciBIQUxfSTJDX01hc3Rlcl9TZXFfUmVjZWl2ZV9JVAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3IgSEFMX0kyQ19NYXN0ZXJfU2VxX1RyYW5zbWl0X0RNQQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3IgSEFMX0kyQ19NYXN0ZXJfU2VxX1JlY2VpdmVfRE1BCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIG9wdGlvbiBJMkNfRklSU1RfRlJBTUUgdGhlbiBJMkNfT1RIRVJfRlJBTUUuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlbiB1c2FnZSBvZiB0aGlzIG9wdGlvbiBJMkNfT1RIRVJfQU5EX0xBU1RfRlJBTUUgYXQgdGhlIGxhc3QgZnJhbWUgdG8gaGVscCBhdXRvbWF0aWMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0aW9uIG9mIFNUT1AgY29uZGl0aW9uLgogCiAgICAgICAoKykgRGlmZmVyZW50IHNlcXVlbnRpYWwgSTJDIGludGVyZmFjZXMgYXJlIGxpc3RlZCBiZWxvdzoKLSAgICAgICgrKykgU2VxdWVudGlhbCB0cmFuc21pdCBpbiBtYXN0ZXIgSTJDIG1vZGUgYW4gYW1vdW50IG9mIGRhdGEgaW4gbm9uLWJsb2NraW5nIG1vZGUgdXNpbmcgQHJlZiBIQUxfSTJDX01hc3Rlcl9TZXFfVHJhbnNtaXRfSVQoKQotICAgICAgICAgICAgb3IgdXNpbmcgQHJlZiBIQUxfSTJDX01hc3Rlcl9TZXFfVHJhbnNtaXRfRE1BKCkKLSAgICAgICgrKyspIEF0IHRyYW5zbWlzc2lvbiBlbmQgb2YgY3VycmVudCBmcmFtZSB0cmFuc2ZlciwgQHJlZiBIQUxfSTJDX01hc3RlclR4Q3BsdENhbGxiYWNrKCkgaXMgZXhlY3V0ZWQgYW5kIHVzZXIgY2FuCi0gICAgICAgICAgIGFkZCBoaXMgb3duIGNvZGUgYnkgY3VzdG9taXphdGlvbiBvZiBmdW5jdGlvbiBwb2ludGVyIEByZWYgSEFMX0kyQ19NYXN0ZXJUeENwbHRDYWxsYmFjaygpCi0gICAgICAoKyspIFNlcXVlbnRpYWwgcmVjZWl2ZSBpbiBtYXN0ZXIgSTJDIG1vZGUgYW4gYW1vdW50IG9mIGRhdGEgaW4gbm9uLWJsb2NraW5nIG1vZGUgdXNpbmcgQHJlZiBIQUxfSTJDX01hc3Rlcl9TZXFfUmVjZWl2ZV9JVCgpCi0gICAgICAgICAgICBvciB1c2luZyBAcmVmIEhBTF9JMkNfTWFzdGVyX1NlcV9SZWNlaXZlX0RNQSgpCi0gICAgICAoKysrKSBBdCByZWNlcHRpb24gZW5kIG9mIGN1cnJlbnQgZnJhbWUgdHJhbnNmZXIsIEByZWYgSEFMX0kyQ19NYXN0ZXJSeENwbHRDYWxsYmFjaygpIGlzIGV4ZWN1dGVkIGFuZCB1c2VyIGNhbgotICAgICAgICAgICBhZGQgaGlzIG93biBjb2RlIGJ5IGN1c3RvbWl6YXRpb24gb2YgZnVuY3Rpb24gcG9pbnRlciBAcmVmIEhBTF9JMkNfTWFzdGVyUnhDcGx0Q2FsbGJhY2soKQotICAgICAgKCsrKSBBYm9ydCBhIG1hc3RlciBJVCBvciBETUEgSTJDIHByb2Nlc3MgY29tbXVuaWNhdGlvbiB3aXRoIEludGVycnVwdCB1c2luZyBAcmVmIEhBTF9JMkNfTWFzdGVyX0Fib3J0X0lUKCkKLSAgICAgICgrKyspIEVuZCBvZiBhYm9ydCBwcm9jZXNzLCBAcmVmIEhBTF9JMkNfQWJvcnRDcGx0Q2FsbGJhY2soKSBpcyBleGVjdXRlZCBhbmQgdXNlciBjYW4KLSAgICAgICAgICAgYWRkIGhpcyBvd24gY29kZSBieSBjdXN0b21pemF0aW9uIG9mIGZ1bmN0aW9uIHBvaW50ZXIgQHJlZiBIQUxfSTJDX0Fib3J0Q3BsdENhbGxiYWNrKCkKLSAgICAgICgrKykgRW5hYmxlL2Rpc2FibGUgdGhlIEFkZHJlc3MgbGlzdGVuIG1vZGUgaW4gc2xhdmUgSTJDIG1vZGUgdXNpbmcgQHJlZiBIQUxfSTJDX0VuYWJsZUxpc3Rlbl9JVCgpIEByZWYgSEFMX0kyQ19EaXNhYmxlTGlzdGVuX0lUKCkKLSAgICAgICgrKyspIFdoZW4gYWRkcmVzcyBzbGF2ZSBJMkMgbWF0Y2gsIEByZWYgSEFMX0kyQ19BZGRyQ2FsbGJhY2soKSBpcyBleGVjdXRlZCBhbmQgdXNlciBjYW4KLSAgICAgICAgICAgYWRkIGhpcyBvd24gY29kZSB0byBjaGVjayB0aGUgQWRkcmVzcyBNYXRjaCBDb2RlIGFuZCB0aGUgdHJhbnNtaXNzaW9uIGRpcmVjdGlvbiByZXF1ZXN0IGJ5IG1hc3RlciAoV3JpdGUvUmVhZCkuCi0gICAgICAoKysrKSBBdCBMaXN0ZW4gbW9kZSBlbmQgQHJlZiBIQUxfSTJDX0xpc3RlbkNwbHRDYWxsYmFjaygpIGlzIGV4ZWN1dGVkIGFuZCB1c2VyIGNhbgotICAgICAgICAgICBhZGQgaGlzIG93biBjb2RlIGJ5IGN1c3RvbWl6YXRpb24gb2YgZnVuY3Rpb24gcG9pbnRlciBAcmVmIEhBTF9JMkNfTGlzdGVuQ3BsdENhbGxiYWNrKCkKLSAgICAgICgrKykgU2VxdWVudGlhbCB0cmFuc21pdCBpbiBzbGF2ZSBJMkMgbW9kZSBhbiBhbW91bnQgb2YgZGF0YSBpbiBub24tYmxvY2tpbmcgbW9kZSB1c2luZyBAcmVmIEhBTF9JMkNfU2xhdmVfU2VxX1RyYW5zbWl0X0lUKCkKLSAgICAgICAgICAgIG9yIHVzaW5nIEByZWYgSEFMX0kyQ19TbGF2ZV9TZXFfVHJhbnNtaXRfRE1BKCkKLSAgICAgICgrKyspIEF0IHRyYW5zbWlzc2lvbiBlbmQgb2YgY3VycmVudCBmcmFtZSB0cmFuc2ZlciwgQHJlZiBIQUxfSTJDX1NsYXZlVHhDcGx0Q2FsbGJhY2soKSBpcyBleGVjdXRlZCBhbmQgdXNlciBjYW4KLSAgICAgICAgICAgYWRkIGhpcyBvd24gY29kZSBieSBjdXN0b21pemF0aW9uIG9mIGZ1bmN0aW9uIHBvaW50ZXIgQHJlZiBIQUxfSTJDX1NsYXZlVHhDcGx0Q2FsbGJhY2soKQotICAgICAgKCsrKSBTZXF1ZW50aWFsIHJlY2VpdmUgaW4gc2xhdmUgSTJDIG1vZGUgYW4gYW1vdW50IG9mIGRhdGEgaW4gbm9uLWJsb2NraW5nIG1vZGUgdXNpbmcgQHJlZiBIQUxfSTJDX1NsYXZlX1NlcV9SZWNlaXZlX0lUKCkKLSAgICAgICAgICAgIG9yIHVzaW5nIEByZWYgSEFMX0kyQ19TbGF2ZV9TZXFfUmVjZWl2ZV9ETUEoKQotICAgICAgKCsrKykgQXQgcmVjZXB0aW9uIGVuZCBvZiBjdXJyZW50IGZyYW1lIHRyYW5zZmVyLCBAcmVmIEhBTF9JMkNfU2xhdmVSeENwbHRDYWxsYmFjaygpIGlzIGV4ZWN1dGVkIGFuZCB1c2VyIGNhbgotICAgICAgICAgICBhZGQgaGlzIG93biBjb2RlIGJ5IGN1c3RvbWl6YXRpb24gb2YgZnVuY3Rpb24gcG9pbnRlciBAcmVmIEhBTF9JMkNfU2xhdmVSeENwbHRDYWxsYmFjaygpCi0gICAgICAoKyspIEluIGNhc2Ugb2YgdHJhbnNmZXIgRXJyb3IsIEByZWYgSEFMX0kyQ19FcnJvckNhbGxiYWNrKCkgZnVuY3Rpb24gaXMgZXhlY3V0ZWQgYW5kIHVzZXIgY2FuCi0gICAgICAgICAgIGFkZCBoaXMgb3duIGNvZGUgYnkgY3VzdG9taXphdGlvbiBvZiBmdW5jdGlvbiBwb2ludGVyIEByZWYgSEFMX0kyQ19FcnJvckNhbGxiYWNrKCkKLSAgICAgICgrKykgRGlzY2FyZCBhIHNsYXZlIEkyQyBwcm9jZXNzIGNvbW11bmljYXRpb24gdXNpbmcgQHJlZiBfX0hBTF9JMkNfR0VORVJBVEVfTkFDSygpIG1hY3JvLgorICAgICAgKCsrKSBTZXF1ZW50aWFsIHRyYW5zbWl0IGluIG1hc3RlciBJMkMgbW9kZSBhbiBhbW91bnQgb2YgZGF0YSBpbiBub24tYmxvY2tpbmcgbW9kZSB1c2luZworICAgICAgICAgICAgSEFMX0kyQ19NYXN0ZXJfU2VxX1RyYW5zbWl0X0lUKCkgb3IgdXNpbmcgSEFMX0kyQ19NYXN0ZXJfU2VxX1RyYW5zbWl0X0RNQSgpCisgICAgICAoKysrKSBBdCB0cmFuc21pc3Npb24gZW5kIG9mIGN1cnJlbnQgZnJhbWUgdHJhbnNmZXIsIEhBTF9JMkNfTWFzdGVyVHhDcGx0Q2FsbGJhY2soKSBpcyBleGVjdXRlZCBhbmQKKyAgICAgICAgICAgIHVzZXJzIGNhbiBhZGQgdGhlaXIgb3duIGNvZGUgYnkgY3VzdG9taXphdGlvbiBvZiBmdW5jdGlvbiBwb2ludGVyIEhBTF9JMkNfTWFzdGVyVHhDcGx0Q2FsbGJhY2soKQorICAgICAgKCsrKSBTZXF1ZW50aWFsIHJlY2VpdmUgaW4gbWFzdGVyIEkyQyBtb2RlIGFuIGFtb3VudCBvZiBkYXRhIGluIG5vbi1ibG9ja2luZyBtb2RlIHVzaW5nCisgICAgICAgICAgICBIQUxfSTJDX01hc3Rlcl9TZXFfUmVjZWl2ZV9JVCgpIG9yIHVzaW5nIEhBTF9JMkNfTWFzdGVyX1NlcV9SZWNlaXZlX0RNQSgpCisgICAgICAoKysrKSBBdCByZWNlcHRpb24gZW5kIG9mIGN1cnJlbnQgZnJhbWUgdHJhbnNmZXIsIEhBTF9JMkNfTWFzdGVyUnhDcGx0Q2FsbGJhY2soKSBpcyBleGVjdXRlZCBhbmQgdXNlcnMgY2FuCisgICAgICAgICAgIGFkZCB0aGVpciBvd24gY29kZSBieSBjdXN0b21pemF0aW9uIG9mIGZ1bmN0aW9uIHBvaW50ZXIgSEFMX0kyQ19NYXN0ZXJSeENwbHRDYWxsYmFjaygpCisgICAgICAoKyspIEFib3J0IGEgbWFzdGVyIElUIG9yIERNQSBJMkMgcHJvY2VzcyBjb21tdW5pY2F0aW9uIHdpdGggSW50ZXJydXB0IHVzaW5nIEhBTF9JMkNfTWFzdGVyX0Fib3J0X0lUKCkKKyAgICAgICgrKyspIEVuZCBvZiBhYm9ydCBwcm9jZXNzLCBIQUxfSTJDX0Fib3J0Q3BsdENhbGxiYWNrKCkgaXMgZXhlY3V0ZWQgYW5kIHVzZXJzIGNhbgorICAgICAgICAgICBhZGQgdGhlaXIgb3duIGNvZGUgYnkgY3VzdG9taXphdGlvbiBvZiBmdW5jdGlvbiBwb2ludGVyIEhBTF9JMkNfQWJvcnRDcGx0Q2FsbGJhY2soKQorICAgICAgKCsrKSBFbmFibGUvZGlzYWJsZSB0aGUgQWRkcmVzcyBsaXN0ZW4gbW9kZSBpbiBzbGF2ZSBJMkMgbW9kZSB1c2luZyBIQUxfSTJDX0VuYWJsZUxpc3Rlbl9JVCgpCisgICAgICAgICAgICBIQUxfSTJDX0Rpc2FibGVMaXN0ZW5fSVQoKQorICAgICAgKCsrKykgV2hlbiBhZGRyZXNzIHNsYXZlIEkyQyBtYXRjaCwgSEFMX0kyQ19BZGRyQ2FsbGJhY2soKSBpcyBleGVjdXRlZCBhbmQgdXNlcnMgY2FuCisgICAgICAgICAgIGFkZCB0aGVpciBvd24gY29kZSB0byBjaGVjayB0aGUgQWRkcmVzcyBNYXRjaCBDb2RlIGFuZCB0aGUgdHJhbnNtaXNzaW9uIGRpcmVjdGlvbiByZXF1ZXN0IGJ5IG1hc3RlcgorICAgICAgICAgICAoV3JpdGUvUmVhZCkuCisgICAgICAoKysrKSBBdCBMaXN0ZW4gbW9kZSBlbmQgSEFMX0kyQ19MaXN0ZW5DcGx0Q2FsbGJhY2soKSBpcyBleGVjdXRlZCBhbmQgdXNlcnMgY2FuCisgICAgICAgICAgYWRkIHRoZWlyIG93biBjb2RlIGJ5IGN1c3RvbWl6YXRpb24gb2YgZnVuY3Rpb24gcG9pbnRlciBIQUxfSTJDX0xpc3RlbkNwbHRDYWxsYmFjaygpCisgICAgICAoKyspIFNlcXVlbnRpYWwgdHJhbnNtaXQgaW4gc2xhdmUgSTJDIG1vZGUgYW4gYW1vdW50IG9mIGRhdGEgaW4gbm9uLWJsb2NraW5nIG1vZGUgdXNpbmcKKyAgICAgICAgICAgIEhBTF9JMkNfU2xhdmVfU2VxX1RyYW5zbWl0X0lUKCkgb3IgdXNpbmcgSEFMX0kyQ19TbGF2ZV9TZXFfVHJhbnNtaXRfRE1BKCkKKyAgICAgICgrKyspIEF0IHRyYW5zbWlzc2lvbiBlbmQgb2YgY3VycmVudCBmcmFtZSB0cmFuc2ZlciwgSEFMX0kyQ19TbGF2ZVR4Q3BsdENhbGxiYWNrKCkgaXMgZXhlY3V0ZWQgYW5kCisgICAgICAgICAgICB1c2VycyBjYW4gYWRkIHRoZWlyIG93biBjb2RlIGJ5IGN1c3RvbWl6YXRpb24gb2YgZnVuY3Rpb24gcG9pbnRlciBIQUxfSTJDX1NsYXZlVHhDcGx0Q2FsbGJhY2soKQorICAgICAgKCsrKSBTZXF1ZW50aWFsIHJlY2VpdmUgaW4gc2xhdmUgSTJDIG1vZGUgYW4gYW1vdW50IG9mIGRhdGEgaW4gbm9uLWJsb2NraW5nIG1vZGUgdXNpbmcKKyAgICAgICAgICAgIEhBTF9JMkNfU2xhdmVfU2VxX1JlY2VpdmVfSVQoKSBvciB1c2luZyBIQUxfSTJDX1NsYXZlX1NlcV9SZWNlaXZlX0RNQSgpCisgICAgICAoKysrKSBBdCByZWNlcHRpb24gZW5kIG9mIGN1cnJlbnQgZnJhbWUgdHJhbnNmZXIsIEhBTF9JMkNfU2xhdmVSeENwbHRDYWxsYmFjaygpIGlzIGV4ZWN1dGVkIGFuZCB1c2VycyBjYW4KKyAgICAgICAgICAgYWRkIHRoZWlyIG93biBjb2RlIGJ5IGN1c3RvbWl6YXRpb24gb2YgZnVuY3Rpb24gcG9pbnRlciBIQUxfSTJDX1NsYXZlUnhDcGx0Q2FsbGJhY2soKQorICAgICAgKCsrKSBJbiBjYXNlIG9mIHRyYW5zZmVyIEVycm9yLCBIQUxfSTJDX0Vycm9yQ2FsbGJhY2soKSBmdW5jdGlvbiBpcyBleGVjdXRlZCBhbmQgdXNlcnMgY2FuCisgICAgICAgICAgIGFkZCB0aGVpciBvd24gY29kZSBieSBjdXN0b21pemF0aW9uIG9mIGZ1bmN0aW9uIHBvaW50ZXIgSEFMX0kyQ19FcnJvckNhbGxiYWNrKCkKKyAgICAgICgrKykgRGlzY2FyZCBhIHNsYXZlIEkyQyBwcm9jZXNzIGNvbW11bmljYXRpb24gdXNpbmcgX19IQUxfSTJDX0dFTkVSQVRFX05BQ0soKSBtYWNyby4KICAgICAgICAgICAgVGhpcyBhY3Rpb24gd2lsbCBpbmZvcm0gTWFzdGVyIHRvIGdlbmVyYXRlIGEgU3RvcCBjb25kaXRpb24gdG8gZGlzY2FyZCB0aGUgY29tbXVuaWNhdGlvbi4KIAogICAgICoqKiBJbnRlcnJ1cHQgbW9kZSBJTyBNRU0gb3BlcmF0aW9uICoqKgogICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICAgIFsuLl0KICAgICAgICgrKSBXcml0ZSBhbiBhbW91bnQgb2YgZGF0YSBpbiBub24tYmxvY2tpbmcgbW9kZSB3aXRoIEludGVycnVwdCB0byBhIHNwZWNpZmljIG1lbW9yeSBhZGRyZXNzIHVzaW5nCi0gICAgICAgICAgQHJlZiBIQUxfSTJDX01lbV9Xcml0ZV9JVCgpCi0gICAgICAoKykgQXQgTWVtb3J5IGVuZCBvZiB3cml0ZSB0cmFuc2ZlciwgQHJlZiBIQUxfSTJDX01lbVR4Q3BsdENhbGxiYWNrKCkgaXMgZXhlY3V0ZWQgYW5kIHVzZXIgY2FuCi0gICAgICAgICAgIGFkZCBoaXMgb3duIGNvZGUgYnkgY3VzdG9taXphdGlvbiBvZiBmdW5jdGlvbiBwb2ludGVyIEByZWYgSEFMX0kyQ19NZW1UeENwbHRDYWxsYmFjaygpCisgICAgICAgICAgSEFMX0kyQ19NZW1fV3JpdGVfSVQoKQorICAgICAgKCspIEF0IE1lbW9yeSBlbmQgb2Ygd3JpdGUgdHJhbnNmZXIsIEhBTF9JMkNfTWVtVHhDcGx0Q2FsbGJhY2soKSBpcyBleGVjdXRlZCBhbmQgdXNlcnMgY2FuCisgICAgICAgICAgIGFkZCB0aGVpciBvd24gY29kZSBieSBjdXN0b21pemF0aW9uIG9mIGZ1bmN0aW9uIHBvaW50ZXIgSEFMX0kyQ19NZW1UeENwbHRDYWxsYmFjaygpCiAgICAgICAoKykgUmVhZCBhbiBhbW91bnQgb2YgZGF0YSBpbiBub24tYmxvY2tpbmcgbW9kZSB3aXRoIEludGVycnVwdCBmcm9tIGEgc3BlY2lmaWMgbWVtb3J5IGFkZHJlc3MgdXNpbmcKLSAgICAgICAgICBAcmVmIEhBTF9JMkNfTWVtX1JlYWRfSVQoKQotICAgICAgKCspIEF0IE1lbW9yeSBlbmQgb2YgcmVhZCB0cmFuc2ZlciwgQHJlZiBIQUxfSTJDX01lbVJ4Q3BsdENhbGxiYWNrKCkgaXMgZXhlY3V0ZWQgYW5kIHVzZXIgY2FuCi0gICAgICAgICAgIGFkZCBoaXMgb3duIGNvZGUgYnkgY3VzdG9taXphdGlvbiBvZiBmdW5jdGlvbiBwb2ludGVyIEByZWYgSEFMX0kyQ19NZW1SeENwbHRDYWxsYmFjaygpCi0gICAgICAoKykgSW4gY2FzZSBvZiB0cmFuc2ZlciBFcnJvciwgQHJlZiBIQUxfSTJDX0Vycm9yQ2FsbGJhY2soKSBmdW5jdGlvbiBpcyBleGVjdXRlZCBhbmQgdXNlciBjYW4KLSAgICAgICAgICAgYWRkIGhpcyBvd24gY29kZSBieSBjdXN0b21pemF0aW9uIG9mIGZ1bmN0aW9uIHBvaW50ZXIgQHJlZiBIQUxfSTJDX0Vycm9yQ2FsbGJhY2soKQorICAgICAgICAgIEhBTF9JMkNfTWVtX1JlYWRfSVQoKQorICAgICAgKCspIEF0IE1lbW9yeSBlbmQgb2YgcmVhZCB0cmFuc2ZlciwgSEFMX0kyQ19NZW1SeENwbHRDYWxsYmFjaygpIGlzIGV4ZWN1dGVkIGFuZCB1c2VycyBjYW4KKyAgICAgICAgICAgYWRkIHRoZWlyIG93biBjb2RlIGJ5IGN1c3RvbWl6YXRpb24gb2YgZnVuY3Rpb24gcG9pbnRlciBIQUxfSTJDX01lbVJ4Q3BsdENhbGxiYWNrKCkKKyAgICAgICgrKSBJbiBjYXNlIG9mIHRyYW5zZmVyIEVycm9yLCBIQUxfSTJDX0Vycm9yQ2FsbGJhY2soKSBmdW5jdGlvbiBpcyBleGVjdXRlZCBhbmQgdXNlcnMgY2FuCisgICAgICAgICAgIGFkZCB0aGVpciBvd24gY29kZSBieSBjdXN0b21pemF0aW9uIG9mIGZ1bmN0aW9uIHBvaW50ZXIgSEFMX0kyQ19FcnJvckNhbGxiYWNrKCkKIAogICAgICoqKiBETUEgbW9kZSBJTyBvcGVyYXRpb24gKioqCiAgICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgICAgWy4uXQogICAgICAgKCspIFRyYW5zbWl0IGluIG1hc3RlciBtb2RlIGFuIGFtb3VudCBvZiBkYXRhIGluIG5vbi1ibG9ja2luZyBtb2RlIChETUEpIHVzaW5nCi0gICAgICAgICAgQHJlZiBIQUxfSTJDX01hc3Rlcl9UcmFuc21pdF9ETUEoKQotICAgICAgKCspIEF0IHRyYW5zbWlzc2lvbiBlbmQgb2YgdHJhbnNmZXIsIEByZWYgSEFMX0kyQ19NYXN0ZXJUeENwbHRDYWxsYmFjaygpIGlzIGV4ZWN1dGVkIGFuZCB1c2VyIGNhbgotICAgICAgICAgICBhZGQgaGlzIG93biBjb2RlIGJ5IGN1c3RvbWl6YXRpb24gb2YgZnVuY3Rpb24gcG9pbnRlciBAcmVmIEhBTF9JMkNfTWFzdGVyVHhDcGx0Q2FsbGJhY2soKQorICAgICAgICAgIEhBTF9JMkNfTWFzdGVyX1RyYW5zbWl0X0RNQSgpCisgICAgICAoKykgQXQgdHJhbnNtaXNzaW9uIGVuZCBvZiB0cmFuc2ZlciwgSEFMX0kyQ19NYXN0ZXJUeENwbHRDYWxsYmFjaygpIGlzIGV4ZWN1dGVkIGFuZCB1c2VycyBjYW4KKyAgICAgICAgICAgYWRkIHRoZWlyIG93biBjb2RlIGJ5IGN1c3RvbWl6YXRpb24gb2YgZnVuY3Rpb24gcG9pbnRlciBIQUxfSTJDX01hc3RlclR4Q3BsdENhbGxiYWNrKCkKICAgICAgICgrKSBSZWNlaXZlIGluIG1hc3RlciBtb2RlIGFuIGFtb3VudCBvZiBkYXRhIGluIG5vbi1ibG9ja2luZyBtb2RlIChETUEpIHVzaW5nCi0gICAgICAgICAgQHJlZiBIQUxfSTJDX01hc3Rlcl9SZWNlaXZlX0RNQSgpCi0gICAgICAoKykgQXQgcmVjZXB0aW9uIGVuZCBvZiB0cmFuc2ZlciwgQHJlZiBIQUxfSTJDX01hc3RlclJ4Q3BsdENhbGxiYWNrKCkgaXMgZXhlY3V0ZWQgYW5kIHVzZXIgY2FuCi0gICAgICAgICAgIGFkZCBoaXMgb3duIGNvZGUgYnkgY3VzdG9taXphdGlvbiBvZiBmdW5jdGlvbiBwb2ludGVyIEByZWYgSEFMX0kyQ19NYXN0ZXJSeENwbHRDYWxsYmFjaygpCisgICAgICAgICAgSEFMX0kyQ19NYXN0ZXJfUmVjZWl2ZV9ETUEoKQorICAgICAgKCspIEF0IHJlY2VwdGlvbiBlbmQgb2YgdHJhbnNmZXIsIEhBTF9JMkNfTWFzdGVyUnhDcGx0Q2FsbGJhY2soKSBpcyBleGVjdXRlZCBhbmQgdXNlcnMgY2FuCisgICAgICAgICAgIGFkZCB0aGVpciBvd24gY29kZSBieSBjdXN0b21pemF0aW9uIG9mIGZ1bmN0aW9uIHBvaW50ZXIgSEFMX0kyQ19NYXN0ZXJSeENwbHRDYWxsYmFjaygpCiAgICAgICAoKykgVHJhbnNtaXQgaW4gc2xhdmUgbW9kZSBhbiBhbW91bnQgb2YgZGF0YSBpbiBub24tYmxvY2tpbmcgbW9kZSAoRE1BKSB1c2luZwotICAgICAgICAgIEByZWYgSEFMX0kyQ19TbGF2ZV9UcmFuc21pdF9ETUEoKQotICAgICAgKCspIEF0IHRyYW5zbWlzc2lvbiBlbmQgb2YgdHJhbnNmZXIsIEByZWYgSEFMX0kyQ19TbGF2ZVR4Q3BsdENhbGxiYWNrKCkgaXMgZXhlY3V0ZWQgYW5kIHVzZXIgY2FuCi0gICAgICAgICAgIGFkZCBoaXMgb3duIGNvZGUgYnkgY3VzdG9taXphdGlvbiBvZiBmdW5jdGlvbiBwb2ludGVyIEByZWYgSEFMX0kyQ19TbGF2ZVR4Q3BsdENhbGxiYWNrKCkKKyAgICAgICAgICBIQUxfSTJDX1NsYXZlX1RyYW5zbWl0X0RNQSgpCisgICAgICAoKykgQXQgdHJhbnNtaXNzaW9uIGVuZCBvZiB0cmFuc2ZlciwgSEFMX0kyQ19TbGF2ZVR4Q3BsdENhbGxiYWNrKCkgaXMgZXhlY3V0ZWQgYW5kIHVzZXJzIGNhbgorICAgICAgICAgICBhZGQgdGhlaXIgb3duIGNvZGUgYnkgY3VzdG9taXphdGlvbiBvZiBmdW5jdGlvbiBwb2ludGVyIEhBTF9JMkNfU2xhdmVUeENwbHRDYWxsYmFjaygpCiAgICAgICAoKykgUmVjZWl2ZSBpbiBzbGF2ZSBtb2RlIGFuIGFtb3VudCBvZiBkYXRhIGluIG5vbi1ibG9ja2luZyBtb2RlIChETUEpIHVzaW5nCi0gICAgICAgICAgQHJlZiBIQUxfSTJDX1NsYXZlX1JlY2VpdmVfRE1BKCkKLSAgICAgICgrKSBBdCByZWNlcHRpb24gZW5kIG9mIHRyYW5zZmVyLCBAcmVmIEhBTF9JMkNfU2xhdmVSeENwbHRDYWxsYmFjaygpIGlzIGV4ZWN1dGVkIGFuZCB1c2VyIGNhbgotICAgICAgICAgICBhZGQgaGlzIG93biBjb2RlIGJ5IGN1c3RvbWl6YXRpb24gb2YgZnVuY3Rpb24gcG9pbnRlciBAcmVmIEhBTF9JMkNfU2xhdmVSeENwbHRDYWxsYmFjaygpCi0gICAgICAoKykgSW4gY2FzZSBvZiB0cmFuc2ZlciBFcnJvciwgQHJlZiBIQUxfSTJDX0Vycm9yQ2FsbGJhY2soKSBmdW5jdGlvbiBpcyBleGVjdXRlZCBhbmQgdXNlciBjYW4KLSAgICAgICAgICAgYWRkIGhpcyBvd24gY29kZSBieSBjdXN0b21pemF0aW9uIG9mIGZ1bmN0aW9uIHBvaW50ZXIgQHJlZiBIQUxfSTJDX0Vycm9yQ2FsbGJhY2soKQotICAgICAgKCspIEFib3J0IGEgbWFzdGVyIEkyQyBwcm9jZXNzIGNvbW11bmljYXRpb24gd2l0aCBJbnRlcnJ1cHQgdXNpbmcgQHJlZiBIQUxfSTJDX01hc3Rlcl9BYm9ydF9JVCgpCi0gICAgICAoKykgRW5kIG9mIGFib3J0IHByb2Nlc3MsIEByZWYgSEFMX0kyQ19BYm9ydENwbHRDYWxsYmFjaygpIGlzIGV4ZWN1dGVkIGFuZCB1c2VyIGNhbgotICAgICAgICAgICBhZGQgaGlzIG93biBjb2RlIGJ5IGN1c3RvbWl6YXRpb24gb2YgZnVuY3Rpb24gcG9pbnRlciBAcmVmIEhBTF9JMkNfQWJvcnRDcGx0Q2FsbGJhY2soKQotICAgICAgKCspIERpc2NhcmQgYSBzbGF2ZSBJMkMgcHJvY2VzcyBjb21tdW5pY2F0aW9uIHVzaW5nIEByZWYgX19IQUxfSTJDX0dFTkVSQVRFX05BQ0soKSBtYWNyby4KKyAgICAgICAgICBIQUxfSTJDX1NsYXZlX1JlY2VpdmVfRE1BKCkKKyAgICAgICgrKSBBdCByZWNlcHRpb24gZW5kIG9mIHRyYW5zZmVyLCBIQUxfSTJDX1NsYXZlUnhDcGx0Q2FsbGJhY2soKSBpcyBleGVjdXRlZCBhbmQgdXNlcnMgY2FuCisgICAgICAgICAgIGFkZCB0aGVpciBvd24gY29kZSBieSBjdXN0b21pemF0aW9uIG9mIGZ1bmN0aW9uIHBvaW50ZXIgSEFMX0kyQ19TbGF2ZVJ4Q3BsdENhbGxiYWNrKCkKKyAgICAgICgrKSBJbiBjYXNlIG9mIHRyYW5zZmVyIEVycm9yLCBIQUxfSTJDX0Vycm9yQ2FsbGJhY2soKSBmdW5jdGlvbiBpcyBleGVjdXRlZCBhbmQgdXNlcnMgY2FuCisgICAgICAgICAgIGFkZCB0aGVpciBvd24gY29kZSBieSBjdXN0b21pemF0aW9uIG9mIGZ1bmN0aW9uIHBvaW50ZXIgSEFMX0kyQ19FcnJvckNhbGxiYWNrKCkKKyAgICAgICgrKSBBYm9ydCBhIG1hc3RlciBJMkMgcHJvY2VzcyBjb21tdW5pY2F0aW9uIHdpdGggSW50ZXJydXB0IHVzaW5nIEhBTF9JMkNfTWFzdGVyX0Fib3J0X0lUKCkKKyAgICAgICgrKSBFbmQgb2YgYWJvcnQgcHJvY2VzcywgSEFMX0kyQ19BYm9ydENwbHRDYWxsYmFjaygpIGlzIGV4ZWN1dGVkIGFuZCB1c2VycyBjYW4KKyAgICAgICAgICAgYWRkIHRoZWlyIG93biBjb2RlIGJ5IGN1c3RvbWl6YXRpb24gb2YgZnVuY3Rpb24gcG9pbnRlciBIQUxfSTJDX0Fib3J0Q3BsdENhbGxiYWNrKCkKKyAgICAgICgrKSBEaXNjYXJkIGEgc2xhdmUgSTJDIHByb2Nlc3MgY29tbXVuaWNhdGlvbiB1c2luZyBfX0hBTF9JMkNfR0VORVJBVEVfTkFDSygpIG1hY3JvLgogICAgICAgICAgICBUaGlzIGFjdGlvbiB3aWxsIGluZm9ybSBNYXN0ZXIgdG8gZ2VuZXJhdGUgYSBTdG9wIGNvbmRpdGlvbiB0byBkaXNjYXJkIHRoZSBjb21tdW5pY2F0aW9uLgogCiAgICAgKioqIERNQSBtb2RlIElPIE1FTSBvcGVyYXRpb24gKioqCiAgICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgICAgWy4uXQogICAgICAgKCspIFdyaXRlIGFuIGFtb3VudCBvZiBkYXRhIGluIG5vbi1ibG9ja2luZyBtb2RlIHdpdGggRE1BIHRvIGEgc3BlY2lmaWMgbWVtb3J5IGFkZHJlc3MgdXNpbmcKLSAgICAgICAgICBAcmVmIEhBTF9JMkNfTWVtX1dyaXRlX0RNQSgpCi0gICAgICAoKykgQXQgTWVtb3J5IGVuZCBvZiB3cml0ZSB0cmFuc2ZlciwgQHJlZiBIQUxfSTJDX01lbVR4Q3BsdENhbGxiYWNrKCkgaXMgZXhlY3V0ZWQgYW5kIHVzZXIgY2FuCi0gICAgICAgICAgIGFkZCBoaXMgb3duIGNvZGUgYnkgY3VzdG9taXphdGlvbiBvZiBmdW5jdGlvbiBwb2ludGVyIEByZWYgSEFMX0kyQ19NZW1UeENwbHRDYWxsYmFjaygpCisgICAgICAgICAgSEFMX0kyQ19NZW1fV3JpdGVfRE1BKCkKKyAgICAgICgrKSBBdCBNZW1vcnkgZW5kIG9mIHdyaXRlIHRyYW5zZmVyLCBIQUxfSTJDX01lbVR4Q3BsdENhbGxiYWNrKCkgaXMgZXhlY3V0ZWQgYW5kIHVzZXJzIGNhbgorICAgICAgICAgICBhZGQgdGhlaXIgb3duIGNvZGUgYnkgY3VzdG9taXphdGlvbiBvZiBmdW5jdGlvbiBwb2ludGVyIEhBTF9JMkNfTWVtVHhDcGx0Q2FsbGJhY2soKQogICAgICAgKCspIFJlYWQgYW4gYW1vdW50IG9mIGRhdGEgaW4gbm9uLWJsb2NraW5nIG1vZGUgd2l0aCBETUEgZnJvbSBhIHNwZWNpZmljIG1lbW9yeSBhZGRyZXNzIHVzaW5nCi0gICAgICAgICAgQHJlZiBIQUxfSTJDX01lbV9SZWFkX0RNQSgpCi0gICAgICAoKykgQXQgTWVtb3J5IGVuZCBvZiByZWFkIHRyYW5zZmVyLCBAcmVmIEhBTF9JMkNfTWVtUnhDcGx0Q2FsbGJhY2soKSBpcyBleGVjdXRlZCBhbmQgdXNlciBjYW4KLSAgICAgICAgICAgYWRkIGhpcyBvd24gY29kZSBieSBjdXN0b21pemF0aW9uIG9mIGZ1bmN0aW9uIHBvaW50ZXIgQHJlZiBIQUxfSTJDX01lbVJ4Q3BsdENhbGxiYWNrKCkKLSAgICAgICgrKSBJbiBjYXNlIG9mIHRyYW5zZmVyIEVycm9yLCBAcmVmIEhBTF9JMkNfRXJyb3JDYWxsYmFjaygpIGZ1bmN0aW9uIGlzIGV4ZWN1dGVkIGFuZCB1c2VyIGNhbgotICAgICAgICAgICBhZGQgaGlzIG93biBjb2RlIGJ5IGN1c3RvbWl6YXRpb24gb2YgZnVuY3Rpb24gcG9pbnRlciBAcmVmIEhBTF9JMkNfRXJyb3JDYWxsYmFjaygpCisgICAgICAgICAgSEFMX0kyQ19NZW1fUmVhZF9ETUEoKQorICAgICAgKCspIEF0IE1lbW9yeSBlbmQgb2YgcmVhZCB0cmFuc2ZlciwgSEFMX0kyQ19NZW1SeENwbHRDYWxsYmFjaygpIGlzIGV4ZWN1dGVkIGFuZCB1c2VycyBjYW4KKyAgICAgICAgICAgYWRkIHRoZWlyIG93biBjb2RlIGJ5IGN1c3RvbWl6YXRpb24gb2YgZnVuY3Rpb24gcG9pbnRlciBIQUxfSTJDX01lbVJ4Q3BsdENhbGxiYWNrKCkKKyAgICAgICgrKSBJbiBjYXNlIG9mIHRyYW5zZmVyIEVycm9yLCBIQUxfSTJDX0Vycm9yQ2FsbGJhY2soKSBmdW5jdGlvbiBpcyBleGVjdXRlZCBhbmQgdXNlcnMgY2FuCisgICAgICAgICAgIGFkZCB0aGVpciBvd24gY29kZSBieSBjdXN0b21pemF0aW9uIG9mIGZ1bmN0aW9uIHBvaW50ZXIgSEFMX0kyQ19FcnJvckNhbGxiYWNrKCkKIAogCiAgICAgICoqKiBJMkMgSEFMIGRyaXZlciBtYWNyb3MgbGlzdCAqKioKQEAgLTIxMywyMyArMjQwLDIzIEBACiAgICAgIFsuLl0KICAgICAgICBCZWxvdyB0aGUgbGlzdCBvZiBtb3N0IHVzZWQgbWFjcm9zIGluIEkyQyBIQUwgZHJpdmVyLgogCi0gICAgICAoKykgQHJlZiBfX0hBTF9JMkNfRU5BQkxFOiBFbmFibGUgdGhlIEkyQyBwZXJpcGhlcmFsCi0gICAgICAoKykgQHJlZiBfX0hBTF9JMkNfRElTQUJMRTogRGlzYWJsZSB0aGUgSTJDIHBlcmlwaGVyYWwKLSAgICAgICgrKSBAcmVmIF9fSEFMX0kyQ19HRU5FUkFURV9OQUNLOiBHZW5lcmF0ZSBhIE5vbi1BY2tub3dsZWRnZSBJMkMgcGVyaXBoZXJhbCBpbiBTbGF2ZSBtb2RlCi0gICAgICAoKykgQHJlZiBfX0hBTF9JMkNfR0VUX0ZMQUc6IENoZWNrIHdoZXRoZXIgdGhlIHNwZWNpZmllZCBJMkMgZmxhZyBpcyBzZXQgb3Igbm90Ci0gICAgICAoKykgQHJlZiBfX0hBTF9JMkNfQ0xFQVJfRkxBRzogQ2xlYXIgdGhlIHNwZWNpZmllZCBJMkMgcGVuZGluZyBmbGFnCi0gICAgICAoKykgQHJlZiBfX0hBTF9JMkNfRU5BQkxFX0lUOiBFbmFibGUgdGhlIHNwZWNpZmllZCBJMkMgaW50ZXJydXB0Ci0gICAgICAoKykgQHJlZiBfX0hBTF9JMkNfRElTQUJMRV9JVDogRGlzYWJsZSB0aGUgc3BlY2lmaWVkIEkyQyBpbnRlcnJ1cHQKKyAgICAgICgrKSBfX0hBTF9JMkNfRU5BQkxFOiBFbmFibGUgdGhlIEkyQyBwZXJpcGhlcmFsCisgICAgICAoKykgX19IQUxfSTJDX0RJU0FCTEU6IERpc2FibGUgdGhlIEkyQyBwZXJpcGhlcmFsCisgICAgICAoKykgX19IQUxfSTJDX0dFTkVSQVRFX05BQ0s6IEdlbmVyYXRlIGEgTm9uLUFja25vd2xlZGdlIEkyQyBwZXJpcGhlcmFsIGluIFNsYXZlIG1vZGUKKyAgICAgICgrKSBfX0hBTF9JMkNfR0VUX0ZMQUc6IENoZWNrIHdoZXRoZXIgdGhlIHNwZWNpZmllZCBJMkMgZmxhZyBpcyBzZXQgb3Igbm90CisgICAgICAoKykgX19IQUxfSTJDX0NMRUFSX0ZMQUc6IENsZWFyIHRoZSBzcGVjaWZpZWQgSTJDIHBlbmRpbmcgZmxhZworICAgICAgKCspIF9fSEFMX0kyQ19FTkFCTEVfSVQ6IEVuYWJsZSB0aGUgc3BlY2lmaWVkIEkyQyBpbnRlcnJ1cHQKKyAgICAgICgrKSBfX0hBTF9JMkNfRElTQUJMRV9JVDogRGlzYWJsZSB0aGUgc3BlY2lmaWVkIEkyQyBpbnRlcnJ1cHQKIAogICAgICAqKiogQ2FsbGJhY2sgcmVnaXN0cmF0aW9uICoqKgogICAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgICBbLi5dCiAgICAgIFRoZSBjb21waWxhdGlvbiBmbGFnIFVTRV9IQUxfSTJDX1JFR0lTVEVSX0NBTExCQUNLUyB3aGVuIHNldCB0byAxCiAgICAgIGFsbG93cyB0aGUgdXNlciB0byBjb25maWd1cmUgZHluYW1pY2FsbHkgdGhlIGRyaXZlciBjYWxsYmFja3MuCi0gICAgIFVzZSBGdW5jdGlvbnMgQHJlZiBIQUxfSTJDX1JlZ2lzdGVyQ2FsbGJhY2soKSBvciBAcmVmIEhBTF9JMkNfUmVnaXN0ZXJBZGRyQ2FsbGJhY2soKQorICAgICBVc2UgRnVuY3Rpb25zIEhBTF9JMkNfUmVnaXN0ZXJDYWxsYmFjaygpIG9yIEhBTF9JMkNfUmVnaXN0ZXJBZGRyQ2FsbGJhY2soKQogICAgICB0byByZWdpc3RlciBhbiBpbnRlcnJ1cHQgY2FsbGJhY2suCiAgICAgWy4uXQotICAgICBGdW5jdGlvbiBAcmVmIEhBTF9JMkNfUmVnaXN0ZXJDYWxsYmFjaygpIGFsbG93cyB0byByZWdpc3RlciBmb2xsb3dpbmcgY2FsbGJhY2tzOgorICAgICBGdW5jdGlvbiBIQUxfSTJDX1JlZ2lzdGVyQ2FsbGJhY2soKSBhbGxvd3MgdG8gcmVnaXN0ZXIgZm9sbG93aW5nIGNhbGxiYWNrczoKICAgICAgICAoKykgTWFzdGVyVHhDcGx0Q2FsbGJhY2sgOiBjYWxsYmFjayBmb3IgTWFzdGVyIHRyYW5zbWlzc2lvbiBlbmQgb2YgdHJhbnNmZXIuCiAgICAgICAgKCspIE1hc3RlclJ4Q3BsdENhbGxiYWNrIDogY2FsbGJhY2sgZm9yIE1hc3RlciByZWNlcHRpb24gZW5kIG9mIHRyYW5zZmVyLgogICAgICAgICgrKSBTbGF2ZVR4Q3BsdENhbGxiYWNrICA6IGNhbGxiYWNrIGZvciBTbGF2ZSB0cmFuc21pc3Npb24gZW5kIG9mIHRyYW5zZmVyLgpAQCAtMjQ0LDExICsyNzEsMTEgQEAKICAgICAgVGhpcyBmdW5jdGlvbiB0YWtlcyBhcyBwYXJhbWV0ZXJzIHRoZSBIQUwgcGVyaXBoZXJhbCBoYW5kbGUsIHRoZSBDYWxsYmFjayBJRAogICAgICBhbmQgYSBwb2ludGVyIHRvIHRoZSB1c2VyIGNhbGxiYWNrIGZ1bmN0aW9uLgogICAgIFsuLl0KLSAgICAgRm9yIHNwZWNpZmljIGNhbGxiYWNrIEFkZHJDYWxsYmFjayB1c2UgZGVkaWNhdGVkIHJlZ2lzdGVyIGNhbGxiYWNrcyA6IEByZWYgSEFMX0kyQ19SZWdpc3RlckFkZHJDYWxsYmFjaygpLgorICAgICBGb3Igc3BlY2lmaWMgY2FsbGJhY2sgQWRkckNhbGxiYWNrIHVzZSBkZWRpY2F0ZWQgcmVnaXN0ZXIgY2FsbGJhY2tzIDogSEFMX0kyQ19SZWdpc3RlckFkZHJDYWxsYmFjaygpLgogICAgIFsuLl0KLSAgICAgVXNlIGZ1bmN0aW9uIEByZWYgSEFMX0kyQ19VblJlZ2lzdGVyQ2FsbGJhY2sgdG8gcmVzZXQgYSBjYWxsYmFjayB0byB0aGUgZGVmYXVsdAorICAgICBVc2UgZnVuY3Rpb24gSEFMX0kyQ19VblJlZ2lzdGVyQ2FsbGJhY2sgdG8gcmVzZXQgYSBjYWxsYmFjayB0byB0aGUgZGVmYXVsdAogICAgICB3ZWFrIGZ1bmN0aW9uLgotICAgICBAcmVmIEhBTF9JMkNfVW5SZWdpc3RlckNhbGxiYWNrIHRha2VzIGFzIHBhcmFtZXRlcnMgdGhlIEhBTCBwZXJpcGhlcmFsIGhhbmRsZSwKKyAgICAgSEFMX0kyQ19VblJlZ2lzdGVyQ2FsbGJhY2sgdGFrZXMgYXMgcGFyYW1ldGVycyB0aGUgSEFMIHBlcmlwaGVyYWwgaGFuZGxlLAogICAgICBhbmQgdGhlIENhbGxiYWNrIElELgogICAgICBUaGlzIGZ1bmN0aW9uIGFsbG93cyB0byByZXNldCBmb2xsb3dpbmcgY2FsbGJhY2tzOgogICAgICAgICgrKSBNYXN0ZXJUeENwbHRDYWxsYmFjayA6IGNhbGxiYWNrIGZvciBNYXN0ZXIgdHJhbnNtaXNzaW9uIGVuZCBvZiB0cmFuc2Zlci4KQEAgLTI2MywyNCArMjkwLDI0IEBACiAgICAgICAgKCspIE1zcEluaXRDYWxsYmFjayAgICAgIDogY2FsbGJhY2sgZm9yIE1zcCBJbml0LgogICAgICAgICgrKSBNc3BEZUluaXRDYWxsYmFjayAgICA6IGNhbGxiYWNrIGZvciBNc3AgRGVJbml0LgogICAgIFsuLl0KLSAgICAgRm9yIGNhbGxiYWNrIEFkZHJDYWxsYmFjayB1c2UgZGVkaWNhdGVkIHJlZ2lzdGVyIGNhbGxiYWNrcyA6IEByZWYgSEFMX0kyQ19VblJlZ2lzdGVyQWRkckNhbGxiYWNrKCkuCisgICAgIEZvciBjYWxsYmFjayBBZGRyQ2FsbGJhY2sgdXNlIGRlZGljYXRlZCByZWdpc3RlciBjYWxsYmFja3MgOiBIQUxfSTJDX1VuUmVnaXN0ZXJBZGRyQ2FsbGJhY2soKS4KICAgICBbLi5dCi0gICAgIEJ5IGRlZmF1bHQsIGFmdGVyIHRoZSBAcmVmIEhBTF9JMkNfSW5pdCgpIGFuZCB3aGVuIHRoZSBzdGF0ZSBpcyBAcmVmIEhBTF9JMkNfU1RBVEVfUkVTRVQKKyAgICAgQnkgZGVmYXVsdCwgYWZ0ZXIgdGhlIEhBTF9JMkNfSW5pdCgpIGFuZCB3aGVuIHRoZSBzdGF0ZSBpcyBIQUxfSTJDX1NUQVRFX1JFU0VUCiAgICAgIGFsbCBjYWxsYmFja3MgYXJlIHNldCB0byB0aGUgY29ycmVzcG9uZGluZyB3ZWFrIGZ1bmN0aW9uczoKLSAgICAgZXhhbXBsZXMgQHJlZiBIQUxfSTJDX01hc3RlclR4Q3BsdENhbGxiYWNrKCksIEByZWYgSEFMX0kyQ19NYXN0ZXJSeENwbHRDYWxsYmFjaygpLgorICAgICBleGFtcGxlcyBIQUxfSTJDX01hc3RlclR4Q3BsdENhbGxiYWNrKCksIEhBTF9JMkNfTWFzdGVyUnhDcGx0Q2FsbGJhY2soKS4KICAgICAgRXhjZXB0aW9uIGRvbmUgZm9yIE1zcEluaXQgYW5kIE1zcERlSW5pdCBmdW5jdGlvbnMgdGhhdCBhcmUKLSAgICAgcmVzZXQgdG8gdGhlIGxlZ2FjeSB3ZWFrIGZ1bmN0aW9ucyBpbiB0aGUgQHJlZiBIQUxfSTJDX0luaXQoKS8gQHJlZiBIQUxfSTJDX0RlSW5pdCgpIG9ubHkgd2hlbgorICAgICByZXNldCB0byB0aGUgbGVnYWN5IHdlYWsgZnVuY3Rpb25zIGluIHRoZSBIQUxfSTJDX0luaXQoKS8gSEFMX0kyQ19EZUluaXQoKSBvbmx5IHdoZW4KICAgICAgdGhlc2UgY2FsbGJhY2tzIGFyZSBudWxsIChub3QgcmVnaXN0ZXJlZCBiZWZvcmVoYW5kKS4KLSAgICAgSWYgTXNwSW5pdCBvciBNc3BEZUluaXQgYXJlIG5vdCBudWxsLCB0aGUgQHJlZiBIQUxfSTJDX0luaXQoKS8gQHJlZiBIQUxfSTJDX0RlSW5pdCgpCisgICAgIElmIE1zcEluaXQgb3IgTXNwRGVJbml0IGFyZSBub3QgbnVsbCwgdGhlIEhBTF9JMkNfSW5pdCgpLyBIQUxfSTJDX0RlSW5pdCgpCiAgICAgIGtlZXAgYW5kIHVzZSB0aGUgdXNlciBNc3BJbml0L01zcERlSW5pdCBjYWxsYmFja3MgKHJlZ2lzdGVyZWQgYmVmb3JlaGFuZCkgd2hhdGV2ZXIgdGhlIHN0YXRlLgogICAgIFsuLl0KLSAgICAgQ2FsbGJhY2tzIGNhbiBiZSByZWdpc3RlcmVkL3VucmVnaXN0ZXJlZCBpbiBAcmVmIEhBTF9JMkNfU1RBVEVfUkVBRFkgc3RhdGUgb25seS4KKyAgICAgQ2FsbGJhY2tzIGNhbiBiZSByZWdpc3RlcmVkL3VucmVnaXN0ZXJlZCBpbiBIQUxfSTJDX1NUQVRFX1JFQURZIHN0YXRlIG9ubHkuCiAgICAgIEV4Y2VwdGlvbiBkb25lIE1zcEluaXQvTXNwRGVJbml0IGZ1bmN0aW9ucyB0aGF0IGNhbiBiZSByZWdpc3RlcmVkL3VucmVnaXN0ZXJlZAotICAgICBpbiBAcmVmIEhBTF9JMkNfU1RBVEVfUkVBRFkgb3IgQHJlZiBIQUxfSTJDX1NUQVRFX1JFU0VUIHN0YXRlLAorICAgICBpbiBIQUxfSTJDX1NUQVRFX1JFQURZIG9yIEhBTF9JMkNfU1RBVEVfUkVTRVQgc3RhdGUsCiAgICAgIHRodXMgcmVnaXN0ZXJlZCAodXNlcikgTXNwSW5pdC9EZUluaXQgY2FsbGJhY2tzIGNhbiBiZSB1c2VkIGR1cmluZyB0aGUgSW5pdC9EZUluaXQuCiAgICAgIFRoZW4sIHRoZSB1c2VyIGZpcnN0IHJlZ2lzdGVycyB0aGUgTXNwSW5pdC9Nc3BEZUluaXQgdXNlciBjYWxsYmFja3MKLSAgICAgdXNpbmcgQHJlZiBIQUxfSTJDX1JlZ2lzdGVyQ2FsbGJhY2soKSBiZWZvcmUgY2FsbGluZyBAcmVmIEhBTF9JMkNfRGVJbml0KCkKLSAgICAgb3IgQHJlZiBIQUxfSTJDX0luaXQoKSBmdW5jdGlvbi4KKyAgICAgdXNpbmcgSEFMX0kyQ19SZWdpc3RlckNhbGxiYWNrKCkgYmVmb3JlIGNhbGxpbmcgSEFMX0kyQ19EZUluaXQoKQorICAgICBvciBIQUxfSTJDX0luaXQoKSBmdW5jdGlvbi4KICAgICBbLi5dCiAgICAgIFdoZW4gdGhlIGNvbXBpbGF0aW9uIGZsYWcgVVNFX0hBTF9JMkNfUkVHSVNURVJfQ0FMTEJBQ0tTIGlzIHNldCB0byAwIG9yCiAgICAgIG5vdCBkZWZpbmVkLCB0aGUgY2FsbGJhY2sgcmVnaXN0cmF0aW9uIGZlYXR1cmUgaXMgbm90IGF2YWlsYWJsZSBhbmQgYWxsIGNhbGxiYWNrcwpAQCAtMjkwLDE4ICszMTcsNiBAQAogICAgICAgIChAKSBZb3UgY2FuIHJlZmVyIHRvIHRoZSBJMkMgSEFMIGRyaXZlciBoZWFkZXIgZmlsZSBmb3IgbW9yZSB1c2VmdWwgbWFjcm9zCiAKICAgQGVuZHZlcmJhdGltCi0gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICAqIEBhdHRlbnRpb24KLSAgKgotICAqIDxoMj48Y2VudGVyPiZjb3B5OyBDb3B5cmlnaHQgKGMpIDIwMTcgU1RNaWNyb2VsZWN0cm9uaWNzLgotICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuPC9jZW50ZXI+PC9oMj4KLSAgKgotICAqIFRoaXMgc29mdHdhcmUgY29tcG9uZW50IGlzIGxpY2Vuc2VkIGJ5IFNUIHVuZGVyIEJTRCAzLUNsYXVzZSBsaWNlbnNlLAotICAqIHRoZSAiTGljZW5zZSI7IFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUKLSAgKiBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQ6Ci0gICogICAgICAgICAgICAgICAgICAgICAgICBvcGVuc291cmNlLm9yZy9saWNlbnNlcy9CU0QtMy1DbGF1c2UKLSAgKgotICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgKi8KIAogLyogSW5jbHVkZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KQEAgLTMzNiwyOCArMzUxLDQ4IEBACiAjZGVmaW5lIEkyQ19USU1FT1VUX0ZMQUcgICAgKDI1VSkgICAgICAgICAgLyohPCAyNSBtcyAqLwogCiAjZGVmaW5lIE1BWF9OQllURV9TSVpFICAgICAgMjU1VQotI2RlZmluZSBTbGF2ZUFkZHJfU0hJRlQgICAgIDdVCi0jZGVmaW5lIFNsYXZlQWRkcl9NU0sgICAgICAgMHgwNlUKKyNkZWZpbmUgU0xBVkVfQUREUl9TSElGVCAgICAgN1UKKyNkZWZpbmUgU0xBVkVfQUREUl9NU0sgICAgICAgMHgwNlUKIAogLyogUHJpdmF0ZSBkZWZpbmUgZm9yIEByZWYgUHJldmlvdXNTdGF0ZSB1c2FnZSAqLwotI2RlZmluZSBJMkNfU1RBVEVfTVNLICAgICAgICAgICAgICgodWludDMyX3QpKCh1aW50MzJfdCkoKHVpbnQzMl90KUhBTF9JMkNfU1RBVEVfQlVTWV9UWCB8ICh1aW50MzJfdClIQUxfSTJDX1NUQVRFX0JVU1lfUlgpICYgKHVpbnQzMl90KSh+KCh1aW50MzJfdClIQUxfSTJDX1NUQVRFX1JFQURZKSkpKSAvKiE8IE1hc2sgU3RhdGUgZGVmaW5lLCBrZWVwIG9ubHkgUlggYW5kIFRYIGJpdHMgICAgICAgICAgICAqLwotI2RlZmluZSBJMkNfU1RBVEVfTk9ORSAgICAgICAgICAgICgodWludDMyX3QpKEhBTF9JMkNfTU9ERV9OT05FKSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgRGVmYXVsdCBWYWx1ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0jZGVmaW5lIEkyQ19TVEFURV9NQVNURVJfQlVTWV9UWCAgKCh1aW50MzJfdCkoKCh1aW50MzJfdClIQUxfSTJDX1NUQVRFX0JVU1lfVFggJiBJMkNfU1RBVEVfTVNLKSB8ICh1aW50MzJfdClIQUxfSTJDX01PREVfTUFTVEVSKSkgICAgICAgICAgICAvKiE8IE1hc3RlciBCdXN5IFRYLCBjb21iaW5haXNvbiBvZiBTdGF0ZSBMU0IgYW5kIE1vZGUgZW51bSAqLwotI2RlZmluZSBJMkNfU1RBVEVfTUFTVEVSX0JVU1lfUlggICgodWludDMyX3QpKCgodWludDMyX3QpSEFMX0kyQ19TVEFURV9CVVNZX1JYICYgSTJDX1NUQVRFX01TSykgfCAodWludDMyX3QpSEFMX0kyQ19NT0RFX01BU1RFUikpICAgICAgICAgICAgLyohPCBNYXN0ZXIgQnVzeSBSWCwgY29tYmluYWlzb24gb2YgU3RhdGUgTFNCIGFuZCBNb2RlIGVudW0gKi8KLSNkZWZpbmUgSTJDX1NUQVRFX1NMQVZFX0JVU1lfVFggICAoKHVpbnQzMl90KSgoKHVpbnQzMl90KUhBTF9JMkNfU1RBVEVfQlVTWV9UWCAmIEkyQ19TVEFURV9NU0spIHwgKHVpbnQzMl90KUhBTF9JMkNfTU9ERV9TTEFWRSkpICAgICAgICAgICAgIC8qITwgU2xhdmUgQnVzeSBUWCwgY29tYmluYWlzb24gb2YgU3RhdGUgTFNCIGFuZCBNb2RlIGVudW0gICovCi0jZGVmaW5lIEkyQ19TVEFURV9TTEFWRV9CVVNZX1JYICAgKCh1aW50MzJfdCkoKCh1aW50MzJfdClIQUxfSTJDX1NUQVRFX0JVU1lfUlggJiBJMkNfU1RBVEVfTVNLKSB8ICh1aW50MzJfdClIQUxfSTJDX01PREVfU0xBVkUpKSAgICAgICAgICAgICAvKiE8IFNsYXZlIEJ1c3kgUlgsIGNvbWJpbmFpc29uIG9mIFN0YXRlIExTQiBhbmQgTW9kZSBlbnVtICAqLwotI2RlZmluZSBJMkNfU1RBVEVfTUVNX0JVU1lfVFggICAgICgodWludDMyX3QpKCgodWludDMyX3QpSEFMX0kyQ19TVEFURV9CVVNZX1RYICYgSTJDX1NUQVRFX01TSykgfCAodWludDMyX3QpSEFMX0kyQ19NT0RFX01FTSkpICAgICAgICAgICAgICAgLyohPCBNZW1vcnkgQnVzeSBUWCwgY29tYmluYWlzb24gb2YgU3RhdGUgTFNCIGFuZCBNb2RlIGVudW0gKi8KLSNkZWZpbmUgSTJDX1NUQVRFX01FTV9CVVNZX1JYICAgICAoKHVpbnQzMl90KSgoKHVpbnQzMl90KUhBTF9JMkNfU1RBVEVfQlVTWV9SWCAmIEkyQ19TVEFURV9NU0spIHwgKHVpbnQzMl90KUhBTF9JMkNfTU9ERV9NRU0pKSAgICAgICAgICAgICAgIC8qITwgTWVtb3J5IEJ1c3kgUlgsIGNvbWJpbmFpc29uIG9mIFN0YXRlIExTQiBhbmQgTW9kZSBlbnVtICovCisjZGVmaW5lIEkyQ19TVEFURV9NU0sgICAgICAgICAgICAgKCh1aW50MzJfdCkoKHVpbnQzMl90KSgodWludDMyX3QpSEFMX0kyQ19TVEFURV9CVVNZX1RYIHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVpbnQzMl90KUhBTF9JMkNfU1RBVEVfQlVTWV9SWCkgJiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVpbnQzMl90KSh+KCh1aW50MzJfdClIQUxfSTJDX1NUQVRFX1JFQURZKSkpKQorLyohPCBNYXNrIFN0YXRlIGRlZmluZSwga2VlcCBvbmx5IFJYIGFuZCBUWCBiaXRzICovCisjZGVmaW5lIEkyQ19TVEFURV9OT05FICAgICAgICAgICAgKCh1aW50MzJfdCkoSEFMX0kyQ19NT0RFX05PTkUpKQorLyohPCBEZWZhdWx0IFZhbHVlICovCisjZGVmaW5lIEkyQ19TVEFURV9NQVNURVJfQlVTWV9UWCAgKCh1aW50MzJfdCkoKCh1aW50MzJfdClIQUxfSTJDX1NUQVRFX0JVU1lfVFggJiBJMkNfU1RBVEVfTVNLKSB8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodWludDMyX3QpSEFMX0kyQ19NT0RFX01BU1RFUikpCisvKiE8IE1hc3RlciBCdXN5IFRYLCBjb21iaW5haXNvbiBvZiBTdGF0ZSBMU0IgYW5kIE1vZGUgZW51bSAqLworI2RlZmluZSBJMkNfU1RBVEVfTUFTVEVSX0JVU1lfUlggICgodWludDMyX3QpKCgodWludDMyX3QpSEFMX0kyQ19TVEFURV9CVVNZX1JYICYgSTJDX1NUQVRFX01TSykgfCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVpbnQzMl90KUhBTF9JMkNfTU9ERV9NQVNURVIpKQorLyohPCBNYXN0ZXIgQnVzeSBSWCwgY29tYmluYWlzb24gb2YgU3RhdGUgTFNCIGFuZCBNb2RlIGVudW0gKi8KKyNkZWZpbmUgSTJDX1NUQVRFX1NMQVZFX0JVU1lfVFggICAoKHVpbnQzMl90KSgoKHVpbnQzMl90KUhBTF9JMkNfU1RBVEVfQlVTWV9UWCAmIEkyQ19TVEFURV9NU0spIHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1aW50MzJfdClIQUxfSTJDX01PREVfU0xBVkUpKQorLyohPCBTbGF2ZSBCdXN5IFRYLCBjb21iaW5haXNvbiBvZiBTdGF0ZSBMU0IgYW5kIE1vZGUgZW51bSAqLworI2RlZmluZSBJMkNfU1RBVEVfU0xBVkVfQlVTWV9SWCAgICgodWludDMyX3QpKCgodWludDMyX3QpSEFMX0kyQ19TVEFURV9CVVNZX1JYICYgSTJDX1NUQVRFX01TSykgfCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVpbnQzMl90KUhBTF9JMkNfTU9ERV9TTEFWRSkpCisvKiE8IFNsYXZlIEJ1c3kgUlgsIGNvbWJpbmFpc29uIG9mIFN0YXRlIExTQiBhbmQgTW9kZSBlbnVtICAqLworI2RlZmluZSBJMkNfU1RBVEVfTUVNX0JVU1lfVFggICAgICgodWludDMyX3QpKCgodWludDMyX3QpSEFMX0kyQ19TVEFURV9CVVNZX1RYICYgSTJDX1NUQVRFX01TSykgfCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVpbnQzMl90KUhBTF9JMkNfTU9ERV9NRU0pKQorLyohPCBNZW1vcnkgQnVzeSBUWCwgY29tYmluYWlzb24gb2YgU3RhdGUgTFNCIGFuZCBNb2RlIGVudW0gKi8KKyNkZWZpbmUgSTJDX1NUQVRFX01FTV9CVVNZX1JYICAgICAoKHVpbnQzMl90KSgoKHVpbnQzMl90KUhBTF9JMkNfU1RBVEVfQlVTWV9SWCAmIEkyQ19TVEFURV9NU0spIHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1aW50MzJfdClIQUxfSTJDX01PREVfTUVNKSkKKy8qITwgTWVtb3J5IEJ1c3kgUlgsIGNvbWJpbmFpc29uIG9mIFN0YXRlIExTQiBhbmQgTW9kZSBlbnVtICovCiAKIAogLyogUHJpdmF0ZSBkZWZpbmUgdG8gY2VudHJhbGl6ZSB0aGUgZW5hYmxlL2Rpc2FibGUgb2YgSW50ZXJydXB0cyAqLwotI2RlZmluZSBJMkNfWEZFUl9UWF9JVCAgICAgICAgICAodWludDE2X3QpKDB4MDAwMVUpICAgLyogQml0IGZpZWxkIGNhbiBiZSBjb21iaW5hdGVkIHdpdGggQHJlZiBJMkNfWEZFUl9MSVNURU5fSVQgKi8KLSNkZWZpbmUgSTJDX1hGRVJfUlhfSVQgICAgICAgICAgKHVpbnQxNl90KSgweDAwMDJVKSAgIC8qIEJpdCBmaWVsZCBjYW4gYmUgY29tYmluYXRlZCB3aXRoIEByZWYgSTJDX1hGRVJfTElTVEVOX0lUICovCi0jZGVmaW5lIEkyQ19YRkVSX0xJU1RFTl9JVCAgICAgICh1aW50MTZfdCkoMHg4MDAwVSkgICAvKiBCaXQgZmllbGQgY2FuIGJlIGNvbWJpbmF0ZWQgd2l0aCBAcmVmIEkyQ19YRkVSX1RYX0lUIGFuZCBAcmVmIEkyQ19YRkVSX1JYX0lUICovCisjZGVmaW5lIEkyQ19YRkVSX1RYX0lUICAgICAgICAgICh1aW50MTZfdCkoMHgwMDAxVSkgICAvKiE8IEJpdCBmaWVsZCBjYW4gYmUgY29tYmluYXRlZCB3aXRoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAcmVmIEkyQ19YRkVSX0xJU1RFTl9JVCAqLworI2RlZmluZSBJMkNfWEZFUl9SWF9JVCAgICAgICAgICAodWludDE2X3QpKDB4MDAwMlUpICAgLyohPCBCaXQgZmllbGQgY2FuIGJlIGNvbWJpbmF0ZWQgd2l0aAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQHJlZiBJMkNfWEZFUl9MSVNURU5fSVQgKi8KKyNkZWZpbmUgSTJDX1hGRVJfTElTVEVOX0lUICAgICAgKHVpbnQxNl90KSgweDgwMDBVKSAgIC8qITwgQml0IGZpZWxkIGNhbiBiZSBjb21iaW5hdGVkIHdpdGggQHJlZiBJMkNfWEZFUl9UWF9JVAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIEByZWYgSTJDX1hGRVJfUlhfSVQgKi8KIAotI2RlZmluZSBJMkNfWEZFUl9FUlJPUl9JVCAgICAgICAodWludDE2X3QpKDB4MDAxMFUpICAgLyogQml0IGRlZmluaXRpb24gdG8gbWFuYWdlIGFkZGl0aW9uIG9mIGdsb2JhbCBFcnJvciBhbmQgTkFDSyB0cmVhdG1lbnQgKi8KLSNkZWZpbmUgSTJDX1hGRVJfQ1BMVF9JVCAgICAgICAgKHVpbnQxNl90KSgweDAwMjBVKSAgIC8qIEJpdCBkZWZpbml0aW9uIHRvIG1hbmFnZSBvbmx5IFNUT1AgZXZlbmVtZW50ICovCi0jZGVmaW5lIEkyQ19YRkVSX1JFTE9BRF9JVCAgICAgICh1aW50MTZfdCkoMHgwMDQwVSkgICAvKiBCaXQgZGVmaW5pdGlvbiB0byBtYW5hZ2Ugb25seSBSZWxvYWQgb2YgTkJZVEUgKi8KKyNkZWZpbmUgSTJDX1hGRVJfRVJST1JfSVQgICAgICAgKHVpbnQxNl90KSgweDAwMTBVKSAgIC8qITwgQml0IGRlZmluaXRpb24gdG8gbWFuYWdlIGFkZGl0aW9uIG9mIGdsb2JhbCBFcnJvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIE5BQ0sgdHJlYXRtZW50ICovCisjZGVmaW5lIEkyQ19YRkVSX0NQTFRfSVQgICAgICAgICh1aW50MTZfdCkoMHgwMDIwVSkgICAvKiE8IEJpdCBkZWZpbml0aW9uIHRvIG1hbmFnZSBvbmx5IFNUT1AgZXZlbmVtZW50ICovCisjZGVmaW5lIEkyQ19YRkVSX1JFTE9BRF9JVCAgICAgICh1aW50MTZfdCkoMHgwMDQwVSkgICAvKiE8IEJpdCBkZWZpbml0aW9uIHRvIG1hbmFnZSBvbmx5IFJlbG9hZCBvZiBOQllURSAqLwogCiAvKiBQcml2YXRlIGRlZmluZSBTZXF1ZW50aWFsIFRyYW5zZmVyIE9wdGlvbnMgZGVmYXVsdC9yZXNldCB2YWx1ZSAqLwogI2RlZmluZSBJMkNfTk9fT1BUSU9OX0ZSQU1FICAgICAoMHhGRkZGMDAwMFUpCkBAIC0zNjYsNiArNDAxLDkgQEAKICAgKi8KIAogLyogUHJpdmF0ZSBtYWNybyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKy8qIE1hY3JvIHRvIGdldCByZW1haW5pbmcgZGF0YSB0byB0cmFuc2ZlciBvbiBETUEgc2lkZSAqLworI2RlZmluZSBJMkNfR0VUX0RNQV9SRU1BSU5fREFUQShfX0hBTkRMRV9fKSAgICAgX19IQUxfRE1BX0dFVF9DT1VOVEVSKF9fSEFORExFX18pCisKIC8qIFByaXZhdGUgdmFyaWFibGVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAvKiBQcml2YXRlIGZ1bmN0aW9uIHByb3RvdHlwZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogCkBAIC0zOTAsMjQgKzQyOCwzNCBAQAogc3RhdGljIHZvaWQgSTJDX0lURXJyb3IoSTJDX0hhbmRsZVR5cGVEZWYgKmhpMmMsIHVpbnQzMl90IEVycm9yQ29kZSk7CiAKIC8qIFByaXZhdGUgZnVuY3Rpb25zIHRvIGhhbmRsZSBJVCB0cmFuc2ZlciAqLwotc3RhdGljIEhBTF9TdGF0dXNUeXBlRGVmIEkyQ19SZXF1ZXN0TWVtb3J5V3JpdGUoSTJDX0hhbmRsZVR5cGVEZWYgKmhpMmMsIHVpbnQxNl90IERldkFkZHJlc3MsIHVpbnQxNl90IE1lbUFkZHJlc3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MTZfdCBNZW1BZGRTaXplLCB1aW50MzJfdCBUaW1lb3V0LCB1aW50MzJfdCBUaWNrc3RhcnQpOwotc3RhdGljIEhBTF9TdGF0dXNUeXBlRGVmIEkyQ19SZXF1ZXN0TWVtb3J5UmVhZChJMkNfSGFuZGxlVHlwZURlZiAqaGkyYywgdWludDE2X3QgRGV2QWRkcmVzcywgdWludDE2X3QgTWVtQWRkcmVzcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDE2X3QgTWVtQWRkU2l6ZSwgdWludDMyX3QgVGltZW91dCwgdWludDMyX3QgVGlja3N0YXJ0KTsKK3N0YXRpYyBIQUxfU3RhdHVzVHlwZURlZiBJMkNfUmVxdWVzdE1lbW9yeVdyaXRlKEkyQ19IYW5kbGVUeXBlRGVmICpoaTJjLCB1aW50MTZfdCBEZXZBZGRyZXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDE2X3QgTWVtQWRkcmVzcywgdWludDE2X3QgTWVtQWRkU2l6ZSwgdWludDMyX3QgVGltZW91dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IFRpY2tzdGFydCk7CitzdGF0aWMgSEFMX1N0YXR1c1R5cGVEZWYgSTJDX1JlcXVlc3RNZW1vcnlSZWFkKEkyQ19IYW5kbGVUeXBlRGVmICpoaTJjLCB1aW50MTZfdCBEZXZBZGRyZXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MTZfdCBNZW1BZGRyZXNzLCB1aW50MTZfdCBNZW1BZGRTaXplLCB1aW50MzJfdCBUaW1lb3V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBUaWNrc3RhcnQpOwogCiAvKiBQcml2YXRlIGZ1bmN0aW9ucyBmb3IgSTJDIHRyYW5zZmVyIElSUSBoYW5kbGVyICovCi1zdGF0aWMgSEFMX1N0YXR1c1R5cGVEZWYgSTJDX01hc3Rlcl9JU1JfSVQoc3RydWN0IF9fSTJDX0hhbmRsZVR5cGVEZWYgKmhpMmMsIHVpbnQzMl90IElURmxhZ3MsIHVpbnQzMl90IElUU291cmNlcyk7Ci1zdGF0aWMgSEFMX1N0YXR1c1R5cGVEZWYgSTJDX1NsYXZlX0lTUl9JVChzdHJ1Y3QgX19JMkNfSGFuZGxlVHlwZURlZiAqaGkyYywgdWludDMyX3QgSVRGbGFncywgdWludDMyX3QgSVRTb3VyY2VzKTsKLXN0YXRpYyBIQUxfU3RhdHVzVHlwZURlZiBJMkNfTWFzdGVyX0lTUl9ETUEoc3RydWN0IF9fSTJDX0hhbmRsZVR5cGVEZWYgKmhpMmMsIHVpbnQzMl90IElURmxhZ3MsIHVpbnQzMl90IElUU291cmNlcyk7Ci1zdGF0aWMgSEFMX1N0YXR1c1R5cGVEZWYgSTJDX1NsYXZlX0lTUl9ETUEoc3RydWN0IF9fSTJDX0hhbmRsZVR5cGVEZWYgKmhpMmMsIHVpbnQzMl90IElURmxhZ3MsIHVpbnQzMl90IElUU291cmNlcyk7CitzdGF0aWMgSEFMX1N0YXR1c1R5cGVEZWYgSTJDX01hc3Rlcl9JU1JfSVQoc3RydWN0IF9fSTJDX0hhbmRsZVR5cGVEZWYgKmhpMmMsIHVpbnQzMl90IElURmxhZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgSVRTb3VyY2VzKTsKK3N0YXRpYyBIQUxfU3RhdHVzVHlwZURlZiBJMkNfU2xhdmVfSVNSX0lUKHN0cnVjdCBfX0kyQ19IYW5kbGVUeXBlRGVmICpoaTJjLCB1aW50MzJfdCBJVEZsYWdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgSVRTb3VyY2VzKTsKK3N0YXRpYyBIQUxfU3RhdHVzVHlwZURlZiBJMkNfTWFzdGVyX0lTUl9ETUEoc3RydWN0IF9fSTJDX0hhbmRsZVR5cGVEZWYgKmhpMmMsIHVpbnQzMl90IElURmxhZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IElUU291cmNlcyk7CitzdGF0aWMgSEFMX1N0YXR1c1R5cGVEZWYgSTJDX1NsYXZlX0lTUl9ETUEoc3RydWN0IF9fSTJDX0hhbmRsZVR5cGVEZWYgKmhpMmMsIHVpbnQzMl90IElURmxhZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgSVRTb3VyY2VzKTsKIAogLyogUHJpdmF0ZSBmdW5jdGlvbnMgdG8gaGFuZGxlIGZsYWdzIGR1cmluZyBwb2xsaW5nIHRyYW5zZmVyICovCiBzdGF0aWMgSEFMX1N0YXR1c1R5cGVEZWYgSTJDX1dhaXRPbkZsYWdVbnRpbFRpbWVvdXQoSTJDX0hhbmRsZVR5cGVEZWYgKmhpMmMsIHVpbnQzMl90IEZsYWcsIEZsYWdTdGF0dXMgU3RhdHVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IFRpbWVvdXQsIHVpbnQzMl90IFRpY2tzdGFydCk7Ci1zdGF0aWMgSEFMX1N0YXR1c1R5cGVEZWYgSTJDX1dhaXRPblRYSVNGbGFnVW50aWxUaW1lb3V0KEkyQ19IYW5kbGVUeXBlRGVmICpoaTJjLCB1aW50MzJfdCBUaW1lb3V0LCB1aW50MzJfdCBUaWNrc3RhcnQpOwotc3RhdGljIEhBTF9TdGF0dXNUeXBlRGVmIEkyQ19XYWl0T25SWE5FRmxhZ1VudGlsVGltZW91dChJMkNfSGFuZGxlVHlwZURlZiAqaGkyYywgdWludDMyX3QgVGltZW91dCwgdWludDMyX3QgVGlja3N0YXJ0KTsKLXN0YXRpYyBIQUxfU3RhdHVzVHlwZURlZiBJMkNfV2FpdE9uU1RPUEZsYWdVbnRpbFRpbWVvdXQoSTJDX0hhbmRsZVR5cGVEZWYgKmhpMmMsIHVpbnQzMl90IFRpbWVvdXQsIHVpbnQzMl90IFRpY2tzdGFydCk7Ci1zdGF0aWMgSEFMX1N0YXR1c1R5cGVEZWYgSTJDX0lzQWNrbm93bGVkZ2VGYWlsZWQoSTJDX0hhbmRsZVR5cGVEZWYgKmhpMmMsIHVpbnQzMl90IFRpbWVvdXQsIHVpbnQzMl90IFRpY2tzdGFydCk7CitzdGF0aWMgSEFMX1N0YXR1c1R5cGVEZWYgSTJDX1dhaXRPblRYSVNGbGFnVW50aWxUaW1lb3V0KEkyQ19IYW5kbGVUeXBlRGVmICpoaTJjLCB1aW50MzJfdCBUaW1lb3V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBUaWNrc3RhcnQpOworc3RhdGljIEhBTF9TdGF0dXNUeXBlRGVmIEkyQ19XYWl0T25SWE5FRmxhZ1VudGlsVGltZW91dChJMkNfSGFuZGxlVHlwZURlZiAqaGkyYywgdWludDMyX3QgVGltZW91dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgVGlja3N0YXJ0KTsKK3N0YXRpYyBIQUxfU3RhdHVzVHlwZURlZiBJMkNfV2FpdE9uU1RPUEZsYWdVbnRpbFRpbWVvdXQoSTJDX0hhbmRsZVR5cGVEZWYgKmhpMmMsIHVpbnQzMl90IFRpbWVvdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IFRpY2tzdGFydCk7CitzdGF0aWMgSEFMX1N0YXR1c1R5cGVEZWYgSTJDX0lzRXJyb3JPY2N1cnJlZChJMkNfSGFuZGxlVHlwZURlZiAqaGkyYywgdWludDMyX3QgVGltZW91dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IFRpY2tzdGFydCk7CiAKIC8qIFByaXZhdGUgZnVuY3Rpb25zIHRvIGNlbnRyYWxpemUgdGhlIGVuYWJsZS9kaXNhYmxlIG9mIEludGVycnVwdHMgKi8KIHN0YXRpYyB2b2lkIEkyQ19FbmFibGVfSVJRKEkyQ19IYW5kbGVUeXBlRGVmICpoaTJjLCB1aW50MTZfdCBJbnRlcnJ1cHRSZXF1ZXN0KTsKQEAgLTU1OSw3ICs2MDcsOCBAQAogICBoaTJjLT5JbnN0YW5jZS0+T0FSMiAmPSB+STJDX0RVQUxBRERSRVNTX0VOQUJMRTsKIAogICAvKiBDb25maWd1cmUgSTJDeDogRHVhbCBtb2RlIGFuZCBPd24gQWRkcmVzczIgKi8KLSAgaGkyYy0+SW5zdGFuY2UtPk9BUjIgPSAoaGkyYy0+SW5pdC5EdWFsQWRkcmVzc01vZGUgfCBoaTJjLT5Jbml0Lk93bkFkZHJlc3MyIHwgKGhpMmMtPkluaXQuT3duQWRkcmVzczJNYXNrcyA8PCA4KSk7CisgIGhpMmMtPkluc3RhbmNlLT5PQVIyID0gKGhpMmMtPkluaXQuRHVhbEFkZHJlc3NNb2RlIHwgaGkyYy0+SW5pdC5Pd25BZGRyZXNzMiB8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKGhpMmMtPkluaXQuT3duQWRkcmVzczJNYXNrcyA8PCA4KSk7CiAKICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEkyQ3ggQ1IxIENvbmZpZ3VyYXRpb24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAgIC8qIENvbmZpZ3VyZSBJMkN4OiBHZW5lcmFsY2FsbCBhbmQgTm9TdHJldGNoIG1vZGUgKi8KQEAgLTEwNjUsOCArMTExNCw4IEBACiAgICogQHBhcmFtICBUaW1lb3V0IFRpbWVvdXQgZHVyYXRpb24KICAgKiBAcmV0dmFsIEhBTCBzdGF0dXMKICAgKi8KLUhBTF9TdGF0dXNUeXBlRGVmIEhBTF9JMkNfTWFzdGVyX1RyYW5zbWl0KEkyQ19IYW5kbGVUeXBlRGVmICpoaTJjLCB1aW50MTZfdCBEZXZBZGRyZXNzLCB1aW50OF90ICpwRGF0YSwgdWludDE2X3QgU2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IFRpbWVvdXQpCitIQUxfU3RhdHVzVHlwZURlZiBIQUxfSTJDX01hc3Rlcl9UcmFuc21pdChJMkNfSGFuZGxlVHlwZURlZiAqaGkyYywgdWludDE2X3QgRGV2QWRkcmVzcywgdWludDhfdCAqcERhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MTZfdCBTaXplLCB1aW50MzJfdCBUaW1lb3V0KQogewogICB1aW50MzJfdCB0aWNrc3RhcnQ7CiAKQEAgLTEwOTcsMTIgKzExNDYsMTQgQEAKICAgICBpZiAoaGkyYy0+WGZlckNvdW50ID4gTUFYX05CWVRFX1NJWkUpCiAgICAgewogICAgICAgaGkyYy0+WGZlclNpemUgPSBNQVhfTkJZVEVfU0laRTsKLSAgICAgIEkyQ19UcmFuc2ZlckNvbmZpZyhoaTJjLCBEZXZBZGRyZXNzLCAodWludDhfdCloaTJjLT5YZmVyU2l6ZSwgSTJDX1JFTE9BRF9NT0RFLCBJMkNfR0VORVJBVEVfU1RBUlRfV1JJVEUpOworICAgICAgSTJDX1RyYW5zZmVyQ29uZmlnKGhpMmMsIERldkFkZHJlc3MsICh1aW50OF90KWhpMmMtPlhmZXJTaXplLCBJMkNfUkVMT0FEX01PREUsCisgICAgICAgICAgICAgICAgICAgICAgICAgSTJDX0dFTkVSQVRFX1NUQVJUX1dSSVRFKTsKICAgICB9CiAgICAgZWxzZQogICAgIHsKICAgICAgIGhpMmMtPlhmZXJTaXplID0gaGkyYy0+WGZlckNvdW50OwotICAgICAgSTJDX1RyYW5zZmVyQ29uZmlnKGhpMmMsIERldkFkZHJlc3MsICh1aW50OF90KWhpMmMtPlhmZXJTaXplLCBJMkNfQVVUT0VORF9NT0RFLCBJMkNfR0VORVJBVEVfU1RBUlRfV1JJVEUpOworICAgICAgSTJDX1RyYW5zZmVyQ29uZmlnKGhpMmMsIERldkFkZHJlc3MsICh1aW50OF90KWhpMmMtPlhmZXJTaXplLCBJMkNfQVVUT0VORF9NT0RFLAorICAgICAgICAgICAgICAgICAgICAgICAgIEkyQ19HRU5FUkFURV9TVEFSVF9XUklURSk7CiAgICAgfQogCiAgICAgd2hpbGUgKGhpMmMtPlhmZXJDb3VudCA+IDBVKQpAQCAtMTEzMiwxMiArMTE4MywxNCBAQAogICAgICAgICBpZiAoaGkyYy0+WGZlckNvdW50ID4gTUFYX05CWVRFX1NJWkUpCiAgICAgICAgIHsKICAgICAgICAgICBoaTJjLT5YZmVyU2l6ZSA9IE1BWF9OQllURV9TSVpFOwotICAgICAgICAgIEkyQ19UcmFuc2ZlckNvbmZpZyhoaTJjLCBEZXZBZGRyZXNzLCAodWludDhfdCloaTJjLT5YZmVyU2l6ZSwgSTJDX1JFTE9BRF9NT0RFLCBJMkNfTk9fU1RBUlRTVE9QKTsKKyAgICAgICAgICBJMkNfVHJhbnNmZXJDb25maWcoaGkyYywgRGV2QWRkcmVzcywgKHVpbnQ4X3QpaGkyYy0+WGZlclNpemUsIEkyQ19SRUxPQURfTU9ERSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSTJDX05PX1NUQVJUU1RPUCk7CiAgICAgICAgIH0KICAgICAgICAgZWxzZQogICAgICAgICB7CiAgICAgICAgICAgaGkyYy0+WGZlclNpemUgPSBoaTJjLT5YZmVyQ291bnQ7Ci0gICAgICAgICAgSTJDX1RyYW5zZmVyQ29uZmlnKGhpMmMsIERldkFkZHJlc3MsICh1aW50OF90KWhpMmMtPlhmZXJTaXplLCBJMkNfQVVUT0VORF9NT0RFLCBJMkNfTk9fU1RBUlRTVE9QKTsKKyAgICAgICAgICBJMkNfVHJhbnNmZXJDb25maWcoaGkyYywgRGV2QWRkcmVzcywgKHVpbnQ4X3QpaGkyYy0+WGZlclNpemUsIEkyQ19BVVRPRU5EX01PREUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEkyQ19OT19TVEFSVFNUT1ApOwogICAgICAgICB9CiAgICAgICB9CiAgICAgfQpAQCAtMTE4MCw4ICsxMjMzLDggQEAKICAgKiBAcGFyYW0gIFRpbWVvdXQgVGltZW91dCBkdXJhdGlvbgogICAqIEByZXR2YWwgSEFMIHN0YXR1cwogICAqLwotSEFMX1N0YXR1c1R5cGVEZWYgSEFMX0kyQ19NYXN0ZXJfUmVjZWl2ZShJMkNfSGFuZGxlVHlwZURlZiAqaGkyYywgdWludDE2X3QgRGV2QWRkcmVzcywgdWludDhfdCAqcERhdGEsIHVpbnQxNl90IFNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IFRpbWVvdXQpCitIQUxfU3RhdHVzVHlwZURlZiBIQUxfSTJDX01hc3Rlcl9SZWNlaXZlKEkyQ19IYW5kbGVUeXBlRGVmICpoaTJjLCB1aW50MTZfdCBEZXZBZGRyZXNzLCB1aW50OF90ICpwRGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDE2X3QgU2l6ZSwgdWludDMyX3QgVGltZW91dCkKIHsKICAgdWludDMyX3QgdGlja3N0YXJ0OwogCkBAIC0xMjEyLDEyICsxMjY1LDE0IEBACiAgICAgaWYgKGhpMmMtPlhmZXJDb3VudCA+IE1BWF9OQllURV9TSVpFKQogICAgIHsKICAgICAgIGhpMmMtPlhmZXJTaXplID0gTUFYX05CWVRFX1NJWkU7Ci0gICAgICBJMkNfVHJhbnNmZXJDb25maWcoaGkyYywgRGV2QWRkcmVzcywgKHVpbnQ4X3QpaGkyYy0+WGZlclNpemUsIEkyQ19SRUxPQURfTU9ERSwgSTJDX0dFTkVSQVRFX1NUQVJUX1JFQUQpOworICAgICAgSTJDX1RyYW5zZmVyQ29uZmlnKGhpMmMsIERldkFkZHJlc3MsICh1aW50OF90KWhpMmMtPlhmZXJTaXplLCBJMkNfUkVMT0FEX01PREUsCisgICAgICAgICAgICAgICAgICAgICAgICAgSTJDX0dFTkVSQVRFX1NUQVJUX1JFQUQpOwogICAgIH0KICAgICBlbHNlCiAgICAgewogICAgICAgaGkyYy0+WGZlclNpemUgPSBoaTJjLT5YZmVyQ291bnQ7Ci0gICAgICBJMkNfVHJhbnNmZXJDb25maWcoaGkyYywgRGV2QWRkcmVzcywgKHVpbnQ4X3QpaGkyYy0+WGZlclNpemUsIEkyQ19BVVRPRU5EX01PREUsIEkyQ19HRU5FUkFURV9TVEFSVF9SRUFEKTsKKyAgICAgIEkyQ19UcmFuc2ZlckNvbmZpZyhoaTJjLCBEZXZBZGRyZXNzLCAodWludDhfdCloaTJjLT5YZmVyU2l6ZSwgSTJDX0FVVE9FTkRfTU9ERSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBJMkNfR0VORVJBVEVfU1RBUlRfUkVBRCk7CiAgICAgfQogCiAgICAgd2hpbGUgKGhpMmMtPlhmZXJDb3VudCA+IDBVKQpAQCAtMTI0OCwxMiArMTMwMywxNCBAQAogICAgICAgICBpZiAoaGkyYy0+WGZlckNvdW50ID4gTUFYX05CWVRFX1NJWkUpCiAgICAgICAgIHsKICAgICAgICAgICBoaTJjLT5YZmVyU2l6ZSA9IE1BWF9OQllURV9TSVpFOwotICAgICAgICAgIEkyQ19UcmFuc2ZlckNvbmZpZyhoaTJjLCBEZXZBZGRyZXNzLCAodWludDhfdCloaTJjLT5YZmVyU2l6ZSwgSTJDX1JFTE9BRF9NT0RFLCBJMkNfTk9fU1RBUlRTVE9QKTsKKyAgICAgICAgICBJMkNfVHJhbnNmZXJDb25maWcoaGkyYywgRGV2QWRkcmVzcywgKHVpbnQ4X3QpaGkyYy0+WGZlclNpemUsIEkyQ19SRUxPQURfTU9ERSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSTJDX05PX1NUQVJUU1RPUCk7CiAgICAgICAgIH0KICAgICAgICAgZWxzZQogICAgICAgICB7CiAgICAgICAgICAgaGkyYy0+WGZlclNpemUgPSBoaTJjLT5YZmVyQ291bnQ7Ci0gICAgICAgICAgSTJDX1RyYW5zZmVyQ29uZmlnKGhpMmMsIERldkFkZHJlc3MsICh1aW50OF90KWhpMmMtPlhmZXJTaXplLCBJMkNfQVVUT0VORF9NT0RFLCBJMkNfTk9fU1RBUlRTVE9QKTsKKyAgICAgICAgICBJMkNfVHJhbnNmZXJDb25maWcoaGkyYywgRGV2QWRkcmVzcywgKHVpbnQ4X3QpaGkyYy0+WGZlclNpemUsIEkyQ19BVVRPRU5EX01PREUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEkyQ19OT19TVEFSVFNUT1ApOwogICAgICAgICB9CiAgICAgICB9CiAgICAgfQpAQCAtMTI5NCw3ICsxMzUxLDggQEAKICAgKiBAcGFyYW0gIFRpbWVvdXQgVGltZW91dCBkdXJhdGlvbgogICAqIEByZXR2YWwgSEFMIHN0YXR1cwogICAqLwotSEFMX1N0YXR1c1R5cGVEZWYgSEFMX0kyQ19TbGF2ZV9UcmFuc21pdChJMkNfSGFuZGxlVHlwZURlZiAqaGkyYywgdWludDhfdCAqcERhdGEsIHVpbnQxNl90IFNpemUsIHVpbnQzMl90IFRpbWVvdXQpCitIQUxfU3RhdHVzVHlwZURlZiBIQUxfSTJDX1NsYXZlX1RyYW5zbWl0KEkyQ19IYW5kbGVUeXBlRGVmICpoaTJjLCB1aW50OF90ICpwRGF0YSwgdWludDE2X3QgU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgVGltZW91dCkKIHsKICAgdWludDMyX3QgdGlja3N0YXJ0OwogCkBAIC0xMzc2LDIyICsxNDM0LDI3IEBACiAgICAgICBoaTJjLT5YZmVyQ291bnQtLTsKICAgICB9CiAKKyAgICAvKiBXYWl0IHVudGlsIEFGIGZsYWcgaXMgc2V0ICovCisgICAgaWYgKEkyQ19XYWl0T25GbGFnVW50aWxUaW1lb3V0KGhpMmMsIEkyQ19GTEFHX0FGLCBSRVNFVCwgVGltZW91dCwgdGlja3N0YXJ0KSAhPSBIQUxfT0spCisgICAgeworICAgICAgLyogRGlzYWJsZSBBZGRyZXNzIEFja25vd2xlZGdlICovCisgICAgICBoaTJjLT5JbnN0YW5jZS0+Q1IyIHw9IEkyQ19DUjJfTkFDSzsKKyAgICAgIHJldHVybiBIQUxfRVJST1I7CisgICAgfQorCisgICAgLyogRmx1c2ggVFggcmVnaXN0ZXIgKi8KKyAgICBJMkNfRmx1c2hfVFhEUihoaTJjKTsKKworICAgIC8qIENsZWFyIEFGIGZsYWcgKi8KKyAgICBfX0hBTF9JMkNfQ0xFQVJfRkxBRyhoaTJjLCBJMkNfRkxBR19BRik7CisKICAgICAvKiBXYWl0IHVudGlsIFNUT1AgZmxhZyBpcyBzZXQgKi8KICAgICBpZiAoSTJDX1dhaXRPblNUT1BGbGFnVW50aWxUaW1lb3V0KGhpMmMsIFRpbWVvdXQsIHRpY2tzdGFydCkgIT0gSEFMX09LKQogICAgIHsKICAgICAgIC8qIERpc2FibGUgQWRkcmVzcyBBY2tub3dsZWRnZSAqLwogICAgICAgaGkyYy0+SW5zdGFuY2UtPkNSMiB8PSBJMkNfQ1IyX05BQ0s7CiAKLSAgICAgIGlmIChoaTJjLT5FcnJvckNvZGUgPT0gSEFMX0kyQ19FUlJPUl9BRikKLSAgICAgIHsKLSAgICAgICAgLyogTm9ybWFsIHVzZSBjYXNlIGZvciBUcmFuc21pdHRlciBtb2RlICovCi0gICAgICAgIC8qIEEgTkFDSyBpcyBnZW5lcmF0ZWQgdG8gY29uZmlybSB0aGUgZW5kIG9mIHRyYW5zZmVyICovCi0gICAgICAgIGhpMmMtPkVycm9yQ29kZSA9IEhBTF9JMkNfRVJST1JfTk9ORTsKLSAgICAgIH0KLSAgICAgIGVsc2UKLSAgICAgIHsKLSAgICAgICAgcmV0dXJuIEhBTF9FUlJPUjsKLSAgICAgIH0KKyAgICAgIHJldHVybiBIQUxfRVJST1I7CiAgICAgfQogCiAgICAgLyogQ2xlYXIgU1RPUCBmbGFnICovCkBAIC0xNDMxLDcgKzE0OTQsOCBAQAogICAqIEBwYXJhbSAgVGltZW91dCBUaW1lb3V0IGR1cmF0aW9uCiAgICogQHJldHZhbCBIQUwgc3RhdHVzCiAgICovCi1IQUxfU3RhdHVzVHlwZURlZiBIQUxfSTJDX1NsYXZlX1JlY2VpdmUoSTJDX0hhbmRsZVR5cGVEZWYgKmhpMmMsIHVpbnQ4X3QgKnBEYXRhLCB1aW50MTZfdCBTaXplLCB1aW50MzJfdCBUaW1lb3V0KQorSEFMX1N0YXR1c1R5cGVEZWYgSEFMX0kyQ19TbGF2ZV9SZWNlaXZlKEkyQ19IYW5kbGVUeXBlRGVmICpoaTJjLCB1aW50OF90ICpwRGF0YSwgdWludDE2X3QgU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBUaW1lb3V0KQogewogICB1aW50MzJfdCB0aWNrc3RhcnQ7CiAKQEAgLTE0NTUsNiArMTUxOSw3IEBACiAgICAgLyogUHJlcGFyZSB0cmFuc2ZlciBwYXJhbWV0ZXJzICovCiAgICAgaGkyYy0+cEJ1ZmZQdHIgID0gcERhdGE7CiAgICAgaGkyYy0+WGZlckNvdW50ID0gU2l6ZTsKKyAgICBoaTJjLT5YZmVyU2l6ZSA9IGhpMmMtPlhmZXJDb3VudDsKICAgICBoaTJjLT5YZmVySVNSICAgPSBOVUxMOwogCiAgICAgLyogRW5hYmxlIEFkZHJlc3MgQWNrbm93bGVkZ2UgKi8KQEAgLTE0OTcsNiArMTU2Miw3IEBACiAgICAgICAgICAgaGkyYy0+cEJ1ZmZQdHIrKzsKIAogICAgICAgICAgIGhpMmMtPlhmZXJDb3VudC0tOworICAgICAgICAgIGhpMmMtPlhmZXJTaXplLS07CiAgICAgICAgIH0KIAogICAgICAgICByZXR1cm4gSEFMX0VSUk9SOwpAQCAtMTUwOSw2ICsxNTc1LDcgQEAKICAgICAgIGhpMmMtPnBCdWZmUHRyKys7CiAKICAgICAgIGhpMmMtPlhmZXJDb3VudC0tOworICAgICAgaGkyYy0+WGZlclNpemUtLTsKICAgICB9CiAKICAgICAvKiBXYWl0IHVudGlsIFNUT1AgZmxhZyBpcyBzZXQgKi8KQEAgLTE2MDYsNyArMTY3Myw4IEBACiAKICAgICAvKiBFbmFibGUgRVJSLCBUQywgU1RPUCwgTkFDSywgVFhJIGludGVycnVwdCAqLwogICAgIC8qIHBvc3NpYmxlIHRvIGVuYWJsZSBhbGwgb2YgdGhlc2UgKi8KLSAgICAvKiBJMkNfSVRfRVJSSSB8IEkyQ19JVF9UQ0l8IEkyQ19JVF9TVE9QSXwgSTJDX0lUX05BQ0tJIHwgSTJDX0lUX0FERFJJIHwgSTJDX0lUX1JYSSB8IEkyQ19JVF9UWEkgKi8KKyAgICAvKiBJMkNfSVRfRVJSSSB8IEkyQ19JVF9UQ0kgfCBJMkNfSVRfU1RPUEkgfCBJMkNfSVRfTkFDS0kgfAorICAgICAgSTJDX0lUX0FERFJJIHwgSTJDX0lUX1JYSSB8IEkyQ19JVF9UWEkgKi8KICAgICBJMkNfRW5hYmxlX0lSUShoaTJjLCBJMkNfWEZFUl9UWF9JVCk7CiAKICAgICByZXR1cm4gSEFMX09LOwpAQCAtMTYyNyw3ICsxNjk1LDggQEAKICAgKiBAcGFyYW0gIFNpemUgQW1vdW50IG9mIGRhdGEgdG8gYmUgc2VudAogICAqIEByZXR2YWwgSEFMIHN0YXR1cwogICAqLwotSEFMX1N0YXR1c1R5cGVEZWYgSEFMX0kyQ19NYXN0ZXJfUmVjZWl2ZV9JVChJMkNfSGFuZGxlVHlwZURlZiAqaGkyYywgdWludDE2X3QgRGV2QWRkcmVzcywgdWludDhfdCAqcERhdGEsIHVpbnQxNl90IFNpemUpCitIQUxfU3RhdHVzVHlwZURlZiBIQUxfSTJDX01hc3Rlcl9SZWNlaXZlX0lUKEkyQ19IYW5kbGVUeXBlRGVmICpoaTJjLCB1aW50MTZfdCBEZXZBZGRyZXNzLCB1aW50OF90ICpwRGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDE2X3QgU2l6ZSkKIHsKICAgdWludDMyX3QgeGZlcm1vZGU7CiAKQEAgLTE2NzUsNyArMTc0NCw4IEBACiAKICAgICAvKiBFbmFibGUgRVJSLCBUQywgU1RPUCwgTkFDSywgUlhJIGludGVycnVwdCAqLwogICAgIC8qIHBvc3NpYmxlIHRvIGVuYWJsZSBhbGwgb2YgdGhlc2UgKi8KLSAgICAvKiBJMkNfSVRfRVJSSSB8IEkyQ19JVF9UQ0l8IEkyQ19JVF9TVE9QSXwgSTJDX0lUX05BQ0tJIHwgSTJDX0lUX0FERFJJIHwgSTJDX0lUX1JYSSB8IEkyQ19JVF9UWEkgKi8KKyAgICAvKiBJMkNfSVRfRVJSSSB8IEkyQ19JVF9UQ0kgfCBJMkNfSVRfU1RPUEkgfCBJMkNfSVRfTkFDS0kgfAorICAgICAgSTJDX0lUX0FERFJJIHwgSTJDX0lUX1JYSSB8IEkyQ19JVF9UWEkgKi8KICAgICBJMkNfRW5hYmxlX0lSUShoaTJjLCBJMkNfWEZFUl9SWF9JVCk7CiAKICAgICByZXR1cm4gSEFMX09LOwpAQCAtMTcyNCw3ICsxNzk0LDggQEAKIAogICAgIC8qIEVuYWJsZSBFUlIsIFRDLCBTVE9QLCBOQUNLLCBUWEkgaW50ZXJydXB0ICovCiAgICAgLyogcG9zc2libGUgdG8gZW5hYmxlIGFsbCBvZiB0aGVzZSAqLwotICAgIC8qIEkyQ19JVF9FUlJJIHwgSTJDX0lUX1RDSXwgSTJDX0lUX1NUT1BJfCBJMkNfSVRfTkFDS0kgfCBJMkNfSVRfQUREUkkgfCBJMkNfSVRfUlhJIHwgSTJDX0lUX1RYSSAqLworICAgIC8qIEkyQ19JVF9FUlJJIHwgSTJDX0lUX1RDSSB8IEkyQ19JVF9TVE9QSSB8IEkyQ19JVF9OQUNLSSB8CisgICAgICBJMkNfSVRfQUREUkkgfCBJMkNfSVRfUlhJIHwgSTJDX0lUX1RYSSAqLwogICAgIEkyQ19FbmFibGVfSVJRKGhpMmMsIEkyQ19YRkVSX1RYX0lUIHwgSTJDX1hGRVJfTElTVEVOX0lUKTsKIAogICAgIHJldHVybiBIQUxfT0s7CkBAIC0xNzczLDcgKzE4NDQsOCBAQAogCiAgICAgLyogRW5hYmxlIEVSUiwgVEMsIFNUT1AsIE5BQ0ssIFJYSSBpbnRlcnJ1cHQgKi8KICAgICAvKiBwb3NzaWJsZSB0byBlbmFibGUgYWxsIG9mIHRoZXNlICovCi0gICAgLyogSTJDX0lUX0VSUkkgfCBJMkNfSVRfVENJfCBJMkNfSVRfU1RPUEl8IEkyQ19JVF9OQUNLSSB8IEkyQ19JVF9BRERSSSB8IEkyQ19JVF9SWEkgfCBJMkNfSVRfVFhJICovCisgICAgLyogSTJDX0lUX0VSUkkgfCBJMkNfSVRfVENJIHwgSTJDX0lUX1NUT1BJIHwgSTJDX0lUX05BQ0tJIHwKKyAgICAgIEkyQ19JVF9BRERSSSB8IEkyQ19JVF9SWEkgfCBJMkNfSVRfVFhJICovCiAgICAgSTJDX0VuYWJsZV9JUlEoaGkyYywgSTJDX1hGRVJfUlhfSVQgfCBJMkNfWEZFUl9MSVNURU5fSVQpOwogCiAgICAgcmV0dXJuIEhBTF9PSzsKQEAgLTE4NDYsNyArMTkxOCw4IEBACiAgICAgICAgIGhpMmMtPmhkbWF0eC0+WGZlckFib3J0Q2FsbGJhY2sgPSBOVUxMOwogCiAgICAgICAgIC8qIEVuYWJsZSB0aGUgRE1BIHN0cmVhbSAqLwotICAgICAgICBkbWF4ZmVyc3RhdHVzID0gSEFMX0RNQV9TdGFydF9JVChoaTJjLT5oZG1hdHgsICh1aW50MzJfdClwRGF0YSwgKHVpbnQzMl90KSZoaTJjLT5JbnN0YW5jZS0+VFhEUiwgaGkyYy0+WGZlclNpemUpOworICAgICAgICBkbWF4ZmVyc3RhdHVzID0gSEFMX0RNQV9TdGFydF9JVChoaTJjLT5oZG1hdHgsICh1aW50MzJfdClwRGF0YSwgKHVpbnQzMl90KSZoaTJjLT5JbnN0YW5jZS0+VFhEUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGkyYy0+WGZlclNpemUpOwogICAgICAgfQogICAgICAgZWxzZQogICAgICAgewpAQCAtMTkwNiw3ICsxOTc5LDggQEAKIAogICAgICAgLyogU2VuZCBTbGF2ZSBBZGRyZXNzICovCiAgICAgICAvKiBTZXQgTkJZVEVTIHRvIHdyaXRlIGFuZCBnZW5lcmF0ZSBTVEFSVCBjb25kaXRpb24gKi8KLSAgICAgIEkyQ19UcmFuc2ZlckNvbmZpZyhoaTJjLCBEZXZBZGRyZXNzLCAodWludDhfdCloaTJjLT5YZmVyU2l6ZSwgSTJDX0FVVE9FTkRfTU9ERSwgSTJDX0dFTkVSQVRFX1NUQVJUX1dSSVRFKTsKKyAgICAgIEkyQ19UcmFuc2ZlckNvbmZpZyhoaTJjLCBEZXZBZGRyZXNzLCAodWludDhfdCloaTJjLT5YZmVyU2l6ZSwgSTJDX0FVVE9FTkRfTU9ERSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBJMkNfR0VORVJBVEVfU1RBUlRfV1JJVEUpOwogCiAgICAgICAvKiBQcm9jZXNzIFVubG9ja2VkICovCiAgICAgICBfX0hBTF9VTkxPQ0soaGkyYyk7CkBAIC0xOTE2LDcgKzE5OTAsOCBAQAogICAgICAgICAgICAgICAgIHByb2Nlc3MgdW5sb2NrICovCiAgICAgICAvKiBFbmFibGUgRVJSLCBUQywgU1RPUCwgTkFDSywgVFhJIGludGVycnVwdCAqLwogICAgICAgLyogcG9zc2libGUgdG8gZW5hYmxlIGFsbCBvZiB0aGVzZSAqLwotICAgICAgLyogSTJDX0lUX0VSUkkgfCBJMkNfSVRfVENJfCBJMkNfSVRfU1RPUEl8IEkyQ19JVF9OQUNLSSB8IEkyQ19JVF9BRERSSSB8IEkyQ19JVF9SWEkgfCBJMkNfSVRfVFhJICovCisgICAgICAvKiBJMkNfSVRfRVJSSSB8IEkyQ19JVF9UQ0kgfCBJMkNfSVRfU1RPUEkgfCBJMkNfSVRfTkFDS0kgfAorICAgICAgICBJMkNfSVRfQUREUkkgfCBJMkNfSVRfUlhJIHwgSTJDX0lUX1RYSSAqLwogICAgICAgSTJDX0VuYWJsZV9JUlEoaGkyYywgSTJDX1hGRVJfVFhfSVQpOwogICAgIH0KIApAQCAtMTk5MCw3ICsyMDY1LDggQEAKICAgICAgICAgaGkyYy0+aGRtYXJ4LT5YZmVyQWJvcnRDYWxsYmFjayA9IE5VTEw7CiAKICAgICAgICAgLyogRW5hYmxlIHRoZSBETUEgc3RyZWFtICovCi0gICAgICAgIGRtYXhmZXJzdGF0dXMgPSBIQUxfRE1BX1N0YXJ0X0lUKGhpMmMtPmhkbWFyeCwgKHVpbnQzMl90KSZoaTJjLT5JbnN0YW5jZS0+UlhEUiwgKHVpbnQzMl90KXBEYXRhLCBoaTJjLT5YZmVyU2l6ZSk7CisgICAgICAgIGRtYXhmZXJzdGF0dXMgPSBIQUxfRE1BX1N0YXJ0X0lUKGhpMmMtPmhkbWFyeCwgKHVpbnQzMl90KSZoaTJjLT5JbnN0YW5jZS0+UlhEUiwgKHVpbnQzMl90KXBEYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoaTJjLT5YZmVyU2l6ZSk7CiAgICAgICB9CiAgICAgICBlbHNlCiAgICAgICB7CkBAIC0yMDUwLDcgKzIxMjYsOCBAQAogCiAgICAgICAvKiBTZW5kIFNsYXZlIEFkZHJlc3MgKi8KICAgICAgIC8qIFNldCBOQllURVMgdG8gcmVhZCBhbmQgZ2VuZXJhdGUgU1RBUlQgY29uZGl0aW9uICovCi0gICAgICBJMkNfVHJhbnNmZXJDb25maWcoaGkyYywgRGV2QWRkcmVzcywgKHVpbnQ4X3QpaGkyYy0+WGZlclNpemUsIEkyQ19BVVRPRU5EX01PREUsIEkyQ19HRU5FUkFURV9TVEFSVF9SRUFEKTsKKyAgICAgIEkyQ19UcmFuc2ZlckNvbmZpZyhoaTJjLCBEZXZBZGRyZXNzLCAodWludDhfdCloaTJjLT5YZmVyU2l6ZSwgSTJDX0FVVE9FTkRfTU9ERSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBJMkNfR0VORVJBVEVfU1RBUlRfUkVBRCk7CiAKICAgICAgIC8qIFByb2Nlc3MgVW5sb2NrZWQgKi8KICAgICAgIF9fSEFMX1VOTE9DSyhoaTJjKTsKQEAgLTIwNjAsNyArMjEzNyw4IEBACiAgICAgICAgICAgICAgICAgcHJvY2VzcyB1bmxvY2sgKi8KICAgICAgIC8qIEVuYWJsZSBFUlIsIFRDLCBTVE9QLCBOQUNLLCBUWEkgaW50ZXJydXB0ICovCiAgICAgICAvKiBwb3NzaWJsZSB0byBlbmFibGUgYWxsIG9mIHRoZXNlICovCi0gICAgICAvKiBJMkNfSVRfRVJSSSB8IEkyQ19JVF9UQ0l8IEkyQ19JVF9TVE9QSXwgSTJDX0lUX05BQ0tJIHwgSTJDX0lUX0FERFJJIHwgSTJDX0lUX1JYSSB8IEkyQ19JVF9UWEkgKi8KKyAgICAgIC8qIEkyQ19JVF9FUlJJIHwgSTJDX0lUX1RDSSB8IEkyQ19JVF9TVE9QSSB8IEkyQ19JVF9OQUNLSSB8CisgICAgICAgIEkyQ19JVF9BRERSSSB8IEkyQ19JVF9SWEkgfCBJMkNfSVRfVFhJICovCiAgICAgICBJMkNfRW5hYmxlX0lSUShoaTJjLCBJMkNfWEZFUl9UWF9JVCk7CiAgICAgfQogCkBAIC0yMTE4LDcgKzIxOTYsOCBAQAogICAgICAgaGkyYy0+aGRtYXR4LT5YZmVyQWJvcnRDYWxsYmFjayA9IE5VTEw7CiAKICAgICAgIC8qIEVuYWJsZSB0aGUgRE1BIHN0cmVhbSAqLwotICAgICAgZG1heGZlcnN0YXR1cyA9IEhBTF9ETUFfU3RhcnRfSVQoaGkyYy0+aGRtYXR4LCAodWludDMyX3QpcERhdGEsICh1aW50MzJfdCkmaGkyYy0+SW5zdGFuY2UtPlRYRFIsIGhpMmMtPlhmZXJTaXplKTsKKyAgICAgIGRtYXhmZXJzdGF0dXMgPSBIQUxfRE1BX1N0YXJ0X0lUKGhpMmMtPmhkbWF0eCwgKHVpbnQzMl90KXBEYXRhLCAodWludDMyX3QpJmhpMmMtPkluc3RhbmNlLT5UWERSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGkyYy0+WGZlclNpemUpOwogICAgIH0KICAgICBlbHNlCiAgICAgewpAQCAtMjIyMSw3ICsyMzAwLDggQEAKICAgICAgIGhpMmMtPmhkbWFyeC0+WGZlckFib3J0Q2FsbGJhY2sgPSBOVUxMOwogCiAgICAgICAvKiBFbmFibGUgdGhlIERNQSBzdHJlYW0gKi8KLSAgICAgIGRtYXhmZXJzdGF0dXMgPSBIQUxfRE1BX1N0YXJ0X0lUKGhpMmMtPmhkbWFyeCwgKHVpbnQzMl90KSZoaTJjLT5JbnN0YW5jZS0+UlhEUiwgKHVpbnQzMl90KXBEYXRhLCBoaTJjLT5YZmVyU2l6ZSk7CisgICAgICBkbWF4ZmVyc3RhdHVzID0gSEFMX0RNQV9TdGFydF9JVChoaTJjLT5oZG1hcngsICh1aW50MzJfdCkmaGkyYy0+SW5zdGFuY2UtPlJYRFIsICh1aW50MzJfdClwRGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpMmMtPlhmZXJTaXplKTsKICAgICB9CiAgICAgZWxzZQogICAgIHsKQEAgLTIzNzQsMTIgKzI0NTQsMTQgQEAKICAgICAgICAgaWYgKGhpMmMtPlhmZXJDb3VudCA+IE1BWF9OQllURV9TSVpFKQogICAgICAgICB7CiAgICAgICAgICAgaGkyYy0+WGZlclNpemUgPSBNQVhfTkJZVEVfU0laRTsKLSAgICAgICAgICBJMkNfVHJhbnNmZXJDb25maWcoaGkyYywgRGV2QWRkcmVzcywgKHVpbnQ4X3QpaGkyYy0+WGZlclNpemUsIEkyQ19SRUxPQURfTU9ERSwgSTJDX05PX1NUQVJUU1RPUCk7CisgICAgICAgICAgSTJDX1RyYW5zZmVyQ29uZmlnKGhpMmMsIERldkFkZHJlc3MsICh1aW50OF90KWhpMmMtPlhmZXJTaXplLCBJMkNfUkVMT0FEX01PREUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEkyQ19OT19TVEFSVFNUT1ApOwogICAgICAgICB9CiAgICAgICAgIGVsc2UKICAgICAgICAgewogICAgICAgICAgIGhpMmMtPlhmZXJTaXplID0gaGkyYy0+WGZlckNvdW50OwotICAgICAgICAgIEkyQ19UcmFuc2ZlckNvbmZpZyhoaTJjLCBEZXZBZGRyZXNzLCAodWludDhfdCloaTJjLT5YZmVyU2l6ZSwgSTJDX0FVVE9FTkRfTU9ERSwgSTJDX05PX1NUQVJUU1RPUCk7CisgICAgICAgICAgSTJDX1RyYW5zZmVyQ29uZmlnKGhpMmMsIERldkFkZHJlc3MsICh1aW50OF90KWhpMmMtPlhmZXJTaXplLCBJMkNfQVVUT0VORF9NT0RFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJMkNfTk9fU1RBUlRTVE9QKTsKICAgICAgICAgfQogICAgICAgfQogCkBAIC0yNDc0LDEyICsyNTU2LDE0IEBACiAgICAgaWYgKGhpMmMtPlhmZXJDb3VudCA+IE1BWF9OQllURV9TSVpFKQogICAgIHsKICAgICAgIGhpMmMtPlhmZXJTaXplID0gTUFYX05CWVRFX1NJWkU7Ci0gICAgICBJMkNfVHJhbnNmZXJDb25maWcoaGkyYywgRGV2QWRkcmVzcywgKHVpbnQ4X3QpaGkyYy0+WGZlclNpemUsIEkyQ19SRUxPQURfTU9ERSwgSTJDX0dFTkVSQVRFX1NUQVJUX1JFQUQpOworICAgICAgSTJDX1RyYW5zZmVyQ29uZmlnKGhpMmMsIERldkFkZHJlc3MsICh1aW50OF90KWhpMmMtPlhmZXJTaXplLCBJMkNfUkVMT0FEX01PREUsCisgICAgICAgICAgICAgICAgICAgICAgICAgSTJDX0dFTkVSQVRFX1NUQVJUX1JFQUQpOwogICAgIH0KICAgICBlbHNlCiAgICAgewogICAgICAgaGkyYy0+WGZlclNpemUgPSBoaTJjLT5YZmVyQ291bnQ7Ci0gICAgICBJMkNfVHJhbnNmZXJDb25maWcoaGkyYywgRGV2QWRkcmVzcywgKHVpbnQ4X3QpaGkyYy0+WGZlclNpemUsIEkyQ19BVVRPRU5EX01PREUsIEkyQ19HRU5FUkFURV9TVEFSVF9SRUFEKTsKKyAgICAgIEkyQ19UcmFuc2ZlckNvbmZpZyhoaTJjLCBEZXZBZGRyZXNzLCAodWludDhfdCloaTJjLT5YZmVyU2l6ZSwgSTJDX0FVVE9FTkRfTU9ERSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBJMkNfR0VORVJBVEVfU1RBUlRfUkVBRCk7CiAgICAgfQogCiAgICAgZG8KQEAgLTI1MTAsMTIgKzI1OTQsMTQgQEAKICAgICAgICAgaWYgKGhpMmMtPlhmZXJDb3VudCA+IE1BWF9OQllURV9TSVpFKQogICAgICAgICB7CiAgICAgICAgICAgaGkyYy0+WGZlclNpemUgPSBNQVhfTkJZVEVfU0laRTsKLSAgICAgICAgICBJMkNfVHJhbnNmZXJDb25maWcoaGkyYywgRGV2QWRkcmVzcywgKHVpbnQ4X3QpIGhpMmMtPlhmZXJTaXplLCBJMkNfUkVMT0FEX01PREUsIEkyQ19OT19TVEFSVFNUT1ApOworICAgICAgICAgIEkyQ19UcmFuc2ZlckNvbmZpZyhoaTJjLCBEZXZBZGRyZXNzLCAodWludDhfdCkgaGkyYy0+WGZlclNpemUsIEkyQ19SRUxPQURfTU9ERSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSTJDX05PX1NUQVJUU1RPUCk7CiAgICAgICAgIH0KICAgICAgICAgZWxzZQogICAgICAgICB7CiAgICAgICAgICAgaGkyYy0+WGZlclNpemUgPSBoaTJjLT5YZmVyQ291bnQ7Ci0gICAgICAgICAgSTJDX1RyYW5zZmVyQ29uZmlnKGhpMmMsIERldkFkZHJlc3MsICh1aW50OF90KWhpMmMtPlhmZXJTaXplLCBJMkNfQVVUT0VORF9NT0RFLCBJMkNfTk9fU1RBUlRTVE9QKTsKKyAgICAgICAgICBJMkNfVHJhbnNmZXJDb25maWcoaGkyYywgRGV2QWRkcmVzcywgKHVpbnQ4X3QpaGkyYy0+WGZlclNpemUsIEkyQ19BVVRPRU5EX01PREUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEkyQ19OT19TVEFSVFNUT1ApOwogICAgICAgICB9CiAgICAgICB9CiAgICAgfSB3aGlsZSAoaGkyYy0+WGZlckNvdW50ID4gMFUpOwpAQCAtMjYwOCw3ICsyNjk0LDggQEAKICAgICB9CiAKICAgICAvKiBTZW5kIFNsYXZlIEFkZHJlc3MgYW5kIE1lbW9yeSBBZGRyZXNzICovCi0gICAgaWYgKEkyQ19SZXF1ZXN0TWVtb3J5V3JpdGUoaGkyYywgRGV2QWRkcmVzcywgTWVtQWRkcmVzcywgTWVtQWRkU2l6ZSwgSTJDX1RJTUVPVVRfRkxBRywgdGlja3N0YXJ0KSAhPSBIQUxfT0spCisgICAgaWYgKEkyQ19SZXF1ZXN0TWVtb3J5V3JpdGUoaGkyYywgRGV2QWRkcmVzcywgTWVtQWRkcmVzcywgTWVtQWRkU2l6ZSwgSTJDX1RJTUVPVVRfRkxBRywgdGlja3N0YXJ0KQorICAgICAgICAhPSBIQUxfT0spCiAgICAgewogICAgICAgLyogUHJvY2VzcyBVbmxvY2tlZCAqLwogICAgICAgX19IQUxfVU5MT0NLKGhpMmMpOwpAQCAtMjYyNyw3ICsyNzE0LDggQEAKIAogICAgIC8qIEVuYWJsZSBFUlIsIFRDLCBTVE9QLCBOQUNLLCBUWEkgaW50ZXJydXB0ICovCiAgICAgLyogcG9zc2libGUgdG8gZW5hYmxlIGFsbCBvZiB0aGVzZSAqLwotICAgIC8qIEkyQ19JVF9FUlJJIHwgSTJDX0lUX1RDSXwgSTJDX0lUX1NUT1BJfCBJMkNfSVRfTkFDS0kgfCBJMkNfSVRfQUREUkkgfCBJMkNfSVRfUlhJIHwgSTJDX0lUX1RYSSAqLworICAgIC8qIEkyQ19JVF9FUlJJIHwgSTJDX0lUX1RDSSB8IEkyQ19JVF9TVE9QSSB8IEkyQ19JVF9OQUNLSSB8CisgICAgICBJMkNfSVRfQUREUkkgfCBJMkNfSVRfUlhJIHwgSTJDX0lUX1RYSSAqLwogICAgIEkyQ19FbmFibGVfSVJRKGhpMmMsIEkyQ19YRkVSX1RYX0lUKTsKIAogICAgIHJldHVybiBIQUxfT0s7CkBAIC0yNzE5LDcgKzI4MDcsOCBAQAogCiAgICAgLyogRW5hYmxlIEVSUiwgVEMsIFNUT1AsIE5BQ0ssIFJYSSBpbnRlcnJ1cHQgKi8KICAgICAvKiBwb3NzaWJsZSB0byBlbmFibGUgYWxsIG9mIHRoZXNlICovCi0gICAgLyogSTJDX0lUX0VSUkkgfCBJMkNfSVRfVENJfCBJMkNfSVRfU1RPUEl8IEkyQ19JVF9OQUNLSSB8IEkyQ19JVF9BRERSSSB8IEkyQ19JVF9SWEkgfCBJMkNfSVRfVFhJICovCisgICAgLyogSTJDX0lUX0VSUkkgfCBJMkNfSVRfVENJIHwgSTJDX0lUX1NUT1BJIHwgSTJDX0lUX05BQ0tJIHwKKyAgICAgIEkyQ19JVF9BRERSSSB8IEkyQ19JVF9SWEkgfCBJMkNfSVRfVFhJICovCiAgICAgSTJDX0VuYWJsZV9JUlEoaGkyYywgSTJDX1hGRVJfUlhfSVQpOwogCiAgICAgcmV0dXJuIEhBTF9PSzsKQEAgLTI3OTIsNyArMjg4MSw4IEBACiAgICAgfQogCiAgICAgLyogU2VuZCBTbGF2ZSBBZGRyZXNzIGFuZCBNZW1vcnkgQWRkcmVzcyAqLwotICAgIGlmIChJMkNfUmVxdWVzdE1lbW9yeVdyaXRlKGhpMmMsIERldkFkZHJlc3MsIE1lbUFkZHJlc3MsIE1lbUFkZFNpemUsIEkyQ19USU1FT1VUX0ZMQUcsIHRpY2tzdGFydCkgIT0gSEFMX09LKQorICAgIGlmIChJMkNfUmVxdWVzdE1lbW9yeVdyaXRlKGhpMmMsIERldkFkZHJlc3MsIE1lbUFkZHJlc3MsIE1lbUFkZFNpemUsIEkyQ19USU1FT1VUX0ZMQUcsIHRpY2tzdGFydCkKKyAgICAgICAgIT0gSEFMX09LKQogICAgIHsKICAgICAgIC8qIFByb2Nlc3MgVW5sb2NrZWQgKi8KICAgICAgIF9fSEFMX1VOTE9DSyhoaTJjKTsKQEAgLTI4MTMsNyArMjkwMyw4IEBACiAgICAgICBoaTJjLT5oZG1hdHgtPlhmZXJBYm9ydENhbGxiYWNrID0gTlVMTDsKIAogICAgICAgLyogRW5hYmxlIHRoZSBETUEgc3RyZWFtICovCi0gICAgICBkbWF4ZmVyc3RhdHVzID0gSEFMX0RNQV9TdGFydF9JVChoaTJjLT5oZG1hdHgsICh1aW50MzJfdClwRGF0YSwgKHVpbnQzMl90KSZoaTJjLT5JbnN0YW5jZS0+VFhEUiwgaGkyYy0+WGZlclNpemUpOworICAgICAgZG1heGZlcnN0YXR1cyA9IEhBTF9ETUFfU3RhcnRfSVQoaGkyYy0+aGRtYXR4LCAodWludDMyX3QpcERhdGEsICh1aW50MzJfdCkmaGkyYy0+SW5zdGFuY2UtPlRYRFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoaTJjLT5YZmVyU2l6ZSk7CiAgICAgfQogICAgIGVsc2UKICAgICB7CkBAIC0yOTU3LDcgKzMwNDgsOCBAQAogICAgICAgaGkyYy0+aGRtYXJ4LT5YZmVyQWJvcnRDYWxsYmFjayA9IE5VTEw7CiAKICAgICAgIC8qIEVuYWJsZSB0aGUgRE1BIHN0cmVhbSAqLwotICAgICAgZG1heGZlcnN0YXR1cyA9IEhBTF9ETUFfU3RhcnRfSVQoaGkyYy0+aGRtYXJ4LCAodWludDMyX3QpJmhpMmMtPkluc3RhbmNlLT5SWERSLCAodWludDMyX3QpcERhdGEsIGhpMmMtPlhmZXJTaXplKTsKKyAgICAgIGRtYXhmZXJzdGF0dXMgPSBIQUxfRE1BX1N0YXJ0X0lUKGhpMmMtPmhkbWFyeCwgKHVpbnQzMl90KSZoaTJjLT5JbnN0YW5jZS0+UlhEUiwgKHVpbnQzMl90KXBEYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGkyYy0+WGZlclNpemUpOwogICAgIH0KICAgICBlbHNlCiAgICAgewpAQCAtMzAyOCw3ICszMTIwLDggQEAKICAgKiBAcGFyYW0gIFRpbWVvdXQgVGltZW91dCBkdXJhdGlvbgogICAqIEByZXR2YWwgSEFMIHN0YXR1cwogICAqLwotSEFMX1N0YXR1c1R5cGVEZWYgSEFMX0kyQ19Jc0RldmljZVJlYWR5KEkyQ19IYW5kbGVUeXBlRGVmICpoaTJjLCB1aW50MTZfdCBEZXZBZGRyZXNzLCB1aW50MzJfdCBUcmlhbHMsIHVpbnQzMl90IFRpbWVvdXQpCitIQUxfU3RhdHVzVHlwZURlZiBIQUxfSTJDX0lzRGV2aWNlUmVhZHkoSTJDX0hhbmRsZVR5cGVEZWYgKmhpMmMsIHVpbnQxNl90IERldkFkZHJlc3MsIHVpbnQzMl90IFRyaWFscywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBUaW1lb3V0KQogewogICB1aW50MzJfdCB0aWNrc3RhcnQ7CiAKQEAgLTMyMDUsOSArMzI5OCwxMSBAQAogICAgICAgeGZlcm1vZGUgPSBoaTJjLT5YZmVyT3B0aW9uczsKICAgICB9CiAKLSAgICAvKiBJZiB0cmFuc2ZlciBkaXJlY3Rpb24gbm90IGNoYW5nZSBhbmQgdGhlcmUgaXMgbm8gcmVxdWVzdCB0byBzdGFydCBhbm90aGVyIGZyYW1lLCBkbyBub3QgZ2VuZXJhdGUgUmVzdGFydCBDb25kaXRpb24gKi8KKyAgICAvKiBJZiB0cmFuc2ZlciBkaXJlY3Rpb24gbm90IGNoYW5nZSBhbmQgdGhlcmUgaXMgbm8gcmVxdWVzdCB0byBzdGFydCBhbm90aGVyIGZyYW1lLAorICAgICAgIGRvIG5vdCBnZW5lcmF0ZSBSZXN0YXJ0IENvbmRpdGlvbiAqLwogICAgIC8qIE1lYW4gUHJldmlvdXMgc3RhdGUgaXMgc2FtZSBhcyBjdXJyZW50IHN0YXRlICovCi0gICAgaWYgKChoaTJjLT5QcmV2aW91c1N0YXRlID09IEkyQ19TVEFURV9NQVNURVJfQlVTWV9UWCkgJiYgKElTX0kyQ19UUkFOU0ZFUl9PVEhFUl9PUFRJT05TX1JFUVVFU1QoWGZlck9wdGlvbnMpID09IDApKQorICAgIGlmICgoaGkyYy0+UHJldmlvdXNTdGF0ZSA9PSBJMkNfU1RBVEVfTUFTVEVSX0JVU1lfVFgpICYmIFwKKyAgICAgICAgKElTX0kyQ19UUkFOU0ZFUl9PVEhFUl9PUFRJT05TX1JFUVVFU1QoWGZlck9wdGlvbnMpID09IDApKQogICAgIHsKICAgICAgIHhmZXJyZXF1ZXN0ID0gSTJDX05PX1NUQVJUU1RPUDsKICAgICB9CkBAIC0zMjkxLDkgKzMzODYsMTEgQEAKICAgICAgIHhmZXJtb2RlID0gaGkyYy0+WGZlck9wdGlvbnM7CiAgICAgfQogCi0gICAgLyogSWYgdHJhbnNmZXIgZGlyZWN0aW9uIG5vdCBjaGFuZ2UgYW5kIHRoZXJlIGlzIG5vIHJlcXVlc3QgdG8gc3RhcnQgYW5vdGhlciBmcmFtZSwgZG8gbm90IGdlbmVyYXRlIFJlc3RhcnQgQ29uZGl0aW9uICovCisgICAgLyogSWYgdHJhbnNmZXIgZGlyZWN0aW9uIG5vdCBjaGFuZ2UgYW5kIHRoZXJlIGlzIG5vIHJlcXVlc3QgdG8gc3RhcnQgYW5vdGhlciBmcmFtZSwKKyAgICAgICBkbyBub3QgZ2VuZXJhdGUgUmVzdGFydCBDb25kaXRpb24gKi8KICAgICAvKiBNZWFuIFByZXZpb3VzIHN0YXRlIGlzIHNhbWUgYXMgY3VycmVudCBzdGF0ZSAqLwotICAgIGlmICgoaGkyYy0+UHJldmlvdXNTdGF0ZSA9PSBJMkNfU1RBVEVfTUFTVEVSX0JVU1lfVFgpICYmIChJU19JMkNfVFJBTlNGRVJfT1RIRVJfT1BUSU9OU19SRVFVRVNUKFhmZXJPcHRpb25zKSA9PSAwKSkKKyAgICBpZiAoKGhpMmMtPlByZXZpb3VzU3RhdGUgPT0gSTJDX1NUQVRFX01BU1RFUl9CVVNZX1RYKSAmJiBcCisgICAgICAgIChJU19JMkNfVFJBTlNGRVJfT1RIRVJfT1BUSU9OU19SRVFVRVNUKFhmZXJPcHRpb25zKSA9PSAwKSkKICAgICB7CiAgICAgICB4ZmVycmVxdWVzdCA9IEkyQ19OT19TVEFSVFNUT1A7CiAgICAgfQpAQCAtMzMyNCw3ICszNDIxLDggQEAKICAgICAgICAgaGkyYy0+aGRtYXR4LT5YZmVyQWJvcnRDYWxsYmFjayA9IE5VTEw7CiAKICAgICAgICAgLyogRW5hYmxlIHRoZSBETUEgc3RyZWFtICovCi0gICAgICAgIGRtYXhmZXJzdGF0dXMgPSBIQUxfRE1BX1N0YXJ0X0lUKGhpMmMtPmhkbWF0eCwgKHVpbnQzMl90KXBEYXRhLCAodWludDMyX3QpJmhpMmMtPkluc3RhbmNlLT5UWERSLCBoaTJjLT5YZmVyU2l6ZSk7CisgICAgICAgIGRtYXhmZXJzdGF0dXMgPSBIQUxfRE1BX1N0YXJ0X0lUKGhpMmMtPmhkbWF0eCwgKHVpbnQzMl90KXBEYXRhLCAodWludDMyX3QpJmhpMmMtPkluc3RhbmNlLT5UWERSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoaTJjLT5YZmVyU2l6ZSk7CiAgICAgICB9CiAgICAgICBlbHNlCiAgICAgICB7CkBAIC0zMzgzLDcgKzM0ODEsOCBAQAogCiAgICAgICAvKiBTZW5kIFNsYXZlIEFkZHJlc3MgKi8KICAgICAgIC8qIFNldCBOQllURVMgdG8gd3JpdGUgYW5kIGdlbmVyYXRlIFNUQVJUIGNvbmRpdGlvbiAqLwotICAgICAgSTJDX1RyYW5zZmVyQ29uZmlnKGhpMmMsIERldkFkZHJlc3MsICh1aW50OF90KWhpMmMtPlhmZXJTaXplLCBJMkNfQVVUT0VORF9NT0RFLCBJMkNfR0VORVJBVEVfU1RBUlRfV1JJVEUpOworICAgICAgSTJDX1RyYW5zZmVyQ29uZmlnKGhpMmMsIERldkFkZHJlc3MsICh1aW50OF90KWhpMmMtPlhmZXJTaXplLCBJMkNfQVVUT0VORF9NT0RFLAorICAgICAgICAgICAgICAgICAgICAgICAgIEkyQ19HRU5FUkFURV9TVEFSVF9XUklURSk7CiAKICAgICAgIC8qIFByb2Nlc3MgVW5sb2NrZWQgKi8KICAgICAgIF9fSEFMX1VOTE9DSyhoaTJjKTsKQEAgLTMzOTMsNyArMzQ5Miw4IEBACiAgICAgICAgICAgICAgICAgcHJvY2VzcyB1bmxvY2sgKi8KICAgICAgIC8qIEVuYWJsZSBFUlIsIFRDLCBTVE9QLCBOQUNLLCBUWEkgaW50ZXJydXB0ICovCiAgICAgICAvKiBwb3NzaWJsZSB0byBlbmFibGUgYWxsIG9mIHRoZXNlICovCi0gICAgICAvKiBJMkNfSVRfRVJSSSB8IEkyQ19JVF9UQ0l8IEkyQ19JVF9TVE9QSXwgSTJDX0lUX05BQ0tJIHwgSTJDX0lUX0FERFJJIHwgSTJDX0lUX1JYSSB8IEkyQ19JVF9UWEkgKi8KKyAgICAgIC8qIEkyQ19JVF9FUlJJIHwgSTJDX0lUX1RDSSB8IEkyQ19JVF9TVE9QSSB8IEkyQ19JVF9OQUNLSSB8CisgICAgICAgIEkyQ19JVF9BRERSSSB8IEkyQ19JVF9SWEkgfCBJMkNfSVRfVFhJICovCiAgICAgICBJMkNfRW5hYmxlX0lSUShoaTJjLCBJMkNfWEZFUl9UWF9JVCk7CiAgICAgfQogCkBAIC0zNDUzLDkgKzM1NTMsMTEgQEAKICAgICAgIHhmZXJtb2RlID0gaGkyYy0+WGZlck9wdGlvbnM7CiAgICAgfQogCi0gICAgLyogSWYgdHJhbnNmZXIgZGlyZWN0aW9uIG5vdCBjaGFuZ2UgYW5kIHRoZXJlIGlzIG5vIHJlcXVlc3QgdG8gc3RhcnQgYW5vdGhlciBmcmFtZSwgZG8gbm90IGdlbmVyYXRlIFJlc3RhcnQgQ29uZGl0aW9uICovCisgICAgLyogSWYgdHJhbnNmZXIgZGlyZWN0aW9uIG5vdCBjaGFuZ2UgYW5kIHRoZXJlIGlzIG5vIHJlcXVlc3QgdG8gc3RhcnQgYW5vdGhlciBmcmFtZSwKKyAgICAgICBkbyBub3QgZ2VuZXJhdGUgUmVzdGFydCBDb25kaXRpb24gKi8KICAgICAvKiBNZWFuIFByZXZpb3VzIHN0YXRlIGlzIHNhbWUgYXMgY3VycmVudCBzdGF0ZSAqLwotICAgIGlmICgoaGkyYy0+UHJldmlvdXNTdGF0ZSA9PSBJMkNfU1RBVEVfTUFTVEVSX0JVU1lfUlgpICYmIChJU19JMkNfVFJBTlNGRVJfT1RIRVJfT1BUSU9OU19SRVFVRVNUKFhmZXJPcHRpb25zKSA9PSAwKSkKKyAgICBpZiAoKGhpMmMtPlByZXZpb3VzU3RhdGUgPT0gSTJDX1NUQVRFX01BU1RFUl9CVVNZX1JYKSAmJiBcCisgICAgICAgIChJU19JMkNfVFJBTlNGRVJfT1RIRVJfT1BUSU9OU19SRVFVRVNUKFhmZXJPcHRpb25zKSA9PSAwKSkKICAgICB7CiAgICAgICB4ZmVycmVxdWVzdCA9IEkyQ19OT19TVEFSVFNUT1A7CiAgICAgfQpAQCAtMzUzOSw5ICszNjQxLDExIEBACiAgICAgICB4ZmVybW9kZSA9IGhpMmMtPlhmZXJPcHRpb25zOwogICAgIH0KIAotICAgIC8qIElmIHRyYW5zZmVyIGRpcmVjdGlvbiBub3QgY2hhbmdlIGFuZCB0aGVyZSBpcyBubyByZXF1ZXN0IHRvIHN0YXJ0IGFub3RoZXIgZnJhbWUsIGRvIG5vdCBnZW5lcmF0ZSBSZXN0YXJ0IENvbmRpdGlvbiAqLworICAgIC8qIElmIHRyYW5zZmVyIGRpcmVjdGlvbiBub3QgY2hhbmdlIGFuZCB0aGVyZSBpcyBubyByZXF1ZXN0IHRvIHN0YXJ0IGFub3RoZXIgZnJhbWUsCisgICAgICAgZG8gbm90IGdlbmVyYXRlIFJlc3RhcnQgQ29uZGl0aW9uICovCiAgICAgLyogTWVhbiBQcmV2aW91cyBzdGF0ZSBpcyBzYW1lIGFzIGN1cnJlbnQgc3RhdGUgKi8KLSAgICBpZiAoKGhpMmMtPlByZXZpb3VzU3RhdGUgPT0gSTJDX1NUQVRFX01BU1RFUl9CVVNZX1JYKSAmJiAoSVNfSTJDX1RSQU5TRkVSX09USEVSX09QVElPTlNfUkVRVUVTVChYZmVyT3B0aW9ucykgPT0gMCkpCisgICAgaWYgKChoaTJjLT5QcmV2aW91c1N0YXRlID09IEkyQ19TVEFURV9NQVNURVJfQlVTWV9SWCkgJiYgXAorICAgICAgICAoSVNfSTJDX1RSQU5TRkVSX09USEVSX09QVElPTlNfUkVRVUVTVChYZmVyT3B0aW9ucykgPT0gMCkpCiAgICAgewogICAgICAgeGZlcnJlcXVlc3QgPSBJMkNfTk9fU1RBUlRTVE9QOwogICAgIH0KQEAgLTM1NzIsNyArMzY3Niw4IEBACiAgICAgICAgIGhpMmMtPmhkbWFyeC0+WGZlckFib3J0Q2FsbGJhY2sgPSBOVUxMOwogCiAgICAgICAgIC8qIEVuYWJsZSB0aGUgRE1BIHN0cmVhbSAqLwotICAgICAgICBkbWF4ZmVyc3RhdHVzID0gSEFMX0RNQV9TdGFydF9JVChoaTJjLT5oZG1hcngsICh1aW50MzJfdCkmaGkyYy0+SW5zdGFuY2UtPlJYRFIsICh1aW50MzJfdClwRGF0YSwgaGkyYy0+WGZlclNpemUpOworICAgICAgICBkbWF4ZmVyc3RhdHVzID0gSEFMX0RNQV9TdGFydF9JVChoaTJjLT5oZG1hcngsICh1aW50MzJfdCkmaGkyYy0+SW5zdGFuY2UtPlJYRFIsICh1aW50MzJfdClwRGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGkyYy0+WGZlclNpemUpOwogICAgICAgfQogICAgICAgZWxzZQogICAgICAgewpAQCAtMzYzMSw3ICszNzM2LDggQEAKIAogICAgICAgLyogU2VuZCBTbGF2ZSBBZGRyZXNzICovCiAgICAgICAvKiBTZXQgTkJZVEVTIHRvIHJlYWQgYW5kIGdlbmVyYXRlIFNUQVJUIGNvbmRpdGlvbiAqLwotICAgICAgSTJDX1RyYW5zZmVyQ29uZmlnKGhpMmMsIERldkFkZHJlc3MsICh1aW50OF90KWhpMmMtPlhmZXJTaXplLCBJMkNfQVVUT0VORF9NT0RFLCBJMkNfR0VORVJBVEVfU1RBUlRfUkVBRCk7CisgICAgICBJMkNfVHJhbnNmZXJDb25maWcoaGkyYywgRGV2QWRkcmVzcywgKHVpbnQ4X3QpaGkyYy0+WGZlclNpemUsIEkyQ19BVVRPRU5EX01PREUsCisgICAgICAgICAgICAgICAgICAgICAgICAgSTJDX0dFTkVSQVRFX1NUQVJUX1JFQUQpOwogCiAgICAgICAvKiBQcm9jZXNzIFVubG9ja2VkICovCiAgICAgICBfX0hBTF9VTkxPQ0soaGkyYyk7CkBAIC0zNjQxLDcgKzM3NDcsOCBAQAogICAgICAgICAgICAgICAgIHByb2Nlc3MgdW5sb2NrICovCiAgICAgICAvKiBFbmFibGUgRVJSLCBUQywgU1RPUCwgTkFDSywgVFhJIGludGVycnVwdCAqLwogICAgICAgLyogcG9zc2libGUgdG8gZW5hYmxlIGFsbCBvZiB0aGVzZSAqLwotICAgICAgLyogSTJDX0lUX0VSUkkgfCBJMkNfSVRfVENJfCBJMkNfSVRfU1RPUEl8IEkyQ19JVF9OQUNLSSB8IEkyQ19JVF9BRERSSSB8IEkyQ19JVF9SWEkgfCBJMkNfSVRfVFhJICovCisgICAgICAvKiBJMkNfSVRfRVJSSSB8IEkyQ19JVF9UQ0kgfCBJMkNfSVRfU1RPUEkgfCBJMkNfSVRfTkFDS0kgfAorICAgICAgICBJMkNfSVRfQUREUkkgfCBJMkNfSVRfUlhJIHwgSTJDX0lUX1RYSSAqLwogICAgICAgSTJDX0VuYWJsZV9JUlEoaGkyYywgSTJDX1hGRVJfVFhfSVQpOwogICAgIH0KIApAQCAtMzg2Miw3ICszOTY5LDggQEAKICAgICAgIGhpMmMtPmhkbWF0eC0+WGZlckFib3J0Q2FsbGJhY2sgPSBOVUxMOwogCiAgICAgICAvKiBFbmFibGUgdGhlIERNQSBzdHJlYW0gKi8KLSAgICAgIGRtYXhmZXJzdGF0dXMgPSBIQUxfRE1BX1N0YXJ0X0lUKGhpMmMtPmhkbWF0eCwgKHVpbnQzMl90KXBEYXRhLCAodWludDMyX3QpJmhpMmMtPkluc3RhbmNlLT5UWERSLCBoaTJjLT5YZmVyU2l6ZSk7CisgICAgICBkbWF4ZmVyc3RhdHVzID0gSEFMX0RNQV9TdGFydF9JVChoaTJjLT5oZG1hdHgsICh1aW50MzJfdClwRGF0YSwgKHVpbnQzMl90KSZoaTJjLT5JbnN0YW5jZS0+VFhEUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpMmMtPlhmZXJTaXplKTsKICAgICB9CiAgICAgZWxzZQogICAgIHsKQEAgLTM5MTIsMTUgKzQwMjAsMTUgQEAKICAgICAvKiBQcm9jZXNzIFVubG9ja2VkICovCiAgICAgX19IQUxfVU5MT0NLKGhpMmMpOwogCisgICAgLyogRW5hYmxlIERNQSBSZXF1ZXN0ICovCisgICAgaGkyYy0+SW5zdGFuY2UtPkNSMSB8PSBJMkNfQ1IxX1RYRE1BRU47CisKICAgICAvKiBOb3RlIDogVGhlIEkyQyBpbnRlcnJ1cHRzIG11c3QgYmUgZW5hYmxlZCBhZnRlciB1bmxvY2tpbmcgY3VycmVudCBwcm9jZXNzCiAgICAgdG8gYXZvaWQgdGhlIHJpc2sgb2YgSTJDIGludGVycnVwdCBoYW5kbGUgZXhlY3V0aW9uIGJlZm9yZSBjdXJyZW50CiAgICAgcHJvY2VzcyB1bmxvY2sgKi8KICAgICAvKiBFbmFibGUgRVJSLCBTVE9QLCBOQUNLLCBBRERSIGludGVycnVwdHMgKi8KICAgICBJMkNfRW5hYmxlX0lSUShoaTJjLCBJMkNfWEZFUl9MSVNURU5fSVQpOwogCi0gICAgLyogRW5hYmxlIERNQSBSZXF1ZXN0ICovCi0gICAgaGkyYy0+SW5zdGFuY2UtPkNSMSB8PSBJMkNfQ1IxX1RYRE1BRU47Ci0KICAgICByZXR1cm4gSEFMX09LOwogICB9CiAgIGVsc2UKQEAgLTQxMzgsNyArNDI0Niw4IEBACiAgICAgICBoaTJjLT5oZG1hcngtPlhmZXJBYm9ydENhbGxiYWNrID0gTlVMTDsKIAogICAgICAgLyogRW5hYmxlIHRoZSBETUEgc3RyZWFtICovCi0gICAgICBkbWF4ZmVyc3RhdHVzID0gSEFMX0RNQV9TdGFydF9JVChoaTJjLT5oZG1hcngsICh1aW50MzJfdCkmaGkyYy0+SW5zdGFuY2UtPlJYRFIsICh1aW50MzJfdClwRGF0YSwgaGkyYy0+WGZlclNpemUpOworICAgICAgZG1heGZlcnN0YXR1cyA9IEhBTF9ETUFfU3RhcnRfSVQoaGkyYy0+aGRtYXJ4LCAodWludDMyX3QpJmhpMmMtPkluc3RhbmNlLT5SWERSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVpbnQzMl90KXBEYXRhLCBoaTJjLT5YZmVyU2l6ZSk7CiAgICAgfQogICAgIGVsc2UKICAgICB7CkBAIC00MTg4LDE1ICs0Mjk3LDE1IEBACiAgICAgLyogUHJvY2VzcyBVbmxvY2tlZCAqLwogICAgIF9fSEFMX1VOTE9DSyhoaTJjKTsKIAorICAgIC8qIEVuYWJsZSBETUEgUmVxdWVzdCAqLworICAgIGhpMmMtPkluc3RhbmNlLT5DUjEgfD0gSTJDX0NSMV9SWERNQUVOOworCiAgICAgLyogTm90ZSA6IFRoZSBJMkMgaW50ZXJydXB0cyBtdXN0IGJlIGVuYWJsZWQgYWZ0ZXIgdW5sb2NraW5nIGN1cnJlbnQgcHJvY2VzcwogICAgIHRvIGF2b2lkIHRoZSByaXNrIG9mIEkyQyBpbnRlcnJ1cHQgaGFuZGxlIGV4ZWN1dGlvbiBiZWZvcmUgY3VycmVudAogICAgIHByb2Nlc3MgdW5sb2NrICovCiAgICAgLyogUkVuYWJsZSBBRERSIGludGVycnVwdCAqLwogICAgIEkyQ19FbmFibGVfSVJRKGhpMmMsIEkyQ19YRkVSX1JYX0lUIHwgSTJDX1hGRVJfTElTVEVOX0lUKTsKIAotICAgIC8qIEVuYWJsZSBETUEgUmVxdWVzdCAqLwotICAgIGhpMmMtPkluc3RhbmNlLT5DUjEgfD0gSTJDX0NSMV9SWERNQUVOOwotCiAgICAgcmV0dXJuIEhBTF9PSzsKICAgfQogICBlbHNlCkBAIC00MzU2LDcgKzQ0NjUsOCBAQAogICB1aW50MzJfdCB0bXBlcnJvcjsKIAogICAvKiBJMkMgQnVzIGVycm9yIGludGVycnVwdCBvY2N1cnJlZCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwotICBpZiAoKEkyQ19DSEVDS19GTEFHKGl0ZmxhZ3MsIEkyQ19GTEFHX0JFUlIpICE9IFJFU0VUKSAmJiAoSTJDX0NIRUNLX0lUX1NPVVJDRShpdHNvdXJjZXMsIEkyQ19JVF9FUlJJKSAhPSBSRVNFVCkpCisgIGlmICgoSTJDX0NIRUNLX0ZMQUcoaXRmbGFncywgSTJDX0ZMQUdfQkVSUikgIT0gUkVTRVQpICYmIFwKKyAgICAgIChJMkNfQ0hFQ0tfSVRfU09VUkNFKGl0c291cmNlcywgSTJDX0lUX0VSUkkpICE9IFJFU0VUKSkKICAgewogICAgIGhpMmMtPkVycm9yQ29kZSB8PSBIQUxfSTJDX0VSUk9SX0JFUlI7CiAKQEAgLTQzNjUsNyArNDQ3NSw4IEBACiAgIH0KIAogICAvKiBJMkMgT3Zlci1SdW4vVW5kZXItUnVuIGludGVycnVwdCBvY2N1cnJlZCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLSAgaWYgKChJMkNfQ0hFQ0tfRkxBRyhpdGZsYWdzLCBJMkNfRkxBR19PVlIpICE9IFJFU0VUKSAmJiAoSTJDX0NIRUNLX0lUX1NPVVJDRShpdHNvdXJjZXMsIEkyQ19JVF9FUlJJKSAhPSBSRVNFVCkpCisgIGlmICgoSTJDX0NIRUNLX0ZMQUcoaXRmbGFncywgSTJDX0ZMQUdfT1ZSKSAhPSBSRVNFVCkgJiYgXAorICAgICAgKEkyQ19DSEVDS19JVF9TT1VSQ0UoaXRzb3VyY2VzLCBJMkNfSVRfRVJSSSkgIT0gUkVTRVQpKQogICB7CiAgICAgaGkyYy0+RXJyb3JDb2RlIHw9IEhBTF9JMkNfRVJST1JfT1ZSOwogCkBAIC00Mzc0LDcgKzQ0ODUsOCBAQAogICB9CiAKICAgLyogSTJDIEFyYml0cmF0aW9uIExvc3MgZXJyb3IgaW50ZXJydXB0IG9jY3VycmVkIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwotICBpZiAoKEkyQ19DSEVDS19GTEFHKGl0ZmxhZ3MsIEkyQ19GTEFHX0FSTE8pICE9IFJFU0VUKSAmJiAoSTJDX0NIRUNLX0lUX1NPVVJDRShpdHNvdXJjZXMsIEkyQ19JVF9FUlJJKSAhPSBSRVNFVCkpCisgIGlmICgoSTJDX0NIRUNLX0ZMQUcoaXRmbGFncywgSTJDX0ZMQUdfQVJMTykgIT0gUkVTRVQpICYmIFwKKyAgICAgIChJMkNfQ0hFQ0tfSVRfU09VUkNFKGl0c291cmNlcywgSTJDX0lUX0VSUkkpICE9IFJFU0VUKSkKICAgewogICAgIGhpMmMtPkVycm9yQ29kZSB8PSBIQUxfSTJDX0VSUk9SX0FSTE87CiAKQEAgLTQ2MjgsNyArNDc0MCw4IEBACiAgICogQHBhcmFtICBJVFNvdXJjZXMgSW50ZXJydXB0IHNvdXJjZXMgZW5hYmxlZC4KICAgKiBAcmV0dmFsIEhBTCBzdGF0dXMKICAgKi8KLXN0YXRpYyBIQUxfU3RhdHVzVHlwZURlZiBJMkNfTWFzdGVyX0lTUl9JVChzdHJ1Y3QgX19JMkNfSGFuZGxlVHlwZURlZiAqaGkyYywgdWludDMyX3QgSVRGbGFncywgdWludDMyX3QgSVRTb3VyY2VzKQorc3RhdGljIEhBTF9TdGF0dXNUeXBlRGVmIEkyQ19NYXN0ZXJfSVNSX0lUKHN0cnVjdCBfX0kyQ19IYW5kbGVUeXBlRGVmICpoaTJjLCB1aW50MzJfdCBJVEZsYWdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IElUU291cmNlcykKIHsKICAgdWludDE2X3QgZGV2YWRkcmVzczsKICAgdWludDMyX3QgdG1wSVRGbGFncyA9IElURmxhZ3M7CkBAIC00NjM2LDcgKzQ3NDksOCBAQAogICAvKiBQcm9jZXNzIExvY2tlZCAqLwogICBfX0hBTF9MT0NLKGhpMmMpOwogCi0gIGlmICgoSTJDX0NIRUNLX0ZMQUcodG1wSVRGbGFncywgSTJDX0ZMQUdfQUYpICE9IFJFU0VUKSAmJiAoSTJDX0NIRUNLX0lUX1NPVVJDRShJVFNvdXJjZXMsIEkyQ19JVF9OQUNLSSkgIT0gUkVTRVQpKQorICBpZiAoKEkyQ19DSEVDS19GTEFHKHRtcElURmxhZ3MsIEkyQ19GTEFHX0FGKSAhPSBSRVNFVCkgJiYgXAorICAgICAgKEkyQ19DSEVDS19JVF9TT1VSQ0UoSVRTb3VyY2VzLCBJMkNfSVRfTkFDS0kpICE9IFJFU0VUKSkKICAgewogICAgIC8qIENsZWFyIE5BQ0sgRmxhZyAqLwogICAgIF9fSEFMX0kyQ19DTEVBUl9GTEFHKGhpMmMsIEkyQ19GTEFHX0FGKTsKQEAgLTQ2NDksNyArNDc2Myw4IEBACiAgICAgLyogRmx1c2ggVFggcmVnaXN0ZXIgKi8KICAgICBJMkNfRmx1c2hfVFhEUihoaTJjKTsKICAgfQotICBlbHNlIGlmICgoSTJDX0NIRUNLX0ZMQUcodG1wSVRGbGFncywgSTJDX0ZMQUdfUlhORSkgIT0gUkVTRVQpICYmIChJMkNfQ0hFQ0tfSVRfU09VUkNFKElUU291cmNlcywgSTJDX0lUX1JYSSkgIT0gUkVTRVQpKQorICBlbHNlIGlmICgoSTJDX0NIRUNLX0ZMQUcodG1wSVRGbGFncywgSTJDX0ZMQUdfUlhORSkgIT0gUkVTRVQpICYmIFwKKyAgICAgICAgICAgKEkyQ19DSEVDS19JVF9TT1VSQ0UoSVRTb3VyY2VzLCBJMkNfSVRfUlhJKSAhPSBSRVNFVCkpCiAgIHsKICAgICAvKiBSZW1vdmUgUlhORSBmbGFnIG9uIHRlbXBvcmFyeSB2YXJpYWJsZSBhcyByZWFkIGRvbmUgKi8KICAgICB0bXBJVEZsYWdzICY9IH5JMkNfRkxBR19SWE5FOwpAQCAtNDY2Myw3ICs0Nzc4LDggQEAKICAgICBoaTJjLT5YZmVyU2l6ZS0tOwogICAgIGhpMmMtPlhmZXJDb3VudC0tOwogICB9Ci0gIGVsc2UgaWYgKChJMkNfQ0hFQ0tfRkxBRyh0bXBJVEZsYWdzLCBJMkNfRkxBR19UWElTKSAhPSBSRVNFVCkgJiYgKEkyQ19DSEVDS19JVF9TT1VSQ0UoSVRTb3VyY2VzLCBJMkNfSVRfVFhJKSAhPSBSRVNFVCkpCisgIGVsc2UgaWYgKChJMkNfQ0hFQ0tfRkxBRyh0bXBJVEZsYWdzLCBJMkNfRkxBR19UWElTKSAhPSBSRVNFVCkgJiYgXAorICAgICAgICAgICAoSTJDX0NIRUNLX0lUX1NPVVJDRShJVFNvdXJjZXMsIEkyQ19JVF9UWEkpICE9IFJFU0VUKSkKICAgewogICAgIC8qIFdyaXRlIGRhdGEgdG8gVFhEUiAqLwogICAgIGhpMmMtPkluc3RhbmNlLT5UWERSID0gKmhpMmMtPnBCdWZmUHRyOwpAQCAtNDY3NCw3ICs0NzkwLDggQEAKICAgICBoaTJjLT5YZmVyU2l6ZS0tOwogICAgIGhpMmMtPlhmZXJDb3VudC0tOwogICB9Ci0gIGVsc2UgaWYgKChJMkNfQ0hFQ0tfRkxBRyh0bXBJVEZsYWdzLCBJMkNfRkxBR19UQ1IpICE9IFJFU0VUKSAmJiAoSTJDX0NIRUNLX0lUX1NPVVJDRShJVFNvdXJjZXMsIEkyQ19JVF9UQ0kpICE9IFJFU0VUKSkKKyAgZWxzZSBpZiAoKEkyQ19DSEVDS19GTEFHKHRtcElURmxhZ3MsIEkyQ19GTEFHX1RDUikgIT0gUkVTRVQpICYmIFwKKyAgICAgICAgICAgKEkyQ19DSEVDS19JVF9TT1VSQ0UoSVRTb3VyY2VzLCBJMkNfSVRfVENJKSAhPSBSRVNFVCkpCiAgIHsKICAgICBpZiAoKGhpMmMtPlhmZXJDb3VudCAhPSAwVSkgJiYgKGhpMmMtPlhmZXJTaXplID09IDBVKSkKICAgICB7CkBAIC00NjkwLDExICs0ODA3LDEzIEBACiAgICAgICAgIGhpMmMtPlhmZXJTaXplID0gaGkyYy0+WGZlckNvdW50OwogICAgICAgICBpZiAoaGkyYy0+WGZlck9wdGlvbnMgIT0gSTJDX05PX09QVElPTl9GUkFNRSkKICAgICAgICAgewotICAgICAgICAgIEkyQ19UcmFuc2ZlckNvbmZpZyhoaTJjLCBkZXZhZGRyZXNzLCAodWludDhfdCloaTJjLT5YZmVyU2l6ZSwgaGkyYy0+WGZlck9wdGlvbnMsIEkyQ19OT19TVEFSVFNUT1ApOworICAgICAgICAgIEkyQ19UcmFuc2ZlckNvbmZpZyhoaTJjLCBkZXZhZGRyZXNzLCAodWludDhfdCloaTJjLT5YZmVyU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGkyYy0+WGZlck9wdGlvbnMsIEkyQ19OT19TVEFSVFNUT1ApOwogICAgICAgICB9CiAgICAgICAgIGVsc2UKICAgICAgICAgewotICAgICAgICAgIEkyQ19UcmFuc2ZlckNvbmZpZyhoaTJjLCBkZXZhZGRyZXNzLCAodWludDhfdCloaTJjLT5YZmVyU2l6ZSwgSTJDX0FVVE9FTkRfTU9ERSwgSTJDX05PX1NUQVJUU1RPUCk7CisgICAgICAgICAgSTJDX1RyYW5zZmVyQ29uZmlnKGhpMmMsIGRldmFkZHJlc3MsICh1aW50OF90KWhpMmMtPlhmZXJTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJMkNfQVVUT0VORF9NT0RFLCBJMkNfTk9fU1RBUlRTVE9QKTsKICAgICAgICAgfQogICAgICAgfQogICAgIH0KQEAgLTQ3MTQsNyArNDgzMyw4IEBACiAgICAgICB9CiAgICAgfQogICB9Ci0gIGVsc2UgaWYgKChJMkNfQ0hFQ0tfRkxBRyh0bXBJVEZsYWdzLCBJMkNfRkxBR19UQykgIT0gUkVTRVQpICYmIChJMkNfQ0hFQ0tfSVRfU09VUkNFKElUU291cmNlcywgSTJDX0lUX1RDSSkgIT0gUkVTRVQpKQorICBlbHNlIGlmICgoSTJDX0NIRUNLX0ZMQUcodG1wSVRGbGFncywgSTJDX0ZMQUdfVEMpICE9IFJFU0VUKSAmJiBcCisgICAgICAgICAgIChJMkNfQ0hFQ0tfSVRfU09VUkNFKElUU291cmNlcywgSTJDX0lUX1RDSSkgIT0gUkVTRVQpKQogICB7CiAgICAgaWYgKGhpMmMtPlhmZXJDb3VudCA9PSAwVSkKICAgICB7CkBAIC00NzQ1LDcgKzQ4NjUsOCBAQAogICAgIC8qIE5vdGhpbmcgdG8gZG8gKi8KICAgfQogCi0gIGlmICgoSTJDX0NIRUNLX0ZMQUcodG1wSVRGbGFncywgSTJDX0ZMQUdfU1RPUEYpICE9IFJFU0VUKSAmJiAoSTJDX0NIRUNLX0lUX1NPVVJDRShJVFNvdXJjZXMsIEkyQ19JVF9TVE9QSSkgIT0gUkVTRVQpKQorICBpZiAoKEkyQ19DSEVDS19GTEFHKHRtcElURmxhZ3MsIEkyQ19GTEFHX1NUT1BGKSAhPSBSRVNFVCkgJiYgXAorICAgICAgKEkyQ19DSEVDS19JVF9TT1VSQ0UoSVRTb3VyY2VzLCBJMkNfSVRfU1RPUEkpICE9IFJFU0VUKSkKICAgewogICAgIC8qIENhbGwgSTJDIE1hc3RlciBjb21wbGV0ZSBwcm9jZXNzICovCiAgICAgSTJDX0lUTWFzdGVyQ3BsdChoaTJjLCB0bXBJVEZsYWdzKTsKQEAgLTQ3NjUsNyArNDg4Niw4IEBACiAgICogQHBhcmFtICBJVFNvdXJjZXMgSW50ZXJydXB0IHNvdXJjZXMgZW5hYmxlZC4KICAgKiBAcmV0dmFsIEhBTCBzdGF0dXMKICAgKi8KLXN0YXRpYyBIQUxfU3RhdHVzVHlwZURlZiBJMkNfU2xhdmVfSVNSX0lUKHN0cnVjdCBfX0kyQ19IYW5kbGVUeXBlRGVmICpoaTJjLCB1aW50MzJfdCBJVEZsYWdzLCB1aW50MzJfdCBJVFNvdXJjZXMpCitzdGF0aWMgSEFMX1N0YXR1c1R5cGVEZWYgSTJDX1NsYXZlX0lTUl9JVChzdHJ1Y3QgX19JMkNfSGFuZGxlVHlwZURlZiAqaGkyYywgdWludDMyX3QgSVRGbGFncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IElUU291cmNlcykKIHsKICAgdWludDMyX3QgdG1wb3B0aW9ucyA9IGhpMmMtPlhmZXJPcHRpb25zOwogICB1aW50MzJfdCB0bXBJVEZsYWdzID0gSVRGbGFnczsKQEAgLTQ3NzQsMTMgKzQ4OTYsMTUgQEAKICAgX19IQUxfTE9DSyhoaTJjKTsKIAogICAvKiBDaGVjayBpZiBTVE9QRiBpcyBzZXQgKi8KLSAgaWYgKChJMkNfQ0hFQ0tfRkxBRyh0bXBJVEZsYWdzLCBJMkNfRkxBR19TVE9QRikgIT0gUkVTRVQpICYmIChJMkNfQ0hFQ0tfSVRfU09VUkNFKElUU291cmNlcywgSTJDX0lUX1NUT1BJKSAhPSBSRVNFVCkpCisgIGlmICgoSTJDX0NIRUNLX0ZMQUcodG1wSVRGbGFncywgSTJDX0ZMQUdfU1RPUEYpICE9IFJFU0VUKSAmJiBcCisgICAgICAoSTJDX0NIRUNLX0lUX1NPVVJDRShJVFNvdXJjZXMsIEkyQ19JVF9TVE9QSSkgIT0gUkVTRVQpKQogICB7CiAgICAgLyogQ2FsbCBJMkMgU2xhdmUgY29tcGxldGUgcHJvY2VzcyAqLwogICAgIEkyQ19JVFNsYXZlQ3BsdChoaTJjLCB0bXBJVEZsYWdzKTsKICAgfQogCi0gIGlmICgoSTJDX0NIRUNLX0ZMQUcodG1wSVRGbGFncywgSTJDX0ZMQUdfQUYpICE9IFJFU0VUKSAmJiAoSTJDX0NIRUNLX0lUX1NPVVJDRShJVFNvdXJjZXMsIEkyQ19JVF9OQUNLSSkgIT0gUkVTRVQpKQorICBpZiAoKEkyQ19DSEVDS19GTEFHKHRtcElURmxhZ3MsIEkyQ19GTEFHX0FGKSAhPSBSRVNFVCkgJiYgXAorICAgICAgKEkyQ19DSEVDS19JVF9TT1VSQ0UoSVRTb3VyY2VzLCBJMkNfSVRfTkFDS0kpICE9IFJFU0VUKSkKICAgewogICAgIC8qIENoZWNrIHRoYXQgSTJDIHRyYW5zZmVyIGZpbmlzaGVkICovCiAgICAgLyogaWYgeWVzLCBub3JtYWwgdXNlIGNhc2UsIGEgTkFDSyBpcyBzZW50IGJ5IHRoZSBNQVNURVIgd2hlbiBUcmFuc2ZlciBpcyBmaW5pc2hlZCAqLwpAQCAtNDc4OCw4ICs0OTEyLDkgQEAKICAgICAvKiBTbyBjbGVhciBGbGFnIE5BQ0tGIG9ubHkgKi8KICAgICBpZiAoaGkyYy0+WGZlckNvdW50ID09IDBVKQogICAgIHsKLSAgICAgIC8qIFNhbWUgYWN0aW9uIG11c3QgYmUgZG9uZSBmb3IgKHRtcG9wdGlvbnMgPT0gSTJDX0xBU1RfRlJBTUUpIHdoaWNoIHJlbW92ZWQgZm9yIFdhcm5pbmdbUGExMzRdOiBsZWZ0IGFuZCByaWdodCBvcGVyYW5kcyBhcmUgaWRlbnRpY2FsICovCiAgICAgICBpZiAoKGhpMmMtPlN0YXRlID09IEhBTF9JMkNfU1RBVEVfTElTVEVOKSAmJiAodG1wb3B0aW9ucyA9PSBJMkNfRklSU1RfQU5EX0xBU1RfRlJBTUUpKQorICAgICAgICAvKiBTYW1lIGFjdGlvbiBtdXN0IGJlIGRvbmUgZm9yICh0bXBvcHRpb25zID09IEkyQ19MQVNUX0ZSQU1FKSB3aGljaCByZW1vdmVkIGZvcgorICAgICAgICAgICBXYXJuaW5nW1BhMTM0XTogbGVmdCBhbmQgcmlnaHQgb3BlcmFuZHMgYXJlIGlkZW50aWNhbCAqLwogICAgICAgewogICAgICAgICAvKiBDYWxsIEkyQyBMaXN0ZW4gY29tcGxldGUgcHJvY2VzcyAqLwogICAgICAgICBJMkNfSVRMaXN0ZW5DcGx0KGhpMmMsIHRtcElURmxhZ3MpOwpAQCAtNDgyOCw3ICs0OTUzLDggQEAKICAgICAgIH0KICAgICB9CiAgIH0KLSAgZWxzZSBpZiAoKEkyQ19DSEVDS19GTEFHKHRtcElURmxhZ3MsIEkyQ19GTEFHX1JYTkUpICE9IFJFU0VUKSAmJiAoSTJDX0NIRUNLX0lUX1NPVVJDRShJVFNvdXJjZXMsIEkyQ19JVF9SWEkpICE9IFJFU0VUKSkKKyAgZWxzZSBpZiAoKEkyQ19DSEVDS19GTEFHKHRtcElURmxhZ3MsIEkyQ19GTEFHX1JYTkUpICE9IFJFU0VUKSAmJiBcCisgICAgICAgICAgIChJMkNfQ0hFQ0tfSVRfU09VUkNFKElUU291cmNlcywgSTJDX0lUX1JYSSkgIT0gUkVTRVQpKQogICB7CiAgICAgaWYgKGhpMmMtPlhmZXJDb3VudCA+IDBVKQogICAgIHsKQEAgLTQ4NTQsNyArNDk4MCw4IEBACiAgIHsKICAgICBJMkNfSVRBZGRyQ3BsdChoaTJjLCB0bXBJVEZsYWdzKTsKICAgfQotICBlbHNlIGlmICgoSTJDX0NIRUNLX0ZMQUcodG1wSVRGbGFncywgSTJDX0ZMQUdfVFhJUykgIT0gUkVTRVQpICYmIChJMkNfQ0hFQ0tfSVRfU09VUkNFKElUU291cmNlcywgSTJDX0lUX1RYSSkgIT0gUkVTRVQpKQorICBlbHNlIGlmICgoSTJDX0NIRUNLX0ZMQUcodG1wSVRGbGFncywgSTJDX0ZMQUdfVFhJUykgIT0gUkVTRVQpICYmIFwKKyAgICAgICAgICAgKEkyQ19DSEVDS19JVF9TT1VSQ0UoSVRTb3VyY2VzLCBJMkNfSVRfVFhJKSAhPSBSRVNFVCkpCiAgIHsKICAgICAvKiBXcml0ZSBkYXRhIHRvIFRYRFIgb25seSBpZiBYZmVyQ291bnQgbm90IHJlYWNoICIwIiAqLwogICAgIC8qIEEgVFhJUyBmbGFnIGNhbiBiZSBzZXQsIGR1cmluZyBTVE9QIHRyZWF0bWVudCAgICAgICovCkBAIC00OTAwLDcgKzUwMjcsOCBAQAogICAqIEBwYXJhbSAgSVRTb3VyY2VzIEludGVycnVwdCBzb3VyY2VzIGVuYWJsZWQuCiAgICogQHJldHZhbCBIQUwgc3RhdHVzCiAgICovCi1zdGF0aWMgSEFMX1N0YXR1c1R5cGVEZWYgSTJDX01hc3Rlcl9JU1JfRE1BKHN0cnVjdCBfX0kyQ19IYW5kbGVUeXBlRGVmICpoaTJjLCB1aW50MzJfdCBJVEZsYWdzLCB1aW50MzJfdCBJVFNvdXJjZXMpCitzdGF0aWMgSEFMX1N0YXR1c1R5cGVEZWYgSTJDX01hc3Rlcl9JU1JfRE1BKHN0cnVjdCBfX0kyQ19IYW5kbGVUeXBlRGVmICpoaTJjLCB1aW50MzJfdCBJVEZsYWdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBJVFNvdXJjZXMpCiB7CiAgIHVpbnQxNl90IGRldmFkZHJlc3M7CiAgIHVpbnQzMl90IHhmZXJtb2RlOwpAQCAtNDkwOCw3ICs1MDM2LDggQEAKICAgLyogUHJvY2VzcyBMb2NrZWQgKi8KICAgX19IQUxfTE9DSyhoaTJjKTsKIAotICBpZiAoKEkyQ19DSEVDS19GTEFHKElURmxhZ3MsIEkyQ19GTEFHX0FGKSAhPSBSRVNFVCkgJiYgKEkyQ19DSEVDS19JVF9TT1VSQ0UoSVRTb3VyY2VzLCBJMkNfSVRfTkFDS0kpICE9IFJFU0VUKSkKKyAgaWYgKChJMkNfQ0hFQ0tfRkxBRyhJVEZsYWdzLCBJMkNfRkxBR19BRikgIT0gUkVTRVQpICYmIFwKKyAgICAgIChJMkNfQ0hFQ0tfSVRfU09VUkNFKElUU291cmNlcywgSTJDX0lUX05BQ0tJKSAhPSBSRVNFVCkpCiAgIHsKICAgICAvKiBDbGVhciBOQUNLIEZsYWcgKi8KICAgICBfX0hBTF9JMkNfQ0xFQVJfRkxBRyhoaTJjLCBJMkNfRkxBR19BRik7CkBAIC00OTI0LDcgKzUwNTMsOCBAQAogICAgIC8qIEZsdXNoIFRYIHJlZ2lzdGVyICovCiAgICAgSTJDX0ZsdXNoX1RYRFIoaGkyYyk7CiAgIH0KLSAgZWxzZSBpZiAoKEkyQ19DSEVDS19GTEFHKElURmxhZ3MsIEkyQ19GTEFHX1RDUikgIT0gUkVTRVQpICYmIChJMkNfQ0hFQ0tfSVRfU09VUkNFKElUU291cmNlcywgSTJDX0lUX1RDSSkgIT0gUkVTRVQpKQorICBlbHNlIGlmICgoSTJDX0NIRUNLX0ZMQUcoSVRGbGFncywgSTJDX0ZMQUdfVENSKSAhPSBSRVNFVCkgJiYgXAorICAgICAgICAgICAoSTJDX0NIRUNLX0lUX1NPVVJDRShJVFNvdXJjZXMsIEkyQ19JVF9UQ0kpICE9IFJFU0VUKSkKICAgewogICAgIC8qIERpc2FibGUgVEMgaW50ZXJydXB0ICovCiAgICAgX19IQUxfSTJDX0RJU0FCTEVfSVQoaGkyYywgSTJDX0lUX1RDSSk7CkBAIC00OTg1LDcgKzUxMTUsOCBAQAogICAgICAgfQogICAgIH0KICAgfQotICBlbHNlIGlmICgoSTJDX0NIRUNLX0ZMQUcoSVRGbGFncywgSTJDX0ZMQUdfVEMpICE9IFJFU0VUKSAmJiAoSTJDX0NIRUNLX0lUX1NPVVJDRShJVFNvdXJjZXMsIEkyQ19JVF9UQ0kpICE9IFJFU0VUKSkKKyAgZWxzZSBpZiAoKEkyQ19DSEVDS19GTEFHKElURmxhZ3MsIEkyQ19GTEFHX1RDKSAhPSBSRVNFVCkgJiYgXAorICAgICAgICAgICAoSTJDX0NIRUNLX0lUX1NPVVJDRShJVFNvdXJjZXMsIEkyQ19JVF9UQ0kpICE9IFJFU0VUKSkKICAgewogICAgIGlmIChoaTJjLT5YZmVyQ291bnQgPT0gMFUpCiAgICAgewpAQCAtNTAxMSw3ICs1MTQyLDggQEAKICAgICAgIEkyQ19JVEVycm9yKGhpMmMsIEhBTF9JMkNfRVJST1JfU0laRSk7CiAgICAgfQogICB9Ci0gIGVsc2UgaWYgKChJMkNfQ0hFQ0tfRkxBRyhJVEZsYWdzLCBJMkNfRkxBR19TVE9QRikgIT0gUkVTRVQpICYmIChJMkNfQ0hFQ0tfSVRfU09VUkNFKElUU291cmNlcywgSTJDX0lUX1NUT1BJKSAhPSBSRVNFVCkpCisgIGVsc2UgaWYgKChJMkNfQ0hFQ0tfRkxBRyhJVEZsYWdzLCBJMkNfRkxBR19TVE9QRikgIT0gUkVTRVQpICYmIFwKKyAgICAgICAgICAgKEkyQ19DSEVDS19JVF9TT1VSQ0UoSVRTb3VyY2VzLCBJMkNfSVRfU1RPUEkpICE9IFJFU0VUKSkKICAgewogICAgIC8qIENhbGwgSTJDIE1hc3RlciBjb21wbGV0ZSBwcm9jZXNzICovCiAgICAgSTJDX0lUTWFzdGVyQ3BsdChoaTJjLCBJVEZsYWdzKTsKQEAgLTUwMzUsNyArNTE2Nyw4IEBACiAgICogQHBhcmFtICBJVFNvdXJjZXMgSW50ZXJydXB0IHNvdXJjZXMgZW5hYmxlZC4KICAgKiBAcmV0dmFsIEhBTCBzdGF0dXMKICAgKi8KLXN0YXRpYyBIQUxfU3RhdHVzVHlwZURlZiBJMkNfU2xhdmVfSVNSX0RNQShzdHJ1Y3QgX19JMkNfSGFuZGxlVHlwZURlZiAqaGkyYywgdWludDMyX3QgSVRGbGFncywgdWludDMyX3QgSVRTb3VyY2VzKQorc3RhdGljIEhBTF9TdGF0dXNUeXBlRGVmIEkyQ19TbGF2ZV9JU1JfRE1BKHN0cnVjdCBfX0kyQ19IYW5kbGVUeXBlRGVmICpoaTJjLCB1aW50MzJfdCBJVEZsYWdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IElUU291cmNlcykKIHsKICAgdWludDMyX3QgdG1wb3B0aW9ucyA9IGhpMmMtPlhmZXJPcHRpb25zOwogICB1aW50MzJfdCB0cmVhdGRtYW5hY2sgPSAwVTsKQEAgLTUwNDUsMTMgKzUxNzgsMTUgQEAKICAgX19IQUxfTE9DSyhoaTJjKTsKIAogICAvKiBDaGVjayBpZiBTVE9QRiBpcyBzZXQgKi8KLSAgaWYgKChJMkNfQ0hFQ0tfRkxBRyhJVEZsYWdzLCBJMkNfRkxBR19TVE9QRikgIT0gUkVTRVQpICYmIChJMkNfQ0hFQ0tfSVRfU09VUkNFKElUU291cmNlcywgSTJDX0lUX1NUT1BJKSAhPSBSRVNFVCkpCisgIGlmICgoSTJDX0NIRUNLX0ZMQUcoSVRGbGFncywgSTJDX0ZMQUdfU1RPUEYpICE9IFJFU0VUKSAmJiBcCisgICAgICAoSTJDX0NIRUNLX0lUX1NPVVJDRShJVFNvdXJjZXMsIEkyQ19JVF9TVE9QSSkgIT0gUkVTRVQpKQogICB7CiAgICAgLyogQ2FsbCBJMkMgU2xhdmUgY29tcGxldGUgcHJvY2VzcyAqLwogICAgIEkyQ19JVFNsYXZlQ3BsdChoaTJjLCBJVEZsYWdzKTsKICAgfQogCi0gIGlmICgoSTJDX0NIRUNLX0ZMQUcoSVRGbGFncywgSTJDX0ZMQUdfQUYpICE9IFJFU0VUKSAmJiAoSTJDX0NIRUNLX0lUX1NPVVJDRShJVFNvdXJjZXMsIEkyQ19JVF9OQUNLSSkgIT0gUkVTRVQpKQorICBpZiAoKEkyQ19DSEVDS19GTEFHKElURmxhZ3MsIEkyQ19GTEFHX0FGKSAhPSBSRVNFVCkgJiYgXAorICAgICAgKEkyQ19DSEVDS19JVF9TT1VSQ0UoSVRTb3VyY2VzLCBJMkNfSVRfTkFDS0kpICE9IFJFU0VUKSkKICAgewogICAgIC8qIENoZWNrIHRoYXQgSTJDIHRyYW5zZmVyIGZpbmlzaGVkICovCiAgICAgLyogaWYgeWVzLCBub3JtYWwgdXNlIGNhc2UsIGEgTkFDSyBpcyBzZW50IGJ5IHRoZSBNQVNURVIgd2hlbiBUcmFuc2ZlciBpcyBmaW5pc2hlZCAqLwpAQCAtNTA2NSw3ICs1MjAwLDcgQEAKICAgICAgIHsKICAgICAgICAgaWYgKEkyQ19DSEVDS19JVF9TT1VSQ0UoSVRTb3VyY2VzLCBJMkNfQ1IxX1JYRE1BRU4pICE9IFJFU0VUKQogICAgICAgICB7Ci0gICAgICAgICAgaWYgKF9fSEFMX0RNQV9HRVRfQ09VTlRFUihoaTJjLT5oZG1hcngpID09IDBVKQorICAgICAgICAgIGlmIChJMkNfR0VUX0RNQV9SRU1BSU5fREFUQShoaTJjLT5oZG1hcngpID09IDBVKQogICAgICAgICAgIHsKICAgICAgICAgICAgIHRyZWF0ZG1hbmFjayA9IDFVOwogICAgICAgICAgIH0KQEAgLTUwNzcsNyArNTIxMiw3IEBACiAgICAgICB7CiAgICAgICAgIGlmIChJMkNfQ0hFQ0tfSVRfU09VUkNFKElUU291cmNlcywgSTJDX0NSMV9UWERNQUVOKSAhPSBSRVNFVCkKICAgICAgICAgewotICAgICAgICAgIGlmIChfX0hBTF9ETUFfR0VUX0NPVU5URVIoaGkyYy0+aGRtYXR4KSA9PSAwVSkKKyAgICAgICAgICBpZiAoSTJDX0dFVF9ETUFfUkVNQUlOX0RBVEEoaGkyYy0+aGRtYXR4KSA9PSAwVSkKICAgICAgICAgICB7CiAgICAgICAgICAgICB0cmVhdGRtYW5hY2sgPSAxVTsKICAgICAgICAgICB9CkBAIC01MDg2LDggKzUyMjEsOSBAQAogCiAgICAgICBpZiAodHJlYXRkbWFuYWNrID09IDFVKQogICAgICAgewotICAgICAgICAvKiBTYW1lIGFjdGlvbiBtdXN0IGJlIGRvbmUgZm9yICh0bXBvcHRpb25zID09IEkyQ19MQVNUX0ZSQU1FKSB3aGljaCByZW1vdmVkIGZvciBXYXJuaW5nW1BhMTM0XTogbGVmdCBhbmQgcmlnaHQgb3BlcmFuZHMgYXJlIGlkZW50aWNhbCAqLwogICAgICAgICBpZiAoKGhpMmMtPlN0YXRlID09IEhBTF9JMkNfU1RBVEVfTElTVEVOKSAmJiAodG1wb3B0aW9ucyA9PSBJMkNfRklSU1RfQU5EX0xBU1RfRlJBTUUpKQorICAgICAgICAgIC8qIFNhbWUgYWN0aW9uIG11c3QgYmUgZG9uZSBmb3IgKHRtcG9wdGlvbnMgPT0gSTJDX0xBU1RfRlJBTUUpIHdoaWNoIHJlbW92ZWQgZm9yCisgICAgICAgICAgICAgV2FybmluZ1tQYTEzNF06IGxlZnQgYW5kIHJpZ2h0IG9wZXJhbmRzIGFyZSBpZGVudGljYWwgKi8KICAgICAgICAgewogICAgICAgICAgIC8qIENhbGwgSTJDIExpc3RlbiBjb21wbGV0ZSBwcm9jZXNzICovCiAgICAgICAgICAgSTJDX0lUTGlzdGVuQ3BsdChoaTJjLCBJVEZsYWdzKTsKQEAgLTUxNDgsNyArNTI4NCw4IEBACiAgICAgICBfX0hBTF9JMkNfQ0xFQVJfRkxBRyhoaTJjLCBJMkNfRkxBR19BRik7CiAgICAgfQogICB9Ci0gIGVsc2UgaWYgKChJMkNfQ0hFQ0tfRkxBRyhJVEZsYWdzLCBJMkNfRkxBR19BRERSKSAhPSBSRVNFVCkgJiYgKEkyQ19DSEVDS19JVF9TT1VSQ0UoSVRTb3VyY2VzLCBJMkNfSVRfQUREUkkpICE9IFJFU0VUKSkKKyAgZWxzZSBpZiAoKEkyQ19DSEVDS19GTEFHKElURmxhZ3MsIEkyQ19GTEFHX0FERFIpICE9IFJFU0VUKSAmJiBcCisgICAgICAgICAgIChJMkNfQ0hFQ0tfSVRfU09VUkNFKElUU291cmNlcywgSTJDX0lUX0FERFJJKSAhPSBSRVNFVCkpCiAgIHsKICAgICBJMkNfSVRBZGRyQ3BsdChoaTJjLCBJVEZsYWdzKTsKICAgfQpAQCAtNTE3NSw4ICs1MzEyLDkgQEAKICAgKiBAcGFyYW0gIFRpY2tzdGFydCBUaWNrIHN0YXJ0IHZhbHVlCiAgICogQHJldHZhbCBIQUwgc3RhdHVzCiAgICovCi1zdGF0aWMgSEFMX1N0YXR1c1R5cGVEZWYgSTJDX1JlcXVlc3RNZW1vcnlXcml0ZShJMkNfSGFuZGxlVHlwZURlZiAqaGkyYywgdWludDE2X3QgRGV2QWRkcmVzcywgdWludDE2X3QgTWVtQWRkcmVzcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQxNl90IE1lbUFkZFNpemUsIHVpbnQzMl90IFRpbWVvdXQsIHVpbnQzMl90IFRpY2tzdGFydCkKK3N0YXRpYyBIQUxfU3RhdHVzVHlwZURlZiBJMkNfUmVxdWVzdE1lbW9yeVdyaXRlKEkyQ19IYW5kbGVUeXBlRGVmICpoaTJjLCB1aW50MTZfdCBEZXZBZGRyZXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDE2X3QgTWVtQWRkcmVzcywgdWludDE2X3QgTWVtQWRkU2l6ZSwgdWludDMyX3QgVGltZW91dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IFRpY2tzdGFydCkKIHsKICAgSTJDX1RyYW5zZmVyQ29uZmlnKGhpMmMsIERldkFkZHJlc3MsICh1aW50OF90KU1lbUFkZFNpemUsIEkyQ19SRUxPQURfTU9ERSwgSTJDX0dFTkVSQVRFX1NUQVJUX1dSSVRFKTsKIApAQCAtNTIyOSw4ICs1MzY3LDkgQEAKICAgKiBAcGFyYW0gIFRpY2tzdGFydCBUaWNrIHN0YXJ0IHZhbHVlCiAgICogQHJldHZhbCBIQUwgc3RhdHVzCiAgICovCi1zdGF0aWMgSEFMX1N0YXR1c1R5cGVEZWYgSTJDX1JlcXVlc3RNZW1vcnlSZWFkKEkyQ19IYW5kbGVUeXBlRGVmICpoaTJjLCB1aW50MTZfdCBEZXZBZGRyZXNzLCB1aW50MTZfdCBNZW1BZGRyZXNzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MTZfdCBNZW1BZGRTaXplLCB1aW50MzJfdCBUaW1lb3V0LCB1aW50MzJfdCBUaWNrc3RhcnQpCitzdGF0aWMgSEFMX1N0YXR1c1R5cGVEZWYgSTJDX1JlcXVlc3RNZW1vcnlSZWFkKEkyQ19IYW5kbGVUeXBlRGVmICpoaTJjLCB1aW50MTZfdCBEZXZBZGRyZXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MTZfdCBNZW1BZGRyZXNzLCB1aW50MTZfdCBNZW1BZGRTaXplLCB1aW50MzJfdCBUaW1lb3V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBUaWNrc3RhcnQpCiB7CiAgIEkyQ19UcmFuc2ZlckNvbmZpZyhoaTJjLCBEZXZBZGRyZXNzLCAodWludDhfdClNZW1BZGRTaXplLCBJMkNfU09GVEVORF9NT0RFLCBJMkNfR0VORVJBVEVfU1RBUlRfV1JJVEUpOwogCkBAIC01Mjk4LDcgKzU0MzcsNyBAQAogICAgIC8qIElmIDEwYml0cyBhZGRyZXNzaW5nIG1vZGUgaXMgc2VsZWN0ZWQgKi8KICAgICBpZiAoaGkyYy0+SW5pdC5BZGRyZXNzaW5nTW9kZSA9PSBJMkNfQUREUkVTU0lOR01PREVfMTBCSVQpCiAgICAgewotICAgICAgaWYgKChzbGF2ZWFkZHJjb2RlICYgU2xhdmVBZGRyX01TSykgPT0gKChvd25hZGQxY29kZSA+PiBTbGF2ZUFkZHJfU0hJRlQpICYgU2xhdmVBZGRyX01TSykpCisgICAgICBpZiAoKHNsYXZlYWRkcmNvZGUgJiBTTEFWRV9BRERSX01TSykgPT0gKChvd25hZGQxY29kZSA+PiBTTEFWRV9BRERSX1NISUZUKSAmIFNMQVZFX0FERFJfTVNLKSkKICAgICAgIHsKICAgICAgICAgc2xhdmVhZGRyY29kZSA9IG93bmFkZDFjb2RlOwogICAgICAgICBoaTJjLT5BZGRyRXZlbnRDb3VudCsrOwpAQCAtNTY4NCw3ICs1ODIzLDcgQEAKIAogICAgIGlmIChoaTJjLT5oZG1hdHggIT0gTlVMTCkKICAgICB7Ci0gICAgICBoaTJjLT5YZmVyQ291bnQgPSAodWludDE2X3QpX19IQUxfRE1BX0dFVF9DT1VOVEVSKGhpMmMtPmhkbWF0eCk7CisgICAgICBoaTJjLT5YZmVyQ291bnQgPSAodWludDE2X3QpSTJDX0dFVF9ETUFfUkVNQUlOX0RBVEEoaGkyYy0+aGRtYXR4KTsKICAgICB9CiAgIH0KICAgZWxzZSBpZiAoSTJDX0NIRUNLX0lUX1NPVVJDRSh0bXBjcjF2YWx1ZSwgSTJDX0NSMV9SWERNQUVOKSAhPSBSRVNFVCkKQEAgLTU2OTQsNyArNTgzMyw3IEBACiAKICAgICBpZiAoaGkyYy0+aGRtYXJ4ICE9IE5VTEwpCiAgICAgewotICAgICAgaGkyYy0+WGZlckNvdW50ID0gKHVpbnQxNl90KV9fSEFMX0RNQV9HRVRfQ09VTlRFUihoaTJjLT5oZG1hcngpOworICAgICAgaGkyYy0+WGZlckNvdW50ID0gKHVpbnQxNl90KUkyQ19HRVRfRE1BX1JFTUFJTl9EQVRBKGhpMmMtPmhkbWFyeCk7CiAgICAgfQogICB9CiAgIGVsc2UKQEAgLTYwMjUsNyArNjE2NCw4IEBACiAgICovCiBzdGF0aWMgdm9pZCBJMkNfRE1BTWFzdGVyVHJhbnNtaXRDcGx0KERNQV9IYW5kbGVUeXBlRGVmICpoZG1hKQogewotICBJMkNfSGFuZGxlVHlwZURlZiAqaGkyYyA9IChJMkNfSGFuZGxlVHlwZURlZiAqKSgoKERNQV9IYW5kbGVUeXBlRGVmICopaGRtYSktPlBhcmVudCk7IC8qIERlcm9nYXRpb24gTUlTUkFDMjAxMi1SdWxlLTExLjUgKi8KKyAgLyogRGVyb2dhdGlvbiBNSVNSQUMyMDEyLVJ1bGUtMTEuNSAqLworICBJMkNfSGFuZGxlVHlwZURlZiAqaGkyYyA9IChJMkNfSGFuZGxlVHlwZURlZiAqKSgoKERNQV9IYW5kbGVUeXBlRGVmICopaGRtYSktPlBhcmVudCk7CiAKICAgLyogRGlzYWJsZSBETUEgUmVxdWVzdCAqLwogICBoaTJjLT5JbnN0YW5jZS0+Q1IxICY9IH5JMkNfQ1IxX1RYRE1BRU47CkBAIC02MDUzLDcgKzYxOTMsOCBAQAogICAgIH0KIAogICAgIC8qIEVuYWJsZSB0aGUgRE1BIHN0cmVhbSAqLwotICAgIGlmIChIQUxfRE1BX1N0YXJ0X0lUKGhpMmMtPmhkbWF0eCwgKHVpbnQzMl90KWhpMmMtPnBCdWZmUHRyLCAodWludDMyX3QpJmhpMmMtPkluc3RhbmNlLT5UWERSLCBoaTJjLT5YZmVyU2l6ZSkgIT0gSEFMX09LKQorICAgIGlmIChIQUxfRE1BX1N0YXJ0X0lUKGhpMmMtPmhkbWF0eCwgKHVpbnQzMl90KWhpMmMtPnBCdWZmUHRyLCAodWludDMyX3QpJmhpMmMtPkluc3RhbmNlLT5UWERSLAorICAgICAgICAgICAgICAgICAgICAgICAgIGhpMmMtPlhmZXJTaXplKSAhPSBIQUxfT0spCiAgICAgewogICAgICAgLyogQ2FsbCB0aGUgY29ycmVzcG9uZGluZyBjYWxsYmFjayB0byBpbmZvcm0gdXBwZXIgbGF5ZXIgb2YgRW5kIG9mIFRyYW5zZmVyICovCiAgICAgICBJMkNfSVRFcnJvcihoaTJjLCBIQUxfSTJDX0VSUk9SX0RNQSk7CkBAIC02MDczLDcgKzYyMTQsOCBAQAogICAqLwogc3RhdGljIHZvaWQgSTJDX0RNQVNsYXZlVHJhbnNtaXRDcGx0KERNQV9IYW5kbGVUeXBlRGVmICpoZG1hKQogewotICBJMkNfSGFuZGxlVHlwZURlZiAqaGkyYyA9IChJMkNfSGFuZGxlVHlwZURlZiAqKSgoKERNQV9IYW5kbGVUeXBlRGVmICopaGRtYSktPlBhcmVudCk7IC8qIERlcm9nYXRpb24gTUlTUkFDMjAxMi1SdWxlLTExLjUgKi8KKyAgLyogRGVyb2dhdGlvbiBNSVNSQUMyMDEyLVJ1bGUtMTEuNSAqLworICBJMkNfSGFuZGxlVHlwZURlZiAqaGkyYyA9IChJMkNfSGFuZGxlVHlwZURlZiAqKSgoKERNQV9IYW5kbGVUeXBlRGVmICopaGRtYSktPlBhcmVudCk7CiAgIHVpbnQzMl90IHRtcG9wdGlvbnMgPSBoaTJjLT5YZmVyT3B0aW9uczsKIAogICBpZiAoKHRtcG9wdGlvbnMgPT0gSTJDX05FWFRfRlJBTUUpIHx8ICh0bXBvcHRpb25zID09IEkyQ19GSVJTVF9GUkFNRSkpCkBAIC02MTAwLDcgKzYyNDIsOCBAQAogICAqLwogc3RhdGljIHZvaWQgSTJDX0RNQU1hc3RlclJlY2VpdmVDcGx0KERNQV9IYW5kbGVUeXBlRGVmICpoZG1hKQogewotICBJMkNfSGFuZGxlVHlwZURlZiAqaGkyYyA9IChJMkNfSGFuZGxlVHlwZURlZiAqKSgoKERNQV9IYW5kbGVUeXBlRGVmICopaGRtYSktPlBhcmVudCk7IC8qIERlcm9nYXRpb24gTUlTUkFDMjAxMi1SdWxlLTExLjUgKi8KKyAgLyogRGVyb2dhdGlvbiBNSVNSQUMyMDEyLVJ1bGUtMTEuNSAqLworICBJMkNfSGFuZGxlVHlwZURlZiAqaGkyYyA9IChJMkNfSGFuZGxlVHlwZURlZiAqKSgoKERNQV9IYW5kbGVUeXBlRGVmICopaGRtYSktPlBhcmVudCk7CiAKICAgLyogRGlzYWJsZSBETUEgUmVxdWVzdCAqLwogICBoaTJjLT5JbnN0YW5jZS0+Q1IxICY9IH5JMkNfQ1IxX1JYRE1BRU47CkBAIC02MTI4LDcgKzYyNzEsOCBAQAogICAgIH0KIAogICAgIC8qIEVuYWJsZSB0aGUgRE1BIHN0cmVhbSAqLwotICAgIGlmIChIQUxfRE1BX1N0YXJ0X0lUKGhpMmMtPmhkbWFyeCwgKHVpbnQzMl90KSZoaTJjLT5JbnN0YW5jZS0+UlhEUiwgKHVpbnQzMl90KWhpMmMtPnBCdWZmUHRyLCBoaTJjLT5YZmVyU2l6ZSkgIT0gSEFMX09LKQorICAgIGlmIChIQUxfRE1BX1N0YXJ0X0lUKGhpMmMtPmhkbWFyeCwgKHVpbnQzMl90KSZoaTJjLT5JbnN0YW5jZS0+UlhEUiwgKHVpbnQzMl90KWhpMmMtPnBCdWZmUHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgIGhpMmMtPlhmZXJTaXplKSAhPSBIQUxfT0spCiAgICAgewogICAgICAgLyogQ2FsbCB0aGUgY29ycmVzcG9uZGluZyBjYWxsYmFjayB0byBpbmZvcm0gdXBwZXIgbGF5ZXIgb2YgRW5kIG9mIFRyYW5zZmVyICovCiAgICAgICBJMkNfSVRFcnJvcihoaTJjLCBIQUxfSTJDX0VSUk9SX0RNQSk7CkBAIC02MTQ4LDEwICs2MjkyLDExIEBACiAgICovCiBzdGF0aWMgdm9pZCBJMkNfRE1BU2xhdmVSZWNlaXZlQ3BsdChETUFfSGFuZGxlVHlwZURlZiAqaGRtYSkKIHsKLSAgSTJDX0hhbmRsZVR5cGVEZWYgKmhpMmMgPSAoSTJDX0hhbmRsZVR5cGVEZWYgKikoKChETUFfSGFuZGxlVHlwZURlZiAqKWhkbWEpLT5QYXJlbnQpOyAvKiBEZXJvZ2F0aW9uIE1JU1JBQzIwMTItUnVsZS0xMS41ICovCisgIC8qIERlcm9nYXRpb24gTUlTUkFDMjAxMi1SdWxlLTExLjUgKi8KKyAgSTJDX0hhbmRsZVR5cGVEZWYgKmhpMmMgPSAoSTJDX0hhbmRsZVR5cGVEZWYgKikoKChETUFfSGFuZGxlVHlwZURlZiAqKWhkbWEpLT5QYXJlbnQpOwogICB1aW50MzJfdCB0bXBvcHRpb25zID0gaGkyYy0+WGZlck9wdGlvbnM7CiAKLSAgaWYgKChfX0hBTF9ETUFfR0VUX0NPVU5URVIoaGkyYy0+aGRtYXJ4KSA9PSAwVSkgJiYgXAorICBpZiAoKEkyQ19HRVRfRE1BX1JFTUFJTl9EQVRBKGhpMmMtPmhkbWFyeCkgPT0gMFUpICYmIFwKICAgICAgICh0bXBvcHRpb25zICE9IEkyQ19OT19PUFRJT05fRlJBTUUpKQogICB7CiAgICAgLyogRGlzYWJsZSBETUEgUmVxdWVzdCAqLwpAQCAtNjE3NiwxMSArNjMyMSwxMiBAQAogc3RhdGljIHZvaWQgSTJDX0RNQUVycm9yKERNQV9IYW5kbGVUeXBlRGVmICpoZG1hKQogewogICB1aW50MzJfdCB0cmVhdGRtYWVycm9yID0gMFU7Ci0gIEkyQ19IYW5kbGVUeXBlRGVmICpoaTJjID0gKEkyQ19IYW5kbGVUeXBlRGVmICopKCgoRE1BX0hhbmRsZVR5cGVEZWYgKiloZG1hKS0+UGFyZW50KTsgLyogRGVyb2dhdGlvbiBNSVNSQUMyMDEyLVJ1bGUtMTEuNSAqLworICAvKiBEZXJvZ2F0aW9uIE1JU1JBQzIwMTItUnVsZS0xMS41ICovCisgIEkyQ19IYW5kbGVUeXBlRGVmICpoaTJjID0gKEkyQ19IYW5kbGVUeXBlRGVmICopKCgoRE1BX0hhbmRsZVR5cGVEZWYgKiloZG1hKS0+UGFyZW50KTsKIAogICBpZiAoaGkyYy0+aGRtYXR4ICE9IE5VTEwpCiAgIHsKLSAgICBpZiAoX19IQUxfRE1BX0dFVF9DT1VOVEVSKGhpMmMtPmhkbWF0eCkgPT0gMFUpCisgICAgaWYgKEkyQ19HRVRfRE1BX1JFTUFJTl9EQVRBKGhpMmMtPmhkbWF0eCkgPT0gMFUpCiAgICAgewogICAgICAgdHJlYXRkbWFlcnJvciA9IDFVOwogICAgIH0KQEAgLTYxODgsNyArNjMzNCw3IEBACiAKICAgaWYgKGhpMmMtPmhkbWFyeCAhPSBOVUxMKQogICB7Ci0gICAgaWYgKF9fSEFMX0RNQV9HRVRfQ09VTlRFUihoaTJjLT5oZG1hcngpID09IDBVKQorICAgIGlmIChJMkNfR0VUX0RNQV9SRU1BSU5fREFUQShoaTJjLT5oZG1hcngpID09IDBVKQogICAgIHsKICAgICAgIHRyZWF0ZG1hZXJyb3IgPSAxVTsKICAgICB9CkBAIC02MjEzLDcgKzYzNTksOCBAQAogICAqLwogc3RhdGljIHZvaWQgSTJDX0RNQUFib3J0KERNQV9IYW5kbGVUeXBlRGVmICpoZG1hKQogewotICBJMkNfSGFuZGxlVHlwZURlZiAqaGkyYyA9IChJMkNfSGFuZGxlVHlwZURlZiAqKSgoKERNQV9IYW5kbGVUeXBlRGVmICopaGRtYSktPlBhcmVudCk7IC8qIERlcm9nYXRpb24gTUlTUkFDMjAxMi1SdWxlLTExLjUgKi8KKyAgLyogRGVyb2dhdGlvbiBNSVNSQUMyMDEyLVJ1bGUtMTEuNSAqLworICBJMkNfSGFuZGxlVHlwZURlZiAqaGkyYyA9IChJMkNfSGFuZGxlVHlwZURlZiAqKSgoKERNQV9IYW5kbGVUeXBlRGVmICopaGRtYSktPlBhcmVudCk7CiAKICAgLyogUmVzZXQgQWJvcnRDcGx0Q2FsbGJhY2sgKi8KICAgaWYgKGhpMmMtPmhkbWF0eCAhPSBOVUxMKQpAQCAtNjIyOSwxMSArNjM3NiwxMiBAQAogfQogCiAvKioKLSAgKiBAYnJpZWYgIFRoaXMgZnVuY3Rpb24gaGFuZGxlcyBJMkMgQ29tbXVuaWNhdGlvbiBUaW1lb3V0LgorICAqIEBicmllZiAgVGhpcyBmdW5jdGlvbiBoYW5kbGVzIEkyQyBDb21tdW5pY2F0aW9uIFRpbWVvdXQuIEl0IHdhaXRzCisgICogICAgICAgICAgICAgICAgdW50aWwgYSBmbGFnIGlzIG5vIGxvbmdlciBpbiB0aGUgc3BlY2lmaWVkIHN0YXR1cy4KICAgKiBAcGFyYW0gIGhpMmMgUG9pbnRlciB0byBhIEkyQ19IYW5kbGVUeXBlRGVmIHN0cnVjdHVyZSB0aGF0IGNvbnRhaW5zCiAgICogICAgICAgICAgICAgICAgdGhlIGNvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb24gZm9yIHRoZSBzcGVjaWZpZWQgSTJDLgogICAqIEBwYXJhbSAgRmxhZyBTcGVjaWZpZXMgdGhlIEkyQyBmbGFnIHRvIGNoZWNrLgotICAqIEBwYXJhbSAgU3RhdHVzIFRoZSBuZXcgRmxhZyBzdGF0dXMgKFNFVCBvciBSRVNFVCkuCisgICogQHBhcmFtICBTdGF0dXMgVGhlIGFjdHVhbCBGbGFnIHN0YXR1cyAoU0VUIG9yIFJFU0VUKS4KICAgKiBAcGFyYW0gIFRpbWVvdXQgVGltZW91dCBkdXJhdGlvbgogICAqIEBwYXJhbSAgVGlja3N0YXJ0IFRpY2sgc3RhcnQgdmFsdWUKICAgKiBAcmV0dmFsIEhBTCBzdGF0dXMKQEAgLTYyNjksMTIgKzY0MTcsMTMgQEAKICAgKiBAcGFyYW0gIFRpY2tzdGFydCBUaWNrIHN0YXJ0IHZhbHVlCiAgICogQHJldHZhbCBIQUwgc3RhdHVzCiAgICovCi1zdGF0aWMgSEFMX1N0YXR1c1R5cGVEZWYgSTJDX1dhaXRPblRYSVNGbGFnVW50aWxUaW1lb3V0KEkyQ19IYW5kbGVUeXBlRGVmICpoaTJjLCB1aW50MzJfdCBUaW1lb3V0LCB1aW50MzJfdCBUaWNrc3RhcnQpCitzdGF0aWMgSEFMX1N0YXR1c1R5cGVEZWYgSTJDX1dhaXRPblRYSVNGbGFnVW50aWxUaW1lb3V0KEkyQ19IYW5kbGVUeXBlRGVmICpoaTJjLCB1aW50MzJfdCBUaW1lb3V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBUaWNrc3RhcnQpCiB7CiAgIHdoaWxlIChfX0hBTF9JMkNfR0VUX0ZMQUcoaGkyYywgSTJDX0ZMQUdfVFhJUykgPT0gUkVTRVQpCiAgIHsKLSAgICAvKiBDaGVjayBpZiBhIE5BQ0sgaXMgZGV0ZWN0ZWQgKi8KLSAgICBpZiAoSTJDX0lzQWNrbm93bGVkZ2VGYWlsZWQoaGkyYywgVGltZW91dCwgVGlja3N0YXJ0KSAhPSBIQUxfT0spCisgICAgLyogQ2hlY2sgaWYgYW4gZXJyb3IgaXMgZGV0ZWN0ZWQgKi8KKyAgICBpZiAoSTJDX0lzRXJyb3JPY2N1cnJlZChoaTJjLCBUaW1lb3V0LCBUaWNrc3RhcnQpICE9IEhBTF9PSykKICAgICB7CiAgICAgICByZXR1cm4gSEFMX0VSUk9SOwogICAgIH0KQEAgLTYzMDYsMTIgKzY0NTUsMTMgQEAKICAgKiBAcGFyYW0gIFRpY2tzdGFydCBUaWNrIHN0YXJ0IHZhbHVlCiAgICogQHJldHZhbCBIQUwgc3RhdHVzCiAgICovCi1zdGF0aWMgSEFMX1N0YXR1c1R5cGVEZWYgSTJDX1dhaXRPblNUT1BGbGFnVW50aWxUaW1lb3V0KEkyQ19IYW5kbGVUeXBlRGVmICpoaTJjLCB1aW50MzJfdCBUaW1lb3V0LCB1aW50MzJfdCBUaWNrc3RhcnQpCitzdGF0aWMgSEFMX1N0YXR1c1R5cGVEZWYgSTJDX1dhaXRPblNUT1BGbGFnVW50aWxUaW1lb3V0KEkyQ19IYW5kbGVUeXBlRGVmICpoaTJjLCB1aW50MzJfdCBUaW1lb3V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBUaWNrc3RhcnQpCiB7CiAgIHdoaWxlIChfX0hBTF9JMkNfR0VUX0ZMQUcoaGkyYywgSTJDX0ZMQUdfU1RPUEYpID09IFJFU0VUKQogICB7Ci0gICAgLyogQ2hlY2sgaWYgYSBOQUNLIGlzIGRldGVjdGVkICovCi0gICAgaWYgKEkyQ19Jc0Fja25vd2xlZGdlRmFpbGVkKGhpMmMsIFRpbWVvdXQsIFRpY2tzdGFydCkgIT0gSEFMX09LKQorICAgIC8qIENoZWNrIGlmIGFuIGVycm9yIGlzIGRldGVjdGVkICovCisgICAgaWYgKEkyQ19Jc0Vycm9yT2NjdXJyZWQoaGkyYywgVGltZW91dCwgVGlja3N0YXJ0KSAhPSBIQUxfT0spCiAgICAgewogICAgICAgcmV0dXJuIEhBTF9FUlJPUjsKICAgICB9CkBAIC02MzQwLDEyICs2NDkwLDEzIEBACiAgICogQHBhcmFtICBUaWNrc3RhcnQgVGljayBzdGFydCB2YWx1ZQogICAqIEByZXR2YWwgSEFMIHN0YXR1cwogICAqLwotc3RhdGljIEhBTF9TdGF0dXNUeXBlRGVmIEkyQ19XYWl0T25SWE5FRmxhZ1VudGlsVGltZW91dChJMkNfSGFuZGxlVHlwZURlZiAqaGkyYywgdWludDMyX3QgVGltZW91dCwgdWludDMyX3QgVGlja3N0YXJ0KQorc3RhdGljIEhBTF9TdGF0dXNUeXBlRGVmIEkyQ19XYWl0T25SWE5FRmxhZ1VudGlsVGltZW91dChJMkNfSGFuZGxlVHlwZURlZiAqaGkyYywgdWludDMyX3QgVGltZW91dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgVGlja3N0YXJ0KQogewogICB3aGlsZSAoX19IQUxfSTJDX0dFVF9GTEFHKGhpMmMsIEkyQ19GTEFHX1JYTkUpID09IFJFU0VUKQogICB7Ci0gICAgLyogQ2hlY2sgaWYgYSBOQUNLIGlzIGRldGVjdGVkICovCi0gICAgaWYgKEkyQ19Jc0Fja25vd2xlZGdlRmFpbGVkKGhpMmMsIFRpbWVvdXQsIFRpY2tzdGFydCkgIT0gSEFMX09LKQorICAgIC8qIENoZWNrIGlmIGFuIGVycm9yIGlzIGRldGVjdGVkICovCisgICAgaWYgKEkyQ19Jc0Vycm9yT2NjdXJyZWQoaGkyYywgVGltZW91dCwgVGlja3N0YXJ0KSAhPSBIQUxfT0spCiAgICAgewogICAgICAgcmV0dXJuIEhBTF9FUlJPUjsKICAgICB9CkBAIC02MzYzLDEzICs2NTE0LDIyIEBACiAgICAgICB9CiAgICAgICBlbHNlCiAgICAgICB7CisgICAgICAgIGlmIChfX0hBTF9JMkNfR0VUX0ZMQUcoaGkyYywgSTJDX0ZMQUdfQUYpID09IFNFVCkKKyAgICAgICAgeworICAgICAgICAgIF9fSEFMX0kyQ19DTEVBUl9GTEFHKGhpMmMsIEkyQ19GTEFHX0FGKTsKKyAgICAgICAgICBoaTJjLT5FcnJvckNvZGUgPSBIQUxfSTJDX0VSUk9SX0FGOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgIGhpMmMtPkVycm9yQ29kZSA9IEhBTF9JMkNfRVJST1JfTk9ORTsKKyAgICAgICAgfQorCiAgICAgICAgIC8qIENsZWFyIFNUT1AgRmxhZyAqLwogICAgICAgICBfX0hBTF9JMkNfQ0xFQVJfRkxBRyhoaTJjLCBJMkNfRkxBR19TVE9QRik7CiAKICAgICAgICAgLyogQ2xlYXIgQ29uZmlndXJhdGlvbiBSZWdpc3RlciAyICovCiAgICAgICAgIEkyQ19SRVNFVF9DUjIoaGkyYyk7CiAKLSAgICAgICAgaGkyYy0+RXJyb3JDb2RlID0gSEFMX0kyQ19FUlJPUl9OT05FOwogICAgICAgICBoaTJjLT5TdGF0ZSA9IEhBTF9JMkNfU1RBVEVfUkVBRFk7CiAgICAgICAgIGhpMmMtPk1vZGUgPSBIQUxfSTJDX01PREVfTk9ORTsKIApAQCAtNjM5Niw2MCArNjU1NiwxMzYgQEAKIH0KIAogLyoqCi0gICogQGJyaWVmICBUaGlzIGZ1bmN0aW9uIGhhbmRsZXMgQWNrbm93bGVkZ2UgZmFpbGVkIGRldGVjdGlvbiBkdXJpbmcgYW4gSTJDIENvbW11bmljYXRpb24uCisgICogQGJyaWVmICBUaGlzIGZ1bmN0aW9uIGhhbmRsZXMgZXJyb3JzIGRldGVjdGlvbiBkdXJpbmcgYW4gSTJDIENvbW11bmljYXRpb24uCiAgICogQHBhcmFtICBoaTJjIFBvaW50ZXIgdG8gYSBJMkNfSGFuZGxlVHlwZURlZiBzdHJ1Y3R1cmUgdGhhdCBjb250YWlucwogICAqICAgICAgICAgICAgICAgIHRoZSBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uIGZvciB0aGUgc3BlY2lmaWVkIEkyQy4KICAgKiBAcGFyYW0gIFRpbWVvdXQgVGltZW91dCBkdXJhdGlvbgogICAqIEBwYXJhbSAgVGlja3N0YXJ0IFRpY2sgc3RhcnQgdmFsdWUKICAgKiBAcmV0dmFsIEhBTCBzdGF0dXMKICAgKi8KLXN0YXRpYyBIQUxfU3RhdHVzVHlwZURlZiBJMkNfSXNBY2tub3dsZWRnZUZhaWxlZChJMkNfSGFuZGxlVHlwZURlZiAqaGkyYywgdWludDMyX3QgVGltZW91dCwgdWludDMyX3QgVGlja3N0YXJ0KQorc3RhdGljIEhBTF9TdGF0dXNUeXBlRGVmIEkyQ19Jc0Vycm9yT2NjdXJyZWQoSTJDX0hhbmRsZVR5cGVEZWYgKmhpMmMsIHVpbnQzMl90IFRpbWVvdXQsIHVpbnQzMl90IFRpY2tzdGFydCkKIHsKLSAgaWYgKF9fSEFMX0kyQ19HRVRfRkxBRyhoaTJjLCBJMkNfRkxBR19BRikgPT0gU0VUKQorICBIQUxfU3RhdHVzVHlwZURlZiBzdGF0dXMgPSBIQUxfT0s7CisgIHVpbnQzMl90IGl0ZmxhZyAgID0gaGkyYy0+SW5zdGFuY2UtPklTUjsKKyAgdWludDMyX3QgZXJyb3JfY29kZSA9IDA7CisgIHVpbnQzMl90IHRpY2tzdGFydCA9IFRpY2tzdGFydDsKKyAgdWludDMyX3QgdG1wMTsKKyAgSEFMX0kyQ19Nb2RlVHlwZURlZiB0bXAyOworCisgIGlmIChIQUxfSVNfQklUX1NFVChpdGZsYWcsIEkyQ19GTEFHX0FGKSkKICAgewotICAgIC8qIFdhaXQgdW50aWwgU1RPUCBGbGFnIGlzIHJlc2V0ICovCisgICAgLyogQ2xlYXIgTkFDS0YgRmxhZyAqLworICAgIF9fSEFMX0kyQ19DTEVBUl9GTEFHKGhpMmMsIEkyQ19GTEFHX0FGKTsKKworICAgIC8qIFdhaXQgdW50aWwgU1RPUCBGbGFnIGlzIHNldCBvciB0aW1lb3V0IG9jY3VycmVkICovCiAgICAgLyogQXV0b0VuZCBzaG91bGQgYmUgaW5pdGlhdGUgYWZ0ZXIgQUYgKi8KLSAgICB3aGlsZSAoX19IQUxfSTJDX0dFVF9GTEFHKGhpMmMsIEkyQ19GTEFHX1NUT1BGKSA9PSBSRVNFVCkKKyAgICB3aGlsZSAoKF9fSEFMX0kyQ19HRVRfRkxBRyhoaTJjLCBJMkNfRkxBR19TVE9QRikgPT0gUkVTRVQpICYmIChzdGF0dXMgPT0gSEFMX09LKSkKICAgICB7CiAgICAgICAvKiBDaGVjayBmb3IgdGhlIFRpbWVvdXQgKi8KICAgICAgIGlmIChUaW1lb3V0ICE9IEhBTF9NQVhfREVMQVkpCiAgICAgICB7Ci0gICAgICAgIGlmICgoKEhBTF9HZXRUaWNrKCkgLSBUaWNrc3RhcnQpID4gVGltZW91dCkgfHwgKFRpbWVvdXQgPT0gMFUpKQorICAgICAgICBpZiAoKChIQUxfR2V0VGljaygpIC0gdGlja3N0YXJ0KSA+IFRpbWVvdXQpIHx8IChUaW1lb3V0ID09IDBVKSkKICAgICAgICAgewotICAgICAgICAgIGhpMmMtPkVycm9yQ29kZSB8PSBIQUxfSTJDX0VSUk9SX1RJTUVPVVQ7Ci0gICAgICAgICAgaGkyYy0+U3RhdGUgPSBIQUxfSTJDX1NUQVRFX1JFQURZOwotICAgICAgICAgIGhpMmMtPk1vZGUgPSBIQUxfSTJDX01PREVfTk9ORTsKKyAgICAgICAgICB0bXAxID0gKHVpbnQzMl90KShoaTJjLT5JbnN0YW5jZS0+Q1IyICYgSTJDX0NSMl9TVE9QKTsKKyAgICAgICAgICB0bXAyID0gaGkyYy0+TW9kZTsKIAotICAgICAgICAgIC8qIFByb2Nlc3MgVW5sb2NrZWQgKi8KLSAgICAgICAgICBfX0hBTF9VTkxPQ0soaGkyYyk7Ci0KLSAgICAgICAgICByZXR1cm4gSEFMX0VSUk9SOworICAgICAgICAgIC8qIEluIGNhc2Ugb2YgSTJDIHN0aWxsIGJ1c3ksIHRyeSB0byByZWdlbmVyYXRlIGEgU1RPUCBtYW51YWxseSAqLworICAgICAgICAgIGlmICgoX19IQUxfSTJDX0dFVF9GTEFHKGhpMmMsIEkyQ19GTEFHX0JVU1kpICE9IFJFU0VUKSAmJiBcCisgICAgICAgICAgICAgICh0bXAxICE9IEkyQ19DUjJfU1RPUCkgJiYgXAorICAgICAgICAgICAgICAodG1wMiAhPSBIQUxfSTJDX01PREVfU0xBVkUpKQorICAgICAgICAgIHsKKyAgICAgICAgICAgIC8qIEdlbmVyYXRlIFN0b3AgKi8KKyAgICAgICAgICAgIGhpMmMtPkluc3RhbmNlLT5DUjIgfD0gSTJDX0NSMl9TVE9QOworICAgICAgICAgICAgCisgICAgICAgICAgICAvKiBVcGRhdGUgVGljayB3aXRoIG5ldyByZWZlcmVuY2UgKi8KKyAgICAgICAgICAgIHRpY2tzdGFydCA9IEhBTF9HZXRUaWNrKCk7CisgICAgICAgICAgfQorICAgICAgICAgIAorICAgICAgICAgIHdoaWxlIChfX0hBTF9JMkNfR0VUX0ZMQUcoaGkyYywgSTJDX0ZMQUdfU1RPUEYpID09IFJFU0VUKQorICAgICAgICAgIHsKKyAgICAgICAgICAgIC8qIENoZWNrIGZvciB0aGUgVGltZW91dCAqLworICAgICAgICAgICAgaWYgKChIQUxfR2V0VGljaygpIC0gdGlja3N0YXJ0KSA+IEkyQ19USU1FT1VUX1NUT1BGKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICBoaTJjLT5FcnJvckNvZGUgfD0gSEFMX0kyQ19FUlJPUl9USU1FT1VUOworICAgICAgICAgICAgICBoaTJjLT5TdGF0ZSA9IEhBTF9JMkNfU1RBVEVfUkVBRFk7CisgICAgICAgICAgICAgIGhpMmMtPk1vZGUgPSBIQUxfSTJDX01PREVfTk9ORTsKKyAgICAgICAgICAgICAgCisgICAgICAgICAgICAgIC8qIFByb2Nlc3MgVW5sb2NrZWQgKi8KKyAgICAgICAgICAgICAgX19IQUxfVU5MT0NLKGhpMmMpOworICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgc3RhdHVzID0gSEFMX0VSUk9SOworICAgICAgICAgICAgfQorICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgfQogICAgIH0KIAotICAgIC8qIENsZWFyIE5BQ0tGIEZsYWcgKi8KLSAgICBfX0hBTF9JMkNfQ0xFQVJfRkxBRyhoaTJjLCBJMkNfRkxBR19BRik7CisgICAgLyogSW4gY2FzZSBTVE9QIEZsYWcgaXMgZGV0ZWN0ZWQsIGNsZWFyIGl0ICovCisgICAgaWYgKHN0YXR1cyA9PSBIQUxfT0spCisgICAgeworICAgICAgLyogQ2xlYXIgU1RPUCBGbGFnICovCisgICAgICBfX0hBTF9JMkNfQ0xFQVJfRkxBRyhoaTJjLCBJMkNfRkxBR19TVE9QRik7CisgICAgfQogCi0gICAgLyogQ2xlYXIgU1RPUCBGbGFnICovCi0gICAgX19IQUxfSTJDX0NMRUFSX0ZMQUcoaGkyYywgSTJDX0ZMQUdfU1RPUEYpOworICAgIGVycm9yX2NvZGUgfD0gSEFMX0kyQ19FUlJPUl9BRjsKIAorICAgIHN0YXR1cyA9IEhBTF9FUlJPUjsKKyAgfQorCisgIC8qIFJlZnJlc2ggQ29udGVudCBvZiBTdGF0dXMgcmVnaXN0ZXIgKi8KKyAgaXRmbGFnID0gaGkyYy0+SW5zdGFuY2UtPklTUjsKKworICAvKiBUaGVuIHZlcmlmeSBpZiBhbiBhZGRpdGlvbmFsIGVycm9ycyBvY2N1cnMgKi8KKyAgLyogQ2hlY2sgaWYgYSBCdXMgZXJyb3Igb2NjdXJyZWQgKi8KKyAgaWYgKEhBTF9JU19CSVRfU0VUKGl0ZmxhZywgSTJDX0ZMQUdfQkVSUikpCisgIHsKKyAgICBlcnJvcl9jb2RlIHw9IEhBTF9JMkNfRVJST1JfQkVSUjsKKworICAgIC8qIENsZWFyIEJFUlIgZmxhZyAqLworICAgIF9fSEFMX0kyQ19DTEVBUl9GTEFHKGhpMmMsIEkyQ19GTEFHX0JFUlIpOworCisgICAgc3RhdHVzID0gSEFMX0VSUk9SOworICB9CisKKyAgLyogQ2hlY2sgaWYgYW4gT3Zlci1SdW4vVW5kZXItUnVuIGVycm9yIG9jY3VycmVkICovCisgIGlmIChIQUxfSVNfQklUX1NFVChpdGZsYWcsIEkyQ19GTEFHX09WUikpCisgIHsKKyAgICBlcnJvcl9jb2RlIHw9IEhBTF9JMkNfRVJST1JfT1ZSOworCisgICAgLyogQ2xlYXIgT1ZSIGZsYWcgKi8KKyAgICBfX0hBTF9JMkNfQ0xFQVJfRkxBRyhoaTJjLCBJMkNfRkxBR19PVlIpOworCisgICAgc3RhdHVzID0gSEFMX0VSUk9SOworICB9CisKKyAgLyogQ2hlY2sgaWYgYW4gQXJiaXRyYXRpb24gTG9zcyBlcnJvciBvY2N1cnJlZCAqLworICBpZiAoSEFMX0lTX0JJVF9TRVQoaXRmbGFnLCBJMkNfRkxBR19BUkxPKSkKKyAgeworICAgIGVycm9yX2NvZGUgfD0gSEFMX0kyQ19FUlJPUl9BUkxPOworCisgICAgLyogQ2xlYXIgQVJMTyBmbGFnICovCisgICAgX19IQUxfSTJDX0NMRUFSX0ZMQUcoaGkyYywgSTJDX0ZMQUdfQVJMTyk7CisKKyAgICBzdGF0dXMgPSBIQUxfRVJST1I7CisgIH0KKworICBpZiAoc3RhdHVzICE9IEhBTF9PSykKKyAgewogICAgIC8qIEZsdXNoIFRYIHJlZ2lzdGVyICovCiAgICAgSTJDX0ZsdXNoX1RYRFIoaGkyYyk7CiAKICAgICAvKiBDbGVhciBDb25maWd1cmF0aW9uIFJlZ2lzdGVyIDIgKi8KICAgICBJMkNfUkVTRVRfQ1IyKGhpMmMpOwogCi0gICAgaGkyYy0+RXJyb3JDb2RlIHw9IEhBTF9JMkNfRVJST1JfQUY7CisgICAgaGkyYy0+RXJyb3JDb2RlIHw9IGVycm9yX2NvZGU7CiAgICAgaGkyYy0+U3RhdGUgPSBIQUxfSTJDX1NUQVRFX1JFQURZOwogICAgIGhpMmMtPk1vZGUgPSBIQUxfSTJDX01PREVfTk9ORTsKIAogICAgIC8qIFByb2Nlc3MgVW5sb2NrZWQgKi8KICAgICBfX0hBTF9VTkxPQ0soaGkyYyk7Ci0KLSAgICByZXR1cm4gSEFMX0VSUk9SOwogICB9Ci0gIHJldHVybiBIQUxfT0s7CisKKyAgcmV0dXJuIHN0YXR1czsKIH0KIAogLyoqCkBAIC02NDc5LDEyICs2NzE1LDE2IEBACiAgIGFzc2VydF9wYXJhbShJU19UUkFOU0ZFUl9NT0RFKE1vZGUpKTsKICAgYXNzZXJ0X3BhcmFtKElTX1RSQU5TRkVSX1JFUVVFU1QoUmVxdWVzdCkpOwogCisgIC8qIERlY2xhcmF0aW9uIG9mIHRtcCB0byBwcmV2ZW50IHVuZGVmaW5lZCBiZWhhdmlvciBvZiB2b2xhdGlsZSB1c2FnZSAqLworICB1aW50MzJfdCB0bXAgPSAoKHVpbnQzMl90KSgoKHVpbnQzMl90KURldkFkZHJlc3MgJiBJMkNfQ1IyX1NBREQpIHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoKHVpbnQzMl90KVNpemUgPDwgSTJDX0NSMl9OQllURVNfUG9zKSAmIEkyQ19DUjJfTkJZVEVTKSB8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1aW50MzJfdClNb2RlIHwgKHVpbnQzMl90KVJlcXVlc3QpICYgKH4weDgwMDAwMDAwVSkpOworCiAgIC8qIHVwZGF0ZSBDUjIgcmVnaXN0ZXIgKi8KLSAgTU9ESUZZX1JFRyhoaTJjLT5JbnN0YW5jZS0+Q1IyLAorICBNT0RJRllfUkVHKGhpMmMtPkluc3RhbmNlLT5DUjIsIFwKICAgICAgICAgICAgICAoKEkyQ19DUjJfU0FERCB8IEkyQ19DUjJfTkJZVEVTIHwgSTJDX0NSMl9SRUxPQUQgfCBJMkNfQ1IyX0FVVE9FTkQgfCBcCi0gICAgICAgICAgICAgICAoSTJDX0NSMl9SRF9XUk4gJiAodWludDMyX3QpKFJlcXVlc3QgPj4gKDMxVSAtIEkyQ19DUjJfUkRfV1JOX1BvcykpKSB8IEkyQ19DUjJfU1RBUlQgfCBJMkNfQ1IyX1NUT1ApKSwgXAotICAgICAgICAgICAgICh1aW50MzJfdCkoKCh1aW50MzJfdClEZXZBZGRyZXNzICYgSTJDX0NSMl9TQUREKSB8Ci0gICAgICAgICAgICAgICAgICAgICAgICAoKCh1aW50MzJfdClTaXplIDw8IEkyQ19DUjJfTkJZVEVTX1BvcykgJiBJMkNfQ1IyX05CWVRFUykgfCAodWludDMyX3QpTW9kZSB8ICh1aW50MzJfdClSZXF1ZXN0KSk7CisgICAgICAgICAgICAgICAoSTJDX0NSMl9SRF9XUk4gJiAodWludDMyX3QpKFJlcXVlc3QgPj4gKDMxVSAtIEkyQ19DUjJfUkRfV1JOX1BvcykpKSB8IFwKKyAgICAgICAgICAgICAgICBJMkNfQ1IyX1NUQVJUIHwgSTJDX0NSMl9TVE9QKSksIHRtcCk7CiB9CiAKIC8qKgpAQCAtNjY2Myw1ICs2OTAzLDMgQEAKIC8qKgogICAqIEB9CiAgICovCi0KLS8qKioqKioqKioqKioqKioqKioqKioqKiogKEMpIENPUFlSSUdIVCBTVE1pY3JvZWxlY3Ryb25pY3MgKioqKipFTkQgT0YgRklMRSoqKiovCmRpZmYgLS1naXQgYS9TcmMvc3RtMzJmN3h4X2hhbF9pMmNfZXguYyBiL1NyYy9zdG0zMmY3eHhfaGFsX2kyY19leC5jCmluZGV4IDA1YzU3NzUuLjljODQ1MGUgMTAwNjQ0Ci0tLSBhL1NyYy9zdG0zMmY3eHhfaGFsX2kyY19leC5jCisrKyBiL1NyYy9zdG0zMmY3eHhfaGFsX2kyY19leC5jCkBAIC01LDggKzUsMjAgQEAKICAgKiBAYnJpZWYgICBJMkMgRXh0ZW5kZWQgSEFMIG1vZHVsZSBkcml2ZXIuCiAgICogICAgICAgICAgVGhpcyBmaWxlIHByb3ZpZGVzIGZpcm13YXJlIGZ1bmN0aW9ucyB0byBtYW5hZ2UgdGhlIGZvbGxvd2luZwogICAqICAgICAgICAgIGZ1bmN0aW9uYWxpdGllcyBvZiBJMkMgRXh0ZW5kZWQgcGVyaXBoZXJhbDoKLSAgKiAgICAgICAgICAgKyBFeHRlbmRlZCBmZWF0dXJlcyBmdW5jdGlvbnMKKyAgKiAgICAgICAgICAgKyBGaWx0ZXIgTW9kZSBGdW5jdGlvbnMKKyAgKiAgICAgICAgICAgKyBGYXN0TW9kZVBsdXMgRnVuY3Rpb25zCiAgICoKKyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICogQGF0dGVudGlvbgorICAqCisgICogQ29weXJpZ2h0IChjKSAyMDE3IFNUTWljcm9lbGVjdHJvbmljcy4KKyAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICAqCisgICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCB1bmRlciB0ZXJtcyB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlCisgICogaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc29mdHdhcmUgY29tcG9uZW50LgorICAqIElmIG5vIExJQ0VOU0UgZmlsZSBjb21lcyB3aXRoIHRoaXMgc29mdHdhcmUsIGl0IGlzIHByb3ZpZGVkIEFTLUlTLgorICAqCisgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICBAdmVyYmF0aW0KICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgICAgICAgICAgICAgICAjIyMjIyBJMkMgcGVyaXBoZXJhbCBFeHRlbmRlZCBmZWF0dXJlcyAgIyMjIyMKQEAgLTI4LDE4ICs0MCw2IEBACiAgICAgICAgICAgKCsrKSBIQUxfSTJDRXhfRW5hYmxlRmFzdE1vZGVQbHVzKCkKICAgICAgICAgICAoKyspIEhBTF9JMkNFeF9EaXNhYmxlRmFzdE1vZGVQbHVzKCkKICAgQGVuZHZlcmJhdGltCi0gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICAqIEBhdHRlbnRpb24KLSAgKgotICAqIDxoMj48Y2VudGVyPiZjb3B5OyBDb3B5cmlnaHQgKGMpIDIwMTcgU1RNaWNyb2VsZWN0cm9uaWNzLgotICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuPC9jZW50ZXI+PC9oMj4KLSAgKgotICAqIFRoaXMgc29mdHdhcmUgY29tcG9uZW50IGlzIGxpY2Vuc2VkIGJ5IFNUIHVuZGVyIEJTRCAzLUNsYXVzZSBsaWNlbnNlLAotICAqIHRoZSAiTGljZW5zZSI7IFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUKLSAgKiBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQ6Ci0gICogICAgICAgICAgICAgICAgICAgICAgICBvcGVuc291cmNlLm9yZy9saWNlbnNlcy9CU0QtMy1DbGF1c2UKLSAgKgotICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgKi8KIAogLyogSW5jbHVkZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KQEAgLTY3LDE2ICs2NywxNSBAQAogICAqIEB7CiAgICovCiAKLS8qKiBAZGVmZ3JvdXAgSTJDRXhfRXhwb3J0ZWRfRnVuY3Rpb25zX0dyb3VwMSBFeHRlbmRlZCBmZWF0dXJlcyBmdW5jdGlvbnMKLSAgKiBAYnJpZWYgICAgRXh0ZW5kZWQgZmVhdHVyZXMgZnVuY3Rpb25zCisvKiogQGRlZmdyb3VwIEkyQ0V4X0V4cG9ydGVkX0Z1bmN0aW9uc19Hcm91cDEgRmlsdGVyIE1vZGUgRnVuY3Rpb25zCisgICogQGJyaWVmICAgIEZpbHRlciBNb2RlIEZ1bmN0aW9ucwogICAqCiBAdmVyYmF0aW0KICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0gICAgICAgICAgICAgICAgICAgICAgIyMjIyMgRXh0ZW5kZWQgZmVhdHVyZXMgZnVuY3Rpb25zICMjIyMjCisgICAgICAgICAgICAgICAgICAgICAgIyMjIyMgRmlsdGVyIE1vZGUgRnVuY3Rpb25zICMjIyMjCiAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICAgIFsuLl0gVGhpcyBzZWN0aW9uIHByb3ZpZGVzIGZ1bmN0aW9ucyBhbGxvd2luZyB0bzoKICAgICAgICgrKSBDb25maWd1cmUgTm9pc2UgRmlsdGVycwotICAgICAgKCspIENvbmZpZ3VyZSBGYXN0IE1vZGUgUGx1cwogCiBAZW5kdmVyYmF0aW0KICAgKiBAewpAQCAtMTc3LDggKzE3NiwyNSBAQAogICAgIHJldHVybiBIQUxfQlVTWTsKICAgfQogfQotCisvKioKKyAgKiBAfQorICAqLwogI2lmICAoZGVmaW5lZChTWVNDRkdfUE1DX0kyQ19QQjZfRk1QKSB8fCBkZWZpbmVkKFNZU0NGR19QTUNfSTJDX1BCN19GTVApKSB8fCAoZGVmaW5lZChTWVNDRkdfUE1DX0kyQ19QQjhfRk1QKSB8fCBkZWZpbmVkKFNZU0NGR19QTUNfSTJDX1BCOV9GTVApKSB8fCAoZGVmaW5lZChTWVNDRkdfUE1DX0kyQzFfRk1QKSkgfHwgKGRlZmluZWQoU1lTQ0ZHX1BNQ19JMkMyX0ZNUCkpIHx8IGRlZmluZWQoU1lTQ0ZHX1BNQ19JMkMzX0ZNUCkgfHwgZGVmaW5lZChTWVNDRkdfUE1DX0kyQzRfRk1QKQorCisvKiogQGRlZmdyb3VwIEkyQ0V4X0V4cG9ydGVkX0Z1bmN0aW9uc19Hcm91cDMgRmFzdCBNb2RlIFBsdXMgRnVuY3Rpb25zCisgICogQGJyaWVmICAgIEZhc3QgTW9kZSBQbHVzIEZ1bmN0aW9ucworICAqCitAdmVyYmF0aW0KKyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgICAgICAgICAgICAgICAgICAgICAgIyMjIyMgRmFzdCBNb2RlIFBsdXMgRnVuY3Rpb25zICMjIyMjCisgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICAgIFsuLl0gVGhpcyBzZWN0aW9uIHByb3ZpZGVzIGZ1bmN0aW9ucyBhbGxvd2luZyB0bzoKKyAgICAgICgrKSBDb25maWd1cmUgRmFzdCBNb2RlIFBsdXMKKworQGVuZHZlcmJhdGltCisgICogQHsKKyAgKi8KKwogLyoqCiAgICogQGJyaWVmIEVuYWJsZSB0aGUgSTJDIGZhc3QgbW9kZSBwbHVzIGRyaXZpbmcgY2FwYWJpbGl0eS4KICAgKiBAcGFyYW0gQ29uZmlnRmFzdE1vZGVQbHVzIFNlbGVjdHMgdGhlIHBpbi4KQEAgLTIzNiwxMiArMjUyLDEwIEBACiAgIC8qIERpc2FibGUgZmFzdCBtb2RlIHBsdXMgZHJpdmluZyBjYXBhYmlsaXR5IGZvciBzZWxlY3RlZCBwaW4gKi8KICAgQ0xFQVJfQklUKFNZU0NGRy0+UE1DLCAodWludDMyX3QpQ29uZmlnRmFzdE1vZGVQbHVzKTsKIH0KLQotI2VuZGlmCiAvKioKICAgKiBAfQogICAqLwotCisjZW5kaWYgLyogRmFzdCBNb2RlIFBsdXMgQXZhaWxhYmlsaXR5ICovCiAvKioKICAgKiBAfQogICAqLwpAQCAtMjU0LDUgKzI2OCwzIEBACiAvKioKICAgKiBAfQogICAqLwotCi0vKioqKioqKioqKioqKioqKioqKioqKioqIChDKSBDT1BZUklHSFQgU1RNaWNyb2VsZWN0cm9uaWNzICoqKioqRU5EIE9GIEZJTEUqKioqLwpkaWZmIC0tZ2l0IGEvU3JjL3N0bTMyZjd4eF9oYWxfaTJzLmMgYi9TcmMvc3RtMzJmN3h4X2hhbF9pMnMuYwppbmRleCBhMTE2ZDkyLi42MjE1NjNmIDEwMDY0NAotLS0gYS9TcmMvc3RtMzJmN3h4X2hhbF9pMnMuYworKysgYi9TcmMvc3RtMzJmN3h4X2hhbF9pMnMuYwpAQCAtOCw2ICs4LDE3IEBACiAgICogICAgICAgICAgICsgSW5pdGlhbGl6YXRpb24gYW5kIGRlLWluaXRpYWxpemF0aW9uIGZ1bmN0aW9ucwogICAqICAgICAgICAgICArIElPIG9wZXJhdGlvbiBmdW5jdGlvbnMKICAgKiAgICAgICAgICAgKyBQZXJpcGhlcmFsIFN0YXRlIGFuZCBFcnJvcnMgZnVuY3Rpb25zCisgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAqIEBhdHRlbnRpb24KKyAgKgorICAqIENvcHlyaWdodCAoYykgMjAxNyBTVE1pY3JvZWxlY3Ryb25pY3MuCisgICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAgKgorICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgdW5kZXIgdGVybXMgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZQorICAqIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvZnR3YXJlIGNvbXBvbmVudC4KKyAgKiBJZiBubyBMSUNFTlNFIGZpbGUgY29tZXMgd2l0aCB0aGlzIHNvZnR3YXJlLCBpdCBpcyBwcm92aWRlZCBBUy1JUy4KKyAgKgorICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgQHZlcmJhdGltCiAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICAgICAgICAgICAgICAgICAgIyMjIyMgSG93IHRvIHVzZSB0aGlzIGRyaXZlciAjIyMjIwpAQCAtMTY3LDE4ICsxNzgsNyBAQAogICAgICAgIGFuZCB3ZWFrIChzdXJjaGFyZ2VkKSBjYWxsYmFja3MgYXJlIHVzZWQuCiAKICAgQGVuZHZlcmJhdGltCi0gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICAqIEBhdHRlbnRpb24KLSAgKgotICAqIDxoMj48Y2VudGVyPiZjb3B5OyBDb3B5cmlnaHQgKGMpIDIwMTcgU1RNaWNyb2VsZWN0cm9uaWNzLgotICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuPC9jZW50ZXI+PC9oMj4KLSAgKgotICAqIFRoaXMgc29mdHdhcmUgY29tcG9uZW50IGlzIGxpY2Vuc2VkIGJ5IFNUIHVuZGVyIEJTRCAzLUNsYXVzZSBsaWNlbnNlLAotICAqIHRoZSAiTGljZW5zZSI7IFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUKLSAgKiBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQ6Ci0gICogICAgICAgICAgICAgICAgICAgICAgICBvcGVuc291cmNlLm9yZy9saWNlbnNlcy9CU0QtMy1DbGF1c2UKLSAgKgotICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKwogICAqLwogCiAvKiBJbmNsdWRlcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwpAQCAtMTkyMiw0ICsxOTIyLDMgQEAKIAogI2VuZGlmIC8qIEhBTF9JMlNfTU9EVUxFX0VOQUJMRUQgKi8KIAotLyoqKioqKioqKioqKioqKioqKioqKioqKiAoQykgQ09QWVJJR0hUIFNUTWljcm9lbGVjdHJvbmljcyAqKioqKkVORCBPRiBGSUxFKioqKi8KZGlmZiAtLWdpdCBhL1NyYy9zdG0zMmY3eHhfaGFsX2lyZGEuYyBiL1NyYy9zdG0zMmY3eHhfaGFsX2lyZGEuYwppbmRleCA4ZmNjODBhLi5kMmNjZDE2IDEwMDY0NAotLS0gYS9TcmMvc3RtMzJmN3h4X2hhbF9pcmRhLmMKKysrIGIvU3JjL3N0bTMyZjd4eF9oYWxfaXJkYS5jCkBAIC0xMSw2ICsxMSwxNyBAQAogICAqICAgICAgICAgICArIFBlcmlwaGVyYWwgU3RhdGUgYW5kIEVycm9ycyBmdW5jdGlvbnMKICAgKiAgICAgICAgICAgKyBQZXJpcGhlcmFsIENvbnRyb2wgZnVuY3Rpb25zCiAgICoKKyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICogQGF0dGVudGlvbgorICAqCisgICogQ29weXJpZ2h0IChjKSAyMDE3IFNUTWljcm9lbGVjdHJvbmljcy4KKyAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICAqCisgICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCB1bmRlciB0ZXJtcyB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlCisgICogaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc29mdHdhcmUgY29tcG9uZW50LgorICAqIElmIG5vIExJQ0VOU0UgZmlsZSBjb21lcyB3aXRoIHRoaXMgc29mdHdhcmUsIGl0IGlzIHByb3ZpZGVkIEFTLUlTLgorICAqCisgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICBAdmVyYmF0aW0KICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgICAgICAgICAgICAgICAgICAgICAgICAjIyMjIyBIb3cgdG8gdXNlIHRoaXMgZHJpdmVyICMjIyMjCkBAIC0xMTQsOCArMTI1LDggQEAKICAgICBhbGxvd3MgdGhlIHVzZXIgdG8gY29uZmlndXJlIGR5bmFtaWNhbGx5IHRoZSBkcml2ZXIgY2FsbGJhY2tzLgogCiAgICAgWy4uXQotICAgIFVzZSBGdW5jdGlvbiBAcmVmIEhBTF9JUkRBX1JlZ2lzdGVyQ2FsbGJhY2soKSB0byByZWdpc3RlciBhIHVzZXIgY2FsbGJhY2suCi0gICAgRnVuY3Rpb24gQHJlZiBIQUxfSVJEQV9SZWdpc3RlckNhbGxiYWNrKCkgYWxsb3dzIHRvIHJlZ2lzdGVyIGZvbGxvd2luZyBjYWxsYmFja3M6CisgICAgVXNlIEZ1bmN0aW9uIEhBTF9JUkRBX1JlZ2lzdGVyQ2FsbGJhY2soKSB0byByZWdpc3RlciBhIHVzZXIgY2FsbGJhY2suCisgICAgRnVuY3Rpb24gSEFMX0lSREFfUmVnaXN0ZXJDYWxsYmFjaygpIGFsbG93cyB0byByZWdpc3RlciBmb2xsb3dpbmcgY2FsbGJhY2tzOgogICAgICgrKSBUeEhhbGZDcGx0Q2FsbGJhY2sgICAgICAgIDogVHggSGFsZiBDb21wbGV0ZSBDYWxsYmFjay4KICAgICAoKykgVHhDcGx0Q2FsbGJhY2sgICAgICAgICAgICA6IFR4IENvbXBsZXRlIENhbGxiYWNrLgogICAgICgrKSBSeEhhbGZDcGx0Q2FsbGJhY2sgICAgICAgIDogUnggSGFsZiBDb21wbGV0ZSBDYWxsYmFjay4KQEAgLTEzMCw5ICsxNDEsOSBAQAogICAgIGFuZCBhIHBvaW50ZXIgdG8gdGhlIHVzZXIgY2FsbGJhY2sgZnVuY3Rpb24uCiAKICAgICBbLi5dCi0gICAgVXNlIGZ1bmN0aW9uIEByZWYgSEFMX0lSREFfVW5SZWdpc3RlckNhbGxiYWNrKCkgdG8gcmVzZXQgYSBjYWxsYmFjayB0byB0aGUgZGVmYXVsdAorICAgIFVzZSBmdW5jdGlvbiBIQUxfSVJEQV9VblJlZ2lzdGVyQ2FsbGJhY2soKSB0byByZXNldCBhIGNhbGxiYWNrIHRvIHRoZSBkZWZhdWx0CiAgICAgd2VhayAoc3VyY2hhcmdlZCkgZnVuY3Rpb24uCi0gICAgQHJlZiBIQUxfSVJEQV9VblJlZ2lzdGVyQ2FsbGJhY2soKSB0YWtlcyBhcyBwYXJhbWV0ZXJzIHRoZSBIQUwgcGVyaXBoZXJhbCBoYW5kbGUsCisgICAgSEFMX0lSREFfVW5SZWdpc3RlckNhbGxiYWNrKCkgdGFrZXMgYXMgcGFyYW1ldGVycyB0aGUgSEFMIHBlcmlwaGVyYWwgaGFuZGxlLAogICAgIGFuZCB0aGUgQ2FsbGJhY2sgSUQuCiAgICAgVGhpcyBmdW5jdGlvbiBhbGxvd3MgdG8gcmVzZXQgZm9sbG93aW5nIGNhbGxiYWNrczoKICAgICAoKykgVHhIYWxmQ3BsdENhbGxiYWNrICAgICAgICA6IFR4IEhhbGYgQ29tcGxldGUgQ2FsbGJhY2suCkBAIC0xNDcsMTMgKzE1OCwxMyBAQAogICAgICgrKSBNc3BEZUluaXRDYWxsYmFjayAgICAgICAgIDogSVJEQSBNc3BEZUluaXQuCiAKICAgICBbLi5dCi0gICAgQnkgZGVmYXVsdCwgYWZ0ZXIgdGhlIEByZWYgSEFMX0lSREFfSW5pdCgpIGFuZCB3aGVuIHRoZSBzdGF0ZSBpcyBIQUxfSVJEQV9TVEFURV9SRVNFVAorICAgIEJ5IGRlZmF1bHQsIGFmdGVyIHRoZSBIQUxfSVJEQV9Jbml0KCkgYW5kIHdoZW4gdGhlIHN0YXRlIGlzIEhBTF9JUkRBX1NUQVRFX1JFU0VUCiAgICAgYWxsIGNhbGxiYWNrcyBhcmUgc2V0IHRvIHRoZSBjb3JyZXNwb25kaW5nIHdlYWsgKHN1cmNoYXJnZWQpIGZ1bmN0aW9uczoKLSAgICBleGFtcGxlcyBAcmVmIEhBTF9JUkRBX1R4Q3BsdENhbGxiYWNrKCksIEByZWYgSEFMX0lSREFfUnhIYWxmQ3BsdENhbGxiYWNrKCkuCisgICAgZXhhbXBsZXMgSEFMX0lSREFfVHhDcGx0Q2FsbGJhY2soKSwgSEFMX0lSREFfUnhIYWxmQ3BsdENhbGxiYWNrKCkuCiAgICAgRXhjZXB0aW9uIGRvbmUgZm9yIE1zcEluaXQgYW5kIE1zcERlSW5pdCBmdW5jdGlvbnMgdGhhdCBhcmUgcmVzcGVjdGl2ZWx5Ci0gICAgcmVzZXQgdG8gdGhlIGxlZ2FjeSB3ZWFrIChzdXJjaGFyZ2VkKSBmdW5jdGlvbnMgaW4gdGhlIEByZWYgSEFMX0lSREFfSW5pdCgpCi0gICAgYW5kIEByZWYgSEFMX0lSREFfRGVJbml0KCkgb25seSB3aGVuIHRoZXNlIGNhbGxiYWNrcyBhcmUgbnVsbCAobm90IHJlZ2lzdGVyZWQgYmVmb3JlaGFuZCkuCi0gICAgSWYgbm90LCBNc3BJbml0IG9yIE1zcERlSW5pdCBhcmUgbm90IG51bGwsIHRoZSBAcmVmIEhBTF9JUkRBX0luaXQoKSBhbmQgQHJlZiBIQUxfSVJEQV9EZUluaXQoKQorICAgIHJlc2V0IHRvIHRoZSBsZWdhY3kgd2VhayAoc3VyY2hhcmdlZCkgZnVuY3Rpb25zIGluIHRoZSBIQUxfSVJEQV9Jbml0KCkKKyAgICBhbmQgSEFMX0lSREFfRGVJbml0KCkgb25seSB3aGVuIHRoZXNlIGNhbGxiYWNrcyBhcmUgbnVsbCAobm90IHJlZ2lzdGVyZWQgYmVmb3JlaGFuZCkuCisgICAgSWYgbm90LCBNc3BJbml0IG9yIE1zcERlSW5pdCBhcmUgbm90IG51bGwsIHRoZSBIQUxfSVJEQV9Jbml0KCkgYW5kIEhBTF9JUkRBX0RlSW5pdCgpCiAgICAga2VlcCBhbmQgdXNlIHRoZSB1c2VyIE1zcEluaXQvTXNwRGVJbml0IGNhbGxiYWNrcyAocmVnaXN0ZXJlZCBiZWZvcmVoYW5kKS4KIAogICAgIFsuLl0KQEAgLTE2Miw4ICsxNzMsOCBAQAogICAgIGluIEhBTF9JUkRBX1NUQVRFX1JFQURZIG9yIEhBTF9JUkRBX1NUQVRFX1JFU0VUIHN0YXRlLCB0aHVzIHJlZ2lzdGVyZWQgKHVzZXIpCiAgICAgTXNwSW5pdC9EZUluaXQgY2FsbGJhY2tzIGNhbiBiZSB1c2VkIGR1cmluZyB0aGUgSW5pdC9EZUluaXQuCiAgICAgSW4gdGhhdCBjYXNlIGZpcnN0IHJlZ2lzdGVyIHRoZSBNc3BJbml0L01zcERlSW5pdCB1c2VyIGNhbGxiYWNrcwotICAgIHVzaW5nIEByZWYgSEFMX0lSREFfUmVnaXN0ZXJDYWxsYmFjaygpIGJlZm9yZSBjYWxsaW5nIEByZWYgSEFMX0lSREFfRGVJbml0KCkKLSAgICBvciBAcmVmIEhBTF9JUkRBX0luaXQoKSBmdW5jdGlvbi4KKyAgICB1c2luZyBIQUxfSVJEQV9SZWdpc3RlckNhbGxiYWNrKCkgYmVmb3JlIGNhbGxpbmcgSEFMX0lSREFfRGVJbml0KCkKKyAgICBvciBIQUxfSVJEQV9Jbml0KCkgZnVuY3Rpb24uCiAKICAgICBbLi5dCiAgICAgV2hlbiBUaGUgY29tcGlsYXRpb24gZGVmaW5lIFVTRV9IQUxfSVJEQV9SRUdJU1RFUl9DQUxMQkFDS1MgaXMgc2V0IHRvIDAgb3IKQEAgLTE3MiwxNyArMTgzLDYgQEAKIAogICBAZW5kdmVyYmF0aW0KICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gICogQGF0dGVudGlvbgotICAqCi0gICogPGgyPjxjZW50ZXI+JmNvcHk7IENvcHlyaWdodCAoYykgMjAxNyBTVE1pY3JvZWxlY3Ryb25pY3MuCi0gICogQWxsIHJpZ2h0cyByZXNlcnZlZC48L2NlbnRlcj48L2gyPgotICAqCi0gICogVGhpcyBzb2Z0d2FyZSBjb21wb25lbnQgaXMgbGljZW5zZWQgYnkgU1QgdW5kZXIgQlNEIDMtQ2xhdXNlIGxpY2Vuc2UsCi0gICogdGhlICJMaWNlbnNlIjsgWW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZQotICAqIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdDoKLSAgKiAgICAgICAgICAgICAgICAgICAgICAgIG9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0JTRC0zLUNsYXVzZQotICAqCi0gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAqLwogCiAvKiBJbmNsdWRlcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwpAQCAtNzk5LDEwICs3OTksMTAgQEAKICAgKiBAcGFyYW0gVGltZW91dCBTcGVjaWZ5IHRpbWVvdXQgdmFsdWUuCiAgICogQHJldHZhbCBIQUwgc3RhdHVzCiAgICovCi1IQUxfU3RhdHVzVHlwZURlZiBIQUxfSVJEQV9UcmFuc21pdChJUkRBX0hhbmRsZVR5cGVEZWYgKmhpcmRhLCB1aW50OF90ICpwRGF0YSwgdWludDE2X3QgU2l6ZSwgdWludDMyX3QgVGltZW91dCkKK0hBTF9TdGF0dXNUeXBlRGVmIEhBTF9JUkRBX1RyYW5zbWl0KElSREFfSGFuZGxlVHlwZURlZiAqaGlyZGEsIGNvbnN0IHVpbnQ4X3QgKnBEYXRhLCB1aW50MTZfdCBTaXplLCB1aW50MzJfdCBUaW1lb3V0KQogewotICB1aW50OF90ICAqcGRhdGE4Yml0czsKLSAgdWludDE2X3QgKnBkYXRhMTZiaXRzOworICBjb25zdCB1aW50OF90ICAqcGRhdGE4Yml0czsKKyAgY29uc3QgdWludDE2X3QgKnBkYXRhMTZiaXRzOwogICB1aW50MzJfdCB0aWNrc3RhcnQ7CiAKICAgLyogQ2hlY2sgdGhhdCBhIFR4IHByb2Nlc3MgaXMgbm90IGFscmVhZHkgb25nb2luZyAqLwpAQCAtODI5LDcgKzgyOSw3IEBACiAgICAgaWYgKChoaXJkYS0+SW5pdC5Xb3JkTGVuZ3RoID09IElSREFfV09SRExFTkdUSF85QikgJiYgKGhpcmRhLT5Jbml0LlBhcml0eSA9PSBJUkRBX1BBUklUWV9OT05FKSkKICAgICB7CiAgICAgICBwZGF0YThiaXRzICA9IE5VTEw7Ci0gICAgICBwZGF0YTE2Yml0cyA9ICh1aW50MTZfdCAqKSBwRGF0YTsgLyogRGVyb2dhdGlvbiBSLjExLjMgKi8KKyAgICAgIHBkYXRhMTZiaXRzID0gKGNvbnN0IHVpbnQxNl90ICopIHBEYXRhOyAvKiBEZXJvZ2F0aW9uIFIuMTEuMyAqLwogICAgIH0KICAgICBlbHNlCiAgICAgewpAQCAtOTc4LDcgKzk3OCw3IEBACiAgICogQHBhcmFtIFNpemUgQW1vdW50IG9mIGRhdGEgZWxlbWVudHMgKHU4IG9yIHUxNikgdG8gYmUgc2VudC4KICAgKiBAcmV0dmFsIEhBTCBzdGF0dXMKICAgKi8KLUhBTF9TdGF0dXNUeXBlRGVmIEhBTF9JUkRBX1RyYW5zbWl0X0lUKElSREFfSGFuZGxlVHlwZURlZiAqaGlyZGEsIHVpbnQ4X3QgKnBEYXRhLCB1aW50MTZfdCBTaXplKQorSEFMX1N0YXR1c1R5cGVEZWYgSEFMX0lSREFfVHJhbnNtaXRfSVQoSVJEQV9IYW5kbGVUeXBlRGVmICpoaXJkYSwgY29uc3QgdWludDhfdCAqcERhdGEsIHVpbnQxNl90IFNpemUpCiB7CiAgIC8qIENoZWNrIHRoYXQgYSBUeCBwcm9jZXNzIGlzIG5vdCBhbHJlYWR5IG9uZ29pbmcgKi8KICAgaWYgKGhpcmRhLT5nU3RhdGUgPT0gSEFMX0lSREFfU1RBVEVfUkVBRFkpCkBAIC0xMDUwLDggKzEwNTAsMTYgQEAKICAgICAvKiBQcm9jZXNzIFVubG9ja2VkICovCiAgICAgX19IQUxfVU5MT0NLKGhpcmRhKTsKIAotICAgIC8qIEVuYWJsZSB0aGUgSVJEQSBQYXJpdHkgRXJyb3IgYW5kIERhdGEgUmVnaXN0ZXIgbm90IGVtcHR5IEludGVycnVwdHMgKi8KLSAgICBTRVRfQklUKGhpcmRhLT5JbnN0YW5jZS0+Q1IxLCBVU0FSVF9DUjFfUEVJRSB8IFVTQVJUX0NSMV9SWE5FSUUpOworICAgIGlmIChoaXJkYS0+SW5pdC5QYXJpdHkgIT0gSVJEQV9QQVJJVFlfTk9ORSkKKyAgICB7IAorICAgICAgLyogRW5hYmxlIHRoZSBJUkRBIFBhcml0eSBFcnJvciBhbmQgRGF0YSBSZWdpc3RlciBub3QgZW1wdHkgSW50ZXJydXB0cyAqLyAgCisgICAgICBTRVRfQklUKGhpcmRhLT5JbnN0YW5jZS0+Q1IxLCBVU0FSVF9DUjFfUEVJRSB8IFVTQVJUX0NSMV9SWE5FSUUpOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAvKiBFbmFibGUgdGhlIElSREEgRGF0YSBSZWdpc3RlciBub3QgZW1wdHkgSW50ZXJydXB0cyAqLyAKKyAgICAgU0VUX0JJVChoaXJkYS0+SW5zdGFuY2UtPkNSMSwgVVNBUlRfQ1IxX1JYTkVJRSk7IAorICAgIH0KIAogICAgIC8qIEVuYWJsZSB0aGUgSVJEQSBFcnJvciBJbnRlcnJ1cHQ6IChGcmFtZSBlcnJvciwgbm9pc2UgZXJyb3IsIG92ZXJydW4gZXJyb3IpICovCiAgICAgU0VUX0JJVChoaXJkYS0+SW5zdGFuY2UtPkNSMywgVVNBUlRfQ1IzX0VJRSk7CkBAIC0xMDc1LDcgKzEwODMsNyBAQAogICAqIEBwYXJhbSBTaXplIEFtb3VudCBvZiBkYXRhIGVsZW1lbnRzICh1OCBvciB1MTYpIHRvIGJlIHNlbnQuCiAgICogQHJldHZhbCBIQUwgc3RhdHVzCiAgICovCi1IQUxfU3RhdHVzVHlwZURlZiBIQUxfSVJEQV9UcmFuc21pdF9ETUEoSVJEQV9IYW5kbGVUeXBlRGVmICpoaXJkYSwgdWludDhfdCAqcERhdGEsIHVpbnQxNl90IFNpemUpCitIQUxfU3RhdHVzVHlwZURlZiBIQUxfSVJEQV9UcmFuc21pdF9ETUEoSVJEQV9IYW5kbGVUeXBlRGVmICpoaXJkYSwgY29uc3QgdWludDhfdCAqcERhdGEsIHVpbnQxNl90IFNpemUpCiB7CiAgIC8qIENoZWNrIHRoYXQgYSBUeCBwcm9jZXNzIGlzIG5vdCBhbHJlYWR5IG9uZ29pbmcgKi8KICAgaWYgKGhpcmRhLT5nU3RhdGUgPT0gSEFMX0lSREFfU1RBVEVfUkVBRFkpCkBAIC0xMTkyLDggKzEyMDAsMTEgQEAKICAgICAgIC8qIFByb2Nlc3MgVW5sb2NrZWQgKi8KICAgICAgIF9fSEFMX1VOTE9DSyhoaXJkYSk7CiAKLSAgICAgIC8qIEVuYWJsZSB0aGUgVUFSVCBQYXJpdHkgRXJyb3IgSW50ZXJydXB0ICovCi0gICAgICBTRVRfQklUKGhpcmRhLT5JbnN0YW5jZS0+Q1IxLCBVU0FSVF9DUjFfUEVJRSk7CisgICAgICBpZiAoaGlyZGEtPkluaXQuUGFyaXR5ICE9IElSREFfUEFSSVRZX05PTkUpCisgICAgICB7CisgICAgICAgIC8qIEVuYWJsZSB0aGUgVUFSVCBQYXJpdHkgRXJyb3IgSW50ZXJydXB0ICovCisgICAgICAgIFNFVF9CSVQoaGlyZGEtPkluc3RhbmNlLT5DUjEsIFVTQVJUX0NSMV9QRUlFKTsKKyAgICAgIH0KIAogICAgICAgLyogRW5hYmxlIHRoZSBVQVJUIEVycm9yIEludGVycnVwdDogKEZyYW1lIGVycm9yLCBub2lzZSBlcnJvciwgb3ZlcnJ1biBlcnJvcikgKi8KICAgICAgIFNFVF9CSVQoaGlyZGEtPkluc3RhbmNlLT5DUjMsIFVTQVJUX0NSM19FSUUpOwpAQCAtMTI4NSw3ICsxMjk2LDEwIEBACiAgICAgX19IQUxfSVJEQV9DTEVBUl9PUkVGTEFHKGhpcmRhKTsKIAogICAgIC8qIFJlLWVuYWJsZSBQRSBhbmQgRVJSIChGcmFtZSBlcnJvciwgbm9pc2UgZXJyb3IsIG92ZXJydW4gZXJyb3IpIGludGVycnVwdHMgKi8KLSAgICBTRVRfQklUKGhpcmRhLT5JbnN0YW5jZS0+Q1IxLCBVU0FSVF9DUjFfUEVJRSk7CisgICAgaWYgKGhpcmRhLT5Jbml0LlBhcml0eSAhPSBJUkRBX1BBUklUWV9OT05FKQorICAgIHsgICAgCisgICAgICBTRVRfQklUKGhpcmRhLT5JbnN0YW5jZS0+Q1IxLCBVU0FSVF9DUjFfUEVJRSk7CisgICAgfQogICAgIFNFVF9CSVQoaGlyZGEtPkluc3RhbmNlLT5DUjMsIFVTQVJUX0NSM19FSUUpOwogCiAgICAgLyogRW5hYmxlIHRoZSBJUkRBIERNQSBSeCByZXF1ZXN0ICovCkBAIC0yMjczLDIxICsyMjg3LDIxIEBACiAgIHsKICAgICBjYXNlIElSREFfQ0xPQ0tTT1VSQ0VfUENMSzE6CiAgICAgICBwY2xrID0gSEFMX1JDQ19HZXRQQ0xLMUZyZXEoKTsKLSAgICAgIHRtcHJlZyA9ICh1aW50MTZfdCkoSVJEQV9ESVZfU0FNUExJTkcxNihwY2xrLCBoaXJkYS0+SW5pdC5CYXVkUmF0ZSkpOworICAgICAgdG1wcmVnID0gKHVpbnQzMl90KShJUkRBX0RJVl9TQU1QTElORzE2KHBjbGssIGhpcmRhLT5Jbml0LkJhdWRSYXRlKSk7CiAgICAgICBicmVhazsKICAgICBjYXNlIElSREFfQ0xPQ0tTT1VSQ0VfUENMSzI6CiAgICAgICBwY2xrID0gSEFMX1JDQ19HZXRQQ0xLMkZyZXEoKTsKLSAgICAgIHRtcHJlZyA9ICh1aW50MTZfdCkoSVJEQV9ESVZfU0FNUExJTkcxNihwY2xrLCBoaXJkYS0+SW5pdC5CYXVkUmF0ZSkpOworICAgICAgdG1wcmVnID0gKHVpbnQzMl90KShJUkRBX0RJVl9TQU1QTElORzE2KHBjbGssIGhpcmRhLT5Jbml0LkJhdWRSYXRlKSk7CiAgICAgICBicmVhazsKICAgICBjYXNlIElSREFfQ0xPQ0tTT1VSQ0VfSFNJOgotICAgICAgdG1wcmVnID0gKHVpbnQxNl90KShJUkRBX0RJVl9TQU1QTElORzE2KEhTSV9WQUxVRSwgaGlyZGEtPkluaXQuQmF1ZFJhdGUpKTsKKyAgICAgIHRtcHJlZyA9ICh1aW50MzJfdCkoSVJEQV9ESVZfU0FNUExJTkcxNihIU0lfVkFMVUUsIGhpcmRhLT5Jbml0LkJhdWRSYXRlKSk7CiAgICAgICBicmVhazsKICAgICBjYXNlIElSREFfQ0xPQ0tTT1VSQ0VfU1lTQ0xLOgogICAgICAgcGNsayA9IEhBTF9SQ0NfR2V0U3lzQ2xvY2tGcmVxKCk7Ci0gICAgICB0bXByZWcgPSAodWludDE2X3QpKElSREFfRElWX1NBTVBMSU5HMTYocGNsaywgaGlyZGEtPkluaXQuQmF1ZFJhdGUpKTsKKyAgICAgIHRtcHJlZyA9ICh1aW50MzJfdCkoSVJEQV9ESVZfU0FNUExJTkcxNihwY2xrLCBoaXJkYS0+SW5pdC5CYXVkUmF0ZSkpOwogICAgICAgYnJlYWs7CiAgICAgY2FzZSBJUkRBX0NMT0NLU09VUkNFX0xTRToKLSAgICAgIHRtcHJlZyA9ICh1aW50MTZfdCkoSVJEQV9ESVZfU0FNUExJTkcxNigodWludDMyX3QpTFNFX1ZBTFVFLCBoaXJkYS0+SW5pdC5CYXVkUmF0ZSkpOworICAgICAgdG1wcmVnID0gKHVpbnQzMl90KShJUkRBX0RJVl9TQU1QTElORzE2KCh1aW50MzJfdClMU0VfVkFMVUUsIGhpcmRhLT5Jbml0LkJhdWRSYXRlKSk7CiAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgcmV0ID0gSEFMX0VSUk9SOwpAQCAtMjI5Nyw3ICsyMzExLDcgQEAKICAgLyogVVNBUlRESVYgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gMGQxNiAqLwogICBpZiAoKHRtcHJlZyA+PSBVU0FSVF9CUlJfTUlOKSAmJiAodG1wcmVnIDw9IFVTQVJUX0JSUl9NQVgpKQogICB7Ci0gICAgaGlyZGEtPkluc3RhbmNlLT5CUlIgPSB0bXByZWc7CisgICAgaGlyZGEtPkluc3RhbmNlLT5CUlIgPSAodWludDE2X3QpdG1wcmVnOwogICB9CiAgIGVsc2UKICAgewpAQCAtMjM0NSwxMSArMjM1OSwxMiBAQAogfQogCiAvKioKLSAgKiBAYnJpZWYgIEhhbmRsZSBJUkRBIENvbW11bmljYXRpb24gVGltZW91dC4KKyAgKiBAYnJpZWYgIEhhbmRsZSBJUkRBIENvbW11bmljYXRpb24gVGltZW91dC4gSXQgd2FpdHMKKyAgKiAgICAgICAgIHVudGlsIGEgZmxhZyBpcyBubyBsb25nZXIgaW4gdGhlIHNwZWNpZmllZCBzdGF0dXMuCiAgICogQHBhcmFtICBoaXJkYSBQb2ludGVyIHRvIGEgSVJEQV9IYW5kbGVUeXBlRGVmIHN0cnVjdHVyZSB0aGF0IGNvbnRhaW5zCiAgICogICAgICAgICAgICAgICB0aGUgY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbiBmb3IgdGhlIHNwZWNpZmllZCBJUkRBIG1vZHVsZS4KICAgKiBAcGFyYW0gIEZsYWcgU3BlY2lmaWVzIHRoZSBJUkRBIGZsYWcgdG8gY2hlY2suCi0gICogQHBhcmFtICBTdGF0dXMgRmxhZyBzdGF0dXMgKFNFVCBvciBSRVNFVCkKKyAgKiBAcGFyYW0gIFN0YXR1cyBUaGUgYWN0dWFsIEZsYWcgc3RhdHVzIChTRVQgb3IgUkVTRVQpCiAgICogQHBhcmFtICBUaWNrc3RhcnQgVGljayBzdGFydCB2YWx1ZQogICAqIEBwYXJhbSAgVGltZW91dCBUaW1lb3V0IGR1cmF0aW9uCiAgICogQHJldHZhbCBIQUwgc3RhdHVzCkBAIC0yNzUwLDcgKzI3NjUsNyBAQAogICAqLwogc3RhdGljIHZvaWQgSVJEQV9UcmFuc21pdF9JVChJUkRBX0hhbmRsZVR5cGVEZWYgKmhpcmRhKQogewotICB1aW50MTZfdCAqdG1wOworICBjb25zdCB1aW50MTZfdCAqdG1wOwogCiAgIC8qIENoZWNrIHRoYXQgYSBUeCBwcm9jZXNzIGlzIG9uZ29pbmcgKi8KICAgaWYgKGhpcmRhLT5nU3RhdGUgPT0gSEFMX0lSREFfU1RBVEVfQlVTWV9UWCkKQEAgLTI3NjcsNyArMjc4Miw3IEBACiAgICAgewogICAgICAgaWYgKChoaXJkYS0+SW5pdC5Xb3JkTGVuZ3RoID09IElSREFfV09SRExFTkdUSF85QikgJiYgKGhpcmRhLT5Jbml0LlBhcml0eSA9PSBJUkRBX1BBUklUWV9OT05FKSkKICAgICAgIHsKLSAgICAgICAgdG1wID0gKHVpbnQxNl90ICopIGhpcmRhLT5wVHhCdWZmUHRyOyAvKiBEZXJvZ2F0aW9uIFIuMTEuMyAqLworICAgICAgICB0bXAgPSAoY29uc3QgdWludDE2X3QgKikgaGlyZGEtPnBUeEJ1ZmZQdHI7IC8qIERlcm9nYXRpb24gUi4xMS4zICovCiAgICAgICAgIGhpcmRhLT5JbnN0YW5jZS0+VERSID0gKHVpbnQxNl90KSgqdG1wICYgMHgwMUZGVSk7CiAgICAgICAgIGhpcmRhLT5wVHhCdWZmUHRyICs9IDJVOwogICAgICAgfQpAQCAtMjg3NSw0ICsyODkwLDQgQEAKICAgKiBAfQogICAqLwogCi0vKioqKioqKioqKioqKioqKioqKioqKioqIChDKSBDT1BZUklHSFQgU1RNaWNyb2VsZWN0cm9uaWNzICoqKioqRU5EIE9GIEZJTEUqKioqLworCmRpZmYgLS1naXQgYS9TcmMvc3RtMzJmN3h4X2hhbF9pd2RnLmMgYi9TcmMvc3RtMzJmN3h4X2hhbF9pd2RnLmMKaW5kZXggNDljNGU1MS4uYzdiODA2NCAxMDA2NDQKLS0tIGEvU3JjL3N0bTMyZjd4eF9oYWxfaXdkZy5jCisrKyBiL1NyYy9zdG0zMmY3eHhfaGFsX2l3ZGcuYwpAQCAtOCw2ICs4LDE3IEBACiAgICogICAgICAgICAgICsgSW5pdGlhbGl6YXRpb24gYW5kIFN0YXJ0IGZ1bmN0aW9ucwogICAqICAgICAgICAgICArIElPIG9wZXJhdGlvbiBmdW5jdGlvbnMKICAgKgorICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgKiBAYXR0ZW50aW9uCisgICoKKyAgKiBDb3B5cmlnaHQgKGMpIDIwMTcgU1RNaWNyb2VsZWN0cm9uaWNzLgorICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgICoKKyAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIHVuZGVyIHRlcm1zIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUKKyAgKiBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb2Z0d2FyZSBjb21wb25lbnQuCisgICogSWYgbm8gTElDRU5TRSBmaWxlIGNvbWVzIHdpdGggdGhpcyBzb2Z0d2FyZSwgaXQgaXMgcHJvdmlkZWQgQVMtSVMuCisgICoKKyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgIEB2ZXJiYXRpbQogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgICAgICAgICAgICAgICAgICAgIyMjIyMgSVdERyBHZW5lcmljIGZlYXR1cmVzICMjIyMjCkBAIC04NiwxOCArOTcsNiBAQAogICAgICAgICAgIHRoZSByZWxvYWQgcmVnaXN0ZXIKIAogICBAZW5kdmVyYmF0aW0KLSAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gICogQGF0dGVudGlvbgotICAqCi0gICogPGgyPjxjZW50ZXI+JmNvcHk7IENvcHlyaWdodCAoYykgMjAxNyBTVE1pY3JvZWxlY3Ryb25pY3MuCi0gICogQWxsIHJpZ2h0cyByZXNlcnZlZC48L2NlbnRlcj48L2gyPgotICAqCi0gICogVGhpcyBzb2Z0d2FyZSBjb21wb25lbnQgaXMgbGljZW5zZWQgYnkgU1QgdW5kZXIgQlNEIDMtQ2xhdXNlIGxpY2Vuc2UsCi0gICogdGhlICJMaWNlbnNlIjsgWW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZQotICAqIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdDoKLSAgKiAgICAgICAgICAgICAgICAgICAgICAgIG9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0JTRC0zLUNsYXVzZQotICAqCi0gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAqLwogCiAvKiBJbmNsdWRlcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwpAQCAtMTIxLDExICsxMjAsMTMgQEAKIC8qIFN0YXR1cyByZWdpc3RlciBuZWVkcyB1cCB0byA1IExTSSBjbG9jayBwZXJpb2RzIGRpdmlkZWQgYnkgdGhlIGNsb2NrCiAgICBwcmVzY2FsZXIgdG8gYmUgdXBkYXRlZC4gVGhlIG51bWJlciBvZiBMU0kgY2xvY2sgcGVyaW9kcyBpcyB1cHBlci1yb3VuZGVkIHRvCiAgICA2IGZvciB0aGUgdGltZW91dCB2YWx1ZSBjYWxjdWxhdGlvbi4KLSAgIFRoZSB0aW1lb3V0IHZhbHVlIGlzIGFsc28gY2FsY3VsYXRlZCB1c2luZyB0aGUgaGlnaGVzdCBwcmVzY2FsZXIgKDI1NikgYW5kCisgICBUaGUgdGltZW91dCB2YWx1ZSBpcyBjYWxjdWxhdGVkIHVzaW5nIHRoZSBoaWdoZXN0IHByZXNjYWxlciAoMjU2KSBhbmQKICAgIHRoZSBMU0lfVkFMVUUgY29uc3RhbnQuIFRoZSB2YWx1ZSBvZiB0aGlzIGNvbnN0YW50IGNhbiBiZSBjaGFuZ2VkIGJ5IHRoZSB1c2VyCiAgICB0byB0YWtlIGludG8gYWNjb3VudCBwb3NzaWJsZSBMU0kgY2xvY2sgcGVyaW9kIHZhcmlhdGlvbnMuCi0gICBUaGUgdGltZW91dCB2YWx1ZSBpcyBtdWx0aXBsaWVkIGJ5IDEwMDAgdG8gYmUgY29udmVydGVkIGluIG1pbGxpc2Vjb25kcy4gKi8KLSNkZWZpbmUgSEFMX0lXREdfREVGQVVMVF9USU1FT1VUICAgICAgICAoKDZVTCAqIDI1NlVMICogMTAwMFVMKSAvIExTSV9WQUxVRSkKKyAgIFRoZSB0aW1lb3V0IHZhbHVlIGlzIG11bHRpcGxpZWQgYnkgMTAwMCB0byBiZSBjb252ZXJ0ZWQgaW4gbWlsbGlzZWNvbmRzLgorICAgTFNJIHN0YXJ0dXAgdGltZSBpcyBhbHNvIGNvbnNpZGVyZWQgaGVyZSBieSBhZGRpbmcgTFNJX1NUQVJUVVBfVElNRQorICAgY29udmVydGVkIGluIG1pbGxpc2Vjb25kcy4gKi8KKyNkZWZpbmUgSEFMX0lXREdfREVGQVVMVF9USU1FT1VUICAgICAgICAoKCg2VUwgKiAyNTZVTCAqIDEwMDBVTCkgLyBMU0lfVkFMVUUpICsgKChMU0lfU1RBUlRVUF9USU1FIC8gMTAwMFVMKSArIDFVTCkpCiAjZGVmaW5lIElXREdfS0VSTkVMX1VQREFURV9GTEFHUyAgICAgICAgKElXREdfU1JfV1ZVIHwgSVdER19TUl9SVlUgfCBJV0RHX1NSX1BWVSkKIC8qKgogICAqIEB9CkBAIC0yNzksNSArMjgwLDMgQEAKIC8qKgogICAqIEB9CiAgICovCi0KLS8qKioqKioqKioqKioqKioqKioqKioqKiogKEMpIENPUFlSSUdIVCBTVE1pY3JvZWxlY3Ryb25pY3MgKioqKipFTkQgT0YgRklMRSoqKiovCmRpZmYgLS1naXQgYS9TcmMvc3RtMzJmN3h4X2hhbF9qcGVnLmMgYi9TcmMvc3RtMzJmN3h4X2hhbF9qcGVnLmMKaW5kZXggYWIzYjU0Mi4uMDFmN2JiOCAxMDA2NDQKLS0tIGEvU3JjL3N0bTMyZjd4eF9oYWxfanBlZy5jCisrKyBiL1NyYy9zdG0zMmY3eHhfaGFsX2pwZWcuYwpAQCAtMTYsNiArMTYsMTcgQEAKICAgKiAgICAgICAgICAgKyBJUlEgaGFuZGxlciBtYW5hZ2VtZW50CiAgICogICAgICAgICAgICsgUGVyaXBoZXJhbCBTdGF0ZSBhbmQgRXJyb3IgZnVuY3Rpb25zCiAgICoKKyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICogQGF0dGVudGlvbgorICAqCisgICogQ29weXJpZ2h0IChjKSAyMDE3IFNUTWljcm9lbGVjdHJvbmljcy4KKyAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICAqCisgICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCB1bmRlciB0ZXJtcyB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlCisgICogaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc29mdHdhcmUgY29tcG9uZW50LgorICAqIElmIG5vIExJQ0VOU0UgZmlsZSBjb21lcyB3aXRoIHRoaXMgc29mdHdhcmUsIGl0IGlzIHByb3ZpZGVkIEFTLUlTLgorICAqCisgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICBAdmVyYmF0aW0KICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgICAgICAgICAgICAgICAgICAgICAjIyMjIyBIb3cgdG8gdXNlIHRoaXMgZHJpdmVyICMjIyMjCkBAIC0yMDMsMTcgKzIxNCw2IEBACiAKICAgQGVuZHZlcmJhdGltCiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICAqIEBhdHRlbnRpb24KLSAgKgotICAqIDxoMj48Y2VudGVyPiZjb3B5OyBDb3B5cmlnaHQgKGMpIDIwMTcgU1RNaWNyb2VsZWN0cm9uaWNzLgotICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuPC9jZW50ZXI+PC9oMj4KLSAgKgotICAqIFRoaXMgc29mdHdhcmUgY29tcG9uZW50IGlzIGxpY2Vuc2VkIGJ5IFNUIHVuZGVyIEJTRCAzLUNsYXVzZSBsaWNlbnNlLAotICAqIHRoZSAiTGljZW5zZSI7IFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUKLSAgKiBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQ6Ci0gICogICAgICAgICAgICAgICAgICAgICAgICBvcGVuc291cmNlLm9yZy9saWNlbnNlcy9CU0QtMy1DbGF1c2UKLSAgKgotICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgKi8KIAogLyogSW5jbHVkZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KQEAgLTQxNjQsNCArNDE2NCwzIEBACiAgICogQH0KICAgKi8KIAotLyoqKioqKioqKioqKioqKioqKioqKioqKiAoQykgQ09QWVJJR0hUIFNUTWljcm9lbGVjdHJvbmljcyAqKioqKkVORCBPRiBGSUxFKioqKi8KZGlmZiAtLWdpdCBhL1NyYy9zdG0zMmY3eHhfaGFsX2xwdGltLmMgYi9TcmMvc3RtMzJmN3h4X2hhbF9scHRpbS5jCmluZGV4IGEyOWUxZWMuLjgyMDMyMGIgMTAwNjQ0Ci0tLSBhL1NyYy9zdG0zMmY3eHhfaGFsX2xwdGltLmMKKysrIGIvU3JjL3N0bTMyZjd4eF9oYWxfbHB0aW0uYwpAQCAtMTEsNiArMTEsMTcgQEAKICAgKiAgICAgICAgICAgKyBSZWFkaW5nIG9wZXJhdGlvbiBmdW5jdGlvbnMuCiAgICogICAgICAgICAgICsgUGVyaXBoZXJhbCBTdGF0ZSBmdW5jdGlvbnMuCiAgICoKKyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICogQGF0dGVudGlvbgorICAqCisgICogQ29weXJpZ2h0IChjKSAyMDE3IFNUTWljcm9lbGVjdHJvbmljcy4KKyAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICAqCisgICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCB1bmRlciB0ZXJtcyB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlCisgICogaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc29mdHdhcmUgY29tcG9uZW50LgorICAqIElmIG5vIExJQ0VOU0UgZmlsZSBjb21lcyB3aXRoIHRoaXMgc29mdHdhcmUsIGl0IGlzIHByb3ZpZGVkIEFTLUlTLgorICAqCisgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICBAdmVyYmF0aW0KICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgICAgICAgICAgICAgICAgICAgICAjIyMjIyBIb3cgdG8gdXNlIHRoaXMgZHJpdmVyICMjIyMjCkBAIC05MywxMyArMTA0LDEzIEBACiAgIFRoZSBjb21waWxhdGlvbiBkZWZpbmUgIFVTRV9IQUxfTFBUSU1fUkVHSVNURVJfQ0FMTEJBQ0tTIHdoZW4gc2V0IHRvIDEKICAgYWxsb3dzIHRoZSB1c2VyIHRvIGNvbmZpZ3VyZSBkeW5hbWljYWxseSB0aGUgZHJpdmVyIGNhbGxiYWNrcy4KICAgWy4uXQotICBVc2UgRnVuY3Rpb24gQHJlZiBIQUxfTFBUSU1fUmVnaXN0ZXJDYWxsYmFjaygpIHRvIHJlZ2lzdGVyIGEgY2FsbGJhY2suCi0gIEByZWYgSEFMX0xQVElNX1JlZ2lzdGVyQ2FsbGJhY2soKSB0YWtlcyBhcyBwYXJhbWV0ZXJzIHRoZSBIQUwgcGVyaXBoZXJhbCBoYW5kbGUsCisgIFVzZSBGdW5jdGlvbiBIQUxfTFBUSU1fUmVnaXN0ZXJDYWxsYmFjaygpIHRvIHJlZ2lzdGVyIGEgY2FsbGJhY2suCisgIEhBTF9MUFRJTV9SZWdpc3RlckNhbGxiYWNrKCkgdGFrZXMgYXMgcGFyYW1ldGVycyB0aGUgSEFMIHBlcmlwaGVyYWwgaGFuZGxlLAogICB0aGUgQ2FsbGJhY2sgSUQgYW5kIGEgcG9pbnRlciB0byB0aGUgdXNlciBjYWxsYmFjayBmdW5jdGlvbi4KICAgWy4uXQotICBVc2UgZnVuY3Rpb24gQHJlZiBIQUxfTFBUSU1fVW5SZWdpc3RlckNhbGxiYWNrKCkgdG8gcmVzZXQgYSBjYWxsYmFjayB0byB0aGUKKyAgVXNlIGZ1bmN0aW9uIEhBTF9MUFRJTV9VblJlZ2lzdGVyQ2FsbGJhY2soKSB0byByZXNldCBhIGNhbGxiYWNrIHRvIHRoZQogICBkZWZhdWx0IHdlYWsgZnVuY3Rpb24uCi0gIEByZWYgSEFMX0xQVElNX1VuUmVnaXN0ZXJDYWxsYmFjayB0YWtlcyBhcyBwYXJhbWV0ZXJzIHRoZSBIQUwgcGVyaXBoZXJhbCBoYW5kbGUsCisgIEhBTF9MUFRJTV9VblJlZ2lzdGVyQ2FsbGJhY2sgdGFrZXMgYXMgcGFyYW1ldGVycyB0aGUgSEFMIHBlcmlwaGVyYWwgaGFuZGxlLAogICBhbmQgdGhlIENhbGxiYWNrIElELgogICBbLi5dCiAgIFRoZXNlIGZ1bmN0aW9ucyBhbGxvdyB0byByZWdpc3Rlci91bnJlZ2lzdGVyIGZvbGxvd2luZyBjYWxsYmFja3M6CkBAIC0xMTcsNyArMTI4LDcgQEAKICAgWy4uXQogICBCeSBkZWZhdWx0LCBhZnRlciB0aGUgSW5pdCBhbmQgd2hlbiB0aGUgc3RhdGUgaXMgSEFMX0xQVElNX1NUQVRFX1JFU0VUCiAgIGFsbCBpbnRlcnJ1cHQgY2FsbGJhY2tzIGFyZSBzZXQgdG8gdGhlIGNvcnJlc3BvbmRpbmcgd2VhayBmdW5jdGlvbnM6Ci0gIGV4YW1wbGVzIEByZWYgSEFMX0xQVElNX1RyaWdnZXJDYWxsYmFjaygpLCBAcmVmIEhBTF9MUFRJTV9Db21wYXJlTWF0Y2hDYWxsYmFjaygpLgorICBleGFtcGxlcyBIQUxfTFBUSU1fVHJpZ2dlckNhbGxiYWNrKCksIEhBTF9MUFRJTV9Db21wYXJlTWF0Y2hDYWxsYmFjaygpLgogCiAgIFsuLl0KICAgRXhjZXB0aW9uIGRvbmUgZm9yIE1zcEluaXQgYW5kIE1zcERlSW5pdCBmdW5jdGlvbnMgdGhhdCBhcmUgcmVzZXQgdG8gdGhlIGxlZ2FjeSB3ZWFrCkBAIC0xMzEsNyArMTQyLDcgQEAKICAgaW4gSEFMX0xQVElNX1NUQVRFX1JFQURZIG9yIEhBTF9MUFRJTV9TVEFURV9SRVNFVCBzdGF0ZSwKICAgdGh1cyByZWdpc3RlcmVkICh1c2VyKSBNc3BJbml0L0RlSW5pdCBjYWxsYmFja3MgY2FuIGJlIHVzZWQgZHVyaW5nIHRoZSBJbml0L0RlSW5pdC4KICAgSW4gdGhhdCBjYXNlIGZpcnN0IHJlZ2lzdGVyIHRoZSBNc3BJbml0L01zcERlSW5pdCB1c2VyIGNhbGxiYWNrcwotICB1c2luZyBAcmVmIEhBTF9MUFRJTV9SZWdpc3RlckNhbGxiYWNrKCkgYmVmb3JlIGNhbGxpbmcgRGVJbml0IG9yIEluaXQgZnVuY3Rpb24uCisgIHVzaW5nIEhBTF9MUFRJTV9SZWdpc3RlckNhbGxiYWNrKCkgYmVmb3JlIGNhbGxpbmcgRGVJbml0IG9yIEluaXQgZnVuY3Rpb24uCiAKICAgWy4uXQogICBXaGVuIFRoZSBjb21waWxhdGlvbiBkZWZpbmUgVVNFX0hBTF9MUFRJTV9SRUdJU1RFUl9DQUxMQkFDS1MgaXMgc2V0IHRvIDAgb3IKQEAgLTE0MCwxNyArMTUxLDYgQEAKIAogICBAZW5kdmVyYmF0aW0KICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gICogQGF0dGVudGlvbgotICAqCi0gICogPGgyPjxjZW50ZXI+JmNvcHk7IENvcHlyaWdodCAoYykgMjAxNyBTVE1pY3JvZWxlY3Ryb25pY3MuCi0gICogQWxsIHJpZ2h0cyByZXNlcnZlZC48L2NlbnRlcj48L2gyPgotICAqCi0gICogVGhpcyBzb2Z0d2FyZSBjb21wb25lbnQgaXMgbGljZW5zZWQgYnkgU1QgdW5kZXIgQlNEIDMtQ2xhdXNlIGxpY2Vuc2UsCi0gICogdGhlICJMaWNlbnNlIjsgWW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZQotICAqIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdDoKLSAgKiAgICAgICAgICAgICAgICAgICAgICAgIG9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0JTRC0zLUNsYXVzZQotICAqCi0gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAqLwogCiAvKiBJbmNsdWRlcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwpAQCAtMjMyLDggKzIzMiw4IEBACiAKICAgYXNzZXJ0X3BhcmFtKElTX0xQVElNX0NMT0NLX1NPVVJDRShobHB0aW0tPkluaXQuQ2xvY2suU291cmNlKSk7CiAgIGFzc2VydF9wYXJhbShJU19MUFRJTV9DTE9DS19QUkVTQ0FMRVIoaGxwdGltLT5Jbml0LkNsb2NrLlByZXNjYWxlcikpOwotICBpZiAoKGhscHRpbS0+SW5pdC5DbG9jay5Tb3VyY2UgPT0gTFBUSU1fQ0xPQ0tTT1VSQ0VfVUxQVElNKSAKLSAgIHx8IChobHB0aW0tPkluaXQuQ291bnRlclNvdXJjZSA9PSBMUFRJTV9DT1VOVEVSU09VUkNFX0VYVEVSTkFMKSkKKyAgaWYgKChobHB0aW0tPkluaXQuQ2xvY2suU291cmNlID09IExQVElNX0NMT0NLU09VUkNFX1VMUFRJTSkKKyAgICAgIHx8IChobHB0aW0tPkluaXQuQ291bnRlclNvdXJjZSA9PSBMUFRJTV9DT1VOVEVSU09VUkNFX0VYVEVSTkFMKSkKICAgewogICAgIGFzc2VydF9wYXJhbShJU19MUFRJTV9DTE9DS19QT0xBUklUWShobHB0aW0tPkluaXQuVWx0cmFMb3dQb3dlckNsb2NrLlBvbGFyaXR5KSk7CiAgICAgYXNzZXJ0X3BhcmFtKElTX0xQVElNX0NMT0NLX1NBTVBMRV9USU1FKGhscHRpbS0+SW5pdC5VbHRyYUxvd1Bvd2VyQ2xvY2suU2FtcGxlVGltZSkpOwpAQCAtMjc2LDggKzI3Niw4IEBACiAgIC8qIEdldCB0aGUgTFBUSU14IENGR1IgdmFsdWUgKi8KICAgdG1wY2ZnciA9IGhscHRpbS0+SW5zdGFuY2UtPkNGR1I7CiAKLSAgaWYgKChobHB0aW0tPkluaXQuQ2xvY2suU291cmNlID09IExQVElNX0NMT0NLU09VUkNFX1VMUFRJTSkgCi0gICB8fCAoaGxwdGltLT5Jbml0LkNvdW50ZXJTb3VyY2UgPT0gTFBUSU1fQ09VTlRFUlNPVVJDRV9FWFRFUk5BTCkpCisgIGlmICgoaGxwdGltLT5Jbml0LkNsb2NrLlNvdXJjZSA9PSBMUFRJTV9DTE9DS1NPVVJDRV9VTFBUSU0pCisgICAgICB8fCAoaGxwdGltLT5Jbml0LkNvdW50ZXJTb3VyY2UgPT0gTFBUSU1fQ09VTlRFUlNPVVJDRV9FWFRFUk5BTCkpCiAgIHsKICAgICB0bXBjZmdyICY9ICh1aW50MzJfdCkofihMUFRJTV9DRkdSX0NLUE9MIHwgTFBUSU1fQ0ZHUl9DS0ZMVCkpOwogICB9CkBAIC0zMDcsOCArMzA3LDggQEAKICAgfQogCiAgIC8qIENvbmZpZ3VyZSBMUFRJTSBleHRlcm5hbCBjbG9jayBwb2xhcml0eSBhbmQgZGlnaXRhbCBmaWx0ZXIgKi8KLSAgaWYgKChobHB0aW0tPkluaXQuQ2xvY2suU291cmNlID09IExQVElNX0NMT0NLU09VUkNFX1VMUFRJTSkgCi0gICB8fCAoaGxwdGltLT5Jbml0LkNvdW50ZXJTb3VyY2UgPT0gTFBUSU1fQ09VTlRFUlNPVVJDRV9FWFRFUk5BTCkpCisgIGlmICgoaGxwdGltLT5Jbml0LkNsb2NrLlNvdXJjZSA9PSBMUFRJTV9DTE9DS1NPVVJDRV9VTFBUSU0pCisgICAgICB8fCAoaGxwdGltLT5Jbml0LkNvdW50ZXJTb3VyY2UgPT0gTFBUSU1fQ09VTlRFUlNPVVJDRV9FWFRFUk5BTCkpCiAgIHsKICAgICB0bXBjZmdyIHw9IChobHB0aW0tPkluaXQuVWx0cmFMb3dQb3dlckNsb2NrLlBvbGFyaXR5IHwKICAgICAgICAgICAgICAgICBobHB0aW0tPkluaXQuVWx0cmFMb3dQb3dlckNsb2NrLlNhbXBsZVRpbWUpOwpAQCAtNTIwLDcgKzUyMCw3IEBACiAgICAgcmV0dXJuIEhBTF9USU1FT1VUOwogICB9CiAKLSAgLyogQ2hhbmdlIHRoZSBUSU0gc3RhdGUqLworICAvKiBDaGFuZ2UgdGhlIExQVElNIHN0YXRlKi8KICAgaGxwdGltLT5TdGF0ZSA9IEhBTF9MUFRJTV9TVEFURV9SRUFEWTsKIAogICAvKiBSZXR1cm4gZnVuY3Rpb24gc3RhdHVzICovCkBAIC02NTYsNyArNjU2LDcgQEAKICAgICBfX0hBTF9MUFRJTV9ESVNBQkxFX0lUKGhscHRpbSwgTFBUSU1fSVRfRVhUVFJJRyk7CiAgIH0KIAotICAvKiBDaGFuZ2UgdGhlIFRJTSBzdGF0ZSovCisgIC8qIENoYW5nZSB0aGUgTFBUSU0gc3RhdGUqLwogICBobHB0aW0tPlN0YXRlID0gSEFMX0xQVElNX1NUQVRFX1JFQURZOwogCiAgIC8qIFJldHVybiBmdW5jdGlvbiBzdGF0dXMgKi8KQEAgLTc0Myw3ICs3NDMsNyBAQAogICAgIHJldHVybiBIQUxfVElNRU9VVDsKICAgfQogCi0gIC8qIENoYW5nZSB0aGUgVElNIHN0YXRlKi8KKyAgLyogQ2hhbmdlIHRoZSBMUFRJTSBzdGF0ZSovCiAgIGhscHRpbS0+U3RhdGUgPSBIQUxfTFBUSU1fU1RBVEVfUkVBRFk7CiAKICAgLyogUmV0dXJuIGZ1bmN0aW9uIHN0YXR1cyAqLwpAQCAtODc5LDcgKzg3OSw3IEBACiAgICAgX19IQUxfTFBUSU1fRElTQUJMRV9JVChobHB0aW0sIExQVElNX0lUX0VYVFRSSUcpOwogICB9CiAKLSAgLyogQ2hhbmdlIHRoZSBUSU0gc3RhdGUqLworICAvKiBDaGFuZ2UgdGhlIExQVElNIHN0YXRlKi8KICAgaGxwdGltLT5TdGF0ZSA9IEhBTF9MUFRJTV9TVEFURV9SRUFEWTsKIAogICAvKiBSZXR1cm4gZnVuY3Rpb24gc3RhdHVzICovCkBAIC05NjYsNyArOTY2LDcgQEAKICAgICByZXR1cm4gSEFMX1RJTUVPVVQ7CiAgIH0KIAotICAvKiBDaGFuZ2UgdGhlIFRJTSBzdGF0ZSovCisgIC8qIENoYW5nZSB0aGUgTFBUSU0gc3RhdGUqLwogICBobHB0aW0tPlN0YXRlID0gSEFMX0xQVElNX1NUQVRFX1JFQURZOwogCiAgIC8qIFJldHVybiBmdW5jdGlvbiBzdGF0dXMgKi8KQEAgLTExMDIsNyArMTEwMiw3IEBACiAgICAgX19IQUxfTFBUSU1fRElTQUJMRV9JVChobHB0aW0sIExQVElNX0lUX0VYVFRSSUcpOwogICB9CiAKLSAgLyogQ2hhbmdlIHRoZSBUSU0gc3RhdGUqLworICAvKiBDaGFuZ2UgdGhlIExQVElNIHN0YXRlKi8KICAgaGxwdGltLT5TdGF0ZSA9IEhBTF9MUFRJTV9TVEFURV9SRUFEWTsKIAogICAvKiBSZXR1cm4gZnVuY3Rpb24gc3RhdHVzICovCkBAIC0yMTczLDM5ICsyMTczLDQ4IEBACiAgICAgc3dpdGNoIChDYWxsYmFja0lEKQogICAgIHsKICAgICAgIGNhc2UgSEFMX0xQVElNX01TUElOSVRfQ0JfSUQgOgotICAgICAgICBobHB0aW0tPk1zcEluaXRDYWxsYmFjayA9IEhBTF9MUFRJTV9Nc3BJbml0OyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogTGVnYWN5IHdlYWsgTXNwSW5pdCBDYWxsYmFjayAqLworICAgICAgICAvKiBMZWdhY3kgd2VhayBNc3BJbml0IENhbGxiYWNrICovCisgICAgICAgIGhscHRpbS0+TXNwSW5pdENhbGxiYWNrID0gSEFMX0xQVElNX01zcEluaXQ7CiAgICAgICAgIGJyZWFrOwogCiAgICAgICBjYXNlIEhBTF9MUFRJTV9NU1BERUlOSVRfQ0JfSUQgOgotICAgICAgICBobHB0aW0tPk1zcERlSW5pdENhbGxiYWNrID0gSEFMX0xQVElNX01zcERlSW5pdDsgICAgICAgICAgICAgICAgICAgICAgIC8qIExlZ2FjeSB3ZWFrIE1zcCBEZUluaXQgQ2FsbGJhY2sgKi8KKyAgICAgICAgLyogTGVnYWN5IHdlYWsgTXNwIERlSW5pdCBDYWxsYmFjayAqLworICAgICAgICBobHB0aW0tPk1zcERlSW5pdENhbGxiYWNrID0gSEFMX0xQVElNX01zcERlSW5pdDsKICAgICAgICAgYnJlYWs7CiAKICAgICAgIGNhc2UgSEFMX0xQVElNX0NPTVBBUkVfTUFUQ0hfQ0JfSUQgOgotICAgICAgICBobHB0aW0tPkNvbXBhcmVNYXRjaENhbGxiYWNrID0gSEFMX0xQVElNX0NvbXBhcmVNYXRjaENhbGxiYWNrOyAgICAgICAgIC8qIExlZ2FjeSB3ZWFrIENvbXBhcmUgbWF0Y2ggQ2FsbGJhY2sgKi8KKyAgICAgICAgLyogTGVnYWN5IHdlYWsgQ29tcGFyZSBtYXRjaCBDYWxsYmFjayAqLworICAgICAgICBobHB0aW0tPkNvbXBhcmVNYXRjaENhbGxiYWNrID0gSEFMX0xQVElNX0NvbXBhcmVNYXRjaENhbGxiYWNrOwogICAgICAgICBicmVhazsKIAogICAgICAgY2FzZSBIQUxfTFBUSU1fQVVUT1JFTE9BRF9NQVRDSF9DQl9JRCA6Ci0gICAgICAgIGhscHRpbS0+QXV0b1JlbG9hZE1hdGNoQ2FsbGJhY2sgPSBIQUxfTFBUSU1fQXV0b1JlbG9hZE1hdGNoQ2FsbGJhY2s7ICAgLyogTGVnYWN5IHdlYWsgQXV0by1yZWxvYWQgbWF0Y2ggQ2FsbGJhY2sgKi8KKyAgICAgICAgLyogTGVnYWN5IHdlYWsgQXV0by1yZWxvYWQgbWF0Y2ggQ2FsbGJhY2sgKi8KKyAgICAgICAgaGxwdGltLT5BdXRvUmVsb2FkTWF0Y2hDYWxsYmFjayA9IEhBTF9MUFRJTV9BdXRvUmVsb2FkTWF0Y2hDYWxsYmFjazsKICAgICAgICAgYnJlYWs7CiAKICAgICAgIGNhc2UgSEFMX0xQVElNX1RSSUdHRVJfQ0JfSUQgOgotICAgICAgICBobHB0aW0tPlRyaWdnZXJDYWxsYmFjayA9IEhBTF9MUFRJTV9UcmlnZ2VyQ2FsbGJhY2s7ICAgICAgICAgICAgICAgICAgIC8qIExlZ2FjeSB3ZWFrIEV4dGVybmFsIHRyaWdnZXIgZXZlbnQgZGV0ZWN0aW9uIENhbGxiYWNrICovCisgICAgICAgIC8qIExlZ2FjeSB3ZWFrIEV4dGVybmFsIHRyaWdnZXIgZXZlbnQgZGV0ZWN0aW9uIENhbGxiYWNrICovCisgICAgICAgIGhscHRpbS0+VHJpZ2dlckNhbGxiYWNrID0gSEFMX0xQVElNX1RyaWdnZXJDYWxsYmFjazsKICAgICAgICAgYnJlYWs7CiAKICAgICAgIGNhc2UgSEFMX0xQVElNX0NPTVBBUkVfV1JJVEVfQ0JfSUQgOgotICAgICAgICBobHB0aW0tPkNvbXBhcmVXcml0ZUNhbGxiYWNrID0gSEFMX0xQVElNX0NvbXBhcmVXcml0ZUNhbGxiYWNrOyAgICAgICAgIC8qIExlZ2FjeSB3ZWFrIENvbXBhcmUgcmVnaXN0ZXIgd3JpdGUgY29tcGxldGUgQ2FsbGJhY2sgKi8KKyAgICAgICAgLyogTGVnYWN5IHdlYWsgQ29tcGFyZSByZWdpc3RlciB3cml0ZSBjb21wbGV0ZSBDYWxsYmFjayAqLworICAgICAgICBobHB0aW0tPkNvbXBhcmVXcml0ZUNhbGxiYWNrID0gSEFMX0xQVElNX0NvbXBhcmVXcml0ZUNhbGxiYWNrOwogICAgICAgICBicmVhazsKIAogICAgICAgY2FzZSBIQUxfTFBUSU1fQVVUT1JFTE9BRF9XUklURV9DQl9JRCA6Ci0gICAgICAgIGhscHRpbS0+QXV0b1JlbG9hZFdyaXRlQ2FsbGJhY2sgPSBIQUxfTFBUSU1fQXV0b1JlbG9hZFdyaXRlQ2FsbGJhY2s7ICAgLyogTGVnYWN5IHdlYWsgQXV0by1yZWxvYWQgcmVnaXN0ZXIgd3JpdGUgY29tcGxldGUgQ2FsbGJhY2sgKi8KKyAgICAgICAgLyogTGVnYWN5IHdlYWsgQXV0by1yZWxvYWQgcmVnaXN0ZXIgd3JpdGUgY29tcGxldGUgQ2FsbGJhY2sgKi8KKyAgICAgICAgaGxwdGltLT5BdXRvUmVsb2FkV3JpdGVDYWxsYmFjayA9IEhBTF9MUFRJTV9BdXRvUmVsb2FkV3JpdGVDYWxsYmFjazsKICAgICAgICAgYnJlYWs7CiAKICAgICAgIGNhc2UgSEFMX0xQVElNX0RJUkVDVElPTl9VUF9DQl9JRCA6Ci0gICAgICAgIGhscHRpbS0+RGlyZWN0aW9uVXBDYWxsYmFjayA9IEhBTF9MUFRJTV9EaXJlY3Rpb25VcENhbGxiYWNrOyAgICAgICAgICAgLyogTGVnYWN5IHdlYWsgVXAtY291bnRpbmcgZGlyZWN0aW9uIGNoYW5nZSBDYWxsYmFjayAqLworICAgICAgICAvKiBMZWdhY3kgd2VhayBVcC1jb3VudGluZyBkaXJlY3Rpb24gY2hhbmdlIENhbGxiYWNrICovCisgICAgICAgIGhscHRpbS0+RGlyZWN0aW9uVXBDYWxsYmFjayA9IEhBTF9MUFRJTV9EaXJlY3Rpb25VcENhbGxiYWNrOwogICAgICAgICBicmVhazsKIAogICAgICAgY2FzZSBIQUxfTFBUSU1fRElSRUNUSU9OX0RPV05fQ0JfSUQgOgotICAgICAgICBobHB0aW0tPkRpcmVjdGlvbkRvd25DYWxsYmFjayA9IEhBTF9MUFRJTV9EaXJlY3Rpb25Eb3duQ2FsbGJhY2s7ICAgICAgIC8qIExlZ2FjeSB3ZWFrIERvd24tY291bnRpbmcgZGlyZWN0aW9uIGNoYW5nZSBDYWxsYmFjayAqLworICAgICAgICAvKiBMZWdhY3kgd2VhayBEb3duLWNvdW50aW5nIGRpcmVjdGlvbiBjaGFuZ2UgQ2FsbGJhY2sgKi8KKyAgICAgICAgaGxwdGltLT5EaXJlY3Rpb25Eb3duQ2FsbGJhY2sgPSBIQUxfTFBUSU1fRGlyZWN0aW9uRG93bkNhbGxiYWNrOwogICAgICAgICBicmVhazsKIAogICAgICAgZGVmYXVsdCA6CkBAIC0yMjE5LDExICsyMjI4LDEzIEBACiAgICAgc3dpdGNoIChDYWxsYmFja0lEKQogICAgIHsKICAgICAgIGNhc2UgSEFMX0xQVElNX01TUElOSVRfQ0JfSUQgOgotICAgICAgICBobHB0aW0tPk1zcEluaXRDYWxsYmFjayA9IEhBTF9MUFRJTV9Nc3BJbml0OyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIExlZ2FjeSB3ZWFrIE1zcEluaXQgQ2FsbGJhY2sgKi8KKyAgICAgICAgLyogTGVnYWN5IHdlYWsgTXNwSW5pdCBDYWxsYmFjayAqLworICAgICAgICBobHB0aW0tPk1zcEluaXRDYWxsYmFjayA9IEhBTF9MUFRJTV9Nc3BJbml0OwogICAgICAgICBicmVhazsKIAogICAgICAgY2FzZSBIQUxfTFBUSU1fTVNQREVJTklUX0NCX0lEIDoKLSAgICAgICAgaGxwdGltLT5Nc3BEZUluaXRDYWxsYmFjayA9IEhBTF9MUFRJTV9Nc3BEZUluaXQ7ICAgICAgICAgICAgICAgICAgICAgICAgLyogTGVnYWN5IHdlYWsgTXNwIERlSW5pdCBDYWxsYmFjayAqLworICAgICAgICAvKiBMZWdhY3kgd2VhayBNc3AgRGVJbml0IENhbGxiYWNrICovCisgICAgICAgIGhscHRpbS0+TXNwRGVJbml0Q2FsbGJhY2sgPSBIQUxfTFBUSU1fTXNwRGVJbml0OwogICAgICAgICBicmVhazsKIAogICAgICAgZGVmYXVsdCA6CkBAIC0yMjk4LDEzICsyMzA5LDEzIEBACiBzdGF0aWMgdm9pZCBMUFRJTV9SZXNldENhbGxiYWNrKExQVElNX0hhbmRsZVR5cGVEZWYgKmxwdGltKQogewogICAvKiBSZXNldCB0aGUgTFBUSU0gY2FsbGJhY2sgdG8gdGhlIGxlZ2FjeSB3ZWFrIGNhbGxiYWNrcyAqLwotICBscHRpbS0+Q29tcGFyZU1hdGNoQ2FsbGJhY2sgICAgPSBIQUxfTFBUSU1fQ29tcGFyZU1hdGNoQ2FsbGJhY2s7ICAgIC8qIENvbXBhcmUgbWF0Y2ggQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICovCi0gIGxwdGltLT5BdXRvUmVsb2FkTWF0Y2hDYWxsYmFjayA9IEhBTF9MUFRJTV9BdXRvUmVsb2FkTWF0Y2hDYWxsYmFjazsgLyogQXV0by1yZWxvYWQgbWF0Y2ggQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgKi8KLSAgbHB0aW0tPlRyaWdnZXJDYWxsYmFjayAgICAgICAgID0gSEFMX0xQVElNX1RyaWdnZXJDYWxsYmFjazsgICAgICAgICAvKiBFeHRlcm5hbCB0cmlnZ2VyIGV2ZW50IGRldGVjdGlvbiBDYWxsYmFjayAgICAqLwotICBscHRpbS0+Q29tcGFyZVdyaXRlQ2FsbGJhY2sgICAgPSBIQUxfTFBUSU1fQ29tcGFyZVdyaXRlQ2FsbGJhY2s7ICAgIC8qIENvbXBhcmUgcmVnaXN0ZXIgd3JpdGUgY29tcGxldGUgQ2FsbGJhY2sgICAgICovCi0gIGxwdGltLT5BdXRvUmVsb2FkV3JpdGVDYWxsYmFjayA9IEhBTF9MUFRJTV9BdXRvUmVsb2FkV3JpdGVDYWxsYmFjazsgLyogQXV0by1yZWxvYWQgcmVnaXN0ZXIgd3JpdGUgY29tcGxldGUgQ2FsbGJhY2sgKi8KLSAgbHB0aW0tPkRpcmVjdGlvblVwQ2FsbGJhY2sgICAgID0gSEFMX0xQVElNX0RpcmVjdGlvblVwQ2FsbGJhY2s7ICAgICAvKiBVcC1jb3VudGluZyBkaXJlY3Rpb24gY2hhbmdlIENhbGxiYWNrICAgICAgICAqLwotICBscHRpbS0+RGlyZWN0aW9uRG93bkNhbGxiYWNrICAgPSBIQUxfTFBUSU1fRGlyZWN0aW9uRG93bkNhbGxiYWNrOyAgIC8qIERvd24tY291bnRpbmcgZGlyZWN0aW9uIGNoYW5nZSBDYWxsYmFjayAgICAgICovCisgIGxwdGltLT5Db21wYXJlTWF0Y2hDYWxsYmFjayAgICA9IEhBTF9MUFRJTV9Db21wYXJlTWF0Y2hDYWxsYmFjazsKKyAgbHB0aW0tPkF1dG9SZWxvYWRNYXRjaENhbGxiYWNrID0gSEFMX0xQVElNX0F1dG9SZWxvYWRNYXRjaENhbGxiYWNrOworICBscHRpbS0+VHJpZ2dlckNhbGxiYWNrICAgICAgICAgPSBIQUxfTFBUSU1fVHJpZ2dlckNhbGxiYWNrOworICBscHRpbS0+Q29tcGFyZVdyaXRlQ2FsbGJhY2sgICAgPSBIQUxfTFBUSU1fQ29tcGFyZVdyaXRlQ2FsbGJhY2s7CisgIGxwdGltLT5BdXRvUmVsb2FkV3JpdGVDYWxsYmFjayA9IEhBTF9MUFRJTV9BdXRvUmVsb2FkV3JpdGVDYWxsYmFjazsKKyAgbHB0aW0tPkRpcmVjdGlvblVwQ2FsbGJhY2sgICAgID0gSEFMX0xQVElNX0RpcmVjdGlvblVwQ2FsbGJhY2s7CisgIGxwdGltLT5EaXJlY3Rpb25Eb3duQ2FsbGJhY2sgICA9IEhBTF9MUFRJTV9EaXJlY3Rpb25Eb3duQ2FsbGJhY2s7CiB9CiAjZW5kaWYgLyogVVNFX0hBTF9MUFRJTV9SRUdJU1RFUl9DQUxMQkFDS1MgKi8KIApAQCAtMjM0Nyw4ICsyMzU4LDExIEBACiAgIHVpbnQzMl90IHRtcENGR1I7CiAgIHVpbnQzMl90IHRtcENNUDsKICAgdWludDMyX3QgdG1wQVJSOworICB1aW50MzJfdCBwcmltYXNrX2JpdDsKIAotICBfX2Rpc2FibGVfaXJxKCk7CisgIC8qIEVudGVyIGNyaXRpY2FsIHNlY3Rpb24gKi8KKyAgcHJpbWFza19iaXQgPSBfX2dldF9QUklNQVNLKCk7CisgIF9fc2V0X1BSSU1BU0soMSkgOwogCiAgIC8qKioqKioqKioqKiBTYXZlIExQVElNIENvbmZpZyAqKioqKioqKioqKi8KICAgLyogU2F2ZSBMUFRJTSBzb3VyY2UgY2xvY2sgKi8KQEAgLTI0MzYsNyArMjQ1MCw4IEBACiAgIGhscHRpbS0+SW5zdGFuY2UtPklFUiA9IHRtcElFUjsKICAgaGxwdGltLT5JbnN0YW5jZS0+Q0ZHUiA9IHRtcENGR1I7CiAKLSAgX19lbmFibGVfaXJxKCk7CisgIC8qIEV4aXQgY3JpdGljYWwgc2VjdGlvbjogcmVzdG9yZSBwcmV2aW91cyBwcmlvcml0eSBtYXNrICovCisgIF9fc2V0X1BSSU1BU0socHJpbWFza19iaXQpOwogfQogLyoqCiAgICogQH0KQEAgLTI0NTEsNSArMjQ2NiwzIEBACiAvKioKICAgKiBAfQogICAqLwotCi0vKioqKioqKioqKioqKioqKioqKioqKioqIChDKSBDT1BZUklHSFQgU1RNaWNyb2VsZWN0cm9uaWNzICoqKioqRU5EIE9GIEZJTEUqKioqLwpkaWZmIC0tZ2l0IGEvU3JjL3N0bTMyZjd4eF9oYWxfbHRkYy5jIGIvU3JjL3N0bTMyZjd4eF9oYWxfbHRkYy5jCmluZGV4IDUwNjcxYmYuLjdhMGY5YmUgMTAwNjQ0Ci0tLSBhL1NyYy9zdG0zMmY3eHhfaGFsX2x0ZGMuYworKysgYi9TcmMvc3RtMzJmN3h4X2hhbF9sdGRjLmMKQEAgLTEwLDE2ICsxMCwzOSBAQAogICAqICAgICAgICAgICArIFBlcmlwaGVyYWwgQ29udHJvbCBmdW5jdGlvbnMKICAgKiAgICAgICAgICAgKyBQZXJpcGhlcmFsIFN0YXRlIGFuZCBFcnJvcnMgZnVuY3Rpb25zCiAgICoKKyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICogQGF0dGVudGlvbgorICAqCisgICogQ29weXJpZ2h0IChjKSAyMDE3IFNUTWljcm9lbGVjdHJvbmljcy4KKyAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICAqCisgICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCB1bmRlciB0ZXJtcyB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlCisgICogaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc29mdHdhcmUgY29tcG9uZW50LgorICAqIElmIG5vIExJQ0VOU0UgZmlsZSBjb21lcyB3aXRoIHRoaXMgc29mdHdhcmUsIGl0IGlzIHByb3ZpZGVkIEFTLUlTLgorICAqCisgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICBAdmVyYmF0aW0KICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgICAgICAgICAgICAgICAgICAgICAgICAjIyMjIyBIb3cgdG8gdXNlIHRoaXMgZHJpdmVyICMjIyMjCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotICAgIFsuLl0KLSAgICAgKCMpIFByb2dyYW0gdGhlIHJlcXVpcmVkIGNvbmZpZ3VyYXRpb24gdGhyb3VnaCB0aGUgZm9sbG93aW5nIHBhcmFtZXRlcnM6Ci0gICAgICAgICB0aGUgTFREQyB0aW1pbmcsIHRoZSBob3Jpem9udGFsIGFuZCB2ZXJ0aWNhbCBwb2xhcml0eSwKLSAgICAgICAgIHRoZSBwaXhlbCBjbG9jayBwb2xhcml0eSwgRGF0YSBFbmFibGUgcG9sYXJpdHkgYW5kIHRoZSBMVERDIGJhY2tncm91bmQgY29sb3IgdmFsdWUKLSAgICAgICAgIHVzaW5nIEhBTF9MVERDX0luaXQoKSBmdW5jdGlvbgorICAgICBbLi5dCisgICAgIFRoZSBMVERDIEhBTCBkcml2ZXIgY2FuIGJlIHVzZWQgYXMgZm9sbG93czoKIAorICAgICAoIykgRGVjbGFyZSBhIExURENfSGFuZGxlVHlwZURlZiBoYW5kbGUgc3RydWN0dXJlLCBmb3IgZXhhbXBsZTogTFREQ19IYW5kbGVUeXBlRGVmICBobHRkYzsKKworICAgICAoIykgSW5pdGlhbGl6ZSB0aGUgTFREQyBsb3cgbGV2ZWwgcmVzb3VyY2VzIGJ5IGltcGxlbWVudGluZyB0aGUgSEFMX0xURENfTXNwSW5pdCgpIEFQSToKKyAgICAgICAgICgjIykgRW5hYmxlIHRoZSBMVERDIGludGVyZmFjZSBjbG9jaworICAgICAgICAgKCMjKSBOVklDIGNvbmZpZ3VyYXRpb24gaWYgeW91IG5lZWQgdG8gdXNlIGludGVycnVwdCBwcm9jZXNzCisgICAgICAgICAgICAgKCsrKykgQ29uZmlndXJlIHRoZSBMVERDIGludGVycnVwdCBwcmlvcml0eQorICAgICAgICAgICAgICgrKyspIEVuYWJsZSB0aGUgTlZJQyBMVERDIElSUSBDaGFubmVsCisKKyAgICAgKCMpIEluaXRpYWxpemUgdGhlIHJlcXVpcmVkIGNvbmZpZ3VyYXRpb24gdGhyb3VnaCB0aGUgZm9sbG93aW5nIHBhcmFtZXRlcnM6CisgICAgICAgICB0aGUgTFREQyB0aW1pbmcsIHRoZSBob3Jpem9udGFsIGFuZCB2ZXJ0aWNhbCBwb2xhcml0eSwgdGhlIHBpeGVsIGNsb2NrIHBvbGFyaXR5LAorICAgICAgICAgRGF0YSBFbmFibGUgcG9sYXJpdHkgYW5kIHRoZSBMVERDIGJhY2tncm91bmQgY29sb3IgdmFsdWUgdXNpbmcgSEFMX0xURENfSW5pdCgpIGZ1bmN0aW9uCisKKyAgICAgKioqIENvbmZpZ3VyYXRpb24gKioqCisgICAgID09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgICAgWy4uXQogICAgICAoIykgUHJvZ3JhbSB0aGUgcmVxdWlyZWQgY29uZmlndXJhdGlvbiB0aHJvdWdoIHRoZSBmb2xsb3dpbmcgcGFyYW1ldGVyczoKICAgICAgICAgIHRoZSBwaXhlbCBmb3JtYXQsIHRoZSBibGVuZGluZyBmYWN0b3JzLCBpbnB1dCBhbHBoYSB2YWx1ZSwgdGhlIHdpbmRvdyBzaXplCiAgICAgICAgICBhbmQgdGhlIGltYWdlIHNpemUgdXNpbmcgSEFMX0xURENfQ29uZmlnTGF5ZXIoKSBmdW5jdGlvbiBmb3IgZm9yZWdyb3VuZApAQCAtNzMsODIgKzk2LDgwIEBACiAgICAgICAoKykgX19IQUxfTFREQ19ESVNBQkxFX0lUOiBEaXNhYmxlIHRoZSBzcGVjaWZpZWQgTFREQyBpbnRlcnJ1cHRzLgogICAgICAgKCspIF9fSEFMX0xURENfR0VUX0lUX1NPVVJDRTogQ2hlY2sgd2hldGhlciB0aGUgc3BlY2lmaWVkIExUREMgaW50ZXJydXB0IGhhcyBvY2N1cnJlZCBvciBub3QuCiAKLQotICAqKiogQ2FsbGJhY2sgcmVnaXN0cmF0aW9uICoqKgotICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLQotICBUaGUgY29tcGlsYXRpb24gZGVmaW5lICBVU0VfSEFMX0xURENfUkVHSVNURVJfQ0FMTEJBQ0tTIHdoZW4gc2V0IHRvIDEKLSAgYWxsb3dzIHRoZSB1c2VyIHRvIGNvbmZpZ3VyZSBkeW5hbWljYWxseSB0aGUgZHJpdmVyIGNhbGxiYWNrcy4KLSAgVXNlIEZ1bmN0aW9uIEByZWYgSEFMX0xURENfUmVnaXN0ZXJDYWxsYmFjaygpIHRvIHJlZ2lzdGVyIGEgY2FsbGJhY2suCi0KLSAgRnVuY3Rpb24gQHJlZiBIQUxfTFREQ19SZWdpc3RlckNhbGxiYWNrKCkgYWxsb3dzIHRvIHJlZ2lzdGVyIGZvbGxvd2luZyBjYWxsYmFja3M6Ci0gICAgKCspIExpbmVFdmVudENhbGxiYWNrICAgOiBMVERDIExpbmUgRXZlbnQgQ2FsbGJhY2suCi0gICAgKCspIFJlbG9hZEV2ZW50Q2FsbGJhY2sgOiBMVERDIFJlbG9hZCBFdmVudCBDYWxsYmFjay4KLSAgICAoKykgRXJyb3JDYWxsYmFjayAgICAgICA6IExUREMgRXJyb3IgQ2FsbGJhY2sKLSAgICAoKykgTXNwSW5pdENhbGxiYWNrICAgICA6IExUREMgTXNwSW5pdC4KLSAgICAoKykgTXNwRGVJbml0Q2FsbGJhY2sgICA6IExUREMgTXNwRGVJbml0LgotICBUaGlzIGZ1bmN0aW9uIHRha2VzIGFzIHBhcmFtZXRlcnMgdGhlIEhBTCBwZXJpcGhlcmFsIGhhbmRsZSwgdGhlIENhbGxiYWNrIElECi0gIGFuZCBhIHBvaW50ZXIgdG8gdGhlIHVzZXIgY2FsbGJhY2sgZnVuY3Rpb24uCi0KLSAgVXNlIGZ1bmN0aW9uIEByZWYgSEFMX0xURENfVW5SZWdpc3RlckNhbGxiYWNrKCkgdG8gcmVzZXQgYSBjYWxsYmFjayB0byB0aGUgZGVmYXVsdAotICB3ZWFrIGZ1bmN0aW9uLgotICBAcmVmIEhBTF9MVERDX1VuUmVnaXN0ZXJDYWxsYmFjayB0YWtlcyBhcyBwYXJhbWV0ZXJzIHRoZSBIQUwgcGVyaXBoZXJhbCBoYW5kbGUsCi0gIGFuZCB0aGUgQ2FsbGJhY2sgSUQuCi0gIFRoaXMgZnVuY3Rpb24gYWxsb3dzIHRvIHJlc2V0IGZvbGxvd2luZyBjYWxsYmFja3M6Ci0gICAgKCspIExpbmVFdmVudENhbGxiYWNrICAgOiBMVERDIExpbmUgRXZlbnQgQ2FsbGJhY2suCi0gICAgKCspIFJlbG9hZEV2ZW50Q2FsbGJhY2sgOiBMVERDIFJlbG9hZCBFdmVudCBDYWxsYmFjay4KLSAgICAoKykgRXJyb3JDYWxsYmFjayAgICAgICA6IExUREMgRXJyb3IgQ2FsbGJhY2sKLSAgICAoKykgTXNwSW5pdENhbGxiYWNrICAgICA6IExUREMgTXNwSW5pdC4KLSAgICAoKykgTXNwRGVJbml0Q2FsbGJhY2sgICA6IExUREMgTXNwRGVJbml0LgotCi0gIEJ5IGRlZmF1bHQsIGFmdGVyIHRoZSBIQUxfTFREQ19Jbml0IGFuZCB3aGVuIHRoZSBzdGF0ZSBpcyBIQUxfTFREQ19TVEFURV9SRVNFVAotICBhbGwgY2FsbGJhY2tzIGFyZSBzZXQgdG8gdGhlIGNvcnJlc3BvbmRpbmcgd2VhayBmdW5jdGlvbnM6Ci0gIGV4YW1wbGVzIEByZWYgSEFMX0xURENfTGluZUV2ZW50Q2FsbGJhY2soKSwgQHJlZiBIQUxfTFREQ19FcnJvckNhbGxiYWNrKCkuCi0gIEV4Y2VwdGlvbiBkb25lIGZvciBNc3BJbml0IGFuZCBNc3BEZUluaXQgZnVuY3Rpb25zIHRoYXQgYXJlCi0gIHJlc2V0IHRvIHRoZSBsZWdhY3kgd2VhayBmdW5jdGlvbiBpbiB0aGUgSEFMX0xURENfSW5pdC8gQHJlZiBIQUxfTFREQ19EZUluaXQgb25seSB3aGVuCi0gIHRoZXNlIGNhbGxiYWNrcyBhcmUgbnVsbCAobm90IHJlZ2lzdGVyZWQgYmVmb3JlaGFuZCkuCi0gIGlmIG5vdCwgTXNwSW5pdCBvciBNc3BEZUluaXQgYXJlIG5vdCBudWxsLCB0aGUgQHJlZiBIQUxfTFREQ19Jbml0LyBAcmVmIEhBTF9MVERDX0RlSW5pdAotICBrZWVwIGFuZCB1c2UgdGhlIHVzZXIgTXNwSW5pdC9Nc3BEZUluaXQgY2FsbGJhY2tzIChyZWdpc3RlcmVkIGJlZm9yZWhhbmQpCi0KLSAgQ2FsbGJhY2tzIGNhbiBiZSByZWdpc3RlcmVkL3VucmVnaXN0ZXJlZCBpbiBIQUxfTFREQ19TVEFURV9SRUFEWSBzdGF0ZSBvbmx5LgotICBFeGNlcHRpb24gZG9uZSBNc3BJbml0L01zcERlSW5pdCB0aGF0IGNhbiBiZSByZWdpc3RlcmVkL3VucmVnaXN0ZXJlZAotICBpbiBIQUxfTFREQ19TVEFURV9SRUFEWSBvciBIQUxfTFREQ19TVEFURV9SRVNFVCBzdGF0ZSwKLSAgdGh1cyByZWdpc3RlcmVkICh1c2VyKSBNc3BJbml0L0RlSW5pdCBjYWxsYmFja3MgY2FuIGJlIHVzZWQgZHVyaW5nIHRoZSBJbml0L0RlSW5pdC4KLSAgSW4gdGhhdCBjYXNlIGZpcnN0IHJlZ2lzdGVyIHRoZSBNc3BJbml0L01zcERlSW5pdCB1c2VyIGNhbGxiYWNrcwotICB1c2luZyBAcmVmIEhBTF9MVERDX1JlZ2lzdGVyQ2FsbGJhY2soKSBiZWZvcmUgY2FsbGluZyBAcmVmIEhBTF9MVERDX0RlSW5pdAotICBvciBIQUxfTFREQ19Jbml0IGZ1bmN0aW9uLgotCi0gIFdoZW4gVGhlIGNvbXBpbGF0aW9uIGRlZmluZSBVU0VfSEFMX0xURENfUkVHSVNURVJfQ0FMTEJBQ0tTIGlzIHNldCB0byAwIG9yCi0gIG5vdCBkZWZpbmVkLCB0aGUgY2FsbGJhY2sgcmVnaXN0cmF0aW9uIGZlYXR1cmUgaXMgbm90IGF2YWlsYWJsZSBhbmQgYWxsIGNhbGxiYWNrcwotICBhcmUgc2V0IHRvIHRoZSBjb3JyZXNwb25kaW5nIHdlYWsgZnVuY3Rpb25zLgotCiAgICAgIFsuLl0KICAgICAgICAoQCkgWW91IGNhbiByZWZlciB0byB0aGUgTFREQyBIQUwgZHJpdmVyIGhlYWRlciBmaWxlIGZvciBtb3JlIHVzZWZ1bCBtYWNyb3MKIAorCisgICAgICoqKiBDYWxsYmFjayByZWdpc3RyYXRpb24gKioqCisgICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICAgICBbLi5dCisgICAgIFRoZSBjb21waWxhdGlvbiBkZWZpbmUgIFVTRV9IQUxfTFREQ19SRUdJU1RFUl9DQUxMQkFDS1Mgd2hlbiBzZXQgdG8gMQorICAgICBhbGxvd3MgdGhlIHVzZXIgdG8gY29uZmlndXJlIGR5bmFtaWNhbGx5IHRoZSBkcml2ZXIgY2FsbGJhY2tzLgorICAgICBVc2UgZnVuY3Rpb24gSEFMX0xURENfUmVnaXN0ZXJDYWxsYmFjaygpIHRvIHJlZ2lzdGVyIGEgY2FsbGJhY2suCisKKyAgICBbLi5dCisgICAgRnVuY3Rpb24gSEFMX0xURENfUmVnaXN0ZXJDYWxsYmFjaygpIGFsbG93cyB0byByZWdpc3RlciBmb2xsb3dpbmcgY2FsbGJhY2tzOgorICAgICAgKCspIExpbmVFdmVudENhbGxiYWNrICAgOiBMVERDIExpbmUgRXZlbnQgQ2FsbGJhY2suCisgICAgICAoKykgUmVsb2FkRXZlbnRDYWxsYmFjayA6IExUREMgUmVsb2FkIEV2ZW50IENhbGxiYWNrLgorICAgICAgKCspIEVycm9yQ2FsbGJhY2sgICAgICAgOiBMVERDIEVycm9yIENhbGxiYWNrCisgICAgICAoKykgTXNwSW5pdENhbGxiYWNrICAgICA6IExUREMgTXNwSW5pdC4KKyAgICAgICgrKSBNc3BEZUluaXRDYWxsYmFjayAgIDogTFREQyBNc3BEZUluaXQuCisgICAgWy4uXQorICAgIFRoaXMgZnVuY3Rpb24gdGFrZXMgYXMgcGFyYW1ldGVycyB0aGUgSEFMIHBlcmlwaGVyYWwgaGFuZGxlLCB0aGUgY2FsbGJhY2sgSUQKKyAgICBhbmQgYSBwb2ludGVyIHRvIHRoZSB1c2VyIGNhbGxiYWNrIGZ1bmN0aW9uLgorCisgICAgWy4uXQorICAgIFVzZSBmdW5jdGlvbiBIQUxfTFREQ19VblJlZ2lzdGVyQ2FsbGJhY2soKSB0byByZXNldCBhIGNhbGxiYWNrIHRvIHRoZSBkZWZhdWx0CisgICAgd2VhayBmdW5jdGlvbi4KKyAgICBIQUxfTFREQ19VblJlZ2lzdGVyQ2FsbGJhY2soKSB0YWtlcyBhcyBwYXJhbWV0ZXJzIHRoZSBIQUwgcGVyaXBoZXJhbCBoYW5kbGUKKyAgICBhbmQgdGhlIGNhbGxiYWNrIElELgorICAgIFsuLl0KKyAgICBUaGlzIGZ1bmN0aW9uIGFsbG93cyB0byByZXNldCBmb2xsb3dpbmcgY2FsbGJhY2tzOgorICAgICAgKCspIExpbmVFdmVudENhbGxiYWNrICAgOiBMVERDIExpbmUgRXZlbnQgQ2FsbGJhY2sKKyAgICAgICgrKSBSZWxvYWRFdmVudENhbGxiYWNrIDogTFREQyBSZWxvYWQgRXZlbnQgQ2FsbGJhY2sKKyAgICAgICgrKSBFcnJvckNhbGxiYWNrICAgICAgIDogTFREQyBFcnJvciBDYWxsYmFjaworICAgICAgKCspIE1zcEluaXRDYWxsYmFjayAgICAgOiBMVERDIE1zcEluaXQKKyAgICAgICgrKSBNc3BEZUluaXRDYWxsYmFjayAgIDogTFREQyBNc3BEZUluaXQuCisKKyAgICBbLi5dCisgICAgQnkgZGVmYXVsdCwgYWZ0ZXIgdGhlIEhBTF9MVERDX0luaXQgYW5kIHdoZW4gdGhlIHN0YXRlIGlzIEhBTF9MVERDX1NUQVRFX1JFU0VUCisgICAgYWxsIGNhbGxiYWNrcyBhcmUgc2V0IHRvIHRoZSBjb3JyZXNwb25kaW5nIHdlYWsgZnVuY3Rpb25zOgorICAgIGV4YW1wbGVzIEhBTF9MVERDX0xpbmVFdmVudENhbGxiYWNrKCksIEhBTF9MVERDX0Vycm9yQ2FsbGJhY2soKS4KKyAgICBFeGNlcHRpb24gZG9uZSBmb3IgTXNwSW5pdCBhbmQgTXNwRGVJbml0IGZ1bmN0aW9ucyB0aGF0IGFyZQorICAgIHJlc2V0IHRvIHRoZSBsZWdhY3kgd2VhayAoc3VyY2hhcmdlZCkgZnVuY3Rpb25zIGluIHRoZSBIQUxfTFREQ19Jbml0KCkgYW5kIEhBTF9MVERDX0RlSW5pdCgpCisgICAgb25seSB3aGVuIHRoZXNlIGNhbGxiYWNrcyBhcmUgbnVsbCAobm90IHJlZ2lzdGVyZWQgYmVmb3JlaGFuZCkuCisgICAgSWYgbm90LCBNc3BJbml0IG9yIE1zcERlSW5pdCBhcmUgbm90IG51bGwsIHRoZSBIQUxfTFREQ19Jbml0KCkgYW5kIEhBTF9MVERDX0RlSW5pdCgpCisgICAga2VlcCBhbmQgdXNlIHRoZSB1c2VyIE1zcEluaXQvTXNwRGVJbml0IGNhbGxiYWNrcyAocmVnaXN0ZXJlZCBiZWZvcmVoYW5kKS4KKworICAgIFsuLl0KKyAgICBDYWxsYmFja3MgY2FuIGJlIHJlZ2lzdGVyZWQvdW5yZWdpc3RlcmVkIGluIEhBTF9MVERDX1NUQVRFX1JFQURZIHN0YXRlIG9ubHkuCisgICAgRXhjZXB0aW9uIGRvbmUgTXNwSW5pdC9Nc3BEZUluaXQgdGhhdCBjYW4gYmUgcmVnaXN0ZXJlZC91bnJlZ2lzdGVyZWQKKyAgICBpbiBIQUxfTFREQ19TVEFURV9SRUFEWSBvciBIQUxfTFREQ19TVEFURV9SRVNFVCBzdGF0ZSwKKyAgICB0aHVzIHJlZ2lzdGVyZWQgKHVzZXIpIE1zcEluaXQvRGVJbml0IGNhbGxiYWNrcyBjYW4gYmUgdXNlZCBkdXJpbmcgdGhlIEluaXQvRGVJbml0LgorICAgIEluIHRoYXQgY2FzZSBmaXJzdCByZWdpc3RlciB0aGUgTXNwSW5pdC9Nc3BEZUluaXQgdXNlciBjYWxsYmFja3MKKyAgICB1c2luZyBIQUxfTFREQ19SZWdpc3RlckNhbGxiYWNrKCkgYmVmb3JlIGNhbGxpbmcgSEFMX0xURENfRGVJbml0KCkKKyAgICBvciBIQUxfTFREQ19Jbml0KCkgZnVuY3Rpb24uCisKKyAgICBbLi5dCisgICAgV2hlbiB0aGUgY29tcGlsYXRpb24gZGVmaW5lIFVTRV9IQUxfTFREQ19SRUdJU1RFUl9DQUxMQkFDS1MgaXMgc2V0IHRvIDAgb3IKKyAgICBub3QgZGVmaW5lZCwgdGhlIGNhbGxiYWNrIHJlZ2lzdHJhdGlvbiBmZWF0dXJlIGlzIG5vdCBhdmFpbGFibGUgYW5kIGFsbCBjYWxsYmFja3MKKyAgICBhcmUgc2V0IHRvIHRoZSBjb3JyZXNwb25kaW5nIHdlYWsgZnVuY3Rpb25zLgorCiAgIEBlbmR2ZXJiYXRpbQogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAgKiBAYXR0ZW50aW9uCi0gICoKLSAgKiA8aDI+PGNlbnRlcj4mY29weTsgQ29weXJpZ2h0IChjKSAyMDE3IFNUTWljcm9lbGVjdHJvbmljcy4KLSAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLjwvY2VudGVyPjwvaDI+Ci0gICoKLSAgKiBUaGlzIHNvZnR3YXJlIGNvbXBvbmVudCBpcyBsaWNlbnNlZCBieSBTVCB1bmRlciBCU0QgMy1DbGF1c2UgbGljZW5zZSwKLSAgKiB0aGUgIkxpY2Vuc2UiOyBZb3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlCi0gICogTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0OgotICAqICAgICAgICAgICAgICAgICAgICAgICAgb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvQlNELTMtQ2xhdXNlCi0gICoKLSAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgICovCiAKIC8qIEluY2x1ZGVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAjaW5jbHVkZSAic3RtMzJmN3h4X2hhbC5oIgogCi0jaWZkZWYgSEFMX0xURENfTU9EVUxFX0VOQUJMRUQKLSNpZiBkZWZpbmVkIChMVERDKQogLyoqIEBhZGR0b2dyb3VwIFNUTTMyRjd4eF9IQUxfRHJpdmVyCiAgICogQHsKICAgKi8KIAorI2lmZGVmIEhBTF9MVERDX01PRFVMRV9FTkFCTEVECisKKyNpZiBkZWZpbmVkIChMVERDKQorCiAvKiogQGRlZmdyb3VwIExUREMgTFREQwogICAqIEBicmllZiBMVERDIEhBTCBtb2R1bGUgZHJpdmVyCiAgICogQHsKQEAgLTIxMzEsMTIgKzIxNTIsMTAgQEAKICAgKiBAfQogICAqLwogCisjZW5kaWYgLyogTFREQyAqLworCisjZW5kaWYgLyogSEFMX0xURENfTU9EVUxFX0VOQUJMRUQgKi8KIAogLyoqCiAgICogQH0KICAgKi8KLQotI2VuZGlmIC8qIExUREMgKi8KLSNlbmRpZiAvKiBIQUxfTFREQ19NT0RVTEVfRU5BQkxFRCAqLwotCi0vKioqKioqKioqKioqKioqKioqKioqKioqIChDKSBDT1BZUklHSFQgU1RNaWNyb2VsZWN0cm9uaWNzICoqKioqRU5EIE9GIEZJTEUqKioqLwpkaWZmIC0tZ2l0IGEvU3JjL3N0bTMyZjd4eF9oYWxfbHRkY19leC5jIGIvU3JjL3N0bTMyZjd4eF9oYWxfbHRkY19leC5jCmluZGV4IDc5YzZhMjQuLjkwNWIyYTUgMTAwNjQ0Ci0tLSBhL1NyYy9zdG0zMmY3eHhfaGFsX2x0ZGNfZXguYworKysgYi9TcmMvc3RtMzJmN3h4X2hhbF9sdGRjX2V4LmMKQEAgLTYsMTMgKzYsMTIgQEAKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgICogQGF0dGVudGlvbgogICAqCi0gICogPGgyPjxjZW50ZXI+JmNvcHk7IENvcHlyaWdodCAoYykgMjAxNyBTVE1pY3JvZWxlY3Ryb25pY3MuCi0gICogQWxsIHJpZ2h0cyByZXNlcnZlZC48L2NlbnRlcj48L2gyPgorICAqIENvcHlyaWdodCAoYykgMjAxNyBTVE1pY3JvZWxlY3Ryb25pY3MuCisgICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgKgotICAqIFRoaXMgc29mdHdhcmUgY29tcG9uZW50IGlzIGxpY2Vuc2VkIGJ5IFNUIHVuZGVyIEJTRCAzLUNsYXVzZSBsaWNlbnNlLAotICAqIHRoZSAiTGljZW5zZSI7IFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUKLSAgKiBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQ6Ci0gICogICAgICAgICAgICAgICAgICAgICAgICBvcGVuc291cmNlLm9yZy9saWNlbnNlcy9CU0QtMy1DbGF1c2UKKyAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIHVuZGVyIHRlcm1zIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUKKyAgKiBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb2Z0d2FyZSBjb21wb25lbnQuCisgICogSWYgbm8gTElDRU5TRSBmaWxlIGNvbWVzIHdpdGggdGhpcyBzb2Z0d2FyZSwgaXQgaXMgcHJvdmlkZWQgQVMtSVMuCiAgICoKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgICovCkBAIC0yNCw2ICsyMyw4IEBACiAgICogQHsKICAgKi8KIAorI2lmIGRlZmluZWQoSEFMX0xURENfTU9EVUxFX0VOQUJMRUQpICYmIGRlZmluZWQoSEFMX0RTSV9NT0RVTEVfRU5BQkxFRCkKKwogI2lmIGRlZmluZWQgKExUREMpICYmIGRlZmluZWQgKERTSSkKIAogLyoqIEBkZWZncm91cCBMVERDRXggTFREQ0V4CkBAIC0zMSw4ICszMiw2IEBACiAgICogQHsKICAgKi8KIAotI2lmIGRlZmluZWQoSEFMX0xURENfTU9EVUxFX0VOQUJMRUQpICYmIGRlZmluZWQoSEFMX0RTSV9NT0RVTEVfRU5BQkxFRCkKLQogLyogUHJpdmF0ZSB0eXBlZGVmIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KIC8qIFByaXZhdGUgZGVmaW5lIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAvKiBQcml2YXRlIG1hY3JvIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwpAQCAtMTM0LDE2ICsxMzMsMTQgQEAKICAgKiBAfQogICAqLwogCi0jZW5kaWYgLyogSEFMX0xUQ0RfTU9EVUxFX0VOQUJMRUQgJiYgSEFMX0RTSV9NT0RVTEVfRU5BQkxFRCAqLwotCiAvKioKICAgKiBAfQogICAqLwogCiAjZW5kaWYgLyogTFREQyAmJiBEU0kgKi8KIAorI2VuZGlmIC8qIEhBTF9MVENEX01PRFVMRV9FTkFCTEVEICYmIEhBTF9EU0lfTU9EVUxFX0VOQUJMRUQgKi8KKwogLyoqCiAgICogQH0KICAgKi8KLQotLyoqKioqKioqKioqKioqKioqKioqKioqKiAoQykgQ09QWVJJR0hUIFNUTWljcm9lbGVjdHJvbmljcyAqKioqKkVORCBPRiBGSUxFKioqKi8KZGlmZiAtLWdpdCBhL1NyYy9zdG0zMmY3eHhfaGFsX21kaW9zLmMgYi9TcmMvc3RtMzJmN3h4X2hhbF9tZGlvcy5jCmluZGV4IGIyY2FhYjAuLjY4NWFjOWUgMTAwNjQ0Ci0tLSBhL1NyYy9zdG0zMmY3eHhfaGFsX21kaW9zLmMKKysrIGIvU3JjL3N0bTMyZjd4eF9oYWxfbWRpb3MuYwpAQCAtOCw3ICs4LDE4IEBACiAgICogICAgICAgICAgICsgSW5pdGlhbGl6YXRpb24gYW5kIGRlLWluaXRpYWxpemF0aW9uIGZ1bmN0aW9ucwogICAqICAgICAgICAgICArIElPIG9wZXJhdGlvbiBmdW5jdGlvbnMKICAgKiAgICAgICAgICAgKyBQZXJpcGhlcmFsIENvbnRyb2wgZnVuY3Rpb25zCi0gICogICAgICAgICAgIAorICAqCisgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAqIEBhdHRlbnRpb24KKyAgKgorICAqIENvcHlyaWdodCAoYykgMjAxNyBTVE1pY3JvZWxlY3Ryb25pY3MuCisgICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAgKgorICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgdW5kZXIgdGVybXMgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZQorICAqIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvZnR3YXJlIGNvbXBvbmVudC4KKyAgKiBJZiBubyBMSUNFTlNFIGZpbGUgY29tZXMgd2l0aCB0aGlzIHNvZnR3YXJlLCBpdCBpcyBwcm92aWRlZCBBUy1JUy4KKyAgKgorICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgQHZlcmJhdGltICAgICAgIAogID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgICAgICAgICAgICAgICAgICAgICAgICMjIyMjIEhvdyB0byB1c2UgdGhpcyBkcml2ZXIgIyMjIyMKQEAgLTExMiwxNyArMTIzLDYgQEAKIAogICBAZW5kdmVyYmF0aW0KICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gICogQGF0dGVudGlvbgotICAqCi0gICogPGgyPjxjZW50ZXI+JmNvcHk7IENvcHlyaWdodCAoYykgMjAxNyBTVE1pY3JvZWxlY3Ryb25pY3MuCi0gICogQWxsIHJpZ2h0cyByZXNlcnZlZC48L2NlbnRlcj48L2gyPgotICAqCi0gICogVGhpcyBzb2Z0d2FyZSBjb21wb25lbnQgaXMgbGljZW5zZWQgYnkgU1QgdW5kZXIgQlNEIDMtQ2xhdXNlIGxpY2Vuc2UsCi0gICogdGhlICJMaWNlbnNlIjsgWW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZQotICAqIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdDoKLSAgKiAgICAgICAgICAgICAgICAgICAgICAgIG9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0JTRC0zLUNsYXVzZQotICAqCi0gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAqLwogCiAvKiBJbmNsdWRlcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwpAQCAtODk2LDQgKzg5NiwzIEBACiAgICogQH0KICAgKi8KIAotLyoqKioqKioqKioqKioqKioqKioqKioqKiAoQykgQ09QWVJJR0hUIFNUTWljcm9lbGVjdHJvbmljcyAqKioqKkVORCBPRiBGSUxFKioqKi8KZGlmZiAtLWdpdCBhL1NyYy9zdG0zMmY3eHhfaGFsX21tYy5jIGIvU3JjL3N0bTMyZjd4eF9oYWxfbW1jLmMKaW5kZXggNTcwNThmMS4uZTdjMDA3NCAxMDA2NDQKLS0tIGEvU3JjL3N0bTMyZjd4eF9oYWxfbW1jLmMKKysrIGIvU3JjL3N0bTMyZjd4eF9oYWxfbW1jLmMKQEAgLTEwLDYgKzEwLDE3IEBACiAgICogICAgICAgICAgICsgUGVyaXBoZXJhbCBDb250cm9sIGZ1bmN0aW9ucwogICAqICAgICAgICAgICArIE1NQyBjYXJkIENvbnRyb2wgZnVuY3Rpb25zCiAgICoKKyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICogQGF0dGVudGlvbgorICAqCisgICogQ29weXJpZ2h0IChjKSAyMDE3IFNUTWljcm9lbGVjdHJvbmljcy4KKyAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICAqCisgICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCB1bmRlciB0ZXJtcyB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlCisgICogaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc29mdHdhcmUgY29tcG9uZW50LgorICAqIElmIG5vIExJQ0VOU0UgZmlsZSBjb21lcyB3aXRoIHRoaXMgc29mdHdhcmUsIGl0IGlzIHByb3ZpZGVkIEFTLUlTLgorICAqCisgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICBAdmVyYmF0aW0KICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgICAgICAgICAgICAgICAgICAgICAgICAjIyMjIyBIb3cgdG8gdXNlIHRoaXMgZHJpdmVyICMjIyMjCkBAIC0xOTUsNyArMjA2LDcgQEAKICAgICBUaGUgY29tcGlsYXRpb24gZGVmaW5lIFVTRV9IQUxfTU1DX1JFR0lTVEVSX0NBTExCQUNLUyB3aGVuIHNldCB0byAxCiAgICAgYWxsb3dzIHRoZSB1c2VyIHRvIGNvbmZpZ3VyZSBkeW5hbWljYWxseSB0aGUgZHJpdmVyIGNhbGxiYWNrcy4KIAotICAgIFVzZSBGdW5jdGlvbnMgQHJlZiBIQUxfTU1DX1JlZ2lzdGVyQ2FsbGJhY2soKSB0byByZWdpc3RlciBhIHVzZXIgY2FsbGJhY2ssCisgICAgVXNlIEZ1bmN0aW9ucyBIQUxfTU1DX1JlZ2lzdGVyQ2FsbGJhY2soKSB0byByZWdpc3RlciBhIHVzZXIgY2FsbGJhY2ssCiAgICAgaXQgYWxsb3dzIHRvIHJlZ2lzdGVyIGZvbGxvd2luZyBjYWxsYmFja3M6CiAgICAgICAoKykgVHhDcGx0Q2FsbGJhY2sgOiBjYWxsYmFjayB3aGVuIGEgdHJhbnNtaXNzaW9uIHRyYW5zZmVyIGlzIGNvbXBsZXRlZC4KICAgICAgICgrKSBSeENwbHRDYWxsYmFjayA6IGNhbGxiYWNrIHdoZW4gYSByZWNlcHRpb24gdHJhbnNmZXIgaXMgY29tcGxldGVkLgpAQCAtMjA2LDcgKzIxNyw3IEBACiAgICAgVGhpcyBmdW5jdGlvbiB0YWtlcyBhcyBwYXJhbWV0ZXJzIHRoZSBIQUwgcGVyaXBoZXJhbCBoYW5kbGUsIHRoZSBDYWxsYmFjayBJRAogICAgIGFuZCBhIHBvaW50ZXIgdG8gdGhlIHVzZXIgY2FsbGJhY2sgZnVuY3Rpb24uCiAKLSAgICBVc2UgZnVuY3Rpb24gQHJlZiBIQUxfTU1DX1VuUmVnaXN0ZXJDYWxsYmFjaygpIHRvIHJlc2V0IGEgY2FsbGJhY2sgdG8gdGhlIGRlZmF1bHQKKyAgICBVc2UgZnVuY3Rpb24gSEFMX01NQ19VblJlZ2lzdGVyQ2FsbGJhY2soKSB0byByZXNldCBhIGNhbGxiYWNrIHRvIHRoZSBkZWZhdWx0CiAgICAgd2VhayAoc3VyY2hhcmdlZCkgZnVuY3Rpb24uIEl0IGFsbG93cyB0byByZXNldCBmb2xsb3dpbmcgY2FsbGJhY2tzOgogICAgICAgKCspIFR4Q3BsdENhbGxiYWNrIDogY2FsbGJhY2sgd2hlbiBhIHRyYW5zbWlzc2lvbiB0cmFuc2ZlciBpcyBjb21wbGV0ZWQuCiAgICAgICAoKykgUnhDcGx0Q2FsbGJhY2sgOiBjYWxsYmFjayB3aGVuIGEgcmVjZXB0aW9uIHRyYW5zZmVyIGlzIGNvbXBsZXRlZC4KQEAgLTIxNiwxMiArMjI3LDEyIEBACiAgICAgICAoKykgTXNwRGVJbml0Q2FsbGJhY2sgIDogTU1DIE1zcERlSW5pdC4KICAgICBUaGlzIGZ1bmN0aW9uKSB0YWtlcyBhcyBwYXJhbWV0ZXJzIHRoZSBIQUwgcGVyaXBoZXJhbCBoYW5kbGUgYW5kIHRoZSBDYWxsYmFjayBJRC4KIAotICAgIEJ5IGRlZmF1bHQsIGFmdGVyIHRoZSBAcmVmIEhBTF9NTUNfSW5pdCBhbmQgaWYgdGhlIHN0YXRlIGlzIEhBTF9NTUNfU1RBVEVfUkVTRVQKKyAgICBCeSBkZWZhdWx0LCBhZnRlciB0aGUgSEFMX01NQ19Jbml0IGFuZCBpZiB0aGUgc3RhdGUgaXMgSEFMX01NQ19TVEFURV9SRVNFVAogICAgIGFsbCBjYWxsYmFja3MgYXJlIHJlc2V0IHRvIHRoZSBjb3JyZXNwb25kaW5nIGxlZ2FjeSB3ZWFrIChzdXJjaGFyZ2VkKSBmdW5jdGlvbnMuCiAgICAgRXhjZXB0aW9uIGRvbmUgZm9yIE1zcEluaXQgYW5kIE1zcERlSW5pdCBjYWxsYmFja3MgdGhhdCBhcmUgcmVzcGVjdGl2ZWx5Ci0gICAgcmVzZXQgdG8gdGhlIGxlZ2FjeSB3ZWFrIChzdXJjaGFyZ2VkKSBmdW5jdGlvbnMgaW4gdGhlIEByZWYgSEFMX01NQ19Jbml0Ci0gICAgYW5kIEByZWYgIEhBTF9NTUNfRGVJbml0IG9ubHkgd2hlbiB0aGVzZSBjYWxsYmFja3MgYXJlIG51bGwgKG5vdCByZWdpc3RlcmVkIGJlZm9yZWhhbmQpLgotICAgIElmIG5vdCwgTXNwSW5pdCBvciBNc3BEZUluaXQgYXJlIG5vdCBudWxsLCB0aGUgQHJlZiBIQUxfTU1DX0luaXQgYW5kIEByZWYgSEFMX01NQ19EZUluaXQKKyAgICByZXNldCB0byB0aGUgbGVnYWN5IHdlYWsgKHN1cmNoYXJnZWQpIGZ1bmN0aW9ucyBpbiB0aGUgSEFMX01NQ19Jbml0CisgICAgYW5kICBIQUxfTU1DX0RlSW5pdCBvbmx5IHdoZW4gdGhlc2UgY2FsbGJhY2tzIGFyZSBudWxsIChub3QgcmVnaXN0ZXJlZCBiZWZvcmVoYW5kKS4KKyAgICBJZiBub3QsIE1zcEluaXQgb3IgTXNwRGVJbml0IGFyZSBub3QgbnVsbCwgdGhlIEhBTF9NTUNfSW5pdCBhbmQgSEFMX01NQ19EZUluaXQKICAgICBrZWVwIGFuZCB1c2UgdGhlIHVzZXIgTXNwSW5pdC9Nc3BEZUluaXQgY2FsbGJhY2tzIChyZWdpc3RlcmVkIGJlZm9yZWhhbmQpCiAKICAgICBDYWxsYmFja3MgY2FuIGJlIHJlZ2lzdGVyZWQvdW5yZWdpc3RlcmVkIGluIFJFQURZIHN0YXRlIG9ubHkuCkBAIC0yMjksOCArMjQwLDggQEAKICAgICBpbiBSRUFEWSBvciBSRVNFVCBzdGF0ZSwgdGh1cyByZWdpc3RlcmVkICh1c2VyKSBNc3BJbml0L0RlSW5pdCBjYWxsYmFja3MgY2FuIGJlIHVzZWQKICAgICBkdXJpbmcgdGhlIEluaXQvRGVJbml0LgogICAgIEluIHRoYXQgY2FzZSBmaXJzdCByZWdpc3RlciB0aGUgTXNwSW5pdC9Nc3BEZUluaXQgdXNlciBjYWxsYmFja3MKLSAgICB1c2luZyBAcmVmIEhBTF9NTUNfUmVnaXN0ZXJDYWxsYmFjayBiZWZvcmUgY2FsbGluZyBAcmVmIEhBTF9NTUNfRGVJbml0Ci0gICAgb3IgQHJlZiBIQUxfTU1DX0luaXQgZnVuY3Rpb24uCisgICAgdXNpbmcgSEFMX01NQ19SZWdpc3RlckNhbGxiYWNrIGJlZm9yZSBjYWxsaW5nIEhBTF9NTUNfRGVJbml0CisgICAgb3IgSEFMX01NQ19Jbml0IGZ1bmN0aW9uLgogCiAgICAgV2hlbiBUaGUgY29tcGlsYXRpb24gZGVmaW5lIFVTRV9IQUxfTU1DX1JFR0lTVEVSX0NBTExCQUNLUyBpcyBzZXQgdG8gMCBvcgogICAgIG5vdCBkZWZpbmVkLCB0aGUgY2FsbGJhY2sgcmVnaXN0ZXJpbmcgZmVhdHVyZSBpcyBub3QgYXZhaWxhYmxlCkBAIC0yMzgsMTcgKzI0OSw2IEBACiAKICAgQGVuZHZlcmJhdGltCiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICAqIEBhdHRlbnRpb24KLSAgKgotICAqIDxoMj48Y2VudGVyPiZjb3B5OyBDb3B5cmlnaHQgKGMpIDIwMTcgU1RNaWNyb2VsZWN0cm9uaWNzLgotICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuPC9jZW50ZXI+PC9oMj4KLSAgKgotICAqIFRoaXMgc29mdHdhcmUgY29tcG9uZW50IGlzIGxpY2Vuc2VkIGJ5IFNUIHVuZGVyIEJTRCAzLUNsYXVzZSBsaWNlbnNlLAotICAqIHRoZSAiTGljZW5zZSI7IFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUKLSAgKiBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQ6Ci0gICogICAgICAgICAgICAgICAgICAgICAgIG9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0JTRC0zLUNsYXVzZQotICAqCi0gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAqLwogCiAvKiBJbmNsdWRlcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwpAQCAtMjcyLDcgKzI3MiwzMCBAQAogLyoqIEBhZGR0b2dyb3VwIE1NQ19Qcml2YXRlX0RlZmluZXMKICAgKiBAewogICAqLworI2lmIGRlZmluZWQgKFZERF9WQUxVRSkgJiYgKFZERF9WQUxVRSA8PSAxOTUwVSkKKyNkZWZpbmUgTU1DX1ZPTFRBR0VfUkFOR0UgICAgICAgICAgICAgICBFTU1DX0xPV19WT0xUQUdFX1JBTkdFCiAKKyNkZWZpbmUgTU1DX0VYVF9DU0RfUFdSX0NMXzI2X0lOREVYICAgICAyMDEKKyNkZWZpbmUgTU1DX0VYVF9DU0RfUFdSX0NMXzUyX0lOREVYICAgICAyMDAKKyNkZWZpbmUgTU1DX0VYVF9DU0RfUFdSX0NMX0REUl81Ml9JTkRFWCAyMzgKKworI2RlZmluZSBNTUNfRVhUX0NTRF9QV1JfQ0xfMjZfUE9TICAgICAgIDgKKyNkZWZpbmUgTU1DX0VYVF9DU0RfUFdSX0NMXzUyX1BPUyAgICAgICAwCisjZGVmaW5lIE1NQ19FWFRfQ1NEX1BXUl9DTF9ERFJfNTJfUE9TICAgMTYKKyNlbHNlCisjZGVmaW5lIE1NQ19WT0xUQUdFX1JBTkdFICAgICAgICAgICAgICAgRU1NQ19ISUdIX1ZPTFRBR0VfUkFOR0UKKworI2RlZmluZSBNTUNfRVhUX0NTRF9QV1JfQ0xfMjZfSU5ERVggICAgIDIwMworI2RlZmluZSBNTUNfRVhUX0NTRF9QV1JfQ0xfNTJfSU5ERVggICAgIDIwMgorI2RlZmluZSBNTUNfRVhUX0NTRF9QV1JfQ0xfRERSXzUyX0lOREVYIDIzOQorCisjZGVmaW5lIE1NQ19FWFRfQ1NEX1BXUl9DTF8yNl9QT1MgICAgICAgMjQKKyNkZWZpbmUgTU1DX0VYVF9DU0RfUFdSX0NMXzUyX1BPUyAgICAgICAxNgorI2RlZmluZSBNTUNfRVhUX0NTRF9QV1JfQ0xfRERSXzUyX1BPUyAgIDI0CisjZW5kaWYKKworLyogRnJlcXVlbmNpZXMgdXNlZCBpbiB0aGUgZHJpdmVyIGZvciBjbG9jayBkaXZpZGVyIGNhbGN1bGF0aW9uICovCisjZGVmaW5lIE1NQ19JTklUX0ZSRVEgICAgICAgICAgICAgICAgICAgNDAwMDAwVSAgIC8qIEluaXRhbGl6YXRpb24gcGhhc2UgOiA0MDAga0h6IG1heCAqLwogLyoqCiAgICogQH0KICAgKi8KQEAgLTI5Niw2ICszMTksNyBAQAogc3RhdGljIHZvaWQgICAgIE1NQ19ETUFFcnJvcihETUFfSGFuZGxlVHlwZURlZiAqaGRtYSk7CiBzdGF0aWMgdm9pZCAgICAgTU1DX0RNQVR4QWJvcnQoRE1BX0hhbmRsZVR5cGVEZWYgKmhkbWEpOwogc3RhdGljIHZvaWQgICAgIE1NQ19ETUFSeEFib3J0KERNQV9IYW5kbGVUeXBlRGVmICpoZG1hKTsKK3N0YXRpYyB1aW50MzJfdCBNTUNfUHdyQ2xhc3NVcGRhdGUoTU1DX0hhbmRsZVR5cGVEZWYgKmhtbWMsIHVpbnQzMl90IFdpZGUpOwogLyoqCiAgICogQH0KICAgKi8KQEAgLTM3NSw3ICszOTksNyBAQAogICB9CiAKICAgLyogSW5pdGlhbGl6ZSB0aGUgZXJyb3IgY29kZSAqLwotICBobW1jLT5FcnJvckNvZGUgPSBIQUxfRE1BX0VSUk9SX05PTkU7CisgIGhtbWMtPkVycm9yQ29kZSA9IEhBTF9NTUNfRVJST1JfTk9ORTsKIAogICAvKiBJbml0aWFsaXplIHRoZSBNTUMgb3BlcmF0aW9uICovCiAgIGhtbWMtPkNvbnRleHQgPSBNTUNfQ09OVEVYVF9OT05FOwpAQCAtMzgzLDYgKzQwNywxNSBAQAogICAvKiBJbml0aWFsaXplIHRoZSBNTUMgc3RhdGUgKi8KICAgaG1tYy0+U3RhdGUgPSBIQUxfTU1DX1NUQVRFX1JFQURZOwogCisgIC8qIENvbmZpZ3VyZSBidXMgd2lkdGggKi8KKyAgaWYgKGhtbWMtPkluaXQuQnVzV2lkZSAhPSBTRE1NQ19CVVNfV0lERV8xQikKKyAgeworICAgIGlmIChIQUxfTU1DX0NvbmZpZ1dpZGVCdXNPcGVyYXRpb24oaG1tYywgaG1tYy0+SW5pdC5CdXNXaWRlKSAhPSBIQUxfT0spCisgICAgeworICAgICAgcmV0dXJuIEhBTF9FUlJPUjsKKyAgICB9CisgIH0KKwogICByZXR1cm4gSEFMX09LOwogfQogCkBAIC00MjcsNiArNDYwLDkgQEAKICAgLyogRW5hYmxlIE1NQyBDbG9jayAqLwogICBfX0hBTF9NTUNfRU5BQkxFKGhtbWMpOwogCisgIC8qIFJlcXVpcmVkIHBvd2VyIHVwIHdhaXRpbmcgdGltZSBiZWZvcmUgc3RhcnRpbmcgdGhlIE1NQyBpbml0aWFsaXphdGlvbiAgc2VxdWVuY2UgKi8KKyAgSEFMX0RlbGF5KDIpOworCiAgIC8qIElkZW50aWZ5IGNhcmQgb3BlcmF0aW5nIHZvbHRhZ2UgKi8KICAgZXJyb3JzdGF0ZSA9IE1NQ19Qb3dlck9OKGhtbWMpOwogICBpZihlcnJvcnN0YXRlICE9IEhBTF9NTUNfRVJST1JfTk9ORSkKQEAgLTExMzUsNyArMTE3MSw3IEBACiAKICAgaWYoaG1tYy0+U3RhdGUgPT0gSEFMX01NQ19TVEFURV9SRUFEWSkKICAgewotICAgIGhtbWMtPkVycm9yQ29kZSA9IEhBTF9ETUFfRVJST1JfTk9ORTsKKyAgICBobW1jLT5FcnJvckNvZGUgPSBIQUxfTU1DX0VSUk9SX05PTkU7CiAKICAgICBpZigoQmxvY2tBZGQgKyBOdW1iZXJPZkJsb2NrcykgPiAoaG1tYy0+TW1jQ2FyZC5Mb2dCbG9ja05icikpCiAgICAgewpAQCAtMjA4MSw2ICsyMTE3LDEyMiBAQAogfQogCiAvKioKKyAgKiBAYnJpZWYgIFJldHVybnMgaW5mb3JtYXRpb24gdGhlIGluZm9ybWF0aW9uIG9mIHRoZSBjYXJkIHdoaWNoIGFyZSBzdG9yZWQgb24KKyAgKiAgICAgICAgIHRoZSBFeHRlbmRlZCBDU0QgcmVnaXN0ZXIuCisgICogQHBhcmFtICBobW1jIFBvaW50ZXIgdG8gTU1DIGhhbmRsZQorICAqIEBwYXJhbSAgcEV4dENTRCBQb2ludGVyIHRvIGEgbWVtb3J5IGFyZWEgKDUxMiBieXRlcykgdGhhdCBjb250YWlucyBhbGwgCisgICogICAgICAgICBFeHRlbmRlZCBDU0QgcmVnaXN0ZXIgcGFyYW1ldGVycworICAqIEBwYXJhbSAgVGltZW91dCBTcGVjaWZ5IHRpbWVvdXQgdmFsdWUKKyAgKiBAcmV0dmFsIEhBTCBzdGF0dXMKKyAgKi8KK0hBTF9TdGF0dXNUeXBlRGVmIEhBTF9NTUNfR2V0Q2FyZEV4dENTRChNTUNfSGFuZGxlVHlwZURlZiAqaG1tYywgdWludDMyX3QgKnBFeHRDU0QsIHVpbnQzMl90IFRpbWVvdXQpCit7CisgIFNETU1DX0RhdGFJbml0VHlwZURlZiBjb25maWc7CisgIHVpbnQzMl90IGVycm9yc3RhdGU7CisgIHVpbnQzMl90IHRpY2tzdGFydCA9IEhBTF9HZXRUaWNrKCk7CisgIHVpbnQzMl90IGNvdW50OworICB1aW50MzJfdCAqdG1wX2J1ZjsKKworICBpZihOVUxMID09IHBFeHRDU0QpCisgIHsKKyAgICBobW1jLT5FcnJvckNvZGUgfD0gSEFMX01NQ19FUlJPUl9QQVJBTTsKKyAgICByZXR1cm4gSEFMX0VSUk9SOworICB9CisKKyAgaWYoaG1tYy0+U3RhdGUgPT0gSEFMX01NQ19TVEFURV9SRUFEWSkKKyAgeworICAgIGhtbWMtPkVycm9yQ29kZSA9IEhBTF9NTUNfRVJST1JfTk9ORTsKKworICAgIGhtbWMtPlN0YXRlID0gSEFMX01NQ19TVEFURV9CVVNZOworCisgICAgLyogSW5pdGlhbGl6ZSBkYXRhIGNvbnRyb2wgcmVnaXN0ZXIgKi8KKyAgICBobW1jLT5JbnN0YW5jZS0+RENUUkwgPSAwOworCisgICAgLyogSW5pdGlhaXplIHRoZSBkZXN0aW5hdGlvbiBwb2ludGVyICovCisgICAgdG1wX2J1ZiA9IHBFeHRDU0Q7CisKKyAgICAvKiBDb25maWd1cmUgdGhlIE1NQyBEUFNNIChEYXRhIFBhdGggU3RhdGUgTWFjaGluZSkgKi8KKyAgICBjb25maWcuRGF0YVRpbWVPdXQgICA9IFNETU1DX0RBVEFUSU1FT1VUOworICAgIGNvbmZpZy5EYXRhTGVuZ3RoICAgID0gNTEyOworICAgIGNvbmZpZy5EYXRhQmxvY2tTaXplID0gU0RNTUNfREFUQUJMT0NLX1NJWkVfNTEyQjsKKyAgICBjb25maWcuVHJhbnNmZXJEaXIgICA9IFNETU1DX1RSQU5TRkVSX0RJUl9UT19TRE1NQzsKKyAgICBjb25maWcuVHJhbnNmZXJNb2RlICA9IFNETU1DX1RSQU5TRkVSX01PREVfQkxPQ0s7CisgICAgY29uZmlnLkRQU00gICAgICAgICAgPSBTRE1NQ19EUFNNX0VOQUJMRTsKKyAgICAodm9pZClTRE1NQ19Db25maWdEYXRhKGhtbWMtPkluc3RhbmNlLCAmY29uZmlnKTsKKworICAgIC8qIFNlbmQgRXh0Q1NEIFJlYWQgY29tbWFuZCB0byBDYXJkICovCisgICAgZXJyb3JzdGF0ZSA9IFNETU1DX0NtZFNlbmRFWFRDU0QoaG1tYy0+SW5zdGFuY2UsIDApOworICAgIGlmKGVycm9yc3RhdGUgIT0gSEFMX01NQ19FUlJPUl9OT05FKQorICAgIHsKKyAgICAgIC8qIENsZWFyIGFsbCB0aGUgc3RhdGljIGZsYWdzICovCisgICAgICBfX0hBTF9NTUNfQ0xFQVJfRkxBRyhobW1jLCBTRE1NQ19TVEFUSUNfRkxBR1MpOworICAgICAgaG1tYy0+RXJyb3JDb2RlIHw9IGVycm9yc3RhdGU7CisgICAgICBobW1jLT5TdGF0ZSA9IEhBTF9NTUNfU1RBVEVfUkVBRFk7CisgICAgICByZXR1cm4gSEFMX0VSUk9SOworICAgIH0KKworICAgIC8qIFBvbGwgb24gU0RNTUMgZmxhZ3MgKi8KKyAgICB3aGlsZSghX19IQUxfTU1DX0dFVF9GTEFHKGhtbWMsIFNETU1DX0ZMQUdfUlhPVkVSUiB8IFNETU1DX0ZMQUdfRENSQ0ZBSUwgfCBTRE1NQ19GTEFHX0RUSU1FT1VUIHwgU0RNTUNfRkxBR19EQVRBRU5EKSkKKyAgICB7CisgICAgICBpZihfX0hBTF9NTUNfR0VUX0ZMQUcoaG1tYywgU0RNTUNfRkxBR19SWEZJRk9IRikpCisgICAgICB7CisgICAgICAgIC8qIFJlYWQgZGF0YSBmcm9tIFNETU1DIFJ4IEZJRk8gKi8KKyAgICAgICAgZm9yKGNvdW50ID0gMFU7IGNvdW50IDwgOFU7IGNvdW50KyspCisgICAgICAgIHsKKyAgICAgICAgICAqdG1wX2J1ZiA9IFNETU1DX1JlYWRGSUZPKGhtbWMtPkluc3RhbmNlKTsKKyAgICAgICAgICB0bXBfYnVmKys7CisgICAgICAgIH0KKyAgICAgIH0KKworICAgICAgaWYoKChIQUxfR2V0VGljaygpLXRpY2tzdGFydCkgPj0gIFRpbWVvdXQpIHx8IChUaW1lb3V0ID09IDBVKSkKKyAgICAgIHsKKyAgICAgICAgLyogQ2xlYXIgYWxsIHRoZSBzdGF0aWMgZmxhZ3MgKi8KKyAgICAgICAgX19IQUxfTU1DX0NMRUFSX0ZMQUcoaG1tYywgU0RNTUNfU1RBVElDX0ZMQUdTKTsKKyAgICAgICAgaG1tYy0+RXJyb3JDb2RlIHw9IEhBTF9NTUNfRVJST1JfVElNRU9VVDsKKyAgICAgICAgaG1tYy0+U3RhdGU9IEhBTF9NTUNfU1RBVEVfUkVBRFk7CisgICAgICAgIHJldHVybiBIQUxfVElNRU9VVDsKKyAgICAgIH0KKyAgICB9CisKKyAgICAvKiBHZXQgZXJyb3Igc3RhdGUgKi8KKyAgICBpZihfX0hBTF9NTUNfR0VUX0ZMQUcoaG1tYywgU0RNTUNfRkxBR19EVElNRU9VVCkpCisgICAgeworICAgICAgLyogQ2xlYXIgYWxsIHRoZSBzdGF0aWMgZmxhZ3MgKi8KKyAgICAgIF9fSEFMX01NQ19DTEVBUl9GTEFHKGhtbWMsIFNETU1DX1NUQVRJQ19GTEFHUyk7CisgICAgICBobW1jLT5FcnJvckNvZGUgfD0gSEFMX01NQ19FUlJPUl9EQVRBX1RJTUVPVVQ7CisgICAgICBobW1jLT5TdGF0ZSA9IEhBTF9NTUNfU1RBVEVfUkVBRFk7CisgICAgICByZXR1cm4gSEFMX0VSUk9SOworICAgIH0KKyAgICBlbHNlIGlmKF9fSEFMX01NQ19HRVRfRkxBRyhobW1jLCBTRE1NQ19GTEFHX0RDUkNGQUlMKSkKKyAgICB7CisgICAgICAvKiBDbGVhciBhbGwgdGhlIHN0YXRpYyBmbGFncyAqLworICAgICAgX19IQUxfTU1DX0NMRUFSX0ZMQUcoaG1tYywgU0RNTUNfU1RBVElDX0ZMQUdTKTsKKyAgICAgIGhtbWMtPkVycm9yQ29kZSB8PSBIQUxfTU1DX0VSUk9SX0RBVEFfQ1JDX0ZBSUw7CisgICAgICBobW1jLT5TdGF0ZSA9IEhBTF9NTUNfU1RBVEVfUkVBRFk7CisgICAgICByZXR1cm4gSEFMX0VSUk9SOworICAgIH0KKyAgICBlbHNlIGlmKF9fSEFMX01NQ19HRVRfRkxBRyhobW1jLCBTRE1NQ19GTEFHX1JYT1ZFUlIpKQorICAgIHsKKyAgICAgIC8qIENsZWFyIGFsbCB0aGUgc3RhdGljIGZsYWdzICovCisgICAgICBfX0hBTF9NTUNfQ0xFQVJfRkxBRyhobW1jLCBTRE1NQ19TVEFUSUNfRkxBR1MpOworICAgICAgaG1tYy0+RXJyb3JDb2RlIHw9IEhBTF9NTUNfRVJST1JfUlhfT1ZFUlJVTjsKKyAgICAgIGhtbWMtPlN0YXRlID0gSEFMX01NQ19TVEFURV9SRUFEWTsKKyAgICAgIHJldHVybiBIQUxfRVJST1I7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAvKiBOb3RoaW5nIHRvIGRvICovCisgICAgfQorCisgICAgLyogQ2xlYXIgYWxsIHRoZSBzdGF0aWMgZmxhZ3MgKi8KKyAgICBfX0hBTF9NTUNfQ0xFQVJfRkxBRyhobW1jLCBTRE1NQ19TVEFUSUNfREFUQV9GTEFHUyk7CisgICAgaG1tYy0+U3RhdGUgPSBIQUxfTU1DX1NUQVRFX1JFQURZOworICB9CisKKyAgcmV0dXJuIEhBTF9PSzsKK30KKworLyoqCiAgICogQGJyaWVmICBFbmFibGVzIHdpZGUgYnVzIG9wZXJhdGlvbiBmb3IgdGhlIHJlcXVlc3RlZCBjYXJkIGlmIHN1cHBvcnRlZCBieQogICAqICAgICAgICAgY2FyZC4KICAgKiBAcGFyYW0gIGhtbWM6IFBvaW50ZXIgdG8gTU1DIGhhbmRsZQpAQCAtMjA5MywxMCArMjI0NSwxMCBAQAogICAqLwogSEFMX1N0YXR1c1R5cGVEZWYgSEFMX01NQ19Db25maWdXaWRlQnVzT3BlcmF0aW9uKE1NQ19IYW5kbGVUeXBlRGVmICpobW1jLCB1aW50MzJfdCBXaWRlTW9kZSkKIHsKLSAgX19JTyB1aW50MzJfdCBjb3VudCA9IDBVOworICB1aW50MzJfdCBjb3VudDsKICAgU0RNTUNfSW5pdFR5cGVEZWYgSW5pdDsKICAgdWludDMyX3QgZXJyb3JzdGF0ZTsKLSAgdWludDMyX3QgcmVzcG9uc2UgPSAwVSwgYnVzeSA9IDBVOworICB1aW50MzJfdCByZXNwb25zZSA9IDBVOwogCiAgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCiAgIGFzc2VydF9wYXJhbShJU19TRE1NQ19CVVNfV0lERShXaWRlTW9kZSkpOwpAQCAtMjEwNCwxMTYgKzIyNTYsODQgQEAKICAgLyogQ2hhbmdlIFN0YXRlICovCiAgIGhtbWMtPlN0YXRlID0gSEFMX01NQ19TVEFURV9CVVNZOwogCi0gIC8qIFVwZGF0ZSBDbG9jayBmb3IgQnVzIG1vZGUgdXBkYXRlICovCi0gIEluaXQuQ2xvY2tFZGdlICAgICAgICAgICA9IFNETU1DX0NMT0NLX0VER0VfUklTSU5HOwotICBJbml0LkNsb2NrQnlwYXNzICAgICAgICAgPSBTRE1NQ19DTE9DS19CWVBBU1NfRElTQUJMRTsKLSAgSW5pdC5DbG9ja1Bvd2VyU2F2ZSAgICAgID0gU0RNTUNfQ0xPQ0tfUE9XRVJfU0FWRV9ESVNBQkxFOwotICBJbml0LkJ1c1dpZGUgICAgICAgICAgICAgPSBXaWRlTW9kZTsKLSAgSW5pdC5IYXJkd2FyZUZsb3dDb250cm9sID0gU0RNTUNfSEFSRFdBUkVfRkxPV19DT05UUk9MX0RJU0FCTEU7Ci0gIEluaXQuQ2xvY2tEaXYgICAgICAgICAgICA9IFNETU1DX0lOSVRfQ0xLX0RJVjsKLSAgLyogSW5pdGlhbGl6ZSBTRE1NQyovCi0gICh2b2lkKVNETU1DX0luaXQoaG1tYy0+SW5zdGFuY2UsIEluaXQpOyAKKyAgZXJyb3JzdGF0ZSA9IE1NQ19Qd3JDbGFzc1VwZGF0ZShobW1jLCBXaWRlTW9kZSk7CiAKLSAgaWYoV2lkZU1vZGUgPT0gU0RNTUNfQlVTX1dJREVfOEIpCisgIGlmKGVycm9yc3RhdGUgPT0gSEFMX01NQ19FUlJPUl9OT05FKQogICB7Ci0gICAgZXJyb3JzdGF0ZSA9IFNETU1DX0NtZFN3aXRjaChobW1jLT5JbnN0YW5jZSwgMHgwM0I3MDIwMFUpOwotICAgIGlmKGVycm9yc3RhdGUgIT0gSEFMX01NQ19FUlJPUl9OT05FKQorICAgIGlmKFdpZGVNb2RlID09IFNETU1DX0JVU19XSURFXzhCKQogICAgIHsKLSAgICAgIGhtbWMtPkVycm9yQ29kZSB8PSBlcnJvcnN0YXRlOworICAgICAgZXJyb3JzdGF0ZSA9IFNETU1DX0NtZFN3aXRjaChobW1jLT5JbnN0YW5jZSwgMHgwM0I3MDIwMFUpOwogICAgIH0KLSAgfQotICBlbHNlIGlmKFdpZGVNb2RlID09IFNETU1DX0JVU19XSURFXzRCKQotICB7Ci0gICAgZXJyb3JzdGF0ZSA9IFNETU1DX0NtZFN3aXRjaChobW1jLT5JbnN0YW5jZSwgMHgwM0I3MDEwMFUpOwotICAgIGlmKGVycm9yc3RhdGUgIT0gSEFMX01NQ19FUlJPUl9OT05FKQorICAgIGVsc2UgaWYoV2lkZU1vZGUgPT0gU0RNTUNfQlVTX1dJREVfNEIpCiAgICAgewotICAgICAgaG1tYy0+RXJyb3JDb2RlIHw9IGVycm9yc3RhdGU7CisgICAgICBlcnJvcnN0YXRlID0gU0RNTUNfQ21kU3dpdGNoKGhtbWMtPkluc3RhbmNlLCAweDAzQjcwMTAwVSk7CiAgICAgfQotICB9Ci0gIGVsc2UgaWYoV2lkZU1vZGUgPT0gU0RNTUNfQlVTX1dJREVfMUIpCi0gIHsKLSAgICBlcnJvcnN0YXRlID0gU0RNTUNfQ21kU3dpdGNoKGhtbWMtPkluc3RhbmNlLCAweDAzQjcwMDAwVSk7Ci0gICAgaWYoZXJyb3JzdGF0ZSAhPSBIQUxfTU1DX0VSUk9SX05PTkUpCisgICAgZWxzZSBpZihXaWRlTW9kZSA9PSBTRE1NQ19CVVNfV0lERV8xQikKICAgICB7Ci0gICAgICBobW1jLT5FcnJvckNvZGUgfD0gZXJyb3JzdGF0ZTsKKyAgICAgIGVycm9yc3RhdGUgPSBTRE1NQ19DbWRTd2l0Y2goaG1tYy0+SW5zdGFuY2UsIDB4MDNCNzAwMDBVKTsKICAgICB9Ci0gIH0KLSAgZWxzZQotICB7Ci0gICAgLyogV2lkZU1vZGUgaXMgbm90IGEgdmFsaWQgYXJndW1lbnQqLwotICAgIGhtbWMtPkVycm9yQ29kZSB8PSBIQUxfTU1DX0VSUk9SX1BBUkFNOwotICB9Ci0KLSAgLyogQ2hlY2sgZm9yIHN3aXRjaCBlcnJvciBhbmQgdmlvbGF0aW9uIG9mIHRoZSB0cmlhbCBudW1iZXIgb2Ygc2VuZGluZyBDTUQgMTMgKi8KLSAgd2hpbGUoYnVzeSA9PSAwVSkKLSAgewotICAgIGlmKGNvdW50ID09IFNETU1DX01BWF9UUklBTCkKKyAgICBlbHNlCiAgICAgewotICAgICAgaG1tYy0+U3RhdGUgPSBIQUxfTU1DX1NUQVRFX1JFQURZOwotICAgICAgaG1tYy0+RXJyb3JDb2RlIHw9IEhBTF9NTUNfRVJST1JfUkVRVUVTVF9OT1RfQVBQTElDQUJMRTsKLSAgICAgIHJldHVybiBIQUxfRVJST1I7Ci0gICAgfQotICAgIGNvdW50Kys7Ci0KLSAgICAvKiBXaGlsZSBjYXJkIGlzIG5vdCByZWFkeSBmb3IgZGF0YSBhbmQgdHJpYWwgbnVtYmVyIGZvciBzZW5kaW5nIENNRDEzIGlzIG5vdCBleGNlZWRlZCAqLwotICAgIGVycm9yc3RhdGUgPSBTRE1NQ19DbWRTZW5kU3RhdHVzKGhtbWMtPkluc3RhbmNlLCAodWludDMyX3QpKCgodWludDMyX3QpaG1tYy0+TW1jQ2FyZC5SZWxDYXJkQWRkKSA8PCAxNlUpKTsKLSAgICBpZihlcnJvcnN0YXRlICE9IEhBTF9NTUNfRVJST1JfTk9ORSkKLSAgICB7Ci0gICAgICBobW1jLT5FcnJvckNvZGUgfD0gZXJyb3JzdGF0ZTsKKyAgICAgIC8qIFdpZGVNb2RlIGlzIG5vdCBhIHZhbGlkIGFyZ3VtZW50Ki8KKyAgICAgIGVycm9yc3RhdGUgPSBIQUxfTU1DX0VSUk9SX1BBUkFNOwogICAgIH0KIAotICAgIC8qIEdldCBjb21tYW5kIHJlc3BvbnNlICovCi0gICAgcmVzcG9uc2UgPSBTRE1NQ19HZXRSZXNwb25zZShobW1jLT5JbnN0YW5jZSwgU0RNTUNfUkVTUDEpOwotCi0gICAgLyogR2V0IG9wZXJhdGluZyB2b2x0YWdlKi8KLSAgICBidXN5ID0gKCgocmVzcG9uc2UgPj4gN1UpID09IDFVKSA/IDBVIDogMVUpOwotICB9Ci0KLSAgLyogV2hpbGUgY2FyZCBpcyBub3QgcmVhZHkgZm9yIGRhdGEgYW5kIHRyaWFsIG51bWJlciBmb3Igc2VuZGluZyBDTUQxMyBpcyBub3QgZXhjZWVkZWQgKi8KLSAgY291bnQgPSBTRE1NQ19EQVRBVElNRU9VVDsKLSAgd2hpbGUoKHJlc3BvbnNlICYgMHgwMDAwMDEwMFUpID09IDBVKQotICB7Ci0gICAgaWYoY291bnQgPT0gMFUpCisgICAgLyogQ2hlY2sgZm9yIHN3aXRjaCBlcnJvciBhbmQgdmlvbGF0aW9uIG9mIHRoZSB0cmlhbCBudW1iZXIgb2Ygc2VuZGluZyBDTUQgMTMgKi8KKyAgICBpZihlcnJvcnN0YXRlID09IEhBTF9NTUNfRVJST1JfTk9ORSkKICAgICB7Ci0gICAgICBobW1jLT5TdGF0ZSA9IEhBTF9NTUNfU1RBVEVfUkVBRFk7Ci0gICAgICBobW1jLT5FcnJvckNvZGUgfD0gSEFMX01NQ19FUlJPUl9SRVFVRVNUX05PVF9BUFBMSUNBQkxFOwotICAgICAgcmV0dXJuIEhBTF9FUlJPUjsKKyAgICAgIC8qIFdoaWxlIGNhcmQgaXMgbm90IHJlYWR5IGZvciBkYXRhIGFuZCB0cmlhbCBudW1iZXIgZm9yIHNlbmRpbmcgQ01EMTMgaXMgbm90IGV4Y2VlZGVkICovCisgICAgICBjb3VudCA9IFNETU1DX01BWF9UUklBTDsKKyAgICAgIGRvCisgICAgICB7CisgICAgICAgIGVycm9yc3RhdGUgPSBTRE1NQ19DbWRTZW5kU3RhdHVzKGhtbWMtPkluc3RhbmNlLCAodWludDMyX3QpKCgodWludDMyX3QpaG1tYy0+TW1jQ2FyZC5SZWxDYXJkQWRkKSA8PCAxNlUpKTsKKyAgICAgICAgaWYoZXJyb3JzdGF0ZSAhPSBIQUxfTU1DX0VSUk9SX05PTkUpCisgICAgICAgIHsKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgLyogR2V0IGNvbW1hbmQgcmVzcG9uc2UgKi8KKyAgICAgICAgcmVzcG9uc2UgPSBTRE1NQ19HZXRSZXNwb25zZShobW1jLT5JbnN0YW5jZSwgU0RNTUNfUkVTUDEpOworICAgICAgICBjb3VudC0tOworICAgICAgfXdoaWxlKCgocmVzcG9uc2UgJiAweDEwMFUpID09IDBVKSAmJiAoY291bnQgIT0gMFUpKTsKKworICAgICAgLyogQ2hlY2sgdGhlIHN0YXR1cyBhZnRlciB0aGUgc3dpdGNoIGNvbW1hbmQgZXhlY3V0aW9uICovCisgICAgICBpZiAoKGNvdW50ICE9IDBVKSAmJiAoZXJyb3JzdGF0ZSA9PSBIQUxfTU1DX0VSUk9SX05PTkUpKQorICAgICAgeworICAgICAgICAvKiBDaGVjayB0aGUgYml0IFNXSVRDSF9FUlJPUiBvZiB0aGUgZGV2aWNlIHN0YXR1cyAqLworICAgICAgICBpZiAoKHJlc3BvbnNlICYgMHg4MFUpICE9IDBVKQorICAgICAgICB7CisgICAgICAgICAgZXJyb3JzdGF0ZSA9IFNETU1DX0VSUk9SX0dFTkVSQUxfVU5LTk9XTl9FUlI7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgLyogQ29uZmlndXJlIHRoZSBTRE1NQyBwZXJpcGhlcmFsICovCisgICAgICAgICAgSW5pdCA9IGhtbWMtPkluaXQ7CisgICAgICAgICAgSW5pdC5CdXNXaWRlID0gV2lkZU1vZGU7CisgICAgICAgICAgKHZvaWQpU0RNTUNfSW5pdChobW1jLT5JbnN0YW5jZSwgSW5pdCk7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIGVsc2UgaWYgKGNvdW50ID09IDBVKQorICAgICAgeworICAgICAgICBlcnJvcnN0YXRlID0gU0RNTUNfRVJST1JfVElNRU9VVDsKKyAgICAgIH0KKyAgICAgIGVsc2UKKyAgICAgIHsKKyAgICAgICAgLyogTm90aGluZyB0byBkbyAqLworICAgICAgfQogICAgIH0KLSAgICBjb3VudC0tOwotCi0gICAgLyogV2hpbGUgY2FyZCBpcyBub3QgcmVhZHkgZm9yIGRhdGEgYW5kIHRyaWFsIG51bWJlciBmb3Igc2VuZGluZyBDTUQxMyBpcyBub3QgZXhjZWVkZWQgKi8KLSAgICBlcnJvcnN0YXRlID0gU0RNTUNfQ21kU2VuZFN0YXR1cyhobW1jLT5JbnN0YW5jZSwgKHVpbnQzMl90KSgoKHVpbnQzMl90KWhtbWMtPk1tY0NhcmQuUmVsQ2FyZEFkZCkgPDwgMTZVKSk7Ci0gICAgaWYoZXJyb3JzdGF0ZSAhPSBIQUxfTU1DX0VSUk9SX05PTkUpCi0gICAgewotICAgICAgaG1tYy0+RXJyb3JDb2RlIHw9IGVycm9yc3RhdGU7Ci0gICAgfQotCi0gICAgLyogR2V0IGNvbW1hbmQgcmVzcG9uc2UgKi8KLSAgICByZXNwb25zZSA9IFNETU1DX0dldFJlc3BvbnNlKGhtbWMtPkluc3RhbmNlLCBTRE1NQ19SRVNQMSk7Ci0gIH0KLQotICBpZihobW1jLT5FcnJvckNvZGUgIT0gSEFMX01NQ19FUlJPUl9OT05FKQotICB7Ci0gICAgLyogQ2xlYXIgYWxsIHRoZSBzdGF0aWMgZmxhZ3MgKi8KLSAgICBfX0hBTF9NTUNfQ0xFQVJfRkxBRyhobW1jLCBTRE1NQ19TVEFUSUNfRkxBR1MpOwotICAgIGhtbWMtPlN0YXRlID0gSEFMX01NQ19TVEFURV9SRUFEWTsKLSAgICByZXR1cm4gSEFMX0VSUk9SOwotICB9Ci0gIGVsc2UKLSAgewotICAgIC8qIENvbmZpZ3VyZSB0aGUgU0RNTUMgcGVyaXBoZXJhbCAqLwotICAgIEluaXQuQ2xvY2tFZGdlICAgICAgICAgICA9IGhtbWMtPkluaXQuQ2xvY2tFZGdlOwotICAgIEluaXQuQ2xvY2tCeXBhc3MgICAgICAgICA9IGhtbWMtPkluaXQuQ2xvY2tCeXBhc3M7Ci0gICAgSW5pdC5DbG9ja1Bvd2VyU2F2ZSAgICAgID0gaG1tYy0+SW5pdC5DbG9ja1Bvd2VyU2F2ZTsKLSAgICBJbml0LkJ1c1dpZGUgICAgICAgICAgICAgPSBXaWRlTW9kZTsKLSAgICBJbml0LkhhcmR3YXJlRmxvd0NvbnRyb2wgPSBobW1jLT5Jbml0LkhhcmR3YXJlRmxvd0NvbnRyb2w7Ci0gICAgSW5pdC5DbG9ja0RpdiAgICAgICAgICAgID0gaG1tYy0+SW5pdC5DbG9ja0RpdjsKLSAgICAodm9pZClTRE1NQ19Jbml0KGhtbWMtPkluc3RhbmNlLCBJbml0KTsKICAgfQogCiAgIC8qIENoYW5nZSBTdGF0ZSAqLwogICBobW1jLT5TdGF0ZSA9IEhBTF9NTUNfU1RBVEVfUkVBRFk7CiAKKyAgaWYoZXJyb3JzdGF0ZSAhPSBIQUxfTU1DX0VSUk9SX05PTkUpCisgIHsKKyAgICAvKiBDbGVhciBhbGwgdGhlIHN0YXRpYyBmbGFncyAqLworICAgIF9fSEFMX01NQ19DTEVBUl9GTEFHKGhtbWMsIFNETU1DX1NUQVRJQ19GTEFHUyk7CisgICAgaG1tYy0+RXJyb3JDb2RlIHw9IGVycm9yc3RhdGU7CisgICAgcmV0dXJuIEhBTF9FUlJPUjsKKyAgfQorCiAgIHJldHVybiBIQUxfT0s7CiB9CiAKQEAgLTI1NzQsNyArMjY5NCw4IEBACiB7CiAgIEhBTF9NTUNfQ2FyZENTRFR5cGVEZWYgQ1NEOwogICB1aW50MzJfdCBlcnJvcnN0YXRlOwotICB1aW50MTZfdCBtbWNfcmNhID0gMVU7CisgIHVpbnQxNl90IG1tY19yY2EgPSAyVTsKKyAgTU1DX0luaXRUeXBlRGVmIEluaXQ7CiAKICAgLyogQ2hlY2sgdGhlIHBvd2VyIFN0YXRlICovCiAgIGlmKFNETU1DX0dldFBvd2VyU3RhdGUoaG1tYy0+SW5zdGFuY2UpID09IDBVKQpAQCAtMjU5OCw5ICsyNzE5LDkgQEAKICAgICBobW1jLT5DSURbM1VdID0gU0RNTUNfR2V0UmVzcG9uc2UoaG1tYy0+SW5zdGFuY2UsIFNETU1DX1JFU1A0KTsKICAgfQogCi0gIC8qIFNlbmQgQ01EMyBTRVRfUkVMX0FERFIgd2l0aCBhcmd1bWVudCAwICovCisgIC8qIFNlbmQgQ01EMyBTRVRfUkVMX0FERFIgd2l0aCBSQ0EgPSAyIChzaG91bGQgYmUgZ3JlYXRlciB0aGFuIDEpICovCiAgIC8qIE1NQyBDYXJkIHB1Ymxpc2hlcyBpdHMgUkNBLiAqLwotICBlcnJvcnN0YXRlID0gU0RNTUNfQ21kU2V0UmVsQWRkKGhtbWMtPkluc3RhbmNlLCAmbW1jX3JjYSk7CisgIGVycm9yc3RhdGUgPSBTRE1NQ19DbWRTZXRSZWxBZGRNbWMoaG1tYy0+SW5zdGFuY2UsIG1tY19yY2EpOwogICBpZihlcnJvcnN0YXRlICE9IEhBTF9NTUNfRVJST1JfTk9ORSkKICAgewogICAgIHJldHVybiBlcnJvcnN0YXRlOwpAQCAtMjYyNywxMiArMjc0OCw2IEBACiAgIC8qIEdldCB0aGUgQ2FyZCBDbGFzcyAqLwogICBobW1jLT5NbWNDYXJkLkNsYXNzID0gKFNETU1DX0dldFJlc3BvbnNlKGhtbWMtPkluc3RhbmNlLCBTRE1NQ19SRVNQMikgPj4gMjBVKTsKIAotICAvKiBHZXQgQ1NEIHBhcmFtZXRlcnMgKi8KLSAgaWYgKEhBTF9NTUNfR2V0Q2FyZENTRChobW1jLCAmQ1NEKSAhPSBIQUxfT0spCi0gIHsKLSAgICByZXR1cm4gaG1tYy0+RXJyb3JDb2RlOwotICB9Ci0KICAgLyogU2VsZWN0IHRoZSBDYXJkICovCiAgIGVycm9yc3RhdGUgPSBTRE1NQ19DbWRTZWxEZXNlbChobW1jLT5JbnN0YW5jZSwgKHVpbnQzMl90KSgoKHVpbnQzMl90KWhtbWMtPk1tY0NhcmQuUmVsQ2FyZEFkZCkgPDwgMTZVKSk7CiAgIGlmKGVycm9yc3RhdGUgIT0gSEFMX01NQ19FUlJPUl9OT05FKQpAQCAtMjY0MCw4ICsyNzU1LDM2IEBACiAgICAgcmV0dXJuIGVycm9yc3RhdGU7CiAgIH0KIAotICAvKiBDb25maWd1cmUgU0RNTUMgcGVyaXBoZXJhbCBpbnRlcmZhY2UgKi8KLSAgKHZvaWQpU0RNTUNfSW5pdChobW1jLT5JbnN0YW5jZSwgaG1tYy0+SW5pdCk7CisgIC8qIEdldCBDU0QgcGFyYW1ldGVycyAqLworICBpZiAoSEFMX01NQ19HZXRDYXJkQ1NEKGhtbWMsICZDU0QpICE9IEhBTF9PSykKKyAgeworICAgIHJldHVybiBobW1jLT5FcnJvckNvZGU7CisgIH0KKworICAvKiBXaGlsZSBjYXJkIGlzIG5vdCByZWFkeSBmb3IgZGF0YSBhbmQgdHJpYWwgbnVtYmVyIGZvciBzZW5kaW5nIENNRDEzIGlzIG5vdCBleGNlZWRlZCAqLworICBlcnJvcnN0YXRlID0gU0RNTUNfQ21kU2VuZFN0YXR1cyhobW1jLT5JbnN0YW5jZSwgKHVpbnQzMl90KSgoKHVpbnQzMl90KWhtbWMtPk1tY0NhcmQuUmVsQ2FyZEFkZCkgPDwgMTZVKSk7CisgIGlmKGVycm9yc3RhdGUgIT0gSEFMX01NQ19FUlJPUl9OT05FKQorICB7CisgICAgaG1tYy0+RXJyb3JDb2RlIHw9IGVycm9yc3RhdGU7CisgIH0KKyAgCisgIC8qIEdldCBFeHRlbmRlZCBDU0QgcGFyYW1ldGVycyAqLworICBpZiAoSEFMX01NQ19HZXRDYXJkRXh0Q1NEKGhtbWMsIGhtbWMtPkV4dF9DU0QsIFNETU1DX0RBVEFUSU1FT1VUKSAhPSBIQUxfT0spCisgIHsKKyAgICByZXR1cm4gaG1tYy0+RXJyb3JDb2RlOworICB9CisKKyAgLyogV2hpbGUgY2FyZCBpcyBub3QgcmVhZHkgZm9yIGRhdGEgYW5kIHRyaWFsIG51bWJlciBmb3Igc2VuZGluZyBDTUQxMyBpcyBub3QgZXhjZWVkZWQgKi8KKyAgZXJyb3JzdGF0ZSA9IFNETU1DX0NtZFNlbmRTdGF0dXMoaG1tYy0+SW5zdGFuY2UsICh1aW50MzJfdCkoKCh1aW50MzJfdClobW1jLT5NbWNDYXJkLlJlbENhcmRBZGQpIDw8IDE2VSkpOworICBpZihlcnJvcnN0YXRlICE9IEhBTF9NTUNfRVJST1JfTk9ORSkKKyAgeworICAgIGhtbWMtPkVycm9yQ29kZSB8PSBlcnJvcnN0YXRlOworICB9CisKKyAgLyogQ29uZmlndXJlIHRoZSBTRE1NQyBwZXJpcGhlcmFsICovCisgIEluaXQgPSBobW1jLT5Jbml0OworICBJbml0LkJ1c1dpZGUgPSBTRE1NQ19CVVNfV0lERV8xQjsKKyAgKHZvaWQpU0RNTUNfSW5pdChobW1jLT5JbnN0YW5jZSwgSW5pdCk7CiAKICAgLyogQWxsIGNhcmRzIGFyZSBpbml0aWFsaXplZCAqLwogICByZXR1cm4gSEFMX01NQ19FUlJPUl9OT05FOwpAQCAtMjY3NCw4ICsyODE3LDggQEAKICAgICAgIHJldHVybiBIQUxfTU1DX0VSUk9SX0lOVkFMSURfVk9MVFJBTkdFOwogICAgIH0KIAotICAgIC8qIFNFTkQgQ01EMSBBUFBfQ01EIHdpdGggTU1DX0hJR0hfVk9MVEFHRV9SQU5HRSgweEMwRkY4MDAwKSBhcyBhcmd1bWVudCAqLwotICAgIGVycm9yc3RhdGUgPSBTRE1NQ19DbWRPcENvbmRpdGlvbihobW1jLT5JbnN0YW5jZSwgZU1NQ19ISUdIX1ZPTFRBR0VfUkFOR0UpOworICAgIC8qIFNFTkQgQ01EMSBBUFBfQ01EIHdpdGggdm9sdGFnZSByYW5nZSBhcyBhcmd1bWVudCAqLworICAgIGVycm9yc3RhdGUgPSBTRE1NQ19DbWRPcENvbmRpdGlvbihobW1jLT5JbnN0YW5jZSwgTU1DX1ZPTFRBR0VfUkFOR0UpOwogICAgIGlmKGVycm9yc3RhdGUgIT0gSEFMX01NQ19FUlJPUl9OT05FKQogICAgIHsKICAgICAgIHJldHVybiBIQUxfTU1DX0VSUk9SX1VOU1VQUE9SVEVEX0ZFQVRVUkU7CkBAIC0yOTA3LDYgKzMwNTAsOTMgQEAKIH0KIAogLyoqCisgICogQGJyaWVmICBVcGRhdGUgdGhlIHBvd2VyIGNsYXNzIG9mIHRoZSBkZXZpY2UuCisgICogQHBhcmFtICBobW1jIE1NQyBoYW5kbGUKKyAgKiBAcGFyYW0gIFdpZGUgV2lkZSBvZiBNTUMgYnVzCisgICogQHBhcmFtICBTcGVlZCBTcGVlZCBvZiB0aGUgTU1DIGJ1cworICAqIEByZXR2YWwgTU1DIENhcmQgZXJyb3Igc3RhdGUKKyAgKi8KK3N0YXRpYyB1aW50MzJfdCBNTUNfUHdyQ2xhc3NVcGRhdGUoTU1DX0hhbmRsZVR5cGVEZWYgKmhtbWMsIHVpbnQzMl90IFdpZGUpCit7CisgIHVpbnQzMl90IGNvdW50OworICB1aW50MzJfdCByZXNwb25zZSA9IDBVOworICB1aW50MzJfdCBlcnJvcnN0YXRlID0gSEFMX01NQ19FUlJPUl9OT05FOworICB1aW50MzJfdCBwb3dlcl9jbGFzcywgc3VwcG9ydGVkX3B3cl9jbGFzczsKKworICBpZigoV2lkZSA9PSBTRE1NQ19CVVNfV0lERV84QikgfHwgKFdpZGUgPT0gU0RNTUNfQlVTX1dJREVfNEIpKQorICB7CisgICAgcG93ZXJfY2xhc3MgPSAwVTsgLyogRGVmYXVsdCB2YWx1ZSBhZnRlciBwb3dlci1vbiBvciBzb2Z0d2FyZSByZXNldCAqLworCisgICAgLyogUmVhZCB0aGUgUG93ZXJDbGFzcyBmaWVsZCBvZiB0aGUgRXh0ZW5kZWQgQ1NEIHJlZ2lzdGVyICovCisgICAgaWYoTU1DX1JlYWRFeHRDU0QoaG1tYywgJnBvd2VyX2NsYXNzLCAxODcsIFNETU1DX0RBVEFUSU1FT1VUKSAhPSBIQUxfT0spIC8qIEZpZWxkIFBPV0VSX0NMQVNTIFsxODddICovCisgICAgeworICAgICAgZXJyb3JzdGF0ZSA9IFNETU1DX0VSUk9SX0dFTkVSQUxfVU5LTk9XTl9FUlI7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICBwb3dlcl9jbGFzcyA9ICgocG93ZXJfY2xhc3MgPj4gMjRVKSAmIDB4MDAwMDAwRkZVKTsKKyAgICB9CisKKyAgICAvKiBHZXQgdGhlIHN1cHBvcnRlZCBQb3dlckNsYXNzIGZpZWxkIG9mIHRoZSBFeHRlbmRlZCBDU0QgcmVnaXN0ZXIgKi8KKyAgICAvKiBGaWVsZCBQV1JfQ0xfMjZfeHh4IFsyMDEgb3IgMjAzXSAqLworICAgIHN1cHBvcnRlZF9wd3JfY2xhc3MgPSAoKGhtbWMtPkV4dF9DU0RbKE1NQ19FWFRfQ1NEX1BXUl9DTF8yNl9JTkRFWC80KV0gPj4gTU1DX0VYVF9DU0RfUFdSX0NMXzI2X1BPUykgJiAweDAwMDAwMEZGVSk7CisKKyAgICBpZihlcnJvcnN0YXRlID09IEhBTF9NTUNfRVJST1JfTk9ORSkKKyAgICB7CisgICAgICBpZihXaWRlID09IFNETU1DX0JVU19XSURFXzhCKQorICAgICAgeworICAgICAgICAvKiBCaXQgWzc6NF0gOiBwb3dlciBjbGFzcyBmb3IgOC1iaXRzIGJ1cyBjb25maWd1cmF0aW9uIC0gQml0IFszOjBdIDogcG93ZXIgY2xhc3MgZm9yIDQtYml0cyBidXMgY29uZmlndXJhdGlvbiAqLworICAgICAgICBzdXBwb3J0ZWRfcHdyX2NsYXNzID0gKHN1cHBvcnRlZF9wd3JfY2xhc3MgPj4gNFUpOworICAgICAgfQorCisgICAgICBpZiAoKHBvd2VyX2NsYXNzICYgMHgwRlUpICE9IChzdXBwb3J0ZWRfcHdyX2NsYXNzICYgMHgwRlUpKQorICAgICAgeworICAgICAgICAvKiBOZWVkIHRvIGNoYW5nZSBjdXJyZW50IHBvd2VyIGNsYXNzICovCisgICAgICAgIGVycm9yc3RhdGUgPSBTRE1NQ19DbWRTd2l0Y2goaG1tYy0+SW5zdGFuY2UsICgweDAzQkIwMDAwVSB8ICgoc3VwcG9ydGVkX3B3cl9jbGFzcyAmIDB4MEZVKSA8PCA4VSkpKTsKKworICAgICAgICBpZihlcnJvcnN0YXRlID09IEhBTF9NTUNfRVJST1JfTk9ORSkKKyAgICAgICAgeworICAgICAgICAgIC8qIFdoaWxlIGNhcmQgaXMgbm90IHJlYWR5IGZvciBkYXRhIGFuZCB0cmlhbCBudW1iZXIgZm9yIHNlbmRpbmcgQ01EMTMgaXMgbm90IGV4Y2VlZGVkICovCisgICAgICAgICAgY291bnQgPSBTRE1NQ19NQVhfVFJJQUw7CisgICAgICAgICAgZG8KKyAgICAgICAgICB7CisgICAgICAgICAgICBlcnJvcnN0YXRlID0gU0RNTUNfQ21kU2VuZFN0YXR1cyhobW1jLT5JbnN0YW5jZSwgKHVpbnQzMl90KSgoKHVpbnQzMl90KWhtbWMtPk1tY0NhcmQuUmVsQ2FyZEFkZCkgPDwgMTZVKSk7CisgICAgICAgICAgICBpZihlcnJvcnN0YXRlICE9IEhBTF9NTUNfRVJST1JfTk9ORSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8qIEdldCBjb21tYW5kIHJlc3BvbnNlICovCisgICAgICAgICAgICByZXNwb25zZSA9IFNETU1DX0dldFJlc3BvbnNlKGhtbWMtPkluc3RhbmNlLCBTRE1NQ19SRVNQMSk7CisgICAgICAgICAgICBjb3VudC0tOworICAgICAgICAgIH13aGlsZSgoKHJlc3BvbnNlICYgMHgxMDBVKSA9PSAwVSkgJiYgKGNvdW50ICE9IDBVKSk7CisKKyAgICAgICAgICAvKiBDaGVjayB0aGUgc3RhdHVzIGFmdGVyIHRoZSBzd2l0Y2ggY29tbWFuZCBleGVjdXRpb24gKi8KKyAgICAgICAgICBpZiAoKGNvdW50ICE9IDBVKSAmJiAoZXJyb3JzdGF0ZSA9PSBIQUxfTU1DX0VSUk9SX05PTkUpKQorICAgICAgICAgIHsKKyAgICAgICAgICAgIC8qIENoZWNrIHRoZSBiaXQgU1dJVENIX0VSUk9SIG9mIHRoZSBkZXZpY2Ugc3RhdHVzICovCisgICAgICAgICAgICBpZiAoKHJlc3BvbnNlICYgMHg4MFUpICE9IDBVKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICBlcnJvcnN0YXRlID0gU0RNTUNfRVJST1JfVU5TVVBQT1JURURfRkVBVFVSRTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSBpZiAoY291bnQgPT0gMFUpCisgICAgICAgICAgeworICAgICAgICAgICAgZXJyb3JzdGF0ZSA9IFNETU1DX0VSUk9SX1RJTUVPVVQ7CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UKKyAgICAgICAgICB7CisgICAgICAgICAgICAvKiBOb3RoaW5nIHRvIGRvICovCisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfQorICB9CisKKyAgcmV0dXJuIGVycm9yc3RhdGU7Cit9CisKKy8qKgogICAqIEB9CiAgICovCiAKQEAgLTI5MjEsNSArMzE1MSwzIEBACiAvKioKICAgKiBAfQogICAqLwotCi0vKioqKioqKioqKioqKioqKioqKioqKioqIChDKSBDT1BZUklHSFQgU1RNaWNyb2VsZWN0cm9uaWNzICoqKioqRU5EIE9GIEZJTEUqKioqLwpkaWZmIC0tZ2l0IGEvU3JjL3N0bTMyZjd4eF9oYWxfbXNwX3RlbXBsYXRlLmMgYi9TcmMvc3RtMzJmN3h4X2hhbF9tc3BfdGVtcGxhdGUuYwppbmRleCBmZjZmY2MxLi5jYmQwZjY4IDEwMDY0NAotLS0gYS9TcmMvc3RtMzJmN3h4X2hhbF9tc3BfdGVtcGxhdGUuYworKysgYi9TcmMvc3RtMzJmN3h4X2hhbF9tc3BfdGVtcGxhdGUuYwpAQCAtNSw3ICs1LDE4IEBACiAgICogQGJyaWVmICAgSEFMIE1TUCBtb2R1bGUuCiAgICogICAgICAgICAgVGhpcyBmaWxlIHRlbXBsYXRlIGlzIGxvY2F0ZWQgaW4gdGhlIEhBTCBmb2xkZXIgYW5kIHNob3VsZCBiZSBjb3BpZWQgCiAgICogICAgICAgICAgdG8gdGhlIHVzZXIgZm9sZGVyLgotICAqICAgICAgICAgCisgICoKKyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICogQGF0dGVudGlvbgorICAqCisgICogQ29weXJpZ2h0IChjKSAyMDE3IFNUTWljcm9lbGVjdHJvbmljcy4KKyAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICAqCisgICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCB1bmRlciB0ZXJtcyB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlCisgICogaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc29mdHdhcmUgY29tcG9uZW50LgorICAqIElmIG5vIExJQ0VOU0UgZmlsZSBjb21lcyB3aXRoIHRoaXMgc29mdHdhcmUsIGl0IGlzIHByb3ZpZGVkIEFTLUlTLgorICAqCisgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICBAdmVyYmF0aW0KICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgICAgICAgICAgICAgICAgICAgICAjIyMjIyBIb3cgdG8gdXNlIHRoaXMgZHJpdmVyICMjIyMjCkBAIC0xNCwxNyArMjUsNiBAQAogCiAgIEBlbmR2ZXJiYXRpbQogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAgKiBAYXR0ZW50aW9uCi0gICoKLSAgKiA8aDI+PGNlbnRlcj4mY29weTsgQ29weXJpZ2h0IChjKSAyMDE3IFNUTWljcm9lbGVjdHJvbmljcy4KLSAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLjwvY2VudGVyPjwvaDI+Ci0gICoKLSAgKiBUaGlzIHNvZnR3YXJlIGNvbXBvbmVudCBpcyBsaWNlbnNlZCBieSBTVCB1bmRlciBCU0QgMy1DbGF1c2UgbGljZW5zZSwKLSAgKiB0aGUgIkxpY2Vuc2UiOyBZb3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlCi0gICogTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0OgotICAqICAgICAgICAgICAgICAgICAgICAgICAgb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvQlNELTMtQ2xhdXNlCi0gICoKLSAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgICovIAogCiAvKiBJbmNsdWRlcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwpAQCAtOTgsNCArOTgsNCBAQAogICAqIEB9CiAgICovCiAKLS8qKioqKioqKioqKioqKioqKioqKioqKiogKEMpIENPUFlSSUdIVCBTVE1pY3JvZWxlY3Ryb25pY3MgKioqKipFTkQgT0YgRklMRSoqKiovCisKZGlmZiAtLWdpdCBhL1NyYy9zdG0zMmY3eHhfaGFsX25hbmQuYyBiL1NyYy9zdG0zMmY3eHhfaGFsX25hbmQuYwppbmRleCA4NzA3MGRjLi4yNGY0MDZjIDEwMDY0NAotLS0gYS9TcmMvc3RtMzJmN3h4X2hhbF9uYW5kLmMKKysrIGIvU3JjL3N0bTMyZjd4eF9oYWxfbmFuZC5jCkBAIC0zLDUzICszLDY0IEBACiAgICogQGZpbGUgICAgc3RtMzJmN3h4X2hhbF9uYW5kLmMKICAgKiBAYXV0aG9yICBNQ0QgQXBwbGljYXRpb24gVGVhbQogICAqIEBicmllZiAgIE5BTkQgSEFMIG1vZHVsZSBkcml2ZXIuCi0gICogICAgICAgICAgVGhpcyBmaWxlIHByb3ZpZGVzIGEgZ2VuZXJpYyBmaXJtd2FyZSB0byBkcml2ZSBOQU5EIG1lbW9yaWVzIG1vdW50ZWQgCisgICogICAgICAgICAgVGhpcyBmaWxlIHByb3ZpZGVzIGEgZ2VuZXJpYyBmaXJtd2FyZSB0byBkcml2ZSBOQU5EIG1lbW9yaWVzIG1vdW50ZWQKICAgKiAgICAgICAgICBhcyBleHRlcm5hbCBkZXZpY2UuCi0gICogICAgICAgICAKKyAgKgorICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgKiBAYXR0ZW50aW9uCisgICoKKyAgKiBDb3B5cmlnaHQgKGMpIDIwMTcgU1RNaWNyb2VsZWN0cm9uaWNzLgorICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgICoKKyAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIHVuZGVyIHRlcm1zIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUKKyAgKiBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb2Z0d2FyZSBjb21wb25lbnQuCisgICogSWYgbm8gTElDRU5TRSBmaWxlIGNvbWVzIHdpdGggdGhpcyBzb2Z0d2FyZSwgaXQgaXMgcHJvdmlkZWQgQVMtSVMuCisgICoKKyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgIEB2ZXJiYXRpbQogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgICAgICAgICAgICAgICAgICAgICAgICAjIyMjIyBIb3cgdG8gdXNlIHRoaXMgZHJpdmVyICMjIyMjCi0gID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAgICAKKyAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgICAgWy4uXQotICAgICAgVGhpcyBkcml2ZXIgaXMgYSBnZW5lcmljIGxheWVyZWQgZHJpdmVyIHdoaWNoIGNvbnRhaW5zIGEgc2V0IG9mIEFQSXMgdXNlZCB0byAKLSAgICAgIGNvbnRyb2wgTkFORCBmbGFzaCBtZW1vcmllcy4gSXQgdXNlcyB0aGUgRk1DL0ZTTUMgbGF5ZXIgZnVuY3Rpb25zIHRvIGludGVyZmFjZSAKKyAgICAgIFRoaXMgZHJpdmVyIGlzIGEgZ2VuZXJpYyBsYXllcmVkIGRyaXZlciB3aGljaCBjb250YWlucyBhIHNldCBvZiBBUElzIHVzZWQgdG8KKyAgICAgIGNvbnRyb2wgTkFORCBmbGFzaCBtZW1vcmllcy4gSXQgdXNlcyB0aGUgRk1DIGxheWVyIGZ1bmN0aW9ucyB0byBpbnRlcmZhY2UKICAgICAgIHdpdGggTkFORCBkZXZpY2VzLiBUaGlzIGRyaXZlciBpcyB1c2VkIGFzIGZvbGxvd3M6Ci0gICAgCi0gICAgICAoKykgTkFORCBmbGFzaCBtZW1vcnkgY29uZmlndXJhdGlvbiBzZXF1ZW5jZSB1c2luZyB0aGUgZnVuY3Rpb24gSEFMX05BTkRfSW5pdCgpIAorCisgICAgICAoKykgTkFORCBmbGFzaCBtZW1vcnkgY29uZmlndXJhdGlvbiBzZXF1ZW5jZSB1c2luZyB0aGUgZnVuY3Rpb24gSEFMX05BTkRfSW5pdCgpCiAgICAgICAgICAgd2l0aCBjb250cm9sIGFuZCB0aW1pbmcgcGFyYW1ldGVycyBmb3IgYm90aCBjb21tb24gYW5kIGF0dHJpYnV0ZSBzcGFjZXMuCi0gICAgICAgICAgICAKKwogICAgICAgKCspIFJlYWQgTkFORCBmbGFzaCBtZW1vcnkgbWFrZXIgYW5kIGRldmljZSBJRHMgdXNpbmcgdGhlIGZ1bmN0aW9uCi0gICAgICAgICAgSEFMX05BTkRfUmVhZF9JRCgpLiBUaGUgcmVhZCBpbmZvcm1hdGlvbiBpcyBzdG9yZWQgaW4gdGhlIE5BTkRfSURfVHlwZURlZiAKLSAgICAgICAgICBzdHJ1Y3R1cmUgZGVjbGFyZWQgYnkgdGhlIGZ1bmN0aW9uIGNhbGxlci4gCi0gICAgICAgIAorICAgICAgICAgIEhBTF9OQU5EX1JlYWRfSUQoKS4gVGhlIHJlYWQgaW5mb3JtYXRpb24gaXMgc3RvcmVkIGluIHRoZSBOQU5EX0lEX1R5cGVEZWYKKyAgICAgICAgICBzdHJ1Y3R1cmUgZGVjbGFyZWQgYnkgdGhlIGZ1bmN0aW9uIGNhbGxlci4KKwogICAgICAgKCspIEFjY2VzcyBOQU5EIGZsYXNoIG1lbW9yeSBieSByZWFkL3dyaXRlIG9wZXJhdGlvbnMgdXNpbmcgdGhlIGZ1bmN0aW9ucwotICAgICAgICAgIEhBTF9OQU5EX1JlYWRfUGFnZV84YigpL0hBTF9OQU5EX1JlYWRfU3BhcmVBcmVhXzhiKCksIAorICAgICAgICAgIEhBTF9OQU5EX1JlYWRfUGFnZV84YigpL0hBTF9OQU5EX1JlYWRfU3BhcmVBcmVhXzhiKCksCiAgICAgICAgICAgSEFMX05BTkRfV3JpdGVfUGFnZV84YigpL0hBTF9OQU5EX1dyaXRlX1NwYXJlQXJlYV84YigpLAotICAgICAgICAgIEhBTF9OQU5EX1JlYWRfUGFnZV8xNmIoKS9IQUxfTkFORF9SZWFkX1NwYXJlQXJlYV8xNmIoKSwgCisgICAgICAgICAgSEFMX05BTkRfUmVhZF9QYWdlXzE2YigpL0hBTF9OQU5EX1JlYWRfU3BhcmVBcmVhXzE2YigpLAogICAgICAgICAgIEhBTF9OQU5EX1dyaXRlX1BhZ2VfMTZiKCkvSEFMX05BTkRfV3JpdGVfU3BhcmVBcmVhXzE2YigpCi0gICAgICAgICAgdG8gcmVhZC93cml0ZSBwYWdlKHMpL3NwYXJlIGFyZWEocykuIFRoZXNlIGZ1bmN0aW9ucyB1c2Ugc3BlY2lmaWMgZGV2aWNlIAotICAgICAgICAgIGluZm9ybWF0aW9uIChCbG9jaywgcGFnZSBzaXplLi4pIHByZWRlZmluZWQgYnkgdGhlIHVzZXIgaW4gdGhlIE5BTkRfRGV2aWNlQ29uZmlnVHlwZURlZiAKKyAgICAgICAgICB0byByZWFkL3dyaXRlIHBhZ2Uocykvc3BhcmUgYXJlYShzKS4gVGhlc2UgZnVuY3Rpb25zIHVzZSBzcGVjaWZpYyBkZXZpY2UKKyAgICAgICAgICBpbmZvcm1hdGlvbiAoQmxvY2ssIHBhZ2Ugc2l6ZS4uKSBwcmVkZWZpbmVkIGJ5IHRoZSB1c2VyIGluIHRoZSBOQU5EX0RldmljZUNvbmZpZ1R5cGVEZWYKICAgICAgICAgICBzdHJ1Y3R1cmUuIFRoZSByZWFkL3dyaXRlIGFkZHJlc3MgaW5mb3JtYXRpb24gaXMgY29udGFpbmVkIGJ5IHRoZSBOYW5kX0FkZHJlc3NfVHlwZWRlZgogICAgICAgICAgIHN0cnVjdHVyZSBwYXNzZWQgYXMgcGFyYW1ldGVyLgotICAgICAgICAKKwogICAgICAgKCspIFBlcmZvcm0gTkFORCBmbGFzaCBSZXNldCBjaGlwIG9wZXJhdGlvbiB1c2luZyB0aGUgZnVuY3Rpb24gSEFMX05BTkRfUmVzZXQoKS4KLSAgICAgICAgCisKICAgICAgICgrKSBQZXJmb3JtIE5BTkQgZmxhc2ggZXJhc2UgYmxvY2sgb3BlcmF0aW9uIHVzaW5nIHRoZSBmdW5jdGlvbiBIQUxfTkFORF9FcmFzZV9CbG9jaygpLgotICAgICAgICAgIFRoZSBlcmFzZSBibG9jayBhZGRyZXNzIGluZm9ybWF0aW9uIGlzIGNvbnRhaW5lZCBpbiB0aGUgTmFuZF9BZGRyZXNzX1R5cGVkZWYgCisgICAgICAgICAgVGhlIGVyYXNlIGJsb2NrIGFkZHJlc3MgaW5mb3JtYXRpb24gaXMgY29udGFpbmVkIGluIHRoZSBOYW5kX0FkZHJlc3NfVHlwZWRlZgogICAgICAgICAgIHN0cnVjdHVyZSBwYXNzZWQgYXMgcGFyYW1ldGVyLgotICAgIAorCiAgICAgICAoKykgUmVhZCB0aGUgTkFORCBmbGFzaCBzdGF0dXMgb3BlcmF0aW9uIHVzaW5nIHRoZSBmdW5jdGlvbiBIQUxfTkFORF9SZWFkX1N0YXR1cygpLgotICAgICAgICAKKwogICAgICAgKCspIFlvdSBjYW4gYWxzbyBjb250cm9sIHRoZSBOQU5EIGRldmljZSBieSBjYWxsaW5nIHRoZSBjb250cm9sIEFQSXMgSEFMX05BTkRfRUNDX0VuYWJsZSgpLwogICAgICAgICAgIEhBTF9OQU5EX0VDQ19EaXNhYmxlKCkgdG8gcmVzcGVjdGl2ZWx5IGVuYWJsZS9kaXNhYmxlIHRoZSBFQ0MgY29kZSBjb3JyZWN0aW9uCi0gICAgICAgICAgZmVhdHVyZSBvciB0aGUgZnVuY3Rpb24gSEFMX05BTkRfR2V0RUNDKCkgdG8gZ2V0IHRoZSBFQ0MgY29ycmVjdGlvbiBjb2RlLiAKLSAgICAgICAKKyAgICAgICAgICBmZWF0dXJlIG9yIHRoZSBmdW5jdGlvbiBIQUxfTkFORF9HZXRFQ0MoKSB0byBnZXQgdGhlIEVDQyBjb3JyZWN0aW9uIGNvZGUuCisKICAgICAgICgrKSBZb3UgY2FuIG1vbml0b3IgdGhlIE5BTkQgZGV2aWNlIEhBTCBzdGF0ZSBieSBjYWxsaW5nIHRoZSBmdW5jdGlvbgotICAgICAgICAgIEhBTF9OQU5EX0dldFN0YXRlKCkgIAorICAgICAgICAgIEhBTF9OQU5EX0dldFN0YXRlKCkKIAogICAgIFsuLl0KICAgICAgIChAKSBUaGlzIGRyaXZlciBpcyBhIHNldCBvZiBnZW5lcmljIEFQSXMgd2hpY2ggaGFuZGxlIHN0YW5kYXJkIE5BTkQgZmxhc2ggb3BlcmF0aW9ucy4KLSAgICAgICAgICBJZiBhIE5BTkQgZmxhc2ggZGV2aWNlIGNvbnRhaW5zIGRpZmZlcmVudCBvcGVyYXRpb25zIGFuZC9vciBpbXBsZW1lbnRhdGlvbnMsIAorICAgICAgICAgIElmIGEgTkFORCBmbGFzaCBkZXZpY2UgY29udGFpbnMgZGlmZmVyZW50IG9wZXJhdGlvbnMgYW5kL29yIGltcGxlbWVudGF0aW9ucywKICAgICAgICAgICBpdCBzaG91bGQgYmUgaW1wbGVtZW50ZWQgc2VwYXJhdGVseS4KIAogICAgICoqKiBDYWxsYmFjayByZWdpc3RyYXRpb24gKioqCkBAIC01OCwyNSArNjksMjUgQEAKICAgICAgIFRoZSBjb21waWxhdGlvbiBkZWZpbmUgIFVTRV9IQUxfTkFORF9SRUdJU1RFUl9DQUxMQkFDS1Mgd2hlbiBzZXQgdG8gMQogICAgICAgYWxsb3dzIHRoZSB1c2VyIHRvIGNvbmZpZ3VyZSBkeW5hbWljYWxseSB0aGUgZHJpdmVyIGNhbGxiYWNrcy4KIAotICAgICAgVXNlIEZ1bmN0aW9ucyBAcmVmIEhBTF9OQU5EX1JlZ2lzdGVyQ2FsbGJhY2soKSB0byByZWdpc3RlciBhIHVzZXIgY2FsbGJhY2ssCisgICAgICBVc2UgRnVuY3Rpb25zIEhBTF9OQU5EX1JlZ2lzdGVyQ2FsbGJhY2soKSB0byByZWdpc3RlciBhIHVzZXIgY2FsbGJhY2ssCiAgICAgICBpdCBhbGxvd3MgdG8gcmVnaXN0ZXIgZm9sbG93aW5nIGNhbGxiYWNrczoKICAgICAgICAgKCspIE1zcEluaXRDYWxsYmFjayAgICA6IE5BTkQgTXNwSW5pdC4KICAgICAgICAgKCspIE1zcERlSW5pdENhbGxiYWNrICA6IE5BTkQgTXNwRGVJbml0LgogICAgICAgVGhpcyBmdW5jdGlvbiB0YWtlcyBhcyBwYXJhbWV0ZXJzIHRoZSBIQUwgcGVyaXBoZXJhbCBoYW5kbGUsIHRoZSBDYWxsYmFjayBJRAogICAgICAgYW5kIGEgcG9pbnRlciB0byB0aGUgdXNlciBjYWxsYmFjayBmdW5jdGlvbi4KIAotICAgICAgVXNlIGZ1bmN0aW9uIEByZWYgSEFMX05BTkRfVW5SZWdpc3RlckNhbGxiYWNrKCkgdG8gcmVzZXQgYSBjYWxsYmFjayB0byB0aGUgZGVmYXVsdAorICAgICAgVXNlIGZ1bmN0aW9uIEhBTF9OQU5EX1VuUmVnaXN0ZXJDYWxsYmFjaygpIHRvIHJlc2V0IGEgY2FsbGJhY2sgdG8gdGhlIGRlZmF1bHQKICAgICAgIHdlYWsgKHN1cmNoYXJnZWQpIGZ1bmN0aW9uLiBJdCBhbGxvd3MgdG8gcmVzZXQgZm9sbG93aW5nIGNhbGxiYWNrczoKICAgICAgICAgKCspIE1zcEluaXRDYWxsYmFjayAgICA6IE5BTkQgTXNwSW5pdC4KICAgICAgICAgKCspIE1zcERlSW5pdENhbGxiYWNrICA6IE5BTkQgTXNwRGVJbml0LgogICAgICAgVGhpcyBmdW5jdGlvbikgdGFrZXMgYXMgcGFyYW1ldGVycyB0aGUgSEFMIHBlcmlwaGVyYWwgaGFuZGxlIGFuZCB0aGUgQ2FsbGJhY2sgSUQuCiAKLSAgICAgIEJ5IGRlZmF1bHQsIGFmdGVyIHRoZSBAcmVmIEhBTF9OQU5EX0luaXQgYW5kIGlmIHRoZSBzdGF0ZSBpcyBIQUxfTkFORF9TVEFURV9SRVNFVAorICAgICAgQnkgZGVmYXVsdCwgYWZ0ZXIgdGhlIEhBTF9OQU5EX0luaXQgYW5kIGlmIHRoZSBzdGF0ZSBpcyBIQUxfTkFORF9TVEFURV9SRVNFVAogICAgICAgYWxsIGNhbGxiYWNrcyBhcmUgcmVzZXQgdG8gdGhlIGNvcnJlc3BvbmRpbmcgbGVnYWN5IHdlYWsgKHN1cmNoYXJnZWQpIGZ1bmN0aW9ucy4KICAgICAgIEV4Y2VwdGlvbiBkb25lIGZvciBNc3BJbml0IGFuZCBNc3BEZUluaXQgY2FsbGJhY2tzIHRoYXQgYXJlIHJlc3BlY3RpdmVseQotICAgICAgcmVzZXQgdG8gdGhlIGxlZ2FjeSB3ZWFrIChzdXJjaGFyZ2VkKSBmdW5jdGlvbnMgaW4gdGhlIEByZWYgSEFMX05BTkRfSW5pdAotICAgICAgYW5kIEByZWYgIEhBTF9OQU5EX0RlSW5pdCBvbmx5IHdoZW4gdGhlc2UgY2FsbGJhY2tzIGFyZSBudWxsIChub3QgcmVnaXN0ZXJlZCBiZWZvcmVoYW5kKS4KLSAgICAgIElmIG5vdCwgTXNwSW5pdCBvciBNc3BEZUluaXQgYXJlIG5vdCBudWxsLCB0aGUgQHJlZiBIQUxfTkFORF9Jbml0IGFuZCBAcmVmIEhBTF9OQU5EX0RlSW5pdAorICAgICAgcmVzZXQgdG8gdGhlIGxlZ2FjeSB3ZWFrIChzdXJjaGFyZ2VkKSBmdW5jdGlvbnMgaW4gdGhlIEhBTF9OQU5EX0luaXQKKyAgICAgIGFuZCAgSEFMX05BTkRfRGVJbml0IG9ubHkgd2hlbiB0aGVzZSBjYWxsYmFja3MgYXJlIG51bGwgKG5vdCByZWdpc3RlcmVkIGJlZm9yZWhhbmQpLgorICAgICAgSWYgbm90LCBNc3BJbml0IG9yIE1zcERlSW5pdCBhcmUgbm90IG51bGwsIHRoZSBIQUxfTkFORF9Jbml0IGFuZCBIQUxfTkFORF9EZUluaXQKICAgICAgIGtlZXAgYW5kIHVzZSB0aGUgdXNlciBNc3BJbml0L01zcERlSW5pdCBjYWxsYmFja3MgKHJlZ2lzdGVyZWQgYmVmb3JlaGFuZCkKIAogICAgICAgQ2FsbGJhY2tzIGNhbiBiZSByZWdpc3RlcmVkL3VucmVnaXN0ZXJlZCBpbiBSRUFEWSBzdGF0ZSBvbmx5LgpAQCAtODQsOCArOTUsOCBAQAogICAgICAgaW4gUkVBRFkgb3IgUkVTRVQgc3RhdGUsIHRodXMgcmVnaXN0ZXJlZCAodXNlcikgTXNwSW5pdC9EZUluaXQgY2FsbGJhY2tzIGNhbiBiZSB1c2VkCiAgICAgICBkdXJpbmcgdGhlIEluaXQvRGVJbml0LgogICAgICAgSW4gdGhhdCBjYXNlIGZpcnN0IHJlZ2lzdGVyIHRoZSBNc3BJbml0L01zcERlSW5pdCB1c2VyIGNhbGxiYWNrcwotICAgICAgdXNpbmcgQHJlZiBIQUxfTkFORF9SZWdpc3RlckNhbGxiYWNrIGJlZm9yZSBjYWxsaW5nIEByZWYgSEFMX05BTkRfRGVJbml0Ci0gICAgICBvciBAcmVmIEhBTF9OQU5EX0luaXQgZnVuY3Rpb24uCisgICAgICB1c2luZyBIQUxfTkFORF9SZWdpc3RlckNhbGxiYWNrIGJlZm9yZSBjYWxsaW5nIEhBTF9OQU5EX0RlSW5pdAorICAgICAgb3IgSEFMX05BTkRfSW5pdCBmdW5jdGlvbi4KIAogICAgICAgV2hlbiBUaGUgY29tcGlsYXRpb24gZGVmaW5lIFVTRV9IQUxfTkFORF9SRUdJU1RFUl9DQUxMQkFDS1MgaXMgc2V0IHRvIDAgb3IKICAgICAgIG5vdCBkZWZpbmVkLCB0aGUgY2FsbGJhY2sgcmVnaXN0ZXJpbmcgZmVhdHVyZSBpcyBub3QgYXZhaWxhYmxlCkBAIC05MywzNyArMTA0LDI2IEBACiAKICAgQGVuZHZlcmJhdGltCiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICAqIEBhdHRlbnRpb24KLSAgKgotICAqIDxoMj48Y2VudGVyPiZjb3B5OyBDb3B5cmlnaHQgKGMpIDIwMTcgU1RNaWNyb2VsZWN0cm9uaWNzLgotICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuPC9jZW50ZXI+PC9oMj4KLSAgKgotICAqIFRoaXMgc29mdHdhcmUgY29tcG9uZW50IGlzIGxpY2Vuc2VkIGJ5IFNUIHVuZGVyIEJTRCAzLUNsYXVzZSBsaWNlbnNlLAotICAqIHRoZSAiTGljZW5zZSI7IFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUKLSAgKiBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQ6Ci0gICogICAgICAgICAgICAgICAgICAgICAgICBvcGVuc291cmNlLm9yZy9saWNlbnNlcy9CU0QtMy1DbGF1c2UKLSAgKgotICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAgKi8gCisgICovCiAKIC8qIEluY2x1ZGVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAjaW5jbHVkZSAic3RtMzJmN3h4X2hhbC5oIgogCisKIC8qKiBAYWRkdG9ncm91cCBTVE0zMkY3eHhfSEFMX0RyaXZlcgogICAqIEB7CiAgICovCiAKLQogI2lmZGVmIEhBTF9OQU5EX01PRFVMRV9FTkFCTEVECiAKLS8qKiBAZGVmZ3JvdXAgTkFORCBOQU5EIAorLyoqIEBkZWZncm91cCBOQU5EIE5BTkQKICAgKiBAYnJpZWYgTkFORCBIQUwgbW9kdWxlIGRyaXZlcgogICAqIEB7CiAgICovCiAKIC8qIFByaXZhdGUgdHlwZWRlZiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAvKiBQcml2YXRlIENvbnN0YW50cyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwotLyogUHJpdmF0ZSBtYWNybyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gICAgCisvKiBQcml2YXRlIG1hY3JvIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogLyogUHJpdmF0ZSB2YXJpYWJsZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KIC8qIFByaXZhdGUgZnVuY3Rpb24gcHJvdG90eXBlcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAvKiBFeHBvcnRlZCBmdW5jdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KQEAgLTEzMSwyMiArMTMxLDIyIEBACiAvKiogQGRlZmdyb3VwIE5BTkRfRXhwb3J0ZWRfRnVuY3Rpb25zIE5BTkQgRXhwb3J0ZWQgRnVuY3Rpb25zCiAgICogQHsKICAgKi8KLSAgICAKLS8qKiBAZGVmZ3JvdXAgTkFORF9FeHBvcnRlZF9GdW5jdGlvbnNfR3JvdXAxIEluaXRpYWxpemF0aW9uIGFuZCBkZS1pbml0aWFsaXphdGlvbiBmdW5jdGlvbnMgCi0gICogQGJyaWVmICAgIEluaXRpYWxpemF0aW9uIGFuZCBDb25maWd1cmF0aW9uIGZ1bmN0aW9ucyAKKworLyoqIEBkZWZncm91cCBOQU5EX0V4cG9ydGVkX0Z1bmN0aW9uc19Hcm91cDEgSW5pdGlhbGl6YXRpb24gYW5kIGRlLWluaXRpYWxpemF0aW9uIGZ1bmN0aW9ucworICAqIEBicmllZiAgICBJbml0aWFsaXphdGlvbiBhbmQgQ29uZmlndXJhdGlvbiBmdW5jdGlvbnMKICAgKgotICBAdmVyYmF0aW0gICAgCisgIEB2ZXJiYXRpbQogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgICAgICAgICAgICMjIyMjIE5BTkQgSW5pdGlhbGl6YXRpb24gYW5kIGRlLWluaXRpYWxpemF0aW9uIGZ1bmN0aW9ucyAjIyMjIwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLSAgWy4uXSAgCisgIFsuLl0KICAgICBUaGlzIHNlY3Rpb24gcHJvdmlkZXMgZnVuY3Rpb25zIGFsbG93aW5nIHRvIGluaXRpYWxpemUvZGUtaW5pdGlhbGl6ZQogICAgIHRoZSBOQU5EIG1lbW9yeQotICAKKwogQGVuZHZlcmJhdGltCiAgICogQHsKICAgKi8KLSAgICAKKwogLyoqCiAgICogQGJyaWVmICBQZXJmb3JtIE5BTkQgbWVtb3J5IEluaXRpYWxpemF0aW9uIHNlcXVlbmNlCiAgICogQHBhcmFtICBobmFuZCBwb2ludGVyIHRvIGEgTkFORF9IYW5kbGVUeXBlRGVmIHN0cnVjdHVyZSB0aGF0IGNvbnRhaW5zCkBAIC0xNTUsMjEgKzE1NSwyMiBAQAogICAqIEBwYXJhbSAgQXR0U3BhY2VfVGltaW5nIHBvaW50ZXIgdG8gQXR0cmlidXRlIHNwYWNlIHRpbWluZyBzdHJ1Y3R1cmUKICAgKiBAcmV0dmFsIEhBTCBzdGF0dXMKICAgKi8KLUhBTF9TdGF0dXNUeXBlRGVmICBIQUxfTkFORF9Jbml0KE5BTkRfSGFuZGxlVHlwZURlZiAqaG5hbmQsIEZNQ19OQU5EX1BDQ19UaW1pbmdUeXBlRGVmICpDb21TcGFjZV9UaW1pbmcsIEZNQ19OQU5EX1BDQ19UaW1pbmdUeXBlRGVmICpBdHRTcGFjZV9UaW1pbmcpCitIQUxfU3RhdHVzVHlwZURlZiAgSEFMX05BTkRfSW5pdChOQU5EX0hhbmRsZVR5cGVEZWYgKmhuYW5kLCBGTUNfTkFORF9QQ0NfVGltaW5nVHlwZURlZiAqQ29tU3BhY2VfVGltaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRk1DX05BTkRfUENDX1RpbWluZ1R5cGVEZWYgKkF0dFNwYWNlX1RpbWluZykKIHsKICAgLyogQ2hlY2sgdGhlIE5BTkQgaGFuZGxlIHN0YXRlICovCi0gIGlmKGhuYW5kID09IE5VTEwpCisgIGlmIChobmFuZCA9PSBOVUxMKQogICB7Ci0gICAgIHJldHVybiBIQUxfRVJST1I7CisgICAgcmV0dXJuIEhBTF9FUlJPUjsKICAgfQogCi0gIGlmKGhuYW5kLT5TdGF0ZSA9PSBIQUxfTkFORF9TVEFURV9SRVNFVCkKKyAgaWYgKGhuYW5kLT5TdGF0ZSA9PSBIQUxfTkFORF9TVEFURV9SRVNFVCkKICAgewogICAgIC8qIEFsbG9jYXRlIGxvY2sgcmVzb3VyY2UgYW5kIGluaXRpYWxpemUgaXQgKi8KICAgICBobmFuZC0+TG9jayA9IEhBTF9VTkxPQ0tFRDsKIAogI2lmIChVU0VfSEFMX05BTkRfUkVHSVNURVJfQ0FMTEJBQ0tTID09IDEpCi0gICAgaWYoaG5hbmQtPk1zcEluaXRDYWxsYmFjayA9PSBOVUxMKQorICAgIGlmIChobmFuZC0+TXNwSW5pdENhbGxiYWNrID09IE5VTEwpCiAgICAgewogICAgICAgaG5hbmQtPk1zcEluaXRDYWxsYmFjayA9IEhBTF9OQU5EX01zcEluaXQ7CiAgICAgfQpAQCAtMTgwLDIxICsxODEsMjEgQEAKICNlbHNlCiAgICAgLyogSW5pdGlhbGl6ZSB0aGUgbG93IGxldmVsIGhhcmR3YXJlIChNU1ApICovCiAgICAgSEFMX05BTkRfTXNwSW5pdChobmFuZCk7Ci0jZW5kaWYKKyNlbmRpZiAvKiAoVVNFX0hBTF9OQU5EX1JFR0lTVEVSX0NBTExCQUNLUykgKi8KICAgfQogCiAgIC8qIEluaXRpYWxpemUgTkFORCBjb250cm9sIEludGVyZmFjZSAqLwotICBGTUNfTkFORF9Jbml0KGhuYW5kLT5JbnN0YW5jZSwgJihobmFuZC0+SW5pdCkpOwotICAKLSAgLyogSW5pdGlhbGl6ZSBOQU5EIGNvbW1vbiBzcGFjZSB0aW1pbmcgSW50ZXJmYWNlICovICAKLSAgRk1DX05BTkRfQ29tbW9uU3BhY2VfVGltaW5nX0luaXQoaG5hbmQtPkluc3RhbmNlLCBDb21TcGFjZV9UaW1pbmcsIGhuYW5kLT5Jbml0Lk5hbmRCYW5rKTsKLSAgCi0gIC8qIEluaXRpYWxpemUgTkFORCBhdHRyaWJ1dGUgc3BhY2UgdGltaW5nIEludGVyZmFjZSAqLyAgCi0gIEZNQ19OQU5EX0F0dHJpYnV0ZVNwYWNlX1RpbWluZ19Jbml0KGhuYW5kLT5JbnN0YW5jZSwgQXR0U3BhY2VfVGltaW5nLCBobmFuZC0+SW5pdC5OYW5kQmFuayk7Ci0gIAorICAodm9pZClGTUNfTkFORF9Jbml0KGhuYW5kLT5JbnN0YW5jZSwgJihobmFuZC0+SW5pdCkpOworCisgIC8qIEluaXRpYWxpemUgTkFORCBjb21tb24gc3BhY2UgdGltaW5nIEludGVyZmFjZSAqLworICAodm9pZClGTUNfTkFORF9Db21tb25TcGFjZV9UaW1pbmdfSW5pdChobmFuZC0+SW5zdGFuY2UsIENvbVNwYWNlX1RpbWluZywgaG5hbmQtPkluaXQuTmFuZEJhbmspOworCisgIC8qIEluaXRpYWxpemUgTkFORCBhdHRyaWJ1dGUgc3BhY2UgdGltaW5nIEludGVyZmFjZSAqLworICAodm9pZClGTUNfTkFORF9BdHRyaWJ1dGVTcGFjZV9UaW1pbmdfSW5pdChobmFuZC0+SW5zdGFuY2UsIEF0dFNwYWNlX1RpbWluZywgaG5hbmQtPkluaXQuTmFuZEJhbmspOworCiAgIC8qIEVuYWJsZSB0aGUgTkFORCBkZXZpY2UgKi8KICAgX19GTUNfTkFORF9FTkFCTEUoaG5hbmQtPkluc3RhbmNlKTsKLSAgCisKICAgLyogVXBkYXRlIHRoZSBOQU5EIGNvbnRyb2xsZXIgc3RhdGUgKi8KICAgaG5hbmQtPlN0YXRlID0gSEFMX05BTkRfU1RBVEVfUkVBRFk7CiAKQEAgLTIwNywxMCArMjA4LDEwIEBACiAgICogICAgICAgICAgICAgICAgdGhlIGNvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb24gZm9yIE5BTkQgbW9kdWxlLgogICAqIEByZXR2YWwgSEFMIHN0YXR1cwogICAqLwotSEFMX1N0YXR1c1R5cGVEZWYgSEFMX05BTkRfRGVJbml0KE5BTkRfSGFuZGxlVHlwZURlZiAqaG5hbmQpICAKK0hBTF9TdGF0dXNUeXBlRGVmIEhBTF9OQU5EX0RlSW5pdChOQU5EX0hhbmRsZVR5cGVEZWYgKmhuYW5kKQogewogI2lmIChVU0VfSEFMX05BTkRfUkVHSVNURVJfQ0FMTEJBQ0tTID09IDEpCi0gIGlmKGhuYW5kLT5Nc3BEZUluaXRDYWxsYmFjayA9PSBOVUxMKQorICBpZiAoaG5hbmQtPk1zcERlSW5pdENhbGxiYWNrID09IE5VTEwpCiAgIHsKICAgICBobmFuZC0+TXNwRGVJbml0Q2FsbGJhY2sgPSBIQUxfTkFORF9Nc3BEZUluaXQ7CiAgIH0KQEAgLTIyMCwxMCArMjIxLDEwIEBACiAjZWxzZQogICAvKiBJbml0aWFsaXplIHRoZSBsb3cgbGV2ZWwgaGFyZHdhcmUgKE1TUCkgKi8KICAgSEFMX05BTkRfTXNwRGVJbml0KGhuYW5kKTsKLSNlbmRpZgorI2VuZGlmIC8qIChVU0VfSEFMX05BTkRfUkVHSVNURVJfQ0FMTEJBQ0tTKSAqLwogCiAgIC8qIENvbmZpZ3VyZSB0aGUgTkFORCByZWdpc3RlcnMgd2l0aCB0aGVpciByZXNldCB2YWx1ZXMgKi8KLSAgRk1DX05BTkRfRGVJbml0KGhuYW5kLT5JbnN0YW5jZSwgaG5hbmQtPkluaXQuTmFuZEJhbmspOworICAodm9pZClGTUNfTkFORF9EZUluaXQoaG5hbmQtPkluc3RhbmNlLCBobmFuZC0+SW5pdC5OYW5kQmFuayk7CiAKICAgLyogUmVzZXQgdGhlIE5BTkQgY29udHJvbGxlciBzdGF0ZSAqLwogICBobmFuZC0+U3RhdGUgPSBIQUxfTkFORF9TVEFURV9SRVNFVDsKQEAgLTI0NCwxMCArMjQ1LDEwIEBACiB7CiAgIC8qIFByZXZlbnQgdW51c2VkIGFyZ3VtZW50KHMpIGNvbXBpbGF0aW9uIHdhcm5pbmcgKi8KICAgVU5VU0VEKGhuYW5kKTsKLSAgCisKICAgLyogTk9URSA6IFRoaXMgZnVuY3Rpb24gU2hvdWxkIG5vdCBiZSBtb2RpZmllZCwgd2hlbiB0aGUgY2FsbGJhY2sgaXMgbmVlZGVkLAogICAgICAgICAgICAgdGhlIEhBTF9OQU5EX01zcEluaXQgY291bGQgYmUgaW1wbGVtZW50ZWQgaW4gdGhlIHVzZXIgZmlsZQotICAgKi8gCisgICAqLwogfQogCiAvKioKQEAgLTI2MCwxMCArMjYxLDEwIEBACiB7CiAgIC8qIFByZXZlbnQgdW51c2VkIGFyZ3VtZW50KHMpIGNvbXBpbGF0aW9uIHdhcm5pbmcgKi8KICAgVU5VU0VEKGhuYW5kKTsKLSAgCisKICAgLyogTk9URSA6IFRoaXMgZnVuY3Rpb24gU2hvdWxkIG5vdCBiZSBtb2RpZmllZCwgd2hlbiB0aGUgY2FsbGJhY2sgaXMgbmVlZGVkLAogICAgICAgICAgICAgdGhlIEhBTF9OQU5EX01zcERlSW5pdCBjb3VsZCBiZSBpbXBsZW1lbnRlZCBpbiB0aGUgdXNlciBmaWxlCi0gICAqLyAKKyAgICovCiB9CiAKIApAQCAtMjcyLDY0ICsyNzMsNjQgQEAKICAgKiBAcGFyYW0gIGhuYW5kIHBvaW50ZXIgdG8gYSBOQU5EX0hhbmRsZVR5cGVEZWYgc3RydWN0dXJlIHRoYXQgY29udGFpbnMKICAgKiAgICAgICAgICAgICAgICB0aGUgY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbiBmb3IgTkFORCBtb2R1bGUuCiAgICogQHJldHZhbCBIQUwgc3RhdHVzCi0qLworICAqLwogdm9pZCBIQUxfTkFORF9JUlFIYW5kbGVyKE5BTkRfSGFuZGxlVHlwZURlZiAqaG5hbmQpCiB7CiAgIC8qIENoZWNrIE5BTkQgaW50ZXJydXB0IFJpc2luZyBlZGdlIGZsYWcgKi8KLSAgaWYoX19GTUNfTkFORF9HRVRfRkxBRyhobmFuZC0+SW5zdGFuY2UsIGhuYW5kLT5Jbml0Lk5hbmRCYW5rLCBGTUNfRkxBR19SSVNJTkdfRURHRSkpCisgIGlmIChfX0ZNQ19OQU5EX0dFVF9GTEFHKGhuYW5kLT5JbnN0YW5jZSwgaG5hbmQtPkluaXQuTmFuZEJhbmssIEZNQ19GTEFHX1JJU0lOR19FREdFKSkKICAgewogICAgIC8qIE5BTkQgaW50ZXJydXB0IGNhbGxiYWNrKi8KICNpZiAoVVNFX0hBTF9OQU5EX1JFR0lTVEVSX0NBTExCQUNLUyA9PSAxKQogICAgIGhuYW5kLT5JdENhbGxiYWNrKGhuYW5kKTsKICNlbHNlCiAgICAgSEFMX05BTkRfSVRDYWxsYmFjayhobmFuZCk7Ci0jZW5kaWYKKyNlbmRpZiAvKiAoVVNFX0hBTF9OQU5EX1JFR0lTVEVSX0NBTExCQUNLUykgKi8KIAogICAgIC8qIENsZWFyIE5BTkQgaW50ZXJydXB0IFJpc2luZyBlZGdlIHBlbmRpbmcgYml0ICovCiAgICAgX19GTUNfTkFORF9DTEVBUl9GTEFHKGhuYW5kLT5JbnN0YW5jZSwgRk1DX0ZMQUdfUklTSU5HX0VER0UpOwogICB9Ci0gIAorCiAgIC8qIENoZWNrIE5BTkQgaW50ZXJydXB0IExldmVsIGZsYWcgKi8KLSAgaWYoX19GTUNfTkFORF9HRVRfRkxBRyhobmFuZC0+SW5zdGFuY2UsIGhuYW5kLT5Jbml0Lk5hbmRCYW5rLCBGTUNfRkxBR19MRVZFTCkpCisgIGlmIChfX0ZNQ19OQU5EX0dFVF9GTEFHKGhuYW5kLT5JbnN0YW5jZSwgaG5hbmQtPkluaXQuTmFuZEJhbmssIEZNQ19GTEFHX0xFVkVMKSkKICAgewogICAgIC8qIE5BTkQgaW50ZXJydXB0IGNhbGxiYWNrKi8KICNpZiAoVVNFX0hBTF9OQU5EX1JFR0lTVEVSX0NBTExCQUNLUyA9PSAxKQogICAgIGhuYW5kLT5JdENhbGxiYWNrKGhuYW5kKTsKICNlbHNlCiAgICAgSEFMX05BTkRfSVRDYWxsYmFjayhobmFuZCk7Ci0jZW5kaWYKKyNlbmRpZiAvKiAoVVNFX0hBTF9OQU5EX1JFR0lTVEVSX0NBTExCQUNLUykgKi8KIAogICAgIC8qIENsZWFyIE5BTkQgaW50ZXJydXB0IExldmVsIHBlbmRpbmcgYml0ICovCiAgICAgX19GTUNfTkFORF9DTEVBUl9GTEFHKGhuYW5kLT5JbnN0YW5jZSwgRk1DX0ZMQUdfTEVWRUwpOwogICB9CiAKICAgLyogQ2hlY2sgTkFORCBpbnRlcnJ1cHQgRmFsbGluZyBlZGdlIGZsYWcgKi8KLSAgaWYoX19GTUNfTkFORF9HRVRfRkxBRyhobmFuZC0+SW5zdGFuY2UsIGhuYW5kLT5Jbml0Lk5hbmRCYW5rLCBGTUNfRkxBR19GQUxMSU5HX0VER0UpKQorICBpZiAoX19GTUNfTkFORF9HRVRfRkxBRyhobmFuZC0+SW5zdGFuY2UsIGhuYW5kLT5Jbml0Lk5hbmRCYW5rLCBGTUNfRkxBR19GQUxMSU5HX0VER0UpKQogICB7CiAgICAgLyogTkFORCBpbnRlcnJ1cHQgY2FsbGJhY2sqLwogI2lmIChVU0VfSEFMX05BTkRfUkVHSVNURVJfQ0FMTEJBQ0tTID09IDEpCiAgICAgaG5hbmQtPkl0Q2FsbGJhY2soaG5hbmQpOwogI2Vsc2UKICAgICBIQUxfTkFORF9JVENhbGxiYWNrKGhuYW5kKTsKLSNlbmRpZgorI2VuZGlmIC8qIChVU0VfSEFMX05BTkRfUkVHSVNURVJfQ0FMTEJBQ0tTKSAqLwogCiAgICAgLyogQ2xlYXIgTkFORCBpbnRlcnJ1cHQgRmFsbGluZyBlZGdlIHBlbmRpbmcgYml0ICovCiAgICAgX19GTUNfTkFORF9DTEVBUl9GTEFHKGhuYW5kLT5JbnN0YW5jZSwgRk1DX0ZMQUdfRkFMTElOR19FREdFKTsKICAgfQotICAKKwogICAvKiBDaGVjayBOQU5EIGludGVycnVwdCBGSUZPIGVtcHR5IGZsYWcgKi8KLSAgaWYoX19GTUNfTkFORF9HRVRfRkxBRyhobmFuZC0+SW5zdGFuY2UsIGhuYW5kLT5Jbml0Lk5hbmRCYW5rLCBGTUNfRkxBR19GRU1QVCkpCisgIGlmIChfX0ZNQ19OQU5EX0dFVF9GTEFHKGhuYW5kLT5JbnN0YW5jZSwgaG5hbmQtPkluaXQuTmFuZEJhbmssIEZNQ19GTEFHX0ZFTVBUKSkKICAgewogICAgIC8qIE5BTkQgaW50ZXJydXB0IGNhbGxiYWNrKi8KICNpZiAoVVNFX0hBTF9OQU5EX1JFR0lTVEVSX0NBTExCQUNLUyA9PSAxKQogICAgIGhuYW5kLT5JdENhbGxiYWNrKGhuYW5kKTsKICNlbHNlCiAgICAgSEFMX05BTkRfSVRDYWxsYmFjayhobmFuZCk7Ci0jZW5kaWYKKyNlbmRpZiAvKiAoVVNFX0hBTF9OQU5EX1JFR0lTVEVSX0NBTExCQUNLUykgKi8KIAogICAgIC8qIENsZWFyIE5BTkQgaW50ZXJydXB0IEZJRk8gZW1wdHkgcGVuZGluZyBiaXQgKi8KICAgICBfX0ZNQ19OQU5EX0NMRUFSX0ZMQUcoaG5hbmQtPkluc3RhbmNlLCBGTUNfRkxBR19GRU1QVCk7Ci0gIH0gIAorICB9CiAKIH0KIApAQCAtMzQzLDI3ICszNDQsMjcgQEAKIHsKICAgLyogUHJldmVudCB1bnVzZWQgYXJndW1lbnQocykgY29tcGlsYXRpb24gd2FybmluZyAqLwogICBVTlVTRUQoaG5hbmQpOwotICAKKwogICAvKiBOT1RFIDogVGhpcyBmdW5jdGlvbiBTaG91bGQgbm90IGJlIG1vZGlmaWVkLCB3aGVuIHRoZSBjYWxsYmFjayBpcyBuZWVkZWQsCiAgICAgICAgICAgICB0aGUgSEFMX05BTkRfSVRDYWxsYmFjayBjb3VsZCBiZSBpbXBsZW1lbnRlZCBpbiB0aGUgdXNlciBmaWxlCiAgICAqLwogfQotIAorCiAvKioKICAgKiBAfQogICAqLwotICAKLS8qKiBAZGVmZ3JvdXAgTkFORF9FeHBvcnRlZF9GdW5jdGlvbnNfR3JvdXAyIElucHV0IGFuZCBPdXRwdXQgZnVuY3Rpb25zIAotICAqIEBicmllZiAgICBJbnB1dCBPdXRwdXQgYW5kIG1lbW9yeSBjb250cm9sIGZ1bmN0aW9ucyAKKworLyoqIEBkZWZncm91cCBOQU5EX0V4cG9ydGVkX0Z1bmN0aW9uc19Hcm91cDIgSW5wdXQgYW5kIE91dHB1dCBmdW5jdGlvbnMKKyAgKiBAYnJpZWYgICAgSW5wdXQgT3V0cHV0IGFuZCBtZW1vcnkgY29udHJvbCBmdW5jdGlvbnMKICAgKgotICBAdmVyYmF0aW0gICAgCisgIEB2ZXJiYXRpbQogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgICAgICAgICAgICAgICAgICAgIyMjIyMgTkFORCBJbnB1dCBhbmQgT3V0cHV0IGZ1bmN0aW9ucyAjIyMjIwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLSAgWy4uXSAgCi0gICAgVGhpcyBzZWN0aW9uIHByb3ZpZGVzIGZ1bmN0aW9ucyBhbGxvd2luZyB0byB1c2UgYW5kIGNvbnRyb2wgdGhlIE5BTkQgCisgIFsuLl0KKyAgICBUaGlzIHNlY3Rpb24gcHJvdmlkZXMgZnVuY3Rpb25zIGFsbG93aW5nIHRvIHVzZSBhbmQgY29udHJvbCB0aGUgTkFORAogICAgIG1lbW9yeQotICAKKwogQGVuZHZlcmJhdGltCiAgICogQHsKICAgKi8KQEAgLTM3OSw1OCArMzgwLDY0IEBACiB7CiAgIF9fSU8gdWludDMyX3QgZGF0YSA9IDA7CiAgIF9fSU8gdWludDMyX3QgZGF0YTEgPSAwOwotICB1aW50MzJfdCBkZXZpY2VBZGRyZXNzID0gMDsKKyAgdWludDMyX3QgZGV2aWNlYWRkcmVzczsKIAotICAvKiBQcm9jZXNzIExvY2tlZCAqLwotICBfX0hBTF9MT0NLKGhuYW5kKTsgIAotICAKICAgLyogQ2hlY2sgdGhlIE5BTkQgY29udHJvbGxlciBzdGF0ZSAqLwotICBpZihobmFuZC0+U3RhdGUgPT0gSEFMX05BTkRfU1RBVEVfQlVTWSkKKyAgaWYgKGhuYW5kLT5TdGF0ZSA9PSBIQUxfTkFORF9TVEFURV9CVVNZKQogICB7CiAgICAgcmV0dXJuIEhBTF9CVVNZOwogICB9Ci0gIAotICAvKiBJZGVudGlmeSB0aGUgZGV2aWNlIGFkZHJlc3MgKi8KLSAgZGV2aWNlQWRkcmVzcyA9IE5BTkRfREVWSUNFOwotICAKLSAgLyogVXBkYXRlIHRoZSBOQU5EIGNvbnRyb2xsZXIgc3RhdGUgKi8gCi0gIGhuYW5kLT5TdGF0ZSA9IEhBTF9OQU5EX1NUQVRFX0JVU1k7Ci0gIAotICAvKiBTZW5kIFJlYWQgSUQgY29tbWFuZCBzZXF1ZW5jZSAqLyAJCi0gICooX19JTyB1aW50OF90ICopKCh1aW50MzJfdCkoZGV2aWNlQWRkcmVzcyB8IENNRF9BUkVBKSkgID0gTkFORF9DTURfUkVBRElEOwotICBfX0RTQigpOwotICAqKF9fSU8gdWludDhfdCAqKSgodWludDMyX3QpKGRldmljZUFkZHJlc3MgfCBBRERSX0FSRUEpKSA9IDB4MDA7Ci0gIF9fRFNCKCk7Ci0KLSAgLyogUmVhZCB0aGUgZWxlY3Ryb25pYyBzaWduYXR1cmUgZnJvbSBOQU5EIGZsYXNoICovCi0gIGlmIChobmFuZC0+SW5pdC5NZW1vcnlEYXRhV2lkdGggPT0gRk1DX05BTkRfUENDX01FTV9CVVNfV0lEVEhfOCkKKyAgZWxzZSBpZiAoaG5hbmQtPlN0YXRlID09IEhBTF9OQU5EX1NUQVRFX1JFQURZKQogICB7Ci0gICAgZGF0YSA9ICooX19JTyB1aW50MzJfdCAqKWRldmljZUFkZHJlc3M7CisgICAgLyogUHJvY2VzcyBMb2NrZWQgKi8KKyAgICBfX0hBTF9MT0NLKGhuYW5kKTsKIAotICAgIC8qIFJldHVybiB0aGUgZGF0YSByZWFkICovCi0gICAgcE5BTkRfSUQtPk1ha2VyX0lkICAgPSBBRERSXzFTVF9DWUNMRShkYXRhKTsKLSAgICBwTkFORF9JRC0+RGV2aWNlX0lkICA9IEFERFJfMk5EX0NZQ0xFKGRhdGEpOwotICAgIHBOQU5EX0lELT5UaGlyZF9JZCAgID0gQUREUl8zUkRfQ1lDTEUoZGF0YSk7Ci0gICAgcE5BTkRfSUQtPkZvdXJ0aF9JZCAgPSBBRERSXzRUSF9DWUNMRShkYXRhKTsKKyAgICAvKiBVcGRhdGUgdGhlIE5BTkQgY29udHJvbGxlciBzdGF0ZSAqLworICAgIGhuYW5kLT5TdGF0ZSA9IEhBTF9OQU5EX1NUQVRFX0JVU1k7CisKKyAgICAvKiBJZGVudGlmeSB0aGUgZGV2aWNlIGFkZHJlc3MgKi8KKyAgICBkZXZpY2VhZGRyZXNzID0gTkFORF9ERVZJQ0U7CisKKyAgICAvKiBTZW5kIFJlYWQgSUQgY29tbWFuZCBzZXF1ZW5jZSAqLworICAgICooX19JTyB1aW50OF90ICopKCh1aW50MzJfdCkoZGV2aWNlYWRkcmVzcyB8IENNRF9BUkVBKSkgID0gTkFORF9DTURfUkVBRElEOworICAgIF9fRFNCKCk7CisgICAgKihfX0lPIHVpbnQ4X3QgKikoKHVpbnQzMl90KShkZXZpY2VhZGRyZXNzIHwgQUREUl9BUkVBKSkgPSAweDAwOworICAgIF9fRFNCKCk7CisKKyAgICAvKiBSZWFkIHRoZSBlbGVjdHJvbmljIHNpZ25hdHVyZSBmcm9tIE5BTkQgZmxhc2ggKi8KKyAgICBpZiAoaG5hbmQtPkluaXQuTWVtb3J5RGF0YVdpZHRoID09IEZNQ19OQU5EX01FTV9CVVNfV0lEVEhfOCkKKyAgICB7CisgICAgICBkYXRhID0gKihfX0lPIHVpbnQzMl90ICopZGV2aWNlYWRkcmVzczsKKworICAgICAgLyogUmV0dXJuIHRoZSBkYXRhIHJlYWQgKi8KKyAgICAgIHBOQU5EX0lELT5NYWtlcl9JZCAgID0gQUREUl8xU1RfQ1lDTEUoZGF0YSk7CisgICAgICBwTkFORF9JRC0+RGV2aWNlX0lkICA9IEFERFJfMk5EX0NZQ0xFKGRhdGEpOworICAgICAgcE5BTkRfSUQtPlRoaXJkX0lkICAgPSBBRERSXzNSRF9DWUNMRShkYXRhKTsKKyAgICAgIHBOQU5EX0lELT5Gb3VydGhfSWQgID0gQUREUl80VEhfQ1lDTEUoZGF0YSk7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICBkYXRhID0gKihfX0lPIHVpbnQzMl90ICopZGV2aWNlYWRkcmVzczsKKyAgICAgIGRhdGExID0gKigoX19JTyB1aW50MzJfdCAqKWRldmljZWFkZHJlc3MgKyA0KTsKKworICAgICAgLyogUmV0dXJuIHRoZSBkYXRhIHJlYWQgKi8KKyAgICAgIHBOQU5EX0lELT5NYWtlcl9JZCAgID0gQUREUl8xU1RfQ1lDTEUoZGF0YSk7CisgICAgICBwTkFORF9JRC0+RGV2aWNlX0lkICA9IEFERFJfM1JEX0NZQ0xFKGRhdGEpOworICAgICAgcE5BTkRfSUQtPlRoaXJkX0lkICAgPSBBRERSXzFTVF9DWUNMRShkYXRhMSk7CisgICAgICBwTkFORF9JRC0+Rm91cnRoX0lkICA9IEFERFJfM1JEX0NZQ0xFKGRhdGExKTsKKyAgICB9CisKKyAgICAvKiBVcGRhdGUgdGhlIE5BTkQgY29udHJvbGxlciBzdGF0ZSAqLworICAgIGhuYW5kLT5TdGF0ZSA9IEhBTF9OQU5EX1NUQVRFX1JFQURZOworCisgICAgLyogUHJvY2VzcyB1bmxvY2tlZCAqLworICAgIF9fSEFMX1VOTE9DSyhobmFuZCk7CiAgIH0KICAgZWxzZQogICB7Ci0gICAgZGF0YSA9ICooX19JTyB1aW50MzJfdCAqKWRldmljZUFkZHJlc3M7Ci0gICAgZGF0YTEgPSAqKChfX0lPIHVpbnQzMl90ICopZGV2aWNlQWRkcmVzcyArIDQpOwotICAgIAotICAgIC8qIFJldHVybiB0aGUgZGF0YSByZWFkICovCi0gICAgcE5BTkRfSUQtPk1ha2VyX0lkICAgPSBBRERSXzFTVF9DWUNMRShkYXRhKTsKLSAgICBwTkFORF9JRC0+RGV2aWNlX0lkICA9IEFERFJfM1JEX0NZQ0xFKGRhdGEpOwotICAgIHBOQU5EX0lELT5UaGlyZF9JZCAgID0gQUREUl8xU1RfQ1lDTEUoZGF0YTEpOwotICAgIHBOQU5EX0lELT5Gb3VydGhfSWQgID0gQUREUl8zUkRfQ1lDTEUoZGF0YTEpOworICAgIHJldHVybiBIQUxfRVJST1I7CiAgIH0KIAotICAvKiBVcGRhdGUgdGhlIE5BTkQgY29udHJvbGxlciBzdGF0ZSAqLyAKLSAgaG5hbmQtPlN0YXRlID0gSEFMX05BTkRfU1RBVEVfUkVBRFk7Ci0gIAotICAvKiBQcm9jZXNzIHVubG9ja2VkICovCi0gIF9fSEFMX1VOTE9DSyhobmFuZCk7ICAgCi0gICAKICAgcmV0dXJuIEhBTF9PSzsKIH0KIApAQCAtNDQyLDM2ICs0NDksNDIgQEAKICAgKi8KIEhBTF9TdGF0dXNUeXBlRGVmIEhBTF9OQU5EX1Jlc2V0KE5BTkRfSGFuZGxlVHlwZURlZiAqaG5hbmQpCiB7Ci0gIHVpbnQzMl90IGRldmljZUFkZHJlc3MgPSAwOwotICAKLSAgLyogUHJvY2VzcyBMb2NrZWQgKi8KLSAgX19IQUxfTE9DSyhobmFuZCk7Ci0gICAgCisgIHVpbnQzMl90IGRldmljZWFkZHJlc3M7CisKICAgLyogQ2hlY2sgdGhlIE5BTkQgY29udHJvbGxlciBzdGF0ZSAqLwotICBpZihobmFuZC0+U3RhdGUgPT0gSEFMX05BTkRfU1RBVEVfQlVTWSkKKyAgaWYgKGhuYW5kLT5TdGF0ZSA9PSBIQUxfTkFORF9TVEFURV9CVVNZKQogICB7Ci0gICAgIHJldHVybiBIQUxfQlVTWTsKKyAgICByZXR1cm4gSEFMX0JVU1k7CisgIH0KKyAgZWxzZSBpZiAoaG5hbmQtPlN0YXRlID09IEhBTF9OQU5EX1NUQVRFX1JFQURZKQorICB7CisgICAgLyogUHJvY2VzcyBMb2NrZWQgKi8KKyAgICBfX0hBTF9MT0NLKGhuYW5kKTsKKworICAgIC8qIFVwZGF0ZSB0aGUgTkFORCBjb250cm9sbGVyIHN0YXRlICovCisgICAgaG5hbmQtPlN0YXRlID0gSEFMX05BTkRfU1RBVEVfQlVTWTsKKworICAgIC8qIElkZW50aWZ5IHRoZSBkZXZpY2UgYWRkcmVzcyAqLworICAgIGRldmljZWFkZHJlc3MgPSBOQU5EX0RFVklDRTsKKworICAgIC8qIFNlbmQgTkFORCByZXNldCBjb21tYW5kICovCisgICAgKihfX0lPIHVpbnQ4X3QgKikoKHVpbnQzMl90KShkZXZpY2VhZGRyZXNzIHwgQ01EX0FSRUEpKSA9IDB4RkY7CisKKyAgICAvKiBVcGRhdGUgdGhlIE5BTkQgY29udHJvbGxlciBzdGF0ZSAqLworICAgIGhuYW5kLT5TdGF0ZSA9IEhBTF9OQU5EX1NUQVRFX1JFQURZOworCisgICAgLyogUHJvY2VzcyB1bmxvY2tlZCAqLworICAgIF9fSEFMX1VOTE9DSyhobmFuZCk7CisgIH0KKyAgZWxzZQorICB7CisgICAgcmV0dXJuIEhBTF9FUlJPUjsKICAgfQogCi0gIC8qIElkZW50aWZ5IHRoZSBkZXZpY2UgYWRkcmVzcyAqLyAgCi0gIGRldmljZUFkZHJlc3MgPSBOQU5EX0RFVklDRTsKLSAgCi0gIC8qIFVwZGF0ZSB0aGUgTkFORCBjb250cm9sbGVyIHN0YXRlICovICAgCi0gIGhuYW5kLT5TdGF0ZSA9IEhBTF9OQU5EX1NUQVRFX0JVU1k7IAotICAKLSAgLyogU2VuZCBOQU5EIHJlc2V0IGNvbW1hbmQgKi8gIAotICAqKF9fSU8gdWludDhfdCAqKSgodWludDMyX3QpKGRldmljZUFkZHJlc3MgfCBDTURfQVJFQSkpID0gMHhGRjsKLQotICAvKiBVcGRhdGUgdGhlIE5BTkQgY29udHJvbGxlciBzdGF0ZSAqLyAgIAotICBobmFuZC0+U3RhdGUgPSBIQUxfTkFORF9TVEFURV9SRUFEWTsKLSAgCi0gIC8qIFByb2Nlc3MgdW5sb2NrZWQgKi8KLSAgX19IQUxfVU5MT0NLKGhuYW5kKTsgICAgCi0gIAogICByZXR1cm4gSEFMX09LOwotICAKKwogfQotICAKKwogLyoqCiAgICogQGJyaWVmICBDb25maWd1cmUgdGhlIGRldmljZTogRW50ZXIgdGhlIHBoeXNpY2FsIHBhcmFtZXRlcnMgb2YgdGhlIGRldmljZQogICAqIEBwYXJhbSAgaG5hbmQgcG9pbnRlciB0byBhIE5BTkRfSGFuZGxlVHlwZURlZiBzdHJ1Y3R1cmUgdGhhdCBjb250YWlucwpAQCAtNDg4LDE1MyArNTAxLDE2NiBAQAogICBobmFuZC0+Q29uZmlnLlBsYW5lU2l6ZSAgICAgICAgICA9IHBEZXZpY2VDb25maWctPlBsYW5lU2l6ZTsKICAgaG5hbmQtPkNvbmZpZy5QbGFuZU5iciAgICAgICAgICAgPSBwRGV2aWNlQ29uZmlnLT5QbGFuZU5icjsKICAgaG5hbmQtPkNvbmZpZy5FeHRyYUNvbW1hbmRFbmFibGUgPSBwRGV2aWNlQ29uZmlnLT5FeHRyYUNvbW1hbmRFbmFibGU7Ci0gIAorCiAgIHJldHVybiBIQUxfT0s7CiB9CiAKLQogLyoqCiAgICogQGJyaWVmICBSZWFkIFBhZ2UocykgZnJvbSBOQU5EIG1lbW9yeSBibG9jayAoOC1iaXRzIGFkZHJlc3NpbmcpCiAgICogQHBhcmFtICBobmFuZCBwb2ludGVyIHRvIGEgTkFORF9IYW5kbGVUeXBlRGVmIHN0cnVjdHVyZSB0aGF0IGNvbnRhaW5zCiAgICogICAgICAgICAgICAgICAgdGhlIGNvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb24gZm9yIE5BTkQgbW9kdWxlLgogICAqIEBwYXJhbSAgcEFkZHJlc3MgIHBvaW50ZXIgdG8gTkFORCBhZGRyZXNzIHN0cnVjdHVyZQogICAqIEBwYXJhbSAgcEJ1ZmZlciAgcG9pbnRlciB0byBkZXN0aW5hdGlvbiByZWFkIGJ1ZmZlcgotICAqIEBwYXJhbSAgTnVtUGFnZVRvUmVhZCAgbnVtYmVyIG9mIHBhZ2VzIHRvIHJlYWQgZnJvbSBibG9jayAKKyAgKiBAcGFyYW0gIE51bVBhZ2VUb1JlYWQgIG51bWJlciBvZiBwYWdlcyB0byByZWFkIGZyb20gYmxvY2sKICAgKiBAcmV0dmFsIEhBTCBzdGF0dXMKICAgKi8KLUhBTF9TdGF0dXNUeXBlRGVmIEhBTF9OQU5EX1JlYWRfUGFnZV84YihOQU5EX0hhbmRsZVR5cGVEZWYgKmhuYW5kLCBOQU5EX0FkZHJlc3NUeXBlRGVmICpwQWRkcmVzcywgdWludDhfdCAqcEJ1ZmZlciwgdWludDMyX3QgTnVtUGFnZVRvUmVhZCkKK0hBTF9TdGF0dXNUeXBlRGVmIEhBTF9OQU5EX1JlYWRfUGFnZV84YihOQU5EX0hhbmRsZVR5cGVEZWYgKmhuYW5kLCBOQU5EX0FkZHJlc3NUeXBlRGVmICpwQWRkcmVzcywgdWludDhfdCAqcEJ1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBOdW1QYWdlVG9SZWFkKQogewotICBfX0lPIHVpbnQzMl90IGluZGV4ICA9IDA7Ci0gIHVpbnQzMl90IHRpY2tzdGFydCA9IDBVOwotICB1aW50MzJfdCBkZXZpY2VBZGRyZXNzID0gMCwgc2l6ZSA9IDAsIG51bVBhZ2VzUmVhZCA9IDAsIG5hbmRBZGRyZXNzID0gMDsKLSAgCi0gIC8qIFByb2Nlc3MgTG9ja2VkICovCi0gIF9fSEFMX0xPQ0soaG5hbmQpOyAKLSAgCisgIHVpbnQzMl90IGluZGV4OworICB1aW50MzJfdCB0aWNrc3RhcnQ7CisgIHVpbnQzMl90IGRldmljZWFkZHJlc3M7CisgIHVpbnQzMl90IG51bXBhZ2VzcmVhZCA9IDBVOworICB1aW50MzJfdCBuYW5kYWRkcmVzczsKKyAgdWludDMyX3QgbmJwYWdlcyA9IE51bVBhZ2VUb1JlYWQ7CisgIHVpbnQ4X3QgKmJ1ZmYgPSBwQnVmZmVyOworCiAgIC8qIENoZWNrIHRoZSBOQU5EIGNvbnRyb2xsZXIgc3RhdGUgKi8KLSAgaWYoaG5hbmQtPlN0YXRlID09IEhBTF9OQU5EX1NUQVRFX0JVU1kpCisgIGlmIChobmFuZC0+U3RhdGUgPT0gSEFMX05BTkRfU1RBVEVfQlVTWSkKICAgewotICAgICByZXR1cm4gSEFMX0JVU1k7CisgICAgcmV0dXJuIEhBTF9CVVNZOwogICB9Ci0gIAotICAvKiBJZGVudGlmeSB0aGUgZGV2aWNlIGFkZHJlc3MgKi8KLSAgZGV2aWNlQWRkcmVzcyA9IE5BTkRfREVWSUNFOwotCi0gIC8qIFVwZGF0ZSB0aGUgTkFORCBjb250cm9sbGVyIHN0YXRlICovIAotICBobmFuZC0+U3RhdGUgPSBIQUxfTkFORF9TVEFURV9CVVNZOwotICAKLSAgLyogTkFORCByYXcgYWRkcmVzcyBjYWxjdWxhdGlvbiAqLwotICBuYW5kQWRkcmVzcyA9IEFSUkFZX0FERFJFU1MocEFkZHJlc3MsIGhuYW5kKTsKLSAgCi0gIC8qIFBhZ2UocykgcmVhZCBsb29wICovICAKLSAgd2hpbGUoKE51bVBhZ2VUb1JlYWQgIT0gMCkgJiYgKG5hbmRBZGRyZXNzIDwgKChobmFuZC0+Q29uZmlnLkJsb2NrU2l6ZSkgKiAoaG5hbmQtPkNvbmZpZy5CbG9ja05icikpKSkKKyAgZWxzZSBpZiAoaG5hbmQtPlN0YXRlID09IEhBTF9OQU5EX1NUQVRFX1JFQURZKQogICB7Ci0gICAgLyogdXBkYXRlIHRoZSBidWZmZXIgc2l6ZSAqLwotICAgIHNpemUgPSAoaG5hbmQtPkNvbmZpZy5QYWdlU2l6ZSkgKyAoKGhuYW5kLT5Db25maWcuUGFnZVNpemUpICogbnVtUGFnZXNSZWFkKTsKLSAgICAKLSAgICAvKiBTZW5kIHJlYWQgcGFnZSBjb21tYW5kIHNlcXVlbmNlICovCi0gICAgKihfX0lPIHVpbnQ4X3QgKikoKHVpbnQzMl90KShkZXZpY2VBZGRyZXNzIHwgQ01EX0FSRUEpKSA9IE5BTkRfQ01EX0FSRUFfQTsKLSAgICBfX0RTQigpOwotICAgIAotICAgIC8qIENhcmRzIHdpdGggcGFnZSBzaXplIDw9IDUxMiBieXRlcyAqLwotICAgIGlmKChobmFuZC0+Q29uZmlnLlBhZ2VTaXplKSA8PSA1MTIpCi0gICAgewotICAgICAgaWYgKCgoaG5hbmQtPkNvbmZpZy5CbG9ja1NpemUpKihobmFuZC0+Q29uZmlnLkJsb2NrTmJyKSkgPD0gNjU1MzUpCi0gICAgICB7Ci0gICAgICAgICooX19JTyB1aW50OF90ICopKCh1aW50MzJfdCkoZGV2aWNlQWRkcmVzcyB8IEFERFJfQVJFQSkpID0gMHgwMDsKLSAgICAgICAgX19EU0IoKTsKLSAgICAgICAgKihfX0lPIHVpbnQ4X3QgKikoKHVpbnQzMl90KShkZXZpY2VBZGRyZXNzIHwgQUREUl9BUkVBKSkgPSBBRERSXzFTVF9DWUNMRShuYW5kQWRkcmVzcyk7Ci0gICAgICAgIF9fRFNCKCk7Ci0gICAgICAgICooX19JTyB1aW50OF90ICopKCh1aW50MzJfdCkoZGV2aWNlQWRkcmVzcyB8IEFERFJfQVJFQSkpID0gQUREUl8yTkRfQ1lDTEUobmFuZEFkZHJlc3MpOwotICAgICAgICBfX0RTQigpOwotICAgICAgfQotICAgICAgZWxzZSAvKiAoKGhuYW5kLT5Db25maWcuQmxvY2tTaXplKSooaG5hbmQtPkNvbmZpZy5CbG9ja05icikpID4gNjU1MzUgKi8KLSAgICAgIHsKLSAgICAgICAgKihfX0lPIHVpbnQ4X3QgKikoKHVpbnQzMl90KShkZXZpY2VBZGRyZXNzIHwgQUREUl9BUkVBKSkgPSAweDAwOwotICAgICAgICBfX0RTQigpOwotICAgICAgICAqKF9fSU8gdWludDhfdCAqKSgodWludDMyX3QpKGRldmljZUFkZHJlc3MgfCBBRERSX0FSRUEpKSA9IEFERFJfMVNUX0NZQ0xFKG5hbmRBZGRyZXNzKTsKLSAgICAgICAgX19EU0IoKTsKLSAgICAgICAgKihfX0lPIHVpbnQ4X3QgKikoKHVpbnQzMl90KShkZXZpY2VBZGRyZXNzIHwgQUREUl9BUkVBKSkgPSBBRERSXzJORF9DWUNMRShuYW5kQWRkcmVzcyk7Ci0gICAgICAgIF9fRFNCKCk7Ci0gICAgICAgICooX19JTyB1aW50OF90ICopKCh1aW50MzJfdCkoZGV2aWNlQWRkcmVzcyB8IEFERFJfQVJFQSkpID0gQUREUl8zUkRfQ1lDTEUobmFuZEFkZHJlc3MpOwotICAgICAgICBfX0RTQigpOwotICAgICAgfQotICAgIH0KLSAgICBlbHNlIC8qIChobmFuZC0+Q29uZmlnLlBhZ2VTaXplKSA+IDUxMiAqLwotICAgIHsKLSAgICAgIGlmICgoKGhuYW5kLT5Db25maWcuQmxvY2tTaXplKSooaG5hbmQtPkNvbmZpZy5CbG9ja05icikpIDw9IDY1NTM1KQotICAgICAgewotICAgICAgICAqKF9fSU8gdWludDhfdCAqKSgodWludDMyX3QpKGRldmljZUFkZHJlc3MgfCBBRERSX0FSRUEpKSA9IDB4MDA7Ci0gICAgICAgIF9fRFNCKCk7Ci0gICAgICAgICooX19JTyB1aW50OF90ICopKCh1aW50MzJfdCkoZGV2aWNlQWRkcmVzcyB8IEFERFJfQVJFQSkpID0gMHgwMDsKLSAgICAgICAgX19EU0IoKTsKLSAgICAgICAgKihfX0lPIHVpbnQ4X3QgKikoKHVpbnQzMl90KShkZXZpY2VBZGRyZXNzIHwgQUREUl9BUkVBKSkgPSBBRERSXzFTVF9DWUNMRShuYW5kQWRkcmVzcyk7Ci0gICAgICAgIF9fRFNCKCk7Ci0gICAgICAgICooX19JTyB1aW50OF90ICopKCh1aW50MzJfdCkoZGV2aWNlQWRkcmVzcyB8IEFERFJfQVJFQSkpID0gQUREUl8yTkRfQ1lDTEUobmFuZEFkZHJlc3MpOwotICAgICAgICBfX0RTQigpOwotICAgICAgfQotICAgICAgZWxzZSAvKiAoKGhuYW5kLT5Db25maWcuQmxvY2tTaXplKSooaG5hbmQtPkNvbmZpZy5CbG9ja05icikpID4gNjU1MzUgKi8KLSAgICAgIHsKLSAgICAgICAgKihfX0lPIHVpbnQ4X3QgKikoKHVpbnQzMl90KShkZXZpY2VBZGRyZXNzIHwgQUREUl9BUkVBKSkgPSAweDAwOwotICAgICAgICBfX0RTQigpOwotICAgICAgICAqKF9fSU8gdWludDhfdCAqKSgodWludDMyX3QpKGRldmljZUFkZHJlc3MgfCBBRERSX0FSRUEpKSA9IDB4MDA7Ci0gICAgICAgIF9fRFNCKCk7Ci0gICAgICAgICooX19JTyB1aW50OF90ICopKCh1aW50MzJfdCkoZGV2aWNlQWRkcmVzcyB8IEFERFJfQVJFQSkpID0gQUREUl8xU1RfQ1lDTEUobmFuZEFkZHJlc3MpOwotICAgICAgICBfX0RTQigpOwotICAgICAgICAqKF9fSU8gdWludDhfdCAqKSgodWludDMyX3QpKGRldmljZUFkZHJlc3MgfCBBRERSX0FSRUEpKSA9IEFERFJfMk5EX0NZQ0xFKG5hbmRBZGRyZXNzKTsKLSAgICAgICAgX19EU0IoKTsKLSAgICAgICAgKihfX0lPIHVpbnQ4X3QgKikoKHVpbnQzMl90KShkZXZpY2VBZGRyZXNzIHwgQUREUl9BUkVBKSkgPSBBRERSXzNSRF9DWUNMRShuYW5kQWRkcmVzcyk7Ci0gICAgICAgIF9fRFNCKCk7Ci0gICAgICB9Ci0gICAgfQorICAgIC8qIFByb2Nlc3MgTG9ja2VkICovCisgICAgX19IQUxfTE9DSyhobmFuZCk7CiAKLSAgICAqKF9fSU8gdWludDhfdCAqKSgodWludDMyX3QpKGRldmljZUFkZHJlc3MgfCBDTURfQVJFQSkpICA9IE5BTkRfQ01EX0FSRUFfVFJVRTE7Ci0gICAgX19EU0IoKTsKLSAgICAKLSAgICAKLSAgICBpZihobmFuZC0+Q29uZmlnLkV4dHJhQ29tbWFuZEVuYWJsZSA9PSBFTkFCTEUpCisgICAgLyogVXBkYXRlIHRoZSBOQU5EIGNvbnRyb2xsZXIgc3RhdGUgKi8KKyAgICBobmFuZC0+U3RhdGUgPSBIQUxfTkFORF9TVEFURV9CVVNZOworCisgICAgLyogSWRlbnRpZnkgdGhlIGRldmljZSBhZGRyZXNzICovCisgICAgZGV2aWNlYWRkcmVzcyA9IE5BTkRfREVWSUNFOworCisgICAgLyogTkFORCByYXcgYWRkcmVzcyBjYWxjdWxhdGlvbiAqLworICAgIG5hbmRhZGRyZXNzID0gQVJSQVlfQUREUkVTUyhwQWRkcmVzcywgaG5hbmQpOworCisgICAgLyogUGFnZShzKSByZWFkIGxvb3AgKi8KKyAgICB3aGlsZSAoKG5icGFnZXMgIT0gMFUpICYmIChuYW5kYWRkcmVzcyA8ICgoaG5hbmQtPkNvbmZpZy5CbG9ja1NpemUpICogKGhuYW5kLT5Db25maWcuQmxvY2tOYnIpKSkpCiAgICAgewotICAgICAgLyogR2V0IHRpY2sgKi8KLSAgICAgIHRpY2tzdGFydCA9IEhBTF9HZXRUaWNrKCk7Ci0gICAgICAKLSAgICAgIC8qIFJlYWQgc3RhdHVzIHVudGlsIE5BTkQgaXMgcmVhZHkgKi8KLSAgICAgIHdoaWxlKEhBTF9OQU5EX1JlYWRfU3RhdHVzKGhuYW5kKSAhPSBOQU5EX1JFQURZKQorICAgICAgLyogU2VuZCByZWFkIHBhZ2UgY29tbWFuZCBzZXF1ZW5jZSAqLworICAgICAgKihfX0lPIHVpbnQ4X3QgKikoKHVpbnQzMl90KShkZXZpY2VhZGRyZXNzIHwgQ01EX0FSRUEpKSA9IE5BTkRfQ01EX0FSRUFfQTsKKyAgICAgIF9fRFNCKCk7CisKKyAgICAgIC8qIENhcmRzIHdpdGggcGFnZSBzaXplIDw9IDUxMiBieXRlcyAqLworICAgICAgaWYgKChobmFuZC0+Q29uZmlnLlBhZ2VTaXplKSA8PSA1MTJVKQogICAgICAgewotICAgICAgICBpZigoSEFMX0dldFRpY2soKSAtIHRpY2tzdGFydCApID4gTkFORF9XUklURV9USU1FT1VUKQorICAgICAgICBpZiAoKChobmFuZC0+Q29uZmlnLkJsb2NrU2l6ZSkgKiAoaG5hbmQtPkNvbmZpZy5CbG9ja05icikpIDw9IDY1NTM1VSkKICAgICAgICAgewotICAgICAgICAgIHJldHVybiBIQUxfVElNRU9VVDsgCisgICAgICAgICAgKihfX0lPIHVpbnQ4X3QgKikoKHVpbnQzMl90KShkZXZpY2VhZGRyZXNzIHwgQUREUl9BUkVBKSkgPSAweDAwVTsKKyAgICAgICAgICBfX0RTQigpOworICAgICAgICAgICooX19JTyB1aW50OF90ICopKCh1aW50MzJfdCkoZGV2aWNlYWRkcmVzcyB8IEFERFJfQVJFQSkpID0gQUREUl8xU1RfQ1lDTEUobmFuZGFkZHJlc3MpOworICAgICAgICAgIF9fRFNCKCk7CisgICAgICAgICAgKihfX0lPIHVpbnQ4X3QgKikoKHVpbnQzMl90KShkZXZpY2VhZGRyZXNzIHwgQUREUl9BUkVBKSkgPSBBRERSXzJORF9DWUNMRShuYW5kYWRkcmVzcyk7CisgICAgICAgICAgX19EU0IoKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIC8qICgoaG5hbmQtPkNvbmZpZy5CbG9ja1NpemUpKihobmFuZC0+Q29uZmlnLkJsb2NrTmJyKSkgPiA2NTUzNSAqLworICAgICAgICB7CisgICAgICAgICAgKihfX0lPIHVpbnQ4X3QgKikoKHVpbnQzMl90KShkZXZpY2VhZGRyZXNzIHwgQUREUl9BUkVBKSkgPSAweDAwVTsKKyAgICAgICAgICBfX0RTQigpOworICAgICAgICAgICooX19JTyB1aW50OF90ICopKCh1aW50MzJfdCkoZGV2aWNlYWRkcmVzcyB8IEFERFJfQVJFQSkpID0gQUREUl8xU1RfQ1lDTEUobmFuZGFkZHJlc3MpOworICAgICAgICAgIF9fRFNCKCk7CisgICAgICAgICAgKihfX0lPIHVpbnQ4X3QgKikoKHVpbnQzMl90KShkZXZpY2VhZGRyZXNzIHwgQUREUl9BUkVBKSkgPSBBRERSXzJORF9DWUNMRShuYW5kYWRkcmVzcyk7CisgICAgICAgICAgX19EU0IoKTsKKyAgICAgICAgICAqKF9fSU8gdWludDhfdCAqKSgodWludDMyX3QpKGRldmljZWFkZHJlc3MgfCBBRERSX0FSRUEpKSA9IEFERFJfM1JEX0NZQ0xFKG5hbmRhZGRyZXNzKTsKKyAgICAgICAgICBfX0RTQigpOwogICAgICAgICB9CiAgICAgICB9Ci0gICAgICAKLSAgICAgIC8qIEdvIGJhY2sgdG8gcmVhZCBtb2RlICovCi0gICAgICAqKF9fSU8gdWludDhfdCAqKSgodWludDMyX3QpKGRldmljZUFkZHJlc3MgfCBDTURfQVJFQSkpID0gKCh1aW50OF90KTB4MDBVKTsKLSAgICAgIF9fRFNCKCk7Ci0gICAgfQotICAgIAotICAgIC8qIEdldCBEYXRhIGludG8gQnVmZmVyICovICAgIAotICAgIGZvcig7IGluZGV4IDwgc2l6ZTsgaW5kZXgrKykKLSAgICB7Ci0gICAgICAqKHVpbnQ4X3QgKilwQnVmZmVyKysgPSAqKHVpbnQ4X3QgKilkZXZpY2VBZGRyZXNzOwotICAgIH0KLSAgICAKLSAgICAvKiBJbmNyZW1lbnQgcmVhZCBwYWdlcyBudW1iZXIgKi8KLSAgICBudW1QYWdlc1JlYWQrKzsKLSAgICAKLSAgICAvKiBEZWNyZW1lbnQgcGFnZXMgdG8gcmVhZCAqLwotICAgIE51bVBhZ2VUb1JlYWQtLTsKLSAgICAKLSAgICAvKiBJbmNyZW1lbnQgdGhlIE5BTkQgYWRkcmVzcyAqLwotICAgIG5hbmRBZGRyZXNzID0gKHVpbnQzMl90KShuYW5kQWRkcmVzcyArIDEpOwotICB9Ci0gIAotICAvKiBVcGRhdGUgdGhlIE5BTkQgY29udHJvbGxlciBzdGF0ZSAqLyAKLSAgaG5hbmQtPlN0YXRlID0gSEFMX05BTkRfU1RBVEVfUkVBRFk7Ci0gIAotICAvKiBQcm9jZXNzIHVubG9ja2VkICovCi0gIF9fSEFMX1VOTE9DSyhobmFuZCk7ICAKLSAgICAKLSAgcmV0dXJuIEhBTF9PSzsKKyAgICAgIGVsc2UgLyogKGhuYW5kLT5Db25maWcuUGFnZVNpemUpID4gNTEyICovCisgICAgICB7CisgICAgICAgIGlmICgoKGhuYW5kLT5Db25maWcuQmxvY2tTaXplKSAqIChobmFuZC0+Q29uZmlnLkJsb2NrTmJyKSkgPD0gNjU1MzVVKQorICAgICAgICB7CisgICAgICAgICAgKihfX0lPIHVpbnQ4X3QgKikoKHVpbnQzMl90KShkZXZpY2VhZGRyZXNzIHwgQUREUl9BUkVBKSkgPSAweDAwVTsKKyAgICAgICAgICBfX0RTQigpOworICAgICAgICAgICooX19JTyB1aW50OF90ICopKCh1aW50MzJfdCkoZGV2aWNlYWRkcmVzcyB8IEFERFJfQVJFQSkpID0gMHgwMFU7CisgICAgICAgICAgX19EU0IoKTsKKyAgICAgICAgICAqKF9fSU8gdWludDhfdCAqKSgodWludDMyX3QpKGRldmljZWFkZHJlc3MgfCBBRERSX0FSRUEpKSA9IEFERFJfMVNUX0NZQ0xFKG5hbmRhZGRyZXNzKTsKKyAgICAgICAgICBfX0RTQigpOworICAgICAgICAgICooX19JTyB1aW50OF90ICopKCh1aW50MzJfdCkoZGV2aWNlYWRkcmVzcyB8IEFERFJfQVJFQSkpID0gQUREUl8yTkRfQ1lDTEUobmFuZGFkZHJlc3MpOworICAgICAgICAgIF9fRFNCKCk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSAvKiAoKGhuYW5kLT5Db25maWcuQmxvY2tTaXplKSooaG5hbmQtPkNvbmZpZy5CbG9ja05icikpID4gNjU1MzUgKi8KKyAgICAgICAgeworICAgICAgICAgICooX19JTyB1aW50OF90ICopKCh1aW50MzJfdCkoZGV2aWNlYWRkcmVzcyB8IEFERFJfQVJFQSkpID0gMHgwMFU7CisgICAgICAgICAgX19EU0IoKTsKKyAgICAgICAgICAqKF9fSU8gdWludDhfdCAqKSgodWludDMyX3QpKGRldmljZWFkZHJlc3MgfCBBRERSX0FSRUEpKSA9IDB4MDBVOworICAgICAgICAgIF9fRFNCKCk7CisgICAgICAgICAgKihfX0lPIHVpbnQ4X3QgKikoKHVpbnQzMl90KShkZXZpY2VhZGRyZXNzIHwgQUREUl9BUkVBKSkgPSBBRERSXzFTVF9DWUNMRShuYW5kYWRkcmVzcyk7CisgICAgICAgICAgX19EU0IoKTsKKyAgICAgICAgICAqKF9fSU8gdWludDhfdCAqKSgodWludDMyX3QpKGRldmljZWFkZHJlc3MgfCBBRERSX0FSRUEpKSA9IEFERFJfMk5EX0NZQ0xFKG5hbmRhZGRyZXNzKTsKKyAgICAgICAgICBfX0RTQigpOworICAgICAgICAgICooX19JTyB1aW50OF90ICopKCh1aW50MzJfdCkoZGV2aWNlYWRkcmVzcyB8IEFERFJfQVJFQSkpID0gQUREUl8zUkRfQ1lDTEUobmFuZGFkZHJlc3MpOworICAgICAgICAgIF9fRFNCKCk7CisgICAgICAgIH0KKyAgICAgIH0KIAorICAgICAgKihfX0lPIHVpbnQ4X3QgKikoKHVpbnQzMl90KShkZXZpY2VhZGRyZXNzIHwgQ01EX0FSRUEpKSAgPSBOQU5EX0NNRF9BUkVBX1RSVUUxOworICAgICAgX19EU0IoKTsKKworCisgICAgICBpZiAoaG5hbmQtPkNvbmZpZy5FeHRyYUNvbW1hbmRFbmFibGUgPT0gRU5BQkxFKQorICAgICAgeworICAgICAgICAvKiBHZXQgdGljayAqLworICAgICAgICB0aWNrc3RhcnQgPSBIQUxfR2V0VGljaygpOworCisgICAgICAgIC8qIFJlYWQgc3RhdHVzIHVudGlsIE5BTkQgaXMgcmVhZHkgKi8KKyAgICAgICAgd2hpbGUgKEhBTF9OQU5EX1JlYWRfU3RhdHVzKGhuYW5kKSAhPSBOQU5EX1JFQURZKQorICAgICAgICB7CisgICAgICAgICAgaWYgKChIQUxfR2V0VGljaygpIC0gdGlja3N0YXJ0KSA+IE5BTkRfV1JJVEVfVElNRU9VVCkKKyAgICAgICAgICB7CisgICAgICAgICAgICAvKiBVcGRhdGUgdGhlIE5BTkQgY29udHJvbGxlciBzdGF0ZSAqLworICAgICAgICAgICAgaG5hbmQtPlN0YXRlID0gSEFMX05BTkRfU1RBVEVfRVJST1I7CisKKyAgICAgICAgICAgIC8qIFByb2Nlc3MgdW5sb2NrZWQgKi8KKyAgICAgICAgICAgIF9fSEFMX1VOTE9DSyhobmFuZCk7CisKKyAgICAgICAgICAgIHJldHVybiBIQUxfVElNRU9VVDsKKyAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvKiBHbyBiYWNrIHRvIHJlYWQgbW9kZSAqLworICAgICAgICAqKF9fSU8gdWludDhfdCAqKSgodWludDMyX3QpKGRldmljZWFkZHJlc3MgfCBDTURfQVJFQSkpID0gKCh1aW50OF90KTB4MDApOworICAgICAgICBfX0RTQigpOworICAgICAgfQorCisgICAgICAvKiBHZXQgRGF0YSBpbnRvIEJ1ZmZlciAqLworICAgICAgZm9yIChpbmRleCA9IDBVOyBpbmRleCA8IGhuYW5kLT5Db25maWcuUGFnZVNpemU7IGluZGV4KyspCisgICAgICB7CisgICAgICAgICpidWZmID0gKih1aW50OF90ICopZGV2aWNlYWRkcmVzczsKKyAgICAgICAgYnVmZisrOworICAgICAgfQorCisgICAgICAvKiBJbmNyZW1lbnQgcmVhZCBwYWdlcyBudW1iZXIgKi8KKyAgICAgIG51bXBhZ2VzcmVhZCsrOworCisgICAgICAvKiBEZWNyZW1lbnQgcGFnZXMgdG8gcmVhZCAqLworICAgICAgbmJwYWdlcy0tOworCisgICAgICAvKiBJbmNyZW1lbnQgdGhlIE5BTkQgYWRkcmVzcyAqLworICAgICAgbmFuZGFkZHJlc3MgPSAodWludDMyX3QpKG5hbmRhZGRyZXNzICsgMVUpOworICAgIH0KKworICAgIC8qIFVwZGF0ZSB0aGUgTkFORCBjb250cm9sbGVyIHN0YXRlICovCisgICAgaG5hbmQtPlN0YXRlID0gSEFMX05BTkRfU1RBVEVfUkVBRFk7CisKKyAgICAvKiBQcm9jZXNzIHVubG9ja2VkICovCisgICAgX19IQUxfVU5MT0NLKGhuYW5kKTsKKyAgfQorICBlbHNlCisgIHsKKyAgICByZXR1cm4gSEFMX0VSUk9SOworICB9CisKKyAgcmV0dXJuIEhBTF9PSzsKIH0KIAogLyoqCkBAIC02NDMsMTUwICs2NjksMTY1IEBACiAgICogICAgICAgICAgICAgICAgdGhlIGNvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb24gZm9yIE5BTkQgbW9kdWxlLgogICAqIEBwYXJhbSAgcEFkZHJlc3MgIHBvaW50ZXIgdG8gTkFORCBhZGRyZXNzIHN0cnVjdHVyZQogICAqIEBwYXJhbSAgcEJ1ZmZlciAgcG9pbnRlciB0byBkZXN0aW5hdGlvbiByZWFkIGJ1ZmZlci4gcEJ1ZmZlciBzaG91bGQgYmUgMTZiaXRzIGFsaWduZWQKLSAgKiBAcGFyYW0gIE51bVBhZ2VUb1JlYWQgIG51bWJlciBvZiBwYWdlcyB0byByZWFkIGZyb20gYmxvY2sgCisgICogQHBhcmFtICBOdW1QYWdlVG9SZWFkICBudW1iZXIgb2YgcGFnZXMgdG8gcmVhZCBmcm9tIGJsb2NrCiAgICogQHJldHZhbCBIQUwgc3RhdHVzCiAgICovCi1IQUxfU3RhdHVzVHlwZURlZiBIQUxfTkFORF9SZWFkX1BhZ2VfMTZiKE5BTkRfSGFuZGxlVHlwZURlZiAqaG5hbmQsIE5BTkRfQWRkcmVzc1R5cGVEZWYgKnBBZGRyZXNzLCB1aW50MTZfdCAqcEJ1ZmZlciwgdWludDMyX3QgTnVtUGFnZVRvUmVhZCkKLXsgICAKLSAgX19JTyB1aW50MzJfdCBpbmRleCAgPSAwOwotICB1aW50MzJfdCB0aWNrc3RhcnQgPSAwOwotICB1aW50MzJfdCBkZXZpY2VBZGRyZXNzID0gMCwgc2l6ZSA9IDAsIG51bVBhZ2VzUmVhZCA9IDAsIG5hbmRBZGRyZXNzID0gMDsKLSAgCi0gIC8qIFByb2Nlc3MgTG9ja2VkICovCi0gIF9fSEFMX0xPQ0soaG5hbmQpOyAKLSAgCi0gIC8qIENoZWNrIHRoZSBOQU5EIGNvbnRyb2xsZXIgc3RhdGUgKi8KLSAgaWYoaG5hbmQtPlN0YXRlID09IEhBTF9OQU5EX1NUQVRFX0JVU1kpCi0gIHsKLSAgICAgcmV0dXJuIEhBTF9CVVNZOwotICB9Ci0gIAotICAvKiBJZGVudGlmeSB0aGUgZGV2aWNlIGFkZHJlc3MgKi8KLSAgZGV2aWNlQWRkcmVzcyA9IE5BTkRfREVWSUNFOworSEFMX1N0YXR1c1R5cGVEZWYgSEFMX05BTkRfUmVhZF9QYWdlXzE2YihOQU5EX0hhbmRsZVR5cGVEZWYgKmhuYW5kLCBOQU5EX0FkZHJlc3NUeXBlRGVmICpwQWRkcmVzcywgdWludDE2X3QgKnBCdWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IE51bVBhZ2VUb1JlYWQpCit7CisgIHVpbnQzMl90IGluZGV4OworICB1aW50MzJfdCB0aWNrc3RhcnQ7CisgIHVpbnQzMl90IGRldmljZWFkZHJlc3M7CisgIHVpbnQzMl90IG51bXBhZ2VzcmVhZCA9IDBVOworICB1aW50MzJfdCBuYW5kYWRkcmVzczsKKyAgdWludDMyX3QgbmJwYWdlcyA9IE51bVBhZ2VUb1JlYWQ7CisgIHVpbnQxNl90ICpidWZmID0gcEJ1ZmZlcjsKIAotICAvKiBVcGRhdGUgdGhlIE5BTkQgY29udHJvbGxlciBzdGF0ZSAqLyAKLSAgaG5hbmQtPlN0YXRlID0gSEFMX05BTkRfU1RBVEVfQlVTWTsKLSAgCi0gIC8qIE5BTkQgcmF3IGFkZHJlc3MgY2FsY3VsYXRpb24gKi8KLSAgbmFuZEFkZHJlc3MgPSBBUlJBWV9BRERSRVNTKHBBZGRyZXNzLCBobmFuZCk7Ci0gIAotICAvKiBQYWdlKHMpIHJlYWQgbG9vcCAqLyAgCi0gIHdoaWxlKChOdW1QYWdlVG9SZWFkICE9IDApICYmIChuYW5kQWRkcmVzcyA8ICgoaG5hbmQtPkNvbmZpZy5CbG9ja1NpemUpICogKGhuYW5kLT5Db25maWcuQmxvY2tOYnIpKSkpCi0gIHsJICAgCi0gICAgLyogdXBkYXRlIHRoZSBidWZmZXIgc2l6ZSAqLwotICAgIHNpemUgPSAoaG5hbmQtPkNvbmZpZy5QYWdlU2l6ZSkgKyAoKGhuYW5kLT5Db25maWcuUGFnZVNpemUpICogbnVtUGFnZXNSZWFkKTsKLSAgICAKLSAgICAvKiBTZW5kIHJlYWQgcGFnZSBjb21tYW5kIHNlcXVlbmNlICovCi0gICAgKihfX0lPIHVpbnQ4X3QgKikoKHVpbnQzMl90KShkZXZpY2VBZGRyZXNzIHwgQ01EX0FSRUEpKSA9IE5BTkRfQ01EX0FSRUFfQTsgIAotICAgIF9fRFNCKCk7Ci0gICAgCi0gICAgLyogQ2FyZHMgd2l0aCBwYWdlIHNpemUgPD0gNTEyIGJ5dGVzICovCi0gICAgaWYoKGhuYW5kLT5Db25maWcuUGFnZVNpemUpIDw9IDUxMikKKyAgLyogQ2hlY2sgdGhlIE5BTkQgY29udHJvbGxlciBzdGF0ZSAqLworICBpZiAoaG5hbmQtPlN0YXRlID09IEhBTF9OQU5EX1NUQVRFX0JVU1kpCisgIHsKKyAgICByZXR1cm4gSEFMX0JVU1k7CisgIH0KKyAgZWxzZSBpZiAoaG5hbmQtPlN0YXRlID09IEhBTF9OQU5EX1NUQVRFX1JFQURZKQorICB7CisgICAgLyogUHJvY2VzcyBMb2NrZWQgKi8KKyAgICBfX0hBTF9MT0NLKGhuYW5kKTsKKworICAgIC8qIFVwZGF0ZSB0aGUgTkFORCBjb250cm9sbGVyIHN0YXRlICovCisgICAgaG5hbmQtPlN0YXRlID0gSEFMX05BTkRfU1RBVEVfQlVTWTsKKworICAgIC8qIElkZW50aWZ5IHRoZSBkZXZpY2UgYWRkcmVzcyAqLworICAgIGRldmljZWFkZHJlc3MgPSBOQU5EX0RFVklDRTsKKworICAgIC8qIE5BTkQgcmF3IGFkZHJlc3MgY2FsY3VsYXRpb24gKi8KKyAgICBuYW5kYWRkcmVzcyA9IEFSUkFZX0FERFJFU1MocEFkZHJlc3MsIGhuYW5kKTsKKworICAgIC8qIFBhZ2UocykgcmVhZCBsb29wICovCisgICAgd2hpbGUgKChuYnBhZ2VzICE9IDBVKSAmJiAobmFuZGFkZHJlc3MgPCAoKGhuYW5kLT5Db25maWcuQmxvY2tTaXplKSAqIChobmFuZC0+Q29uZmlnLkJsb2NrTmJyKSkpKQogICAgIHsKLSAgICAgIGlmICgoKGhuYW5kLT5Db25maWcuQmxvY2tTaXplKSooaG5hbmQtPkNvbmZpZy5CbG9ja05icikpIDw9IDY1NTM1KQorICAgICAgLyogU2VuZCByZWFkIHBhZ2UgY29tbWFuZCBzZXF1ZW5jZSAqLworICAgICAgKihfX0lPIHVpbnQ4X3QgKikoKHVpbnQzMl90KShkZXZpY2VhZGRyZXNzIHwgQ01EX0FSRUEpKSA9IE5BTkRfQ01EX0FSRUFfQTsKKyAgICAgIF9fRFNCKCk7CisKKyAgICAgIC8qIENhcmRzIHdpdGggcGFnZSBzaXplIDw9IDUxMiBieXRlcyAqLworICAgICAgaWYgKChobmFuZC0+Q29uZmlnLlBhZ2VTaXplKSA8PSA1MTJVKQogICAgICAgewotICAgICAgICAqKF9fSU8gdWludDhfdCAqKSgodWludDMyX3QpKGRldmljZUFkZHJlc3MgfCBBRERSX0FSRUEpKSA9IDB4MDA7Ci0gICAgICAgIF9fRFNCKCk7Ci0gICAgICAgICooX19JTyB1aW50OF90ICopKCh1aW50MzJfdCkoZGV2aWNlQWRkcmVzcyB8IEFERFJfQVJFQSkpID0gQUREUl8xU1RfQ1lDTEUobmFuZEFkZHJlc3MpOwotICAgICAgICBfX0RTQigpOwotICAgICAgICAqKF9fSU8gdWludDhfdCAqKSgodWludDMyX3QpKGRldmljZUFkZHJlc3MgfCBBRERSX0FSRUEpKSA9IEFERFJfMk5EX0NZQ0xFKG5hbmRBZGRyZXNzKTsKLSAgICAgICAgX19EU0IoKTsKLSAgICAgIH0KLSAgICAgIGVsc2UgLyogKChobmFuZC0+Q29uZmlnLkJsb2NrU2l6ZSkqKGhuYW5kLT5Db25maWcuQmxvY2tOYnIpKSA+IDY1NTM1ICovCi0gICAgICB7Ci0gICAgICAgICooX19JTyB1aW50OF90ICopKCh1aW50MzJfdCkoZGV2aWNlQWRkcmVzcyB8IEFERFJfQVJFQSkpID0gMHgwMDsKLSAgICAgICAgX19EU0IoKTsKLSAgICAgICAgKihfX0lPIHVpbnQ4X3QgKikoKHVpbnQzMl90KShkZXZpY2VBZGRyZXNzIHwgQUREUl9BUkVBKSkgPSBBRERSXzFTVF9DWUNMRShuYW5kQWRkcmVzcyk7Ci0gICAgICAgIF9fRFNCKCk7Ci0gICAgICAgICooX19JTyB1aW50OF90ICopKCh1aW50MzJfdCkoZGV2aWNlQWRkcmVzcyB8IEFERFJfQVJFQSkpID0gQUREUl8yTkRfQ1lDTEUobmFuZEFkZHJlc3MpOwotICAgICAgICBfX0RTQigpOwotICAgICAgICAqKF9fSU8gdWludDhfdCAqKSgodWludDMyX3QpKGRldmljZUFkZHJlc3MgfCBBRERSX0FSRUEpKSA9IEFERFJfM1JEX0NZQ0xFKG5hbmRBZGRyZXNzKTsKLSAgICAgICAgX19EU0IoKTsKLSAgICAgIH0KLSAgICB9Ci0gICAgZWxzZSAvKiAoaG5hbmQtPkNvbmZpZy5QYWdlU2l6ZSkgPiA1MTIgKi8KLSAgICB7Ci0gICAgICBpZiAoKChobmFuZC0+Q29uZmlnLkJsb2NrU2l6ZSkqKGhuYW5kLT5Db25maWcuQmxvY2tOYnIpKSA8PSA2NTUzNSkKLSAgICAgIHsKLSAgICAgICAgKihfX0lPIHVpbnQ4X3QgKikoKHVpbnQzMl90KShkZXZpY2VBZGRyZXNzIHwgQUREUl9BUkVBKSkgPSAweDAwOwotICAgICAgICBfX0RTQigpOwotICAgICAgICAqKF9fSU8gdWludDhfdCAqKSgodWludDMyX3QpKGRldmljZUFkZHJlc3MgfCBBRERSX0FSRUEpKSA9IDB4MDA7Ci0gICAgICAgIF9fRFNCKCk7Ci0gICAgICAgICooX19JTyB1aW50OF90ICopKCh1aW50MzJfdCkoZGV2aWNlQWRkcmVzcyB8IEFERFJfQVJFQSkpID0gQUREUl8xU1RfQ1lDTEUobmFuZEFkZHJlc3MpOwotICAgICAgICBfX0RTQigpOwotICAgICAgICAqKF9fSU8gdWludDhfdCAqKSgodWludDMyX3QpKGRldmljZUFkZHJlc3MgfCBBRERSX0FSRUEpKSA9IEFERFJfMk5EX0NZQ0xFKG5hbmRBZGRyZXNzKTsKLSAgICAgICAgX19EU0IoKTsKLSAgICAgIH0KLSAgICAgIGVsc2UgLyogKChobmFuZC0+Q29uZmlnLkJsb2NrU2l6ZSkqKGhuYW5kLT5Db25maWcuQmxvY2tOYnIpKSA+IDY1NTM1ICovCi0gICAgICB7Ci0gICAgICAgICooX19JTyB1aW50OF90ICopKCh1aW50MzJfdCkoZGV2aWNlQWRkcmVzcyB8IEFERFJfQVJFQSkpID0gMHgwMDsKLSAgICAgICAgX19EU0IoKTsKLSAgICAgICAgKihfX0lPIHVpbnQ4X3QgKikoKHVpbnQzMl90KShkZXZpY2VBZGRyZXNzIHwgQUREUl9BUkVBKSkgPSAweDAwOwotICAgICAgICBfX0RTQigpOwotICAgICAgICAqKF9fSU8gdWludDhfdCAqKSgodWludDMyX3QpKGRldmljZUFkZHJlc3MgfCBBRERSX0FSRUEpKSA9IEFERFJfMVNUX0NZQ0xFKG5hbmRBZGRyZXNzKTsKLSAgICAgICAgX19EU0IoKTsKLSAgICAgICAgKihfX0lPIHVpbnQ4X3QgKikoKHVpbnQzMl90KShkZXZpY2VBZGRyZXNzIHwgQUREUl9BUkVBKSkgPSBBRERSXzJORF9DWUNMRShuYW5kQWRkcmVzcyk7Ci0gICAgICAgIF9fRFNCKCk7Ci0gICAgICAgICooX19JTyB1aW50OF90ICopKCh1aW50MzJfdCkoZGV2aWNlQWRkcmVzcyB8IEFERFJfQVJFQSkpID0gQUREUl8zUkRfQ1lDTEUobmFuZEFkZHJlc3MpOwotICAgICAgICBfX0RTQigpOwotICAgICAgfQotICAgIH0KLSAgCi0gICAgKihfX0lPIHVpbnQ4X3QgKikoKHVpbnQzMl90KShkZXZpY2VBZGRyZXNzIHwgQ01EX0FSRUEpKSAgPSBOQU5EX0NNRF9BUkVBX1RSVUUxOwotICAgIF9fRFNCKCk7Ci0gICAgCi0gICAgaWYoaG5hbmQtPkNvbmZpZy5FeHRyYUNvbW1hbmRFbmFibGUgPT0gRU5BQkxFKQotICAgIHsKLSAgICAgIC8qIEdldCB0aWNrICovCi0gICAgICB0aWNrc3RhcnQgPSBIQUxfR2V0VGljaygpOwotICAgICAgCi0gICAgICAvKiBSZWFkIHN0YXR1cyB1bnRpbCBOQU5EIGlzIHJlYWR5ICovCi0gICAgICB3aGlsZShIQUxfTkFORF9SZWFkX1N0YXR1cyhobmFuZCkgIT0gTkFORF9SRUFEWSkKLSAgICAgIHsKLSAgICAgICAgaWYoKEhBTF9HZXRUaWNrKCkgLSB0aWNrc3RhcnQgKSA+IE5BTkRfV1JJVEVfVElNRU9VVCkKKyAgICAgICAgaWYgKCgoaG5hbmQtPkNvbmZpZy5CbG9ja1NpemUpICogKGhuYW5kLT5Db25maWcuQmxvY2tOYnIpKSA8PSA2NTUzNVUpCiAgICAgICAgIHsKLSAgICAgICAgICByZXR1cm4gSEFMX1RJTUVPVVQ7IAorICAgICAgICAgICooX19JTyB1aW50OF90ICopKCh1aW50MzJfdCkoZGV2aWNlYWRkcmVzcyB8IEFERFJfQVJFQSkpID0gMHgwMFU7CisgICAgICAgICAgX19EU0IoKTsKKyAgICAgICAgICAqKF9fSU8gdWludDhfdCAqKSgodWludDMyX3QpKGRldmljZWFkZHJlc3MgfCBBRERSX0FSRUEpKSA9IEFERFJfMVNUX0NZQ0xFKG5hbmRhZGRyZXNzKTsKKyAgICAgICAgICBfX0RTQigpOworICAgICAgICAgICooX19JTyB1aW50OF90ICopKCh1aW50MzJfdCkoZGV2aWNlYWRkcmVzcyB8IEFERFJfQVJFQSkpID0gQUREUl8yTkRfQ1lDTEUobmFuZGFkZHJlc3MpOworICAgICAgICAgIF9fRFNCKCk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSAvKiAoKGhuYW5kLT5Db25maWcuQmxvY2tTaXplKSooaG5hbmQtPkNvbmZpZy5CbG9ja05icikpID4gNjU1MzUgKi8KKyAgICAgICAgeworICAgICAgICAgICooX19JTyB1aW50OF90ICopKCh1aW50MzJfdCkoZGV2aWNlYWRkcmVzcyB8IEFERFJfQVJFQSkpID0gMHgwMFU7CisgICAgICAgICAgX19EU0IoKTsKKyAgICAgICAgICAqKF9fSU8gdWludDhfdCAqKSgodWludDMyX3QpKGRldmljZWFkZHJlc3MgfCBBRERSX0FSRUEpKSA9IEFERFJfMVNUX0NZQ0xFKG5hbmRhZGRyZXNzKTsKKyAgICAgICAgICBfX0RTQigpOworICAgICAgICAgICooX19JTyB1aW50OF90ICopKCh1aW50MzJfdCkoZGV2aWNlYWRkcmVzcyB8IEFERFJfQVJFQSkpID0gQUREUl8yTkRfQ1lDTEUobmFuZGFkZHJlc3MpOworICAgICAgICAgIF9fRFNCKCk7CisgICAgICAgICAgKihfX0lPIHVpbnQ4X3QgKikoKHVpbnQzMl90KShkZXZpY2VhZGRyZXNzIHwgQUREUl9BUkVBKSkgPSBBRERSXzNSRF9DWUNMRShuYW5kYWRkcmVzcyk7CisgICAgICAgICAgX19EU0IoKTsKICAgICAgICAgfQogICAgICAgfQotICAgICAgCi0gICAgICAvKiBHbyBiYWNrIHRvIHJlYWQgbW9kZSAqLwotICAgICAgKihfX0lPIHVpbnQ4X3QgKikoKHVpbnQzMl90KShkZXZpY2VBZGRyZXNzIHwgQ01EX0FSRUEpKSA9ICgodWludDhfdCkweDAwVSk7CisgICAgICBlbHNlIC8qIChobmFuZC0+Q29uZmlnLlBhZ2VTaXplKSA+IDUxMiAqLworICAgICAgeworICAgICAgICBpZiAoKChobmFuZC0+Q29uZmlnLkJsb2NrU2l6ZSkgKiAoaG5hbmQtPkNvbmZpZy5CbG9ja05icikpIDw9IDY1NTM1VSkKKyAgICAgICAgeworICAgICAgICAgICooX19JTyB1aW50OF90ICopKCh1aW50MzJfdCkoZGV2aWNlYWRkcmVzcyB8IEFERFJfQVJFQSkpID0gMHgwMFU7CisgICAgICAgICAgX19EU0IoKTsKKyAgICAgICAgICAqKF9fSU8gdWludDhfdCAqKSgodWludDMyX3QpKGRldmljZWFkZHJlc3MgfCBBRERSX0FSRUEpKSA9IDB4MDBVOworICAgICAgICAgIF9fRFNCKCk7CisgICAgICAgICAgKihfX0lPIHVpbnQ4X3QgKikoKHVpbnQzMl90KShkZXZpY2VhZGRyZXNzIHwgQUREUl9BUkVBKSkgPSBBRERSXzFTVF9DWUNMRShuYW5kYWRkcmVzcyk7CisgICAgICAgICAgX19EU0IoKTsKKyAgICAgICAgICAqKF9fSU8gdWludDhfdCAqKSgodWludDMyX3QpKGRldmljZWFkZHJlc3MgfCBBRERSX0FSRUEpKSA9IEFERFJfMk5EX0NZQ0xFKG5hbmRhZGRyZXNzKTsKKyAgICAgICAgICBfX0RTQigpOworICAgICAgICB9CisgICAgICAgIGVsc2UgLyogKChobmFuZC0+Q29uZmlnLkJsb2NrU2l6ZSkqKGhuYW5kLT5Db25maWcuQmxvY2tOYnIpKSA+IDY1NTM1ICovCisgICAgICAgIHsKKyAgICAgICAgICAqKF9fSU8gdWludDhfdCAqKSgodWludDMyX3QpKGRldmljZWFkZHJlc3MgfCBBRERSX0FSRUEpKSA9IDB4MDBVOworICAgICAgICAgIF9fRFNCKCk7CisgICAgICAgICAgKihfX0lPIHVpbnQ4X3QgKikoKHVpbnQzMl90KShkZXZpY2VhZGRyZXNzIHwgQUREUl9BUkVBKSkgPSAweDAwVTsKKyAgICAgICAgICBfX0RTQigpOworICAgICAgICAgICooX19JTyB1aW50OF90ICopKCh1aW50MzJfdCkoZGV2aWNlYWRkcmVzcyB8IEFERFJfQVJFQSkpID0gQUREUl8xU1RfQ1lDTEUobmFuZGFkZHJlc3MpOworICAgICAgICAgIF9fRFNCKCk7CisgICAgICAgICAgKihfX0lPIHVpbnQ4X3QgKikoKHVpbnQzMl90KShkZXZpY2VhZGRyZXNzIHwgQUREUl9BUkVBKSkgPSBBRERSXzJORF9DWUNMRShuYW5kYWRkcmVzcyk7CisgICAgICAgICAgX19EU0IoKTsKKyAgICAgICAgICAqKF9fSU8gdWludDhfdCAqKSgodWludDMyX3QpKGRldmljZWFkZHJlc3MgfCBBRERSX0FSRUEpKSA9IEFERFJfM1JEX0NZQ0xFKG5hbmRhZGRyZXNzKTsKKyAgICAgICAgICBfX0RTQigpOworICAgICAgICB9CisgICAgICB9CisKKyAgICAgICooX19JTyB1aW50OF90ICopKCh1aW50MzJfdCkoZGV2aWNlYWRkcmVzcyB8IENNRF9BUkVBKSkgID0gTkFORF9DTURfQVJFQV9UUlVFMTsKICAgICAgIF9fRFNCKCk7CisKKyAgICAgIGlmIChobmFuZC0+Q29uZmlnLkV4dHJhQ29tbWFuZEVuYWJsZSA9PSBFTkFCTEUpCisgICAgICB7CisgICAgICAgIC8qIEdldCB0aWNrICovCisgICAgICAgIHRpY2tzdGFydCA9IEhBTF9HZXRUaWNrKCk7CisKKyAgICAgICAgLyogUmVhZCBzdGF0dXMgdW50aWwgTkFORCBpcyByZWFkeSAqLworICAgICAgICB3aGlsZSAoSEFMX05BTkRfUmVhZF9TdGF0dXMoaG5hbmQpICE9IE5BTkRfUkVBRFkpCisgICAgICAgIHsKKyAgICAgICAgICBpZiAoKEhBTF9HZXRUaWNrKCkgLSB0aWNrc3RhcnQpID4gTkFORF9XUklURV9USU1FT1VUKQorICAgICAgICAgIHsKKyAgICAgICAgICAgIC8qIFVwZGF0ZSB0aGUgTkFORCBjb250cm9sbGVyIHN0YXRlICovCisgICAgICAgICAgICBobmFuZC0+U3RhdGUgPSBIQUxfTkFORF9TVEFURV9FUlJPUjsKKworICAgICAgICAgICAgLyogUHJvY2VzcyB1bmxvY2tlZCAqLworICAgICAgICAgICAgX19IQUxfVU5MT0NLKGhuYW5kKTsKKworICAgICAgICAgICAgcmV0dXJuIEhBTF9USU1FT1VUOworICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIC8qIEdvIGJhY2sgdG8gcmVhZCBtb2RlICovCisgICAgICAgICooX19JTyB1aW50OF90ICopKCh1aW50MzJfdCkoZGV2aWNlYWRkcmVzcyB8IENNRF9BUkVBKSkgPSAoKHVpbnQ4X3QpMHgwMCk7CisgICAgICAgIF9fRFNCKCk7CisgICAgICB9CisKKyAgICAgIC8qIENhbGN1bGF0ZSBQYWdlU2l6ZSAqLworICAgICAgaWYgKGhuYW5kLT5Jbml0Lk1lbW9yeURhdGFXaWR0aCA9PSBGTUNfTkFORF9NRU1fQlVTX1dJRFRIXzgpCisgICAgICB7CisgICAgICAgIGhuYW5kLT5Db25maWcuUGFnZVNpemUgPSBobmFuZC0+Q29uZmlnLlBhZ2VTaXplIC8gMlU7CisgICAgICB9CisgICAgICBlbHNlCisgICAgICB7CisgICAgICAgIC8qIERvIG5vdGhpbmcgKi8KKyAgICAgICAgLyogS2VlcCB0aGUgc2FtZSBQYWdlU2l6ZSBmb3IgRk1DX05BTkRfTUVNX0JVU19XSURUSF8xNiovCisgICAgICB9CisKKyAgICAgIC8qIEdldCBEYXRhIGludG8gQnVmZmVyICovCisgICAgICBmb3IgKGluZGV4ID0gMFU7IGluZGV4IDwgaG5hbmQtPkNvbmZpZy5QYWdlU2l6ZTsgaW5kZXgrKykKKyAgICAgIHsKKyAgICAgICAgKmJ1ZmYgPSAqKHVpbnQxNl90ICopZGV2aWNlYWRkcmVzczsKKyAgICAgICAgYnVmZisrOworICAgICAgfQorCisgICAgICAvKiBJbmNyZW1lbnQgcmVhZCBwYWdlcyBudW1iZXIgKi8KKyAgICAgIG51bXBhZ2VzcmVhZCsrOworCisgICAgICAvKiBEZWNyZW1lbnQgcGFnZXMgdG8gcmVhZCAqLworICAgICAgbmJwYWdlcy0tOworCisgICAgICAvKiBJbmNyZW1lbnQgdGhlIE5BTkQgYWRkcmVzcyAqLworICAgICAgbmFuZGFkZHJlc3MgPSAodWludDMyX3QpKG5hbmRhZGRyZXNzICsgMVUpOwogICAgIH0KIAotICAgIC8qIENhbGN1bGF0ZSBQYWdlU2l6ZSAqLwotICAgIGlmIChobmFuZC0+SW5pdC5NZW1vcnlEYXRhV2lkdGggPT0gRk1DX05BTkRfUENDX01FTV9CVVNfV0lEVEhfOCkKLSAgICB7Ci0gICAgICBzaXplID0gc2l6ZSAvIDJVOwotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgLyogRG8gbm90aGluZyAqLwotICAgICAgLyogS2VlcCB0aGUgc2FtZSBQYWdlU2l6ZSBmb3IgRk1DX05BTkRfTUVNX0JVU19XSURUSF8xNiovCi0gICAgfQorICAgIC8qIFVwZGF0ZSB0aGUgTkFORCBjb250cm9sbGVyIHN0YXRlICovCisgICAgaG5hbmQtPlN0YXRlID0gSEFMX05BTkRfU1RBVEVfUkVBRFk7CiAKLSAgICAvKiBHZXQgRGF0YSBpbnRvIEJ1ZmZlciAqLyAgICAKLSAgICBmb3IoOyBpbmRleCA8IHNpemU7IGluZGV4KyspCi0gICAgewotICAgICAgKih1aW50MTZfdCAqKXBCdWZmZXIrKyA9ICoodWludDE2X3QgKilkZXZpY2VBZGRyZXNzOwotICAgIH0KLSAgICAKLSAgICAvKiBJbmNyZW1lbnQgcmVhZCBwYWdlcyBudW1iZXIgKi8KLSAgICBudW1QYWdlc1JlYWQrKzsKLSAgICAKLSAgICAvKiBEZWNyZW1lbnQgcGFnZXMgdG8gcmVhZCAqLwotICAgIE51bVBhZ2VUb1JlYWQtLTsKLSAgICAKLSAgICAvKiBJbmNyZW1lbnQgdGhlIE5BTkQgYWRkcmVzcyAqLwotICAgIG5hbmRBZGRyZXNzID0gKHVpbnQzMl90KShuYW5kQWRkcmVzcyArIDEpOworICAgIC8qIFByb2Nlc3MgdW5sb2NrZWQgKi8KKyAgICBfX0hBTF9VTkxPQ0soaG5hbmQpOwogICB9Ci0gIAotICAvKiBVcGRhdGUgdGhlIE5BTkQgY29udHJvbGxlciBzdGF0ZSAqLyAKLSAgaG5hbmQtPlN0YXRlID0gSEFMX05BTkRfU1RBVEVfUkVBRFk7Ci0gIAotICAvKiBQcm9jZXNzIHVubG9ja2VkICovCi0gIF9fSEFMX1VOTE9DSyhobmFuZCk7ICAKLSAgICAKKyAgZWxzZQorICB7CisgICAgcmV0dXJuIEhBTF9FUlJPUjsKKyAgfQorCiAgIHJldHVybiBIQUxfT0s7CiB9CiAKQEAgLTc5NSwxMzYgKzgzNiwxNTEgQEAKICAgKiBAcGFyYW0gIGhuYW5kIHBvaW50ZXIgdG8gYSBOQU5EX0hhbmRsZVR5cGVEZWYgc3RydWN0dXJlIHRoYXQgY29udGFpbnMKICAgKiAgICAgICAgICAgICAgICB0aGUgY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbiBmb3IgTkFORCBtb2R1bGUuCiAgICogQHBhcmFtICBwQWRkcmVzcyAgcG9pbnRlciB0byBOQU5EIGFkZHJlc3Mgc3RydWN0dXJlCi0gICogQHBhcmFtICBwQnVmZmVyICBwb2ludGVyIHRvIHNvdXJjZSBidWZmZXIgdG8gd3JpdGUgIAotICAqIEBwYXJhbSAgTnVtUGFnZVRvV3JpdGUgICBudW1iZXIgb2YgcGFnZXMgdG8gd3JpdGUgdG8gYmxvY2sgCisgICogQHBhcmFtICBwQnVmZmVyICBwb2ludGVyIHRvIHNvdXJjZSBidWZmZXIgdG8gd3JpdGUKKyAgKiBAcGFyYW0gIE51bVBhZ2VUb1dyaXRlICAgbnVtYmVyIG9mIHBhZ2VzIHRvIHdyaXRlIHRvIGJsb2NrCiAgICogQHJldHZhbCBIQUwgc3RhdHVzCiAgICovCi1IQUxfU3RhdHVzVHlwZURlZiBIQUxfTkFORF9Xcml0ZV9QYWdlXzhiKE5BTkRfSGFuZGxlVHlwZURlZiAqaG5hbmQsIE5BTkRfQWRkcmVzc1R5cGVEZWYgKnBBZGRyZXNzLCB1aW50OF90ICpwQnVmZmVyLCB1aW50MzJfdCBOdW1QYWdlVG9Xcml0ZSkKK0hBTF9TdGF0dXNUeXBlRGVmIEhBTF9OQU5EX1dyaXRlX1BhZ2VfOGIoTkFORF9IYW5kbGVUeXBlRGVmICpobmFuZCwgTkFORF9BZGRyZXNzVHlwZURlZiAqcEFkZHJlc3MsIHVpbnQ4X3QgKnBCdWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IE51bVBhZ2VUb1dyaXRlKQogewotICBfX0lPIHVpbnQzMl90IGluZGV4ID0gMDsKLSAgdWludDMyX3QgdGlja3N0YXJ0ID0gMDsKLSAgdWludDMyX3QgZGV2aWNlQWRkcmVzcyA9IDAsIHNpemUgPSAwLCBudW1QYWdlc1dyaXR0ZW4gPSAwLCBuYW5kQWRkcmVzcyA9IDA7Ci0gIAotICAvKiBQcm9jZXNzIExvY2tlZCAqLwotICBfX0hBTF9MT0NLKGhuYW5kKTsgIAorICB1aW50MzJfdCBpbmRleDsKKyAgdWludDMyX3QgdGlja3N0YXJ0OworICB1aW50MzJfdCBkZXZpY2VhZGRyZXNzOworICB1aW50MzJfdCBudW1wYWdlc3dyaXR0ZW4gPSAwVTsKKyAgdWludDMyX3QgbmFuZGFkZHJlc3M7CisgIHVpbnQzMl90IG5icGFnZXMgPSBOdW1QYWdlVG9Xcml0ZTsKKyAgdWludDhfdCAqYnVmZiA9IHBCdWZmZXI7CiAKICAgLyogQ2hlY2sgdGhlIE5BTkQgY29udHJvbGxlciBzdGF0ZSAqLwotICBpZihobmFuZC0+U3RhdGUgPT0gSEFMX05BTkRfU1RBVEVfQlVTWSkKKyAgaWYgKGhuYW5kLT5TdGF0ZSA9PSBIQUxfTkFORF9TVEFURV9CVVNZKQogICB7Ci0gICAgIHJldHVybiBIQUxfQlVTWTsKKyAgICByZXR1cm4gSEFMX0JVU1k7CiAgIH0KLSAgCi0gIC8qIElkZW50aWZ5IHRoZSBkZXZpY2UgYWRkcmVzcyAqLwotICBkZXZpY2VBZGRyZXNzID0gTkFORF9ERVZJQ0U7Ci0gIAotICAvKiBVcGRhdGUgdGhlIE5BTkQgY29udHJvbGxlciBzdGF0ZSAqLyAKLSAgaG5hbmQtPlN0YXRlID0gSEFMX05BTkRfU1RBVEVfQlVTWTsKLSAgCi0gIC8qIE5BTkQgcmF3IGFkZHJlc3MgY2FsY3VsYXRpb24gKi8KLSAgbmFuZEFkZHJlc3MgPSBBUlJBWV9BRERSRVNTKHBBZGRyZXNzLCBobmFuZCk7Ci0gIAotICAvKiBQYWdlKHMpIHdyaXRlIGxvb3AgKi8KLSAgd2hpbGUoKE51bVBhZ2VUb1dyaXRlICE9IDApICYmIChuYW5kQWRkcmVzcyA8ICgoaG5hbmQtPkNvbmZpZy5CbG9ja1NpemUpICogKGhuYW5kLT5Db25maWcuQmxvY2tOYnIpKSkpCi0gIHsgIAotICAgIC8qIHVwZGF0ZSB0aGUgYnVmZmVyIHNpemUgKi8KLSAgICBzaXplID0gKGhuYW5kLT5Db25maWcuUGFnZVNpemUpICsgKChobmFuZC0+Q29uZmlnLlBhZ2VTaXplKSAqIG51bVBhZ2VzV3JpdHRlbik7Ci0gCi0gICAgLyogU2VuZCB3cml0ZSBwYWdlIGNvbW1hbmQgc2VxdWVuY2UgKi8KLSAgICAqKF9fSU8gdWludDhfdCAqKSgodWludDMyX3QpKGRldmljZUFkZHJlc3MgfCBDTURfQVJFQSkpID0gTkFORF9DTURfQVJFQV9BOwotICAgIF9fRFNCKCk7Ci0gICAgKihfX0lPIHVpbnQ4X3QgKikoKHVpbnQzMl90KShkZXZpY2VBZGRyZXNzIHwgQ01EX0FSRUEpKSA9IE5BTkRfQ01EX1dSSVRFMDsKLSAgICBfX0RTQigpOworICBlbHNlIGlmIChobmFuZC0+U3RhdGUgPT0gSEFMX05BTkRfU1RBVEVfUkVBRFkpCisgIHsKKyAgICAvKiBQcm9jZXNzIExvY2tlZCAqLworICAgIF9fSEFMX0xPQ0soaG5hbmQpOwogCi0gICAgLyogQ2FyZHMgd2l0aCBwYWdlIHNpemUgPD0gNTEyIGJ5dGVzICovCi0gICAgaWYoKGhuYW5kLT5Db25maWcuUGFnZVNpemUpIDw9IDUxMikKKyAgICAvKiBVcGRhdGUgdGhlIE5BTkQgY29udHJvbGxlciBzdGF0ZSAqLworICAgIGhuYW5kLT5TdGF0ZSA9IEhBTF9OQU5EX1NUQVRFX0JVU1k7CisKKyAgICAvKiBJZGVudGlmeSB0aGUgZGV2aWNlIGFkZHJlc3MgKi8KKyAgICBkZXZpY2VhZGRyZXNzID0gTkFORF9ERVZJQ0U7CisKKyAgICAvKiBOQU5EIHJhdyBhZGRyZXNzIGNhbGN1bGF0aW9uICovCisgICAgbmFuZGFkZHJlc3MgPSBBUlJBWV9BRERSRVNTKHBBZGRyZXNzLCBobmFuZCk7CisKKyAgICAvKiBQYWdlKHMpIHdyaXRlIGxvb3AgKi8KKyAgICB3aGlsZSAoKG5icGFnZXMgIT0gMFUpICYmIChuYW5kYWRkcmVzcyA8ICgoaG5hbmQtPkNvbmZpZy5CbG9ja1NpemUpICogKGhuYW5kLT5Db25maWcuQmxvY2tOYnIpKSkpCiAgICAgewotICAgICAgaWYgKCgoaG5hbmQtPkNvbmZpZy5CbG9ja1NpemUpKihobmFuZC0+Q29uZmlnLkJsb2NrTmJyKSkgPD0gNjU1MzUpCi0gICAgICB7Ci0gICAgICAgICooX19JTyB1aW50OF90ICopKCh1aW50MzJfdCkoZGV2aWNlQWRkcmVzcyB8IEFERFJfQVJFQSkpID0gMHgwMDsKLSAgICAgICAgX19EU0IoKTsKLSAgICAgICAgKihfX0lPIHVpbnQ4X3QgKikoKHVpbnQzMl90KShkZXZpY2VBZGRyZXNzIHwgQUREUl9BUkVBKSkgPSBBRERSXzFTVF9DWUNMRShuYW5kQWRkcmVzcyk7Ci0gICAgICAgIF9fRFNCKCk7Ci0gICAgICAgICooX19JTyB1aW50OF90ICopKCh1aW50MzJfdCkoZGV2aWNlQWRkcmVzcyB8IEFERFJfQVJFQSkpID0gQUREUl8yTkRfQ1lDTEUobmFuZEFkZHJlc3MpOwotICAgICAgICBfX0RTQigpOwotICAgICAgfQotICAgICAgZWxzZSAvKiAoKGhuYW5kLT5Db25maWcuQmxvY2tTaXplKSooaG5hbmQtPkNvbmZpZy5CbG9ja05icikpID4gNjU1MzUgKi8KLSAgICAgIHsKLSAgICAgICAgKihfX0lPIHVpbnQ4X3QgKikoKHVpbnQzMl90KShkZXZpY2VBZGRyZXNzIHwgQUREUl9BUkVBKSkgPSAweDAwOwotICAgICAgICBfX0RTQigpOwotICAgICAgICAqKF9fSU8gdWludDhfdCAqKSgodWludDMyX3QpKGRldmljZUFkZHJlc3MgfCBBRERSX0FSRUEpKSA9IEFERFJfMVNUX0NZQ0xFKG5hbmRBZGRyZXNzKTsKLSAgICAgICAgX19EU0IoKTsKLSAgICAgICAgKihfX0lPIHVpbnQ4X3QgKikoKHVpbnQzMl90KShkZXZpY2VBZGRyZXNzIHwgQUREUl9BUkVBKSkgPSBBRERSXzJORF9DWUNMRShuYW5kQWRkcmVzcyk7Ci0gICAgICAgIF9fRFNCKCk7Ci0gICAgICAgICooX19JTyB1aW50OF90ICopKCh1aW50MzJfdCkoZGV2aWNlQWRkcmVzcyB8IEFERFJfQVJFQSkpID0gQUREUl8zUkRfQ1lDTEUobmFuZEFkZHJlc3MpOwotICAgICAgICBfX0RTQigpOwotICAgICAgfQotICAgIH0KLSAgICBlbHNlIC8qIChobmFuZC0+Q29uZmlnLlBhZ2VTaXplKSA+IDUxMiAqLwotICAgIHsKLSAgICAgIGlmICgoKGhuYW5kLT5Db25maWcuQmxvY2tTaXplKSooaG5hbmQtPkNvbmZpZy5CbG9ja05icikpIDw9IDY1NTM1KQotICAgICAgewotICAgICAgICAqKF9fSU8gdWludDhfdCAqKSgodWludDMyX3QpKGRldmljZUFkZHJlc3MgfCBBRERSX0FSRUEpKSA9IDB4MDA7Ci0gICAgICAgIF9fRFNCKCk7Ci0gICAgICAgICooX19JTyB1aW50OF90ICopKCh1aW50MzJfdCkoZGV2aWNlQWRkcmVzcyB8IEFERFJfQVJFQSkpID0gMHgwMDsKLSAgICAgICAgX19EU0IoKTsKLSAgICAgICAgKihfX0lPIHVpbnQ4X3QgKikoKHVpbnQzMl90KShkZXZpY2VBZGRyZXNzIHwgQUREUl9BUkVBKSkgPSBBRERSXzFTVF9DWUNMRShuYW5kQWRkcmVzcyk7Ci0gICAgICAgIF9fRFNCKCk7Ci0gICAgICAgICooX19JTyB1aW50OF90ICopKCh1aW50MzJfdCkoZGV2aWNlQWRkcmVzcyB8IEFERFJfQVJFQSkpID0gQUREUl8yTkRfQ1lDTEUobmFuZEFkZHJlc3MpOwotICAgICAgICBfX0RTQigpOwotICAgICAgfQotICAgICAgZWxzZSAvKiAoKGhuYW5kLT5Db25maWcuQmxvY2tTaXplKSooaG5hbmQtPkNvbmZpZy5CbG9ja05icikpID4gNjU1MzUgKi8KLSAgICAgIHsKLSAgICAgICAgKihfX0lPIHVpbnQ4X3QgKikoKHVpbnQzMl90KShkZXZpY2VBZGRyZXNzIHwgQUREUl9BUkVBKSkgPSAweDAwOwotICAgICAgICBfX0RTQigpOwotICAgICAgICAqKF9fSU8gdWludDhfdCAqKSgodWludDMyX3QpKGRldmljZUFkZHJlc3MgfCBBRERSX0FSRUEpKSA9IDB4MDA7Ci0gICAgICAgIF9fRFNCKCk7Ci0gICAgICAgICooX19JTyB1aW50OF90ICopKCh1aW50MzJfdCkoZGV2aWNlQWRkcmVzcyB8IEFERFJfQVJFQSkpID0gQUREUl8xU1RfQ1lDTEUobmFuZEFkZHJlc3MpOwotICAgICAgICBfX0RTQigpOwotICAgICAgICAqKF9fSU8gdWludDhfdCAqKSgodWludDMyX3QpKGRldmljZUFkZHJlc3MgfCBBRERSX0FSRUEpKSA9IEFERFJfMk5EX0NZQ0xFKG5hbmRBZGRyZXNzKTsKLSAgICAgICAgX19EU0IoKTsKLSAgICAgICAgKihfX0lPIHVpbnQ4X3QgKikoKHVpbnQzMl90KShkZXZpY2VBZGRyZXNzIHwgQUREUl9BUkVBKSkgPSBBRERSXzNSRF9DWUNMRShuYW5kQWRkcmVzcyk7Ci0gICAgICAgIF9fRFNCKCk7Ci0gICAgICB9Ci0gICAgfQotICAgIAotICAgIC8qIFdyaXRlIGRhdGEgdG8gbWVtb3J5ICovCi0gICAgZm9yKDsgaW5kZXggPCBzaXplOyBpbmRleCsrKQotICAgIHsKLSAgICAgICooX19JTyB1aW50OF90ICopZGV2aWNlQWRkcmVzcyA9ICoodWludDhfdCAqKXBCdWZmZXIrKzsKKyAgICAgIC8qIFNlbmQgd3JpdGUgcGFnZSBjb21tYW5kIHNlcXVlbmNlICovCisgICAgICAqKF9fSU8gdWludDhfdCAqKSgodWludDMyX3QpKGRldmljZWFkZHJlc3MgfCBDTURfQVJFQSkpID0gTkFORF9DTURfQVJFQV9BOwogICAgICAgX19EU0IoKTsKLSAgICB9Ci0gICAKLSAgICAqKF9fSU8gdWludDhfdCAqKSgodWludDMyX3QpKGRldmljZUFkZHJlc3MgfCBDTURfQVJFQSkpID0gTkFORF9DTURfV1JJVEVfVFJVRTE7Ci0gICAgX19EU0IoKTsKLSAgICAKLQkvKiBHZXQgdGljayAqLwotICAgIHRpY2tzdGFydCA9IEhBTF9HZXRUaWNrKCk7Ci0JCi0gICAgLyogUmVhZCBzdGF0dXMgdW50aWwgTkFORCBpcyByZWFkeSAqLwotICAgIHdoaWxlKEhBTF9OQU5EX1JlYWRfU3RhdHVzKGhuYW5kKSAhPSBOQU5EX1JFQURZKQotICAgIHsgIAotICAgICAgaWYoKEhBTF9HZXRUaWNrKCkgLSB0aWNrc3RhcnQgKSA+IE5BTkRfV1JJVEVfVElNRU9VVCkKKyAgICAgICooX19JTyB1aW50OF90ICopKCh1aW50MzJfdCkoZGV2aWNlYWRkcmVzcyB8IENNRF9BUkVBKSkgPSBOQU5EX0NNRF9XUklURTA7CisgICAgICBfX0RTQigpOworCisgICAgICAvKiBDYXJkcyB3aXRoIHBhZ2Ugc2l6ZSA8PSA1MTIgYnl0ZXMgKi8KKyAgICAgIGlmICgoaG5hbmQtPkNvbmZpZy5QYWdlU2l6ZSkgPD0gNTEyVSkKICAgICAgIHsKLSAgICAgICAgcmV0dXJuIEhBTF9USU1FT1VUOyAKLSAgICAgIH0gCi0gICAgfSAgICAKLSAKLSAgICAvKiBJbmNyZW1lbnQgd3JpdHRlbiBwYWdlcyBudW1iZXIgKi8KLSAgICBudW1QYWdlc1dyaXR0ZW4rKzsKLSAgICAKLSAgICAvKiBEZWNyZW1lbnQgcGFnZXMgdG8gd3JpdGUgKi8KLSAgICBOdW1QYWdlVG9Xcml0ZS0tOwotICAgIAotICAgIC8qIEluY3JlbWVudCB0aGUgTkFORCBhZGRyZXNzICovCi0gICAgbmFuZEFkZHJlc3MgPSAodWludDMyX3QpKG5hbmRBZGRyZXNzICsgMSk7CisgICAgICAgIGlmICgoKGhuYW5kLT5Db25maWcuQmxvY2tTaXplKSAqIChobmFuZC0+Q29uZmlnLkJsb2NrTmJyKSkgPD0gNjU1MzVVKQorICAgICAgICB7CisgICAgICAgICAgKihfX0lPIHVpbnQ4X3QgKikoKHVpbnQzMl90KShkZXZpY2VhZGRyZXNzIHwgQUREUl9BUkVBKSkgPSAweDAwVTsKKyAgICAgICAgICBfX0RTQigpOworICAgICAgICAgICooX19JTyB1aW50OF90ICopKCh1aW50MzJfdCkoZGV2aWNlYWRkcmVzcyB8IEFERFJfQVJFQSkpID0gQUREUl8xU1RfQ1lDTEUobmFuZGFkZHJlc3MpOworICAgICAgICAgIF9fRFNCKCk7CisgICAgICAgICAgKihfX0lPIHVpbnQ4X3QgKikoKHVpbnQzMl90KShkZXZpY2VhZGRyZXNzIHwgQUREUl9BUkVBKSkgPSBBRERSXzJORF9DWUNMRShuYW5kYWRkcmVzcyk7CisgICAgICAgICAgX19EU0IoKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIC8qICgoaG5hbmQtPkNvbmZpZy5CbG9ja1NpemUpKihobmFuZC0+Q29uZmlnLkJsb2NrTmJyKSkgPiA2NTUzNSAqLworICAgICAgICB7CisgICAgICAgICAgKihfX0lPIHVpbnQ4X3QgKikoKHVpbnQzMl90KShkZXZpY2VhZGRyZXNzIHwgQUREUl9BUkVBKSkgPSAweDAwVTsKKyAgICAgICAgICBfX0RTQigpOworICAgICAgICAgICooX19JTyB1aW50OF90ICopKCh1aW50MzJfdCkoZGV2aWNlYWRkcmVzcyB8IEFERFJfQVJFQSkpID0gQUREUl8xU1RfQ1lDTEUobmFuZGFkZHJlc3MpOworICAgICAgICAgIF9fRFNCKCk7CisgICAgICAgICAgKihfX0lPIHVpbnQ4X3QgKikoKHVpbnQzMl90KShkZXZpY2VhZGRyZXNzIHwgQUREUl9BUkVBKSkgPSBBRERSXzJORF9DWUNMRShuYW5kYWRkcmVzcyk7CisgICAgICAgICAgX19EU0IoKTsKKyAgICAgICAgICAqKF9fSU8gdWludDhfdCAqKSgodWludDMyX3QpKGRldmljZWFkZHJlc3MgfCBBRERSX0FSRUEpKSA9IEFERFJfM1JEX0NZQ0xFKG5hbmRhZGRyZXNzKTsKKyAgICAgICAgICBfX0RTQigpOworICAgICAgICB9CisgICAgICB9CisgICAgICBlbHNlIC8qIChobmFuZC0+Q29uZmlnLlBhZ2VTaXplKSA+IDUxMiAqLworICAgICAgeworICAgICAgICBpZiAoKChobmFuZC0+Q29uZmlnLkJsb2NrU2l6ZSkgKiAoaG5hbmQtPkNvbmZpZy5CbG9ja05icikpIDw9IDY1NTM1VSkKKyAgICAgICAgeworICAgICAgICAgICooX19JTyB1aW50OF90ICopKCh1aW50MzJfdCkoZGV2aWNlYWRkcmVzcyB8IEFERFJfQVJFQSkpID0gMHgwMFU7CisgICAgICAgICAgX19EU0IoKTsKKyAgICAgICAgICAqKF9fSU8gdWludDhfdCAqKSgodWludDMyX3QpKGRldmljZWFkZHJlc3MgfCBBRERSX0FSRUEpKSA9IDB4MDBVOworICAgICAgICAgIF9fRFNCKCk7CisgICAgICAgICAgKihfX0lPIHVpbnQ4X3QgKikoKHVpbnQzMl90KShkZXZpY2VhZGRyZXNzIHwgQUREUl9BUkVBKSkgPSBBRERSXzFTVF9DWUNMRShuYW5kYWRkcmVzcyk7CisgICAgICAgICAgX19EU0IoKTsKKyAgICAgICAgICAqKF9fSU8gdWludDhfdCAqKSgodWludDMyX3QpKGRldmljZWFkZHJlc3MgfCBBRERSX0FSRUEpKSA9IEFERFJfMk5EX0NZQ0xFKG5hbmRhZGRyZXNzKTsKKyAgICAgICAgICBfX0RTQigpOworICAgICAgICB9CisgICAgICAgIGVsc2UgLyogKChobmFuZC0+Q29uZmlnLkJsb2NrU2l6ZSkqKGhuYW5kLT5Db25maWcuQmxvY2tOYnIpKSA+IDY1NTM1ICovCisgICAgICAgIHsKKyAgICAgICAgICAqKF9fSU8gdWludDhfdCAqKSgodWludDMyX3QpKGRldmljZWFkZHJlc3MgfCBBRERSX0FSRUEpKSA9IDB4MDBVOworICAgICAgICAgIF9fRFNCKCk7CisgICAgICAgICAgKihfX0lPIHVpbnQ4X3QgKikoKHVpbnQzMl90KShkZXZpY2VhZGRyZXNzIHwgQUREUl9BUkVBKSkgPSAweDAwVTsKKyAgICAgICAgICBfX0RTQigpOworICAgICAgICAgICooX19JTyB1aW50OF90ICopKCh1aW50MzJfdCkoZGV2aWNlYWRkcmVzcyB8IEFERFJfQVJFQSkpID0gQUREUl8xU1RfQ1lDTEUobmFuZGFkZHJlc3MpOworICAgICAgICAgIF9fRFNCKCk7CisgICAgICAgICAgKihfX0lPIHVpbnQ4X3QgKikoKHVpbnQzMl90KShkZXZpY2VhZGRyZXNzIHwgQUREUl9BUkVBKSkgPSBBRERSXzJORF9DWUNMRShuYW5kYWRkcmVzcyk7CisgICAgICAgICAgX19EU0IoKTsKKyAgICAgICAgICAqKF9fSU8gdWludDhfdCAqKSgodWludDMyX3QpKGRldmljZWFkZHJlc3MgfCBBRERSX0FSRUEpKSA9IEFERFJfM1JEX0NZQ0xFKG5hbmRhZGRyZXNzKTsKKyAgICAgICAgICBfX0RTQigpOworICAgICAgICB9CisgICAgICB9CisKKyAgICAgIC8qIFdyaXRlIGRhdGEgdG8gbWVtb3J5ICovCisgICAgICBmb3IgKGluZGV4ID0gMFU7IGluZGV4IDwgaG5hbmQtPkNvbmZpZy5QYWdlU2l6ZTsgaW5kZXgrKykKKyAgICAgIHsKKyAgICAgICAgKihfX0lPIHVpbnQ4X3QgKilkZXZpY2VhZGRyZXNzID0gKmJ1ZmY7CisgICAgICAgIGJ1ZmYrKzsKKyAgICAgICAgX19EU0IoKTsKKyAgICAgIH0KKworICAgICAgKihfX0lPIHVpbnQ4X3QgKikoKHVpbnQzMl90KShkZXZpY2VhZGRyZXNzIHwgQ01EX0FSRUEpKSA9IE5BTkRfQ01EX1dSSVRFX1RSVUUxOworICAgICAgX19EU0IoKTsKKworICAgICAgLyogR2V0IHRpY2sgKi8KKyAgICAgIHRpY2tzdGFydCA9IEhBTF9HZXRUaWNrKCk7CisKKyAgICAgIC8qIFJlYWQgc3RhdHVzIHVudGlsIE5BTkQgaXMgcmVhZHkgKi8KKyAgICAgIHdoaWxlIChIQUxfTkFORF9SZWFkX1N0YXR1cyhobmFuZCkgIT0gTkFORF9SRUFEWSkKKyAgICAgIHsKKyAgICAgICAgaWYgKChIQUxfR2V0VGljaygpIC0gdGlja3N0YXJ0KSA+IE5BTkRfV1JJVEVfVElNRU9VVCkKKyAgICAgICAgeworICAgICAgICAgIC8qIFVwZGF0ZSB0aGUgTkFORCBjb250cm9sbGVyIHN0YXRlICovCisgICAgICAgICAgaG5hbmQtPlN0YXRlID0gSEFMX05BTkRfU1RBVEVfRVJST1I7CisKKyAgICAgICAgICAvKiBQcm9jZXNzIHVubG9ja2VkICovCisgICAgICAgICAgX19IQUxfVU5MT0NLKGhuYW5kKTsKKworICAgICAgICAgIHJldHVybiBIQUxfVElNRU9VVDsKKyAgICAgICAgfQorICAgICAgfQorCisgICAgICAvKiBJbmNyZW1lbnQgd3JpdHRlbiBwYWdlcyBudW1iZXIgKi8KKyAgICAgIG51bXBhZ2Vzd3JpdHRlbisrOworCisgICAgICAvKiBEZWNyZW1lbnQgcGFnZXMgdG8gd3JpdGUgKi8KKyAgICAgIG5icGFnZXMtLTsKKworICAgICAgLyogSW5jcmVtZW50IHRoZSBOQU5EIGFkZHJlc3MgKi8KKyAgICAgIG5hbmRhZGRyZXNzID0gKHVpbnQzMl90KShuYW5kYWRkcmVzcyArIDFVKTsKKyAgICB9CisKKyAgICAvKiBVcGRhdGUgdGhlIE5BTkQgY29udHJvbGxlciBzdGF0ZSAqLworICAgIGhuYW5kLT5TdGF0ZSA9IEhBTF9OQU5EX1NUQVRFX1JFQURZOworCisgICAgLyogUHJvY2VzcyB1bmxvY2tlZCAqLworICAgIF9fSEFMX1VOTE9DSyhobmFuZCk7CiAgIH0KLSAgCi0gIC8qIFVwZGF0ZSB0aGUgTkFORCBjb250cm9sbGVyIHN0YXRlICovIAotICBobmFuZC0+U3RhdGUgPSBIQUxfTkFORF9TVEFURV9SRUFEWTsKLSAgCi0gIC8qIFByb2Nlc3MgdW5sb2NrZWQgKi8KLSAgX19IQUxfVU5MT0NLKGhuYW5kKTsgICAgICAKLSAgCisgIGVsc2UKKyAgeworICAgIHJldHVybiBIQUxfRVJST1I7CisgIH0KKwogICByZXR1cm4gSEFMX09LOwogfQogCkBAIC05MzQsMTQ2ICs5OTAsMTYxIEBACiAgICogICAgICAgICAgICAgICAgdGhlIGNvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb24gZm9yIE5BTkQgbW9kdWxlLgogICAqIEBwYXJhbSAgcEFkZHJlc3MgIHBvaW50ZXIgdG8gTkFORCBhZGRyZXNzIHN0cnVjdHVyZQogICAqIEBwYXJhbSAgcEJ1ZmZlciAgcG9pbnRlciB0byBzb3VyY2UgYnVmZmVyIHRvIHdyaXRlLiBwQnVmZmVyIHNob3VsZCBiZSAxNmJpdHMgYWxpZ25lZAotICAqIEBwYXJhbSAgTnVtUGFnZVRvV3JpdGUgICBudW1iZXIgb2YgcGFnZXMgdG8gd3JpdGUgdG8gYmxvY2sgCisgICogQHBhcmFtICBOdW1QYWdlVG9Xcml0ZSAgIG51bWJlciBvZiBwYWdlcyB0byB3cml0ZSB0byBibG9jawogICAqIEByZXR2YWwgSEFMIHN0YXR1cwogICAqLwotSEFMX1N0YXR1c1R5cGVEZWYgSEFMX05BTkRfV3JpdGVfUGFnZV8xNmIoTkFORF9IYW5kbGVUeXBlRGVmICpobmFuZCwgTkFORF9BZGRyZXNzVHlwZURlZiAqcEFkZHJlc3MsIHVpbnQxNl90ICpwQnVmZmVyLCB1aW50MzJfdCBOdW1QYWdlVG9Xcml0ZSkKK0hBTF9TdGF0dXNUeXBlRGVmIEhBTF9OQU5EX1dyaXRlX1BhZ2VfMTZiKE5BTkRfSGFuZGxlVHlwZURlZiAqaG5hbmQsIE5BTkRfQWRkcmVzc1R5cGVEZWYgKnBBZGRyZXNzLCB1aW50MTZfdCAqcEJ1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IE51bVBhZ2VUb1dyaXRlKQogewotICBfX0lPIHVpbnQzMl90IGluZGV4ID0gMDsKLSAgdWludDMyX3QgdGlja3N0YXJ0ID0gMDsKLSAgdWludDMyX3QgZGV2aWNlQWRkcmVzcyA9IDAsIHNpemUgPSAwLCBudW1QYWdlc1dyaXR0ZW4gPSAwLCBuYW5kQWRkcmVzcyA9IDA7Ci0gIAotICAvKiBQcm9jZXNzIExvY2tlZCAqLwotICBfX0hBTF9MT0NLKGhuYW5kKTsgIAorICB1aW50MzJfdCBpbmRleDsKKyAgdWludDMyX3QgdGlja3N0YXJ0OworICB1aW50MzJfdCBkZXZpY2VhZGRyZXNzOworICB1aW50MzJfdCBudW1wYWdlc3dyaXR0ZW4gPSAwVTsKKyAgdWludDMyX3QgbmFuZGFkZHJlc3M7CisgIHVpbnQzMl90IG5icGFnZXMgPSBOdW1QYWdlVG9Xcml0ZTsKKyAgdWludDE2X3QgKmJ1ZmYgPSBwQnVmZmVyOwogCiAgIC8qIENoZWNrIHRoZSBOQU5EIGNvbnRyb2xsZXIgc3RhdGUgKi8KLSAgaWYoaG5hbmQtPlN0YXRlID09IEhBTF9OQU5EX1NUQVRFX0JVU1kpCisgIGlmIChobmFuZC0+U3RhdGUgPT0gSEFMX05BTkRfU1RBVEVfQlVTWSkKICAgewotICAgICByZXR1cm4gSEFMX0JVU1k7CisgICAgcmV0dXJuIEhBTF9CVVNZOwogICB9Ci0gIAotICAvKiBJZGVudGlmeSB0aGUgZGV2aWNlIGFkZHJlc3MgKi8KLSAgZGV2aWNlQWRkcmVzcyA9IE5BTkRfREVWSUNFOwotICAKLSAgLyogVXBkYXRlIHRoZSBOQU5EIGNvbnRyb2xsZXIgc3RhdGUgKi8gCi0gIGhuYW5kLT5TdGF0ZSA9IEhBTF9OQU5EX1NUQVRFX0JVU1k7Ci0gIAotICAvKiBOQU5EIHJhdyBhZGRyZXNzIGNhbGN1bGF0aW9uICovCi0gIG5hbmRBZGRyZXNzID0gQVJSQVlfQUREUkVTUyhwQWRkcmVzcywgaG5hbmQpOwotICAKLSAgLyogUGFnZShzKSB3cml0ZSBsb29wICovCi0gIHdoaWxlKChOdW1QYWdlVG9Xcml0ZSAhPSAwKSAmJiAobmFuZEFkZHJlc3MgPCAoKGhuYW5kLT5Db25maWcuQmxvY2tTaXplKSAqIChobmFuZC0+Q29uZmlnLkJsb2NrTmJyKSkpKQorICBlbHNlIGlmIChobmFuZC0+U3RhdGUgPT0gSEFMX05BTkRfU1RBVEVfUkVBRFkpCiAgIHsKLSAgICAvKiB1cGRhdGUgdGhlIGJ1ZmZlciBzaXplICovCi0gICAgc2l6ZSA9IChobmFuZC0+Q29uZmlnLlBhZ2VTaXplKSArICgoaG5hbmQtPkNvbmZpZy5QYWdlU2l6ZSkgKiBudW1QYWdlc1dyaXR0ZW4pOwotIAotICAgIC8qIFNlbmQgd3JpdGUgcGFnZSBjb21tYW5kIHNlcXVlbmNlICovCi0gICAgKihfX0lPIHVpbnQ4X3QgKikoKHVpbnQzMl90KShkZXZpY2VBZGRyZXNzIHwgQ01EX0FSRUEpKSA9IE5BTkRfQ01EX0FSRUFfQTsKLSAgICBfX0RTQigpOwotICAgICooX19JTyB1aW50OF90ICopKCh1aW50MzJfdCkoZGV2aWNlQWRkcmVzcyB8IENNRF9BUkVBKSkgPSBOQU5EX0NNRF9XUklURTA7Ci0gICAgX19EU0IoKTsKKyAgICAvKiBQcm9jZXNzIExvY2tlZCAqLworICAgIF9fSEFMX0xPQ0soaG5hbmQpOwogCi0gICAgLyogQ2FyZHMgd2l0aCBwYWdlIHNpemUgPD0gNTEyIGJ5dGVzICovCi0gICAgaWYoKGhuYW5kLT5Db25maWcuUGFnZVNpemUpIDw9IDUxMikKLSAgICB7Ci0gICAgICBpZiAoKChobmFuZC0+Q29uZmlnLkJsb2NrU2l6ZSkqKGhuYW5kLT5Db25maWcuQmxvY2tOYnIpKSA8PSA2NTUzNSkKLSAgICAgIHsKLSAgICAgICAgKihfX0lPIHVpbnQ4X3QgKikoKHVpbnQzMl90KShkZXZpY2VBZGRyZXNzIHwgQUREUl9BUkVBKSkgPSAweDAwOwotICAgICAgICBfX0RTQigpOwotICAgICAgICAqKF9fSU8gdWludDhfdCAqKSgodWludDMyX3QpKGRldmljZUFkZHJlc3MgfCBBRERSX0FSRUEpKSA9IEFERFJfMVNUX0NZQ0xFKG5hbmRBZGRyZXNzKTsKLSAgICAgICAgX19EU0IoKTsKLSAgICAgICAgKihfX0lPIHVpbnQ4X3QgKikoKHVpbnQzMl90KShkZXZpY2VBZGRyZXNzIHwgQUREUl9BUkVBKSkgPSBBRERSXzJORF9DWUNMRShuYW5kQWRkcmVzcyk7Ci0gICAgICAgIF9fRFNCKCk7Ci0gICAgICB9Ci0gICAgICBlbHNlIC8qICgoaG5hbmQtPkNvbmZpZy5CbG9ja1NpemUpKihobmFuZC0+Q29uZmlnLkJsb2NrTmJyKSkgPiA2NTUzNSAqLwotICAgICAgewotICAgICAgICAqKF9fSU8gdWludDhfdCAqKSgodWludDMyX3QpKGRldmljZUFkZHJlc3MgfCBBRERSX0FSRUEpKSA9IDB4MDA7Ci0gICAgICAgIF9fRFNCKCk7Ci0gICAgICAgICooX19JTyB1aW50OF90ICopKCh1aW50MzJfdCkoZGV2aWNlQWRkcmVzcyB8IEFERFJfQVJFQSkpID0gQUREUl8xU1RfQ1lDTEUobmFuZEFkZHJlc3MpOwotICAgICAgICBfX0RTQigpOwotICAgICAgICAqKF9fSU8gdWludDhfdCAqKSgodWludDMyX3QpKGRldmljZUFkZHJlc3MgfCBBRERSX0FSRUEpKSA9IEFERFJfMk5EX0NZQ0xFKG5hbmRBZGRyZXNzKTsKLSAgICAgICAgX19EU0IoKTsKLSAgICAgICAgKihfX0lPIHVpbnQ4X3QgKikoKHVpbnQzMl90KShkZXZpY2VBZGRyZXNzIHwgQUREUl9BUkVBKSkgPSBBRERSXzNSRF9DWUNMRShuYW5kQWRkcmVzcyk7Ci0gICAgICAgIF9fRFNCKCk7Ci0gICAgICB9Ci0gICAgfQotICAgIGVsc2UgLyogKGhuYW5kLT5Db25maWcuUGFnZVNpemUpID4gNTEyICovCi0gICAgewotICAgICAgaWYgKCgoaG5hbmQtPkNvbmZpZy5CbG9ja1NpemUpKihobmFuZC0+Q29uZmlnLkJsb2NrTmJyKSkgPD0gNjU1MzUpCi0gICAgICB7Ci0gICAgICAgICooX19JTyB1aW50OF90ICopKCh1aW50MzJfdCkoZGV2aWNlQWRkcmVzcyB8IEFERFJfQVJFQSkpID0gMHgwMDsKLSAgICAgICAgX19EU0IoKTsKLSAgICAgICAgKihfX0lPIHVpbnQ4X3QgKikoKHVpbnQzMl90KShkZXZpY2VBZGRyZXNzIHwgQUREUl9BUkVBKSkgPSAweDAwOwotICAgICAgICBfX0RTQigpOwotICAgICAgICAqKF9fSU8gdWludDhfdCAqKSgodWludDMyX3QpKGRldmljZUFkZHJlc3MgfCBBRERSX0FSRUEpKSA9IEFERFJfMVNUX0NZQ0xFKG5hbmRBZGRyZXNzKTsKLSAgICAgICAgX19EU0IoKTsKLSAgICAgICAgKihfX0lPIHVpbnQ4X3QgKikoKHVpbnQzMl90KShkZXZpY2VBZGRyZXNzIHwgQUREUl9BUkVBKSkgPSBBRERSXzJORF9DWUNMRShuYW5kQWRkcmVzcyk7Ci0gICAgICAgIF9fRFNCKCk7Ci0gICAgICB9Ci0gICAgICBlbHNlIC8qICgoaG5hbmQtPkNvbmZpZy5CbG9ja1NpemUpKihobmFuZC0+Q29uZmlnLkJsb2NrTmJyKSkgPiA2NTUzNSAqLwotICAgICAgewotICAgICAgICAqKF9fSU8gdWludDhfdCAqKSgodWludDMyX3QpKGRldmljZUFkZHJlc3MgfCBBRERSX0FSRUEpKSA9IDB4MDA7Ci0gICAgICAgIF9fRFNCKCk7Ci0gICAgICAgICooX19JTyB1aW50OF90ICopKCh1aW50MzJfdCkoZGV2aWNlQWRkcmVzcyB8IEFERFJfQVJFQSkpID0gMHgwMDsKLSAgICAgICAgX19EU0IoKTsKLSAgICAgICAgKihfX0lPIHVpbnQ4X3QgKikoKHVpbnQzMl90KShkZXZpY2VBZGRyZXNzIHwgQUREUl9BUkVBKSkgPSBBRERSXzFTVF9DWUNMRShuYW5kQWRkcmVzcyk7Ci0gICAgICAgIF9fRFNCKCk7Ci0gICAgICAgICooX19JTyB1aW50OF90ICopKCh1aW50MzJfdCkoZGV2aWNlQWRkcmVzcyB8IEFERFJfQVJFQSkpID0gQUREUl8yTkRfQ1lDTEUobmFuZEFkZHJlc3MpOwotICAgICAgICBfX0RTQigpOwotICAgICAgICAqKF9fSU8gdWludDhfdCAqKSgodWludDMyX3QpKGRldmljZUFkZHJlc3MgfCBBRERSX0FSRUEpKSA9IEFERFJfM1JEX0NZQ0xFKG5hbmRBZGRyZXNzKTsKLSAgICAgICAgX19EU0IoKTsKLSAgICAgIH0KLSAgICB9CisgICAgLyogVXBkYXRlIHRoZSBOQU5EIGNvbnRyb2xsZXIgc3RhdGUgKi8KKyAgICBobmFuZC0+U3RhdGUgPSBIQUxfTkFORF9TVEFURV9CVVNZOwogCi0gICAgLyogQ2FsY3VsYXRlIFBhZ2VTaXplICovCi0gICAgaWYgKGhuYW5kLT5Jbml0Lk1lbW9yeURhdGFXaWR0aCA9PSBGTUNfTkFORF9QQ0NfTUVNX0JVU19XSURUSF84KQotICAgIHsKLSAgICAgIHNpemUgPSBzaXplIC8gMlU7Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICAvKiBEbyBub3RoaW5nICovCi0gICAgICAvKiBLZWVwIHRoZSBzYW1lIFBhZ2VTaXplIGZvciBGTUNfTkFORF9NRU1fQlVTX1dJRFRIXzE2Ki8KLSAgICB9CisgICAgLyogSWRlbnRpZnkgdGhlIGRldmljZSBhZGRyZXNzICovCisgICAgZGV2aWNlYWRkcmVzcyA9IE5BTkRfREVWSUNFOwogCi0gICAgLyogV3JpdGUgZGF0YSB0byBtZW1vcnkgKi8KLSAgICBmb3IoOyBpbmRleCA8IHNpemU7IGluZGV4KyspCisgICAgLyogTkFORCByYXcgYWRkcmVzcyBjYWxjdWxhdGlvbiAqLworICAgIG5hbmRhZGRyZXNzID0gQVJSQVlfQUREUkVTUyhwQWRkcmVzcywgaG5hbmQpOworCisgICAgLyogUGFnZShzKSB3cml0ZSBsb29wICovCisgICAgd2hpbGUgKChuYnBhZ2VzICE9IDBVKSAmJiAobmFuZGFkZHJlc3MgPCAoKGhuYW5kLT5Db25maWcuQmxvY2tTaXplKSAqIChobmFuZC0+Q29uZmlnLkJsb2NrTmJyKSkpKQogICAgIHsKLSAgICAgICooX19JTyB1aW50MTZfdCAqKWRldmljZUFkZHJlc3MgPSAqKHVpbnQxNl90ICopcEJ1ZmZlcisrOworICAgICAgLyogU2VuZCB3cml0ZSBwYWdlIGNvbW1hbmQgc2VxdWVuY2UgKi8KKyAgICAgICooX19JTyB1aW50OF90ICopKCh1aW50MzJfdCkoZGV2aWNlYWRkcmVzcyB8IENNRF9BUkVBKSkgPSBOQU5EX0NNRF9BUkVBX0E7CiAgICAgICBfX0RTQigpOwotICAgIH0KLSAgIAotICAgICooX19JTyB1aW50OF90ICopKCh1aW50MzJfdCkoZGV2aWNlQWRkcmVzcyB8IENNRF9BUkVBKSkgPSBOQU5EX0NNRF9XUklURV9UUlVFMTsKLSAgICBfX0RTQigpOwotICAgIAotCS8qIEdldCB0aWNrICovCi0gICAgdGlja3N0YXJ0ID0gSEFMX0dldFRpY2soKTsKLQkgIAotICAgIC8qIFJlYWQgc3RhdHVzIHVudGlsIE5BTkQgaXMgcmVhZHkgKi8KLSAgICB3aGlsZShIQUxfTkFORF9SZWFkX1N0YXR1cyhobmFuZCkgIT0gTkFORF9SRUFEWSkKLSAgICB7ICAKLSAgICAgIGlmKChIQUxfR2V0VGljaygpIC0gdGlja3N0YXJ0ICkgPiBOQU5EX1dSSVRFX1RJTUVPVVQpCisgICAgICAqKF9fSU8gdWludDhfdCAqKSgodWludDMyX3QpKGRldmljZWFkZHJlc3MgfCBDTURfQVJFQSkpID0gTkFORF9DTURfV1JJVEUwOworICAgICAgX19EU0IoKTsKKworICAgICAgLyogQ2FyZHMgd2l0aCBwYWdlIHNpemUgPD0gNTEyIGJ5dGVzICovCisgICAgICBpZiAoKGhuYW5kLT5Db25maWcuUGFnZVNpemUpIDw9IDUxMlUpCiAgICAgICB7Ci0gICAgICAgIHJldHVybiBIQUxfVElNRU9VVDsgCi0gICAgICB9IAotICAgIH0gICAKLSAKLSAgICAvKiBJbmNyZW1lbnQgd3JpdHRlbiBwYWdlcyBudW1iZXIgKi8KLSAgICBudW1QYWdlc1dyaXR0ZW4rKzsKLSAgICAKLSAgICAvKiBEZWNyZW1lbnQgcGFnZXMgdG8gd3JpdGUgKi8KLSAgICBOdW1QYWdlVG9Xcml0ZS0tOwotICAgIAotICAgIC8qIEluY3JlbWVudCB0aGUgTkFORCBhZGRyZXNzICovCi0gICAgbmFuZEFkZHJlc3MgPSAodWludDMyX3QpKG5hbmRBZGRyZXNzICsgMSk7CisgICAgICAgIGlmICgoKGhuYW5kLT5Db25maWcuQmxvY2tTaXplKSAqIChobmFuZC0+Q29uZmlnLkJsb2NrTmJyKSkgPD0gNjU1MzVVKQorICAgICAgICB7CisgICAgICAgICAgKihfX0lPIHVpbnQ4X3QgKikoKHVpbnQzMl90KShkZXZpY2VhZGRyZXNzIHwgQUREUl9BUkVBKSkgPSAweDAwVTsKKyAgICAgICAgICBfX0RTQigpOworICAgICAgICAgICooX19JTyB1aW50OF90ICopKCh1aW50MzJfdCkoZGV2aWNlYWRkcmVzcyB8IEFERFJfQVJFQSkpID0gQUREUl8xU1RfQ1lDTEUobmFuZGFkZHJlc3MpOworICAgICAgICAgIF9fRFNCKCk7CisgICAgICAgICAgKihfX0lPIHVpbnQ4X3QgKikoKHVpbnQzMl90KShkZXZpY2VhZGRyZXNzIHwgQUREUl9BUkVBKSkgPSBBRERSXzJORF9DWUNMRShuYW5kYWRkcmVzcyk7CisgICAgICAgICAgX19EU0IoKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIC8qICgoaG5hbmQtPkNvbmZpZy5CbG9ja1NpemUpKihobmFuZC0+Q29uZmlnLkJsb2NrTmJyKSkgPiA2NTUzNSAqLworICAgICAgICB7CisgICAgICAgICAgKihfX0lPIHVpbnQ4X3QgKikoKHVpbnQzMl90KShkZXZpY2VhZGRyZXNzIHwgQUREUl9BUkVBKSkgPSAweDAwVTsKKyAgICAgICAgICBfX0RTQigpOworICAgICAgICAgICooX19JTyB1aW50OF90ICopKCh1aW50MzJfdCkoZGV2aWNlYWRkcmVzcyB8IEFERFJfQVJFQSkpID0gQUREUl8xU1RfQ1lDTEUobmFuZGFkZHJlc3MpOworICAgICAgICAgIF9fRFNCKCk7CisgICAgICAgICAgKihfX0lPIHVpbnQ4X3QgKikoKHVpbnQzMl90KShkZXZpY2VhZGRyZXNzIHwgQUREUl9BUkVBKSkgPSBBRERSXzJORF9DWUNMRShuYW5kYWRkcmVzcyk7CisgICAgICAgICAgX19EU0IoKTsKKyAgICAgICAgICAqKF9fSU8gdWludDhfdCAqKSgodWludDMyX3QpKGRldmljZWFkZHJlc3MgfCBBRERSX0FSRUEpKSA9IEFERFJfM1JEX0NZQ0xFKG5hbmRhZGRyZXNzKTsKKyAgICAgICAgICBfX0RTQigpOworICAgICAgICB9CisgICAgICB9CisgICAgICBlbHNlIC8qIChobmFuZC0+Q29uZmlnLlBhZ2VTaXplKSA+IDUxMiAqLworICAgICAgeworICAgICAgICBpZiAoKChobmFuZC0+Q29uZmlnLkJsb2NrU2l6ZSkgKiAoaG5hbmQtPkNvbmZpZy5CbG9ja05icikpIDw9IDY1NTM1VSkKKyAgICAgICAgeworICAgICAgICAgICooX19JTyB1aW50OF90ICopKCh1aW50MzJfdCkoZGV2aWNlYWRkcmVzcyB8IEFERFJfQVJFQSkpID0gMHgwMFU7CisgICAgICAgICAgX19EU0IoKTsKKyAgICAgICAgICAqKF9fSU8gdWludDhfdCAqKSgodWludDMyX3QpKGRldmljZWFkZHJlc3MgfCBBRERSX0FSRUEpKSA9IDB4MDBVOworICAgICAgICAgIF9fRFNCKCk7CisgICAgICAgICAgKihfX0lPIHVpbnQ4X3QgKikoKHVpbnQzMl90KShkZXZpY2VhZGRyZXNzIHwgQUREUl9BUkVBKSkgPSBBRERSXzFTVF9DWUNMRShuYW5kYWRkcmVzcyk7CisgICAgICAgICAgX19EU0IoKTsKKyAgICAgICAgICAqKF9fSU8gdWludDhfdCAqKSgodWludDMyX3QpKGRldmljZWFkZHJlc3MgfCBBRERSX0FSRUEpKSA9IEFERFJfMk5EX0NZQ0xFKG5hbmRhZGRyZXNzKTsKKyAgICAgICAgICBfX0RTQigpOworICAgICAgICB9CisgICAgICAgIGVsc2UgLyogKChobmFuZC0+Q29uZmlnLkJsb2NrU2l6ZSkqKGhuYW5kLT5Db25maWcuQmxvY2tOYnIpKSA+IDY1NTM1ICovCisgICAgICAgIHsKKyAgICAgICAgICAqKF9fSU8gdWludDhfdCAqKSgodWludDMyX3QpKGRldmljZWFkZHJlc3MgfCBBRERSX0FSRUEpKSA9IDB4MDBVOworICAgICAgICAgIF9fRFNCKCk7CisgICAgICAgICAgKihfX0lPIHVpbnQ4X3QgKikoKHVpbnQzMl90KShkZXZpY2VhZGRyZXNzIHwgQUREUl9BUkVBKSkgPSAweDAwVTsKKyAgICAgICAgICBfX0RTQigpOworICAgICAgICAgICooX19JTyB1aW50OF90ICopKCh1aW50MzJfdCkoZGV2aWNlYWRkcmVzcyB8IEFERFJfQVJFQSkpID0gQUREUl8xU1RfQ1lDTEUobmFuZGFkZHJlc3MpOworICAgICAgICAgIF9fRFNCKCk7CisgICAgICAgICAgKihfX0lPIHVpbnQ4X3QgKikoKHVpbnQzMl90KShkZXZpY2VhZGRyZXNzIHwgQUREUl9BUkVBKSkgPSBBRERSXzJORF9DWUNMRShuYW5kYWRkcmVzcyk7CisgICAgICAgICAgX19EU0IoKTsKKyAgICAgICAgICAqKF9fSU8gdWludDhfdCAqKSgodWludDMyX3QpKGRldmljZWFkZHJlc3MgfCBBRERSX0FSRUEpKSA9IEFERFJfM1JEX0NZQ0xFKG5hbmRhZGRyZXNzKTsKKyAgICAgICAgICBfX0RTQigpOworICAgICAgICB9CisgICAgICB9CisKKyAgICAgIC8qIENhbGN1bGF0ZSBQYWdlU2l6ZSAqLworICAgICAgaWYgKGhuYW5kLT5Jbml0Lk1lbW9yeURhdGFXaWR0aCA9PSBGTUNfTkFORF9NRU1fQlVTX1dJRFRIXzgpCisgICAgICB7CisgICAgICAgIGhuYW5kLT5Db25maWcuUGFnZVNpemUgPSBobmFuZC0+Q29uZmlnLlBhZ2VTaXplIC8gMlU7CisgICAgICB9CisgICAgICBlbHNlCisgICAgICB7CisgICAgICAgIC8qIERvIG5vdGhpbmcgKi8KKyAgICAgICAgLyogS2VlcCB0aGUgc2FtZSBQYWdlU2l6ZSBmb3IgRk1DX05BTkRfTUVNX0JVU19XSURUSF8xNiovCisgICAgICB9CisKKyAgICAgIC8qIFdyaXRlIGRhdGEgdG8gbWVtb3J5ICovCisgICAgICBmb3IgKGluZGV4ID0gMFU7IGluZGV4IDwgaG5hbmQtPkNvbmZpZy5QYWdlU2l6ZTsgaW5kZXgrKykKKyAgICAgIHsKKyAgICAgICAgKihfX0lPIHVpbnQxNl90ICopZGV2aWNlYWRkcmVzcyA9ICpidWZmOworICAgICAgICBidWZmKys7CisgICAgICAgIF9fRFNCKCk7CisgICAgICB9CisKKyAgICAgICooX19JTyB1aW50OF90ICopKCh1aW50MzJfdCkoZGV2aWNlYWRkcmVzcyB8IENNRF9BUkVBKSkgPSBOQU5EX0NNRF9XUklURV9UUlVFMTsKKyAgICAgIF9fRFNCKCk7CisKKyAgICAgIC8qIEdldCB0aWNrICovCisgICAgICB0aWNrc3RhcnQgPSBIQUxfR2V0VGljaygpOworCisgICAgICAvKiBSZWFkIHN0YXR1cyB1bnRpbCBOQU5EIGlzIHJlYWR5ICovCisgICAgICB3aGlsZSAoSEFMX05BTkRfUmVhZF9TdGF0dXMoaG5hbmQpICE9IE5BTkRfUkVBRFkpCisgICAgICB7CisgICAgICAgIGlmICgoSEFMX0dldFRpY2soKSAtIHRpY2tzdGFydCkgPiBOQU5EX1dSSVRFX1RJTUVPVVQpCisgICAgICAgIHsKKyAgICAgICAgICAvKiBVcGRhdGUgdGhlIE5BTkQgY29udHJvbGxlciBzdGF0ZSAqLworICAgICAgICAgIGhuYW5kLT5TdGF0ZSA9IEhBTF9OQU5EX1NUQVRFX0VSUk9SOworCisgICAgICAgICAgLyogUHJvY2VzcyB1bmxvY2tlZCAqLworICAgICAgICAgIF9fSEFMX1VOTE9DSyhobmFuZCk7CisKKyAgICAgICAgICByZXR1cm4gSEFMX1RJTUVPVVQ7CisgICAgICAgIH0KKyAgICAgIH0KKworICAgICAgLyogSW5jcmVtZW50IHdyaXR0ZW4gcGFnZXMgbnVtYmVyICovCisgICAgICBudW1wYWdlc3dyaXR0ZW4rKzsKKworICAgICAgLyogRGVjcmVtZW50IHBhZ2VzIHRvIHdyaXRlICovCisgICAgICBuYnBhZ2VzLS07CisKKyAgICAgIC8qIEluY3JlbWVudCB0aGUgTkFORCBhZGRyZXNzICovCisgICAgICBuYW5kYWRkcmVzcyA9ICh1aW50MzJfdCkobmFuZGFkZHJlc3MgKyAxVSk7CisgICAgfQorCisgICAgLyogVXBkYXRlIHRoZSBOQU5EIGNvbnRyb2xsZXIgc3RhdGUgKi8KKyAgICBobmFuZC0+U3RhdGUgPSBIQUxfTkFORF9TVEFURV9SRUFEWTsKKworICAgIC8qIFByb2Nlc3MgdW5sb2NrZWQgKi8KKyAgICBfX0hBTF9VTkxPQ0soaG5hbmQpOwogICB9Ci0gIAotICAvKiBVcGRhdGUgdGhlIE5BTkQgY29udHJvbGxlciBzdGF0ZSAqLyAKLSAgaG5hbmQtPlN0YXRlID0gSEFMX05BTkRfU1RBVEVfUkVBRFk7Ci0gIAotICAvKiBQcm9jZXNzIHVubG9ja2VkICovCi0gIF9fSEFMX1VOTE9DSyhobmFuZCk7ICAgICAgCi0gIAorICBlbHNlCisgIHsKKyAgICByZXR1cm4gSEFMX0VSUk9SOworICB9CisKICAgcmV0dXJuIEhBTF9PSzsKIH0KIApAQCAtMTA4MiwxNDggKzExNTMsMTY0IEBACiAgICogQHBhcmFtICBobmFuZCBwb2ludGVyIHRvIGEgTkFORF9IYW5kbGVUeXBlRGVmIHN0cnVjdHVyZSB0aGF0IGNvbnRhaW5zCiAgICogICAgICAgICAgICAgICAgdGhlIGNvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb24gZm9yIE5BTkQgbW9kdWxlLgogICAqIEBwYXJhbSAgcEFkZHJlc3MgIHBvaW50ZXIgdG8gTkFORCBhZGRyZXNzIHN0cnVjdHVyZQotICAqIEBwYXJhbSAgcEJ1ZmZlciBwb2ludGVyIHRvIHNvdXJjZSBidWZmZXIgdG8gd3JpdGUgIAotICAqIEBwYXJhbSAgTnVtU3BhcmVBcmVhVG9SZWFkIE51bWJlciBvZiBzcGFyZSBhcmVhIHRvIHJlYWQgIAorICAqIEBwYXJhbSAgcEJ1ZmZlciBwb2ludGVyIHRvIHNvdXJjZSBidWZmZXIgdG8gd3JpdGUKKyAgKiBAcGFyYW0gIE51bVNwYXJlQXJlYVRvUmVhZCBOdW1iZXIgb2Ygc3BhcmUgYXJlYSB0byByZWFkCiAgICogQHJldHZhbCBIQUwgc3RhdHVzCi0qLwotSEFMX1N0YXR1c1R5cGVEZWYgSEFMX05BTkRfUmVhZF9TcGFyZUFyZWFfOGIoTkFORF9IYW5kbGVUeXBlRGVmICpobmFuZCwgTkFORF9BZGRyZXNzVHlwZURlZiAqcEFkZHJlc3MsIHVpbnQ4X3QgKnBCdWZmZXIsIHVpbnQzMl90IE51bVNwYXJlQXJlYVRvUmVhZCkKKyAgKi8KK0hBTF9TdGF0dXNUeXBlRGVmIEhBTF9OQU5EX1JlYWRfU3BhcmVBcmVhXzhiKE5BTkRfSGFuZGxlVHlwZURlZiAqaG5hbmQsIE5BTkRfQWRkcmVzc1R5cGVEZWYgKnBBZGRyZXNzLCB1aW50OF90ICpwQnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgTnVtU3BhcmVBcmVhVG9SZWFkKQogewotICBfX0lPIHVpbnQzMl90IGluZGV4ID0gMDsKLSAgdWludDMyX3QgdGlja3N0YXJ0ID0gMFU7Ci0gIHVpbnQzMl90IGRldmljZUFkZHJlc3MgPSAwLCBzaXplID0gMCwgbnVtU3BhcmVBcmVhUmVhZCA9IDAsIG5hbmRBZGRyZXNzID0gMCwgY29sdW1uQWRkcmVzcyA9IDA7Ci0gIAotICAvKiBQcm9jZXNzIExvY2tlZCAqLwotICBfX0hBTF9MT0NLKGhuYW5kKTsgIAotICAKLSAgLyogQ2hlY2sgdGhlIE5BTkQgY29udHJvbGxlciBzdGF0ZSAqLwotICBpZihobmFuZC0+U3RhdGUgPT0gSEFMX05BTkRfU1RBVEVfQlVTWSkKLSAgewotICAgICByZXR1cm4gSEFMX0JVU1k7Ci0gIH0KLSAgCi0gIC8qIElkZW50aWZ5IHRoZSBkZXZpY2UgYWRkcmVzcyAqLwotICBkZXZpY2VBZGRyZXNzID0gTkFORF9ERVZJQ0U7Ci0gIAotICAvKiBVcGRhdGUgdGhlIE5BTkQgY29udHJvbGxlciBzdGF0ZSAqLwotICBobmFuZC0+U3RhdGUgPSBIQUxfTkFORF9TVEFURV9CVVNZOwotICAKLSAgLyogTkFORCByYXcgYWRkcmVzcyBjYWxjdWxhdGlvbiAqLwotICBuYW5kQWRkcmVzcyA9IEFSUkFZX0FERFJFU1MocEFkZHJlc3MsIGhuYW5kKTsKLSAgCi0gIC8qIENvbHVtbiBpbiBwYWdlIGFkZHJlc3MgKi8KLSAgY29sdW1uQWRkcmVzcyA9IENPTFVNTl9BRERSRVNTKGhuYW5kKTsKLSAgCi0gIC8qIFNwYXJlIGFyZWEocykgcmVhZCBsb29wICovIAotICB3aGlsZSgoTnVtU3BhcmVBcmVhVG9SZWFkICE9IDApICYmIChuYW5kQWRkcmVzcyA8ICgoaG5hbmQtPkNvbmZpZy5CbG9ja1NpemUpICogKGhuYW5kLT5Db25maWcuQmxvY2tOYnIpKSkpCi0gIHsKLSAgICAvKiB1cGRhdGUgdGhlIGJ1ZmZlciBzaXplICovCi0gICAgc2l6ZSA9IChobmFuZC0+Q29uZmlnLlNwYXJlQXJlYVNpemUpICsgKChobmFuZC0+Q29uZmlnLlNwYXJlQXJlYVNpemUpICogbnVtU3BhcmVBcmVhUmVhZCk7ICAgCi0gICAgCi0gICAgLyogQ2FyZHMgd2l0aCBwYWdlIHNpemUgPD0gNTEyIGJ5dGVzICovCi0gICAgaWYoKGhuYW5kLT5Db25maWcuUGFnZVNpemUpIDw9IDUxMikKLSAgICB7Ci0gICAgICAvKiBTZW5kIHJlYWQgc3BhcmUgYXJlYSBjb21tYW5kIHNlcXVlbmNlICovICAgICAKLSAgICAgICooX19JTyB1aW50OF90ICopKCh1aW50MzJfdCkoZGV2aWNlQWRkcmVzcyB8IENNRF9BUkVBKSkgPSBOQU5EX0NNRF9BUkVBX0M7Ci0gICAgICBfX0RTQigpOwotICAgICAgCi0gICAgICBpZiAoKChobmFuZC0+Q29uZmlnLkJsb2NrU2l6ZSkqKGhuYW5kLT5Db25maWcuQmxvY2tOYnIpKSA8PSA2NTUzNSkKLSAgICAgIHsKLSAgICAgICAgKihfX0lPIHVpbnQ4X3QgKikoKHVpbnQzMl90KShkZXZpY2VBZGRyZXNzIHwgQUREUl9BUkVBKSkgPSAweDAwOwotICAgICAgICBfX0RTQigpOwotICAgICAgICAqKF9fSU8gdWludDhfdCAqKSgodWludDMyX3QpKGRldmljZUFkZHJlc3MgfCBBRERSX0FSRUEpKSA9IEFERFJfMVNUX0NZQ0xFKG5hbmRBZGRyZXNzKTsKLSAgICAgICAgX19EU0IoKTsKLSAgICAgICAgKihfX0lPIHVpbnQ4X3QgKikoKHVpbnQzMl90KShkZXZpY2VBZGRyZXNzIHwgQUREUl9BUkVBKSkgPSBBRERSXzJORF9DWUNMRShuYW5kQWRkcmVzcyk7Ci0gICAgICAgIF9fRFNCKCk7Ci0gICAgICB9Ci0gICAgICBlbHNlIC8qICgoaG5hbmQtPkNvbmZpZy5CbG9ja1NpemUpKihobmFuZC0+Q29uZmlnLkJsb2NrTmJyKSkgPiA2NTUzNSAqLwotICAgICAgewotICAgICAgICAqKF9fSU8gdWludDhfdCAqKSgodWludDMyX3QpKGRldmljZUFkZHJlc3MgfCBBRERSX0FSRUEpKSA9IDB4MDA7Ci0gICAgICAgIF9fRFNCKCk7Ci0gICAgICAgICooX19JTyB1aW50OF90ICopKCh1aW50MzJfdCkoZGV2aWNlQWRkcmVzcyB8IEFERFJfQVJFQSkpID0gQUREUl8xU1RfQ1lDTEUobmFuZEFkZHJlc3MpOwotICAgICAgICBfX0RTQigpOwotICAgICAgICAqKF9fSU8gdWludDhfdCAqKSgodWludDMyX3QpKGRldmljZUFkZHJlc3MgfCBBRERSX0FSRUEpKSA9IEFERFJfMk5EX0NZQ0xFKG5hbmRBZGRyZXNzKTsKLSAgICAgICAgX19EU0IoKTsKLSAgICAgICAgKihfX0lPIHVpbnQ4X3QgKikoKHVpbnQzMl90KShkZXZpY2VBZGRyZXNzIHwgQUREUl9BUkVBKSkgPSBBRERSXzNSRF9DWUNMRShuYW5kQWRkcmVzcyk7Ci0gICAgICAgIF9fRFNCKCk7Ci0gICAgICB9Ci0gICAgfQotICAgIGVsc2UgLyogKGhuYW5kLT5Db25maWcuUGFnZVNpemUpID4gNTEyICovCi0gICAgewotICAgICAgLyogU2VuZCByZWFkIHNwYXJlIGFyZWEgY29tbWFuZCBzZXF1ZW5jZSAqLyAKLSAgICAgICooX19JTyB1aW50OF90ICopKCh1aW50MzJfdCkoZGV2aWNlQWRkcmVzcyB8IENNRF9BUkVBKSkgPSBOQU5EX0NNRF9BUkVBX0E7Ci0gICAgICBfX0RTQigpOwotICAgICAgCi0gICAgICBpZiAoKChobmFuZC0+Q29uZmlnLkJsb2NrU2l6ZSkqKGhuYW5kLT5Db25maWcuQmxvY2tOYnIpKSA8PSA2NTUzNSkKLSAgICAgIHsKLSAgICAgICAgKihfX0lPIHVpbnQ4X3QgKikoKHVpbnQzMl90KShkZXZpY2VBZGRyZXNzIHwgQUREUl9BUkVBKSkgPSBDT0xVTU5fMVNUX0NZQ0xFKGNvbHVtbkFkZHJlc3MpOwotICAgICAgICBfX0RTQigpOwotICAgICAgICAqKF9fSU8gdWludDhfdCAqKSgodWludDMyX3QpKGRldmljZUFkZHJlc3MgfCBBRERSX0FSRUEpKSA9IENPTFVNTl8yTkRfQ1lDTEUoY29sdW1uQWRkcmVzcyk7Ci0gICAgICAgIF9fRFNCKCk7Ci0gICAgICAgICooX19JTyB1aW50OF90ICopKCh1aW50MzJfdCkoZGV2aWNlQWRkcmVzcyB8IEFERFJfQVJFQSkpID0gQUREUl8xU1RfQ1lDTEUobmFuZEFkZHJlc3MpOwotICAgICAgICBfX0RTQigpOwotICAgICAgICAqKF9fSU8gdWludDhfdCAqKSgodWludDMyX3QpKGRldmljZUFkZHJlc3MgfCBBRERSX0FSRUEpKSA9IEFERFJfMk5EX0NZQ0xFKG5hbmRBZGRyZXNzKTsKLSAgICAgICAgX19EU0IoKTsKLSAgICAgIH0KLSAgICAgIGVsc2UgLyogKChobmFuZC0+Q29uZmlnLkJsb2NrU2l6ZSkqKGhuYW5kLT5Db25maWcuQmxvY2tOYnIpKSA+IDY1NTM1ICovCi0gICAgICB7Ci0gICAgICAgICooX19JTyB1aW50OF90ICopKCh1aW50MzJfdCkoZGV2aWNlQWRkcmVzcyB8IEFERFJfQVJFQSkpID0gQ09MVU1OXzFTVF9DWUNMRShjb2x1bW5BZGRyZXNzKTsKLSAgICAgICAgX19EU0IoKTsKLSAgICAgICAgKihfX0lPIHVpbnQ4X3QgKikoKHVpbnQzMl90KShkZXZpY2VBZGRyZXNzIHwgQUREUl9BUkVBKSkgPSBDT0xVTU5fMk5EX0NZQ0xFKGNvbHVtbkFkZHJlc3MpOwotICAgICAgICBfX0RTQigpOwotICAgICAgICAqKF9fSU8gdWludDhfdCAqKSgodWludDMyX3QpKGRldmljZUFkZHJlc3MgfCBBRERSX0FSRUEpKSA9IEFERFJfMVNUX0NZQ0xFKG5hbmRBZGRyZXNzKTsKLSAgICAgICAgX19EU0IoKTsKLSAgICAgICAgKihfX0lPIHVpbnQ4X3QgKikoKHVpbnQzMl90KShkZXZpY2VBZGRyZXNzIHwgQUREUl9BUkVBKSkgPSBBRERSXzJORF9DWUNMRShuYW5kQWRkcmVzcyk7Ci0gICAgICAgIF9fRFNCKCk7Ci0gICAgICAgICooX19JTyB1aW50OF90ICopKCh1aW50MzJfdCkoZGV2aWNlQWRkcmVzcyB8IEFERFJfQVJFQSkpID0gQUREUl8zUkRfQ1lDTEUobmFuZEFkZHJlc3MpOwotICAgICAgICBfX0RTQigpOwotICAgICAgfQotICAgIH0KKyAgdWludDMyX3QgaW5kZXg7CisgIHVpbnQzMl90IHRpY2tzdGFydDsKKyAgdWludDMyX3QgZGV2aWNlYWRkcmVzczsKKyAgdWludDMyX3QgbnVtc3BhcmVhcmVhcmVhZCA9IDBVOworICB1aW50MzJfdCBuYW5kYWRkcmVzczsKKyAgdWludDMyX3QgY29sdW1uYWRkcmVzczsKKyAgdWludDMyX3QgbmJzcGFyZSA9IE51bVNwYXJlQXJlYVRvUmVhZDsKKyAgdWludDhfdCAqYnVmZiA9IHBCdWZmZXI7CiAKLSAgICAqKF9fSU8gdWludDhfdCAqKSgodWludDMyX3QpKGRldmljZUFkZHJlc3MgfCBDTURfQVJFQSkpID0gTkFORF9DTURfQVJFQV9UUlVFMTsKLSAgICBfX0RTQigpOwotICAgIAotICAgIGlmKGhuYW5kLT5Db25maWcuRXh0cmFDb21tYW5kRW5hYmxlID09IEVOQUJMRSkKKyAgLyogQ2hlY2sgdGhlIE5BTkQgY29udHJvbGxlciBzdGF0ZSAqLworICBpZiAoaG5hbmQtPlN0YXRlID09IEhBTF9OQU5EX1NUQVRFX0JVU1kpCisgIHsKKyAgICByZXR1cm4gSEFMX0JVU1k7CisgIH0KKyAgZWxzZSBpZiAoaG5hbmQtPlN0YXRlID09IEhBTF9OQU5EX1NUQVRFX1JFQURZKQorICB7CisgICAgLyogUHJvY2VzcyBMb2NrZWQgKi8KKyAgICBfX0hBTF9MT0NLKGhuYW5kKTsKKworICAgIC8qIFVwZGF0ZSB0aGUgTkFORCBjb250cm9sbGVyIHN0YXRlICovCisgICAgaG5hbmQtPlN0YXRlID0gSEFMX05BTkRfU1RBVEVfQlVTWTsKKworICAgIC8qIElkZW50aWZ5IHRoZSBkZXZpY2UgYWRkcmVzcyAqLworICAgIGRldmljZWFkZHJlc3MgPSBOQU5EX0RFVklDRTsKKworICAgIC8qIE5BTkQgcmF3IGFkZHJlc3MgY2FsY3VsYXRpb24gKi8KKyAgICBuYW5kYWRkcmVzcyA9IEFSUkFZX0FERFJFU1MocEFkZHJlc3MsIGhuYW5kKTsKKworICAgIC8qIENvbHVtbiBpbiBwYWdlIGFkZHJlc3MgKi8KKyAgICBjb2x1bW5hZGRyZXNzID0gQ09MVU1OX0FERFJFU1MoaG5hbmQpOworCisgICAgLyogU3BhcmUgYXJlYShzKSByZWFkIGxvb3AgKi8KKyAgICB3aGlsZSAoKG5ic3BhcmUgIT0gMFUpICYmIChuYW5kYWRkcmVzcyA8ICgoaG5hbmQtPkNvbmZpZy5CbG9ja1NpemUpICogKGhuYW5kLT5Db25maWcuQmxvY2tOYnIpKSkpCiAgICAgewotICAgICAgLyogR2V0IHRpY2sgKi8KLSAgICAgIHRpY2tzdGFydCA9IEhBTF9HZXRUaWNrKCk7Ci0gICAgICAKLSAgICAgIC8qIFJlYWQgc3RhdHVzIHVudGlsIE5BTkQgaXMgcmVhZHkgKi8KLSAgICAgIHdoaWxlKEhBTF9OQU5EX1JlYWRfU3RhdHVzKGhuYW5kKSAhPSBOQU5EX1JFQURZKQorICAgICAgLyogQ2FyZHMgd2l0aCBwYWdlIHNpemUgPD0gNTEyIGJ5dGVzICovCisgICAgICBpZiAoKGhuYW5kLT5Db25maWcuUGFnZVNpemUpIDw9IDUxMlUpCiAgICAgICB7Ci0gICAgICAgIGlmKChIQUxfR2V0VGljaygpIC0gdGlja3N0YXJ0ICkgPiBOQU5EX1dSSVRFX1RJTUVPVVQpCisgICAgICAgIC8qIFNlbmQgcmVhZCBzcGFyZSBhcmVhIGNvbW1hbmQgc2VxdWVuY2UgKi8KKyAgICAgICAgKihfX0lPIHVpbnQ4X3QgKikoKHVpbnQzMl90KShkZXZpY2VhZGRyZXNzIHwgQ01EX0FSRUEpKSA9IE5BTkRfQ01EX0FSRUFfQzsKKyAgICAgICAgX19EU0IoKTsKKworICAgICAgICBpZiAoKChobmFuZC0+Q29uZmlnLkJsb2NrU2l6ZSkgKiAoaG5hbmQtPkNvbmZpZy5CbG9ja05icikpIDw9IDY1NTM1VSkKICAgICAgICAgewotICAgICAgICAgIHJldHVybiBIQUxfVElNRU9VVDsgCisgICAgICAgICAgKihfX0lPIHVpbnQ4X3QgKikoKHVpbnQzMl90KShkZXZpY2VhZGRyZXNzIHwgQUREUl9BUkVBKSkgPSAweDAwVTsKKyAgICAgICAgICBfX0RTQigpOworICAgICAgICAgICooX19JTyB1aW50OF90ICopKCh1aW50MzJfdCkoZGV2aWNlYWRkcmVzcyB8IEFERFJfQVJFQSkpID0gQUREUl8xU1RfQ1lDTEUobmFuZGFkZHJlc3MpOworICAgICAgICAgIF9fRFNCKCk7CisgICAgICAgICAgKihfX0lPIHVpbnQ4X3QgKikoKHVpbnQzMl90KShkZXZpY2VhZGRyZXNzIHwgQUREUl9BUkVBKSkgPSBBRERSXzJORF9DWUNMRShuYW5kYWRkcmVzcyk7CisgICAgICAgICAgX19EU0IoKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIC8qICgoaG5hbmQtPkNvbmZpZy5CbG9ja1NpemUpKihobmFuZC0+Q29uZmlnLkJsb2NrTmJyKSkgPiA2NTUzNSAqLworICAgICAgICB7CisgICAgICAgICAgKihfX0lPIHVpbnQ4X3QgKikoKHVpbnQzMl90KShkZXZpY2VhZGRyZXNzIHwgQUREUl9BUkVBKSkgPSAweDAwVTsKKyAgICAgICAgICBfX0RTQigpOworICAgICAgICAgICooX19JTyB1aW50OF90ICopKCh1aW50MzJfdCkoZGV2aWNlYWRkcmVzcyB8IEFERFJfQVJFQSkpID0gQUREUl8xU1RfQ1lDTEUobmFuZGFkZHJlc3MpOworICAgICAgICAgIF9fRFNCKCk7CisgICAgICAgICAgKihfX0lPIHVpbnQ4X3QgKikoKHVpbnQzMl90KShkZXZpY2VhZGRyZXNzIHwgQUREUl9BUkVBKSkgPSBBRERSXzJORF9DWUNMRShuYW5kYWRkcmVzcyk7CisgICAgICAgICAgX19EU0IoKTsKKyAgICAgICAgICAqKF9fSU8gdWludDhfdCAqKSgodWludDMyX3QpKGRldmljZWFkZHJlc3MgfCBBRERSX0FSRUEpKSA9IEFERFJfM1JEX0NZQ0xFKG5hbmRhZGRyZXNzKTsKKyAgICAgICAgICBfX0RTQigpOwogICAgICAgICB9CiAgICAgICB9Ci0gICAgICAKLSAgICAgIC8qIEdvIGJhY2sgdG8gcmVhZCBtb2RlICovCi0gICAgICAqKF9fSU8gdWludDhfdCAqKSgodWludDMyX3QpKGRldmljZUFkZHJlc3MgfCBDTURfQVJFQSkpID0gKCh1aW50OF90KTB4MDBVKTsKLSAgICAgIF9fRFNCKCk7Ci0gICAgfQotICAgIAotICAgIC8qIEdldCBEYXRhIGludG8gQnVmZmVyICovCi0gICAgZm9yKDsgaW5kZXggPCBzaXplOyBpbmRleCsrKQotICAgIHsKLSAgICAgICoodWludDhfdCAqKXBCdWZmZXIrKyA9ICoodWludDhfdCAqKWRldmljZUFkZHJlc3M7Ci0gICAgfQotICAgIAotICAgIC8qIEluY3JlbWVudCByZWFkIHNwYXJlIGFyZWFzIG51bWJlciAqLwotICAgIG51bVNwYXJlQXJlYVJlYWQrKzsKLSAgICAKLSAgICAvKiBEZWNyZW1lbnQgc3BhcmUgYXJlYXMgdG8gcmVhZCAqLwotICAgIE51bVNwYXJlQXJlYVRvUmVhZC0tOwotICAgIAotICAgIC8qIEluY3JlbWVudCB0aGUgTkFORCBhZGRyZXNzICovCi0gICAgbmFuZEFkZHJlc3MgPSAodWludDMyX3QpKG5hbmRBZGRyZXNzICsgMSk7Ci0gIH0KLSAgCi0gIC8qIFVwZGF0ZSB0aGUgTkFORCBjb250cm9sbGVyIHN0YXRlICovCi0gIGhuYW5kLT5TdGF0ZSA9IEhBTF9OQU5EX1NUQVRFX1JFQURZOwotICAKLSAgLyogUHJvY2VzcyB1bmxvY2tlZCAqLwotICBfX0hBTF9VTkxPQ0soaG5hbmQpOyAgICAgCisgICAgICBlbHNlIC8qIChobmFuZC0+Q29uZmlnLlBhZ2VTaXplKSA+IDUxMiAqLworICAgICAgeworICAgICAgICAvKiBTZW5kIHJlYWQgc3BhcmUgYXJlYSBjb21tYW5kIHNlcXVlbmNlICovCisgICAgICAgICooX19JTyB1aW50OF90ICopKCh1aW50MzJfdCkoZGV2aWNlYWRkcmVzcyB8IENNRF9BUkVBKSkgPSBOQU5EX0NNRF9BUkVBX0E7CisgICAgICAgIF9fRFNCKCk7CiAKLSAgcmV0dXJuIEhBTF9PSzsgIAorICAgICAgICBpZiAoKChobmFuZC0+Q29uZmlnLkJsb2NrU2l6ZSkgKiAoaG5hbmQtPkNvbmZpZy5CbG9ja05icikpIDw9IDY1NTM1VSkKKyAgICAgICAgeworICAgICAgICAgICooX19JTyB1aW50OF90ICopKCh1aW50MzJfdCkoZGV2aWNlYWRkcmVzcyB8IEFERFJfQVJFQSkpID0gQ09MVU1OXzFTVF9DWUNMRShjb2x1bW5hZGRyZXNzKTsKKyAgICAgICAgICBfX0RTQigpOworICAgICAgICAgICooX19JTyB1aW50OF90ICopKCh1aW50MzJfdCkoZGV2aWNlYWRkcmVzcyB8IEFERFJfQVJFQSkpID0gQ09MVU1OXzJORF9DWUNMRShjb2x1bW5hZGRyZXNzKTsKKyAgICAgICAgICBfX0RTQigpOworICAgICAgICAgICooX19JTyB1aW50OF90ICopKCh1aW50MzJfdCkoZGV2aWNlYWRkcmVzcyB8IEFERFJfQVJFQSkpID0gQUREUl8xU1RfQ1lDTEUobmFuZGFkZHJlc3MpOworICAgICAgICAgIF9fRFNCKCk7CisgICAgICAgICAgKihfX0lPIHVpbnQ4X3QgKikoKHVpbnQzMl90KShkZXZpY2VhZGRyZXNzIHwgQUREUl9BUkVBKSkgPSBBRERSXzJORF9DWUNMRShuYW5kYWRkcmVzcyk7CisgICAgICAgICAgX19EU0IoKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIC8qICgoaG5hbmQtPkNvbmZpZy5CbG9ja1NpemUpKihobmFuZC0+Q29uZmlnLkJsb2NrTmJyKSkgPiA2NTUzNSAqLworICAgICAgICB7CisgICAgICAgICAgKihfX0lPIHVpbnQ4X3QgKikoKHVpbnQzMl90KShkZXZpY2VhZGRyZXNzIHwgQUREUl9BUkVBKSkgPSBDT0xVTU5fMVNUX0NZQ0xFKGNvbHVtbmFkZHJlc3MpOworICAgICAgICAgIF9fRFNCKCk7CisgICAgICAgICAgKihfX0lPIHVpbnQ4X3QgKikoKHVpbnQzMl90KShkZXZpY2VhZGRyZXNzIHwgQUREUl9BUkVBKSkgPSBDT0xVTU5fMk5EX0NZQ0xFKGNvbHVtbmFkZHJlc3MpOworICAgICAgICAgIF9fRFNCKCk7CisgICAgICAgICAgKihfX0lPIHVpbnQ4X3QgKikoKHVpbnQzMl90KShkZXZpY2VhZGRyZXNzIHwgQUREUl9BUkVBKSkgPSBBRERSXzFTVF9DWUNMRShuYW5kYWRkcmVzcyk7CisgICAgICAgICAgX19EU0IoKTsKKyAgICAgICAgICAqKF9fSU8gdWludDhfdCAqKSgodWludDMyX3QpKGRldmljZWFkZHJlc3MgfCBBRERSX0FSRUEpKSA9IEFERFJfMk5EX0NZQ0xFKG5hbmRhZGRyZXNzKTsKKyAgICAgICAgICBfX0RTQigpOworICAgICAgICAgICooX19JTyB1aW50OF90ICopKCh1aW50MzJfdCkoZGV2aWNlYWRkcmVzcyB8IEFERFJfQVJFQSkpID0gQUREUl8zUkRfQ1lDTEUobmFuZGFkZHJlc3MpOworICAgICAgICAgIF9fRFNCKCk7CisgICAgICAgIH0KKyAgICAgIH0KKworICAgICAgKihfX0lPIHVpbnQ4X3QgKikoKHVpbnQzMl90KShkZXZpY2VhZGRyZXNzIHwgQ01EX0FSRUEpKSA9IE5BTkRfQ01EX0FSRUFfVFJVRTE7CisgICAgICBfX0RTQigpOworCisgICAgICBpZiAoaG5hbmQtPkNvbmZpZy5FeHRyYUNvbW1hbmRFbmFibGUgPT0gRU5BQkxFKQorICAgICAgeworICAgICAgICAvKiBHZXQgdGljayAqLworICAgICAgICB0aWNrc3RhcnQgPSBIQUxfR2V0VGljaygpOworCisgICAgICAgIC8qIFJlYWQgc3RhdHVzIHVudGlsIE5BTkQgaXMgcmVhZHkgKi8KKyAgICAgICAgd2hpbGUgKEhBTF9OQU5EX1JlYWRfU3RhdHVzKGhuYW5kKSAhPSBOQU5EX1JFQURZKQorICAgICAgICB7CisgICAgICAgICAgaWYgKChIQUxfR2V0VGljaygpIC0gdGlja3N0YXJ0KSA+IE5BTkRfV1JJVEVfVElNRU9VVCkKKyAgICAgICAgICB7CisgICAgICAgICAgICAvKiBVcGRhdGUgdGhlIE5BTkQgY29udHJvbGxlciBzdGF0ZSAqLworICAgICAgICAgICAgaG5hbmQtPlN0YXRlID0gSEFMX05BTkRfU1RBVEVfRVJST1I7CisKKyAgICAgICAgICAgIC8qIFByb2Nlc3MgdW5sb2NrZWQgKi8KKyAgICAgICAgICAgIF9fSEFMX1VOTE9DSyhobmFuZCk7CisKKyAgICAgICAgICAgIHJldHVybiBIQUxfVElNRU9VVDsKKyAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvKiBHbyBiYWNrIHRvIHJlYWQgbW9kZSAqLworICAgICAgICAqKF9fSU8gdWludDhfdCAqKSgodWludDMyX3QpKGRldmljZWFkZHJlc3MgfCBDTURfQVJFQSkpID0gKCh1aW50OF90KTB4MDApOworICAgICAgICBfX0RTQigpOworICAgICAgfQorCisgICAgICAvKiBHZXQgRGF0YSBpbnRvIEJ1ZmZlciAqLworICAgICAgZm9yIChpbmRleCA9IDBVOyBpbmRleCA8IGhuYW5kLT5Db25maWcuU3BhcmVBcmVhU2l6ZTsgaW5kZXgrKykKKyAgICAgIHsKKyAgICAgICAgKmJ1ZmYgPSAqKHVpbnQ4X3QgKilkZXZpY2VhZGRyZXNzOworICAgICAgICBidWZmKys7CisgICAgICB9CisKKyAgICAgIC8qIEluY3JlbWVudCByZWFkIHNwYXJlIGFyZWFzIG51bWJlciAqLworICAgICAgbnVtc3BhcmVhcmVhcmVhZCsrOworCisgICAgICAvKiBEZWNyZW1lbnQgc3BhcmUgYXJlYXMgdG8gcmVhZCAqLworICAgICAgbmJzcGFyZS0tOworCisgICAgICAvKiBJbmNyZW1lbnQgdGhlIE5BTkQgYWRkcmVzcyAqLworICAgICAgbmFuZGFkZHJlc3MgPSAodWludDMyX3QpKG5hbmRhZGRyZXNzICsgMVUpOworICAgIH0KKworICAgIC8qIFVwZGF0ZSB0aGUgTkFORCBjb250cm9sbGVyIHN0YXRlICovCisgICAgaG5hbmQtPlN0YXRlID0gSEFMX05BTkRfU1RBVEVfUkVBRFk7CisKKyAgICAvKiBQcm9jZXNzIHVubG9ja2VkICovCisgICAgX19IQUxfVU5MT0NLKGhuYW5kKTsKKyAgfQorICBlbHNlCisgIHsKKyAgICByZXR1cm4gSEFMX0VSUk9SOworICB9CisKKyAgcmV0dXJuIEhBTF9PSzsKIH0KIAogLyoqCkBAIC0xMjMyLDE0NyArMTMxOSwxNjMgQEAKICAgKiAgICAgICAgICAgICAgICB0aGUgY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbiBmb3IgTkFORCBtb2R1bGUuCiAgICogQHBhcmFtICBwQWRkcmVzcyAgcG9pbnRlciB0byBOQU5EIGFkZHJlc3Mgc3RydWN0dXJlCiAgICogQHBhcmFtICBwQnVmZmVyIHBvaW50ZXIgdG8gc291cmNlIGJ1ZmZlciB0byB3cml0ZS4gcEJ1ZmZlciBzaG91bGQgYmUgMTZiaXRzIGFsaWduZWQuCi0gICogQHBhcmFtICBOdW1TcGFyZUFyZWFUb1JlYWQgTnVtYmVyIG9mIHNwYXJlIGFyZWEgdG8gcmVhZCAgCisgICogQHBhcmFtICBOdW1TcGFyZUFyZWFUb1JlYWQgTnVtYmVyIG9mIHNwYXJlIGFyZWEgdG8gcmVhZAogICAqIEByZXR2YWwgSEFMIHN0YXR1cwotKi8KLUhBTF9TdGF0dXNUeXBlRGVmIEhBTF9OQU5EX1JlYWRfU3BhcmVBcmVhXzE2YihOQU5EX0hhbmRsZVR5cGVEZWYgKmhuYW5kLCBOQU5EX0FkZHJlc3NUeXBlRGVmICpwQWRkcmVzcywgdWludDE2X3QgKnBCdWZmZXIsIHVpbnQzMl90IE51bVNwYXJlQXJlYVRvUmVhZCkKKyAgKi8KK0hBTF9TdGF0dXNUeXBlRGVmIEhBTF9OQU5EX1JlYWRfU3BhcmVBcmVhXzE2YihOQU5EX0hhbmRsZVR5cGVEZWYgKmhuYW5kLCBOQU5EX0FkZHJlc3NUeXBlRGVmICpwQWRkcmVzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MTZfdCAqcEJ1ZmZlciwgdWludDMyX3QgTnVtU3BhcmVBcmVhVG9SZWFkKQogewotICBfX0lPIHVpbnQzMl90IGluZGV4ID0gMDsgCi0gIHVpbnQzMl90IHRpY2tzdGFydCA9IDBVOwotICB1aW50MzJfdCBkZXZpY2VBZGRyZXNzID0gMCwgc2l6ZSA9IDAsIG51bVNwYXJlQXJlYVJlYWQgPSAwLCBuYW5kQWRkcmVzcyA9IDAsIGNvbHVtbkFkZHJlc3MgPSAwOwotICAKLSAgLyogUHJvY2VzcyBMb2NrZWQgKi8KLSAgX19IQUxfTE9DSyhobmFuZCk7ICAKLSAgCisgIHVpbnQzMl90IGluZGV4OworICB1aW50MzJfdCB0aWNrc3RhcnQ7CisgIHVpbnQzMl90IGRldmljZWFkZHJlc3M7CisgIHVpbnQzMl90IG51bXNwYXJlYXJlYXJlYWQgPSAwVTsKKyAgdWludDMyX3QgbmFuZGFkZHJlc3M7CisgIHVpbnQzMl90IGNvbHVtbmFkZHJlc3M7CisgIHVpbnQzMl90IG5ic3BhcmUgPSBOdW1TcGFyZUFyZWFUb1JlYWQ7CisgIHVpbnQxNl90ICpidWZmID0gcEJ1ZmZlcjsKKwogICAvKiBDaGVjayB0aGUgTkFORCBjb250cm9sbGVyIHN0YXRlICovCi0gIGlmKGhuYW5kLT5TdGF0ZSA9PSBIQUxfTkFORF9TVEFURV9CVVNZKQorICBpZiAoaG5hbmQtPlN0YXRlID09IEhBTF9OQU5EX1NUQVRFX0JVU1kpCiAgIHsKLSAgICAgcmV0dXJuIEhBTF9CVVNZOworICAgIHJldHVybiBIQUxfQlVTWTsKICAgfQotICAKLSAgLyogSWRlbnRpZnkgdGhlIGRldmljZSBhZGRyZXNzICovCi0gIGRldmljZUFkZHJlc3MgPSBOQU5EX0RFVklDRTsKLSAgCi0gIC8qIFVwZGF0ZSB0aGUgTkFORCBjb250cm9sbGVyIHN0YXRlICovCi0gIGhuYW5kLT5TdGF0ZSA9IEhBTF9OQU5EX1NUQVRFX0JVU1k7Ci0gIAotICAvKiBOQU5EIHJhdyBhZGRyZXNzIGNhbGN1bGF0aW9uICovCi0gIG5hbmRBZGRyZXNzID0gQVJSQVlfQUREUkVTUyhwQWRkcmVzcywgaG5hbmQpOwotICAKLSAgLyogQ29sdW1uIGluIHBhZ2UgYWRkcmVzcyAqLwotICBjb2x1bW5BZGRyZXNzID0gKHVpbnQzMl90KShDT0xVTU5fQUREUkVTUyhobmFuZCkpOwotICAKLSAgLyogU3BhcmUgYXJlYShzKSByZWFkIGxvb3AgKi8gCi0gIHdoaWxlKChOdW1TcGFyZUFyZWFUb1JlYWQgIT0gMCkgJiYgKG5hbmRBZGRyZXNzIDwgKChobmFuZC0+Q29uZmlnLkJsb2NrU2l6ZSkgKiAoaG5hbmQtPkNvbmZpZy5CbG9ja05icikpKSkKKyAgZWxzZSBpZiAoaG5hbmQtPlN0YXRlID09IEhBTF9OQU5EX1NUQVRFX1JFQURZKQogICB7Ci0gICAgLyogdXBkYXRlIHRoZSBidWZmZXIgc2l6ZSAqLwotICAgIHNpemUgPSAoaG5hbmQtPkNvbmZpZy5TcGFyZUFyZWFTaXplKSArICgoaG5hbmQtPkNvbmZpZy5TcGFyZUFyZWFTaXplKSAqIG51bVNwYXJlQXJlYVJlYWQpOworICAgIC8qIFByb2Nlc3MgTG9ja2VkICovCisgICAgX19IQUxfTE9DSyhobmFuZCk7CiAKLSAgICAvKiBDYXJkcyB3aXRoIHBhZ2Ugc2l6ZSA8PSA1MTIgYnl0ZXMgKi8KLSAgICBpZigoaG5hbmQtPkNvbmZpZy5QYWdlU2l6ZSkgPD0gNTEyKQotICAgIHsKLSAgICAgIC8qIFNlbmQgcmVhZCBzcGFyZSBhcmVhIGNvbW1hbmQgc2VxdWVuY2UgKi8gICAgIAotICAgICAgKihfX0lPIHVpbnQ4X3QgKikoKHVpbnQzMl90KShkZXZpY2VBZGRyZXNzIHwgQ01EX0FSRUEpKSA9IE5BTkRfQ01EX0FSRUFfQzsKLSAgICAgIF9fRFNCKCk7Ci0gICAgICAKLSAgICAgIGlmICgoKGhuYW5kLT5Db25maWcuQmxvY2tTaXplKSooaG5hbmQtPkNvbmZpZy5CbG9ja05icikpIDw9IDY1NTM1KQotICAgICAgewotICAgICAgICAqKF9fSU8gdWludDhfdCAqKSgodWludDMyX3QpKGRldmljZUFkZHJlc3MgfCBBRERSX0FSRUEpKSA9IDB4MDA7Ci0gICAgICAgIF9fRFNCKCk7Ci0gICAgICAgICooX19JTyB1aW50OF90ICopKCh1aW50MzJfdCkoZGV2aWNlQWRkcmVzcyB8IEFERFJfQVJFQSkpID0gQUREUl8xU1RfQ1lDTEUobmFuZEFkZHJlc3MpOwotICAgICAgICBfX0RTQigpOwotICAgICAgICAqKF9fSU8gdWludDhfdCAqKSgodWludDMyX3QpKGRldmljZUFkZHJlc3MgfCBBRERSX0FSRUEpKSA9IEFERFJfMk5EX0NZQ0xFKG5hbmRBZGRyZXNzKTsKLSAgICAgICAgX19EU0IoKTsKLSAgICAgIH0KLSAgICAgIGVsc2UgLyogKChobmFuZC0+Q29uZmlnLkJsb2NrU2l6ZSkqKGhuYW5kLT5Db25maWcuQmxvY2tOYnIpKSA+IDY1NTM1ICovCi0gICAgICB7Ci0gICAgICAgICooX19JTyB1aW50OF90ICopKCh1aW50MzJfdCkoZGV2aWNlQWRkcmVzcyB8IEFERFJfQVJFQSkpID0gMHgwMDsKLSAgICAgICAgX19EU0IoKTsKLSAgICAgICAgKihfX0lPIHVpbnQ4X3QgKikoKHVpbnQzMl90KShkZXZpY2VBZGRyZXNzIHwgQUREUl9BUkVBKSkgPSBBRERSXzFTVF9DWUNMRShuYW5kQWRkcmVzcyk7Ci0gICAgICAgIF9fRFNCKCk7Ci0gICAgICAgICooX19JTyB1aW50OF90ICopKCh1aW50MzJfdCkoZGV2aWNlQWRkcmVzcyB8IEFERFJfQVJFQSkpID0gQUREUl8yTkRfQ1lDTEUobmFuZEFkZHJlc3MpOwotICAgICAgICBfX0RTQigpOwotICAgICAgICAqKF9fSU8gdWludDhfdCAqKSgodWludDMyX3QpKGRldmljZUFkZHJlc3MgfCBBRERSX0FSRUEpKSA9IEFERFJfM1JEX0NZQ0xFKG5hbmRBZGRyZXNzKTsKLSAgICAgICAgX19EU0IoKTsKLSAgICAgIH0KLSAgICB9Ci0gICAgZWxzZSAvKiAoaG5hbmQtPkNvbmZpZy5QYWdlU2l6ZSkgPiA1MTIgKi8KLSAgICB7Ci0gICAgICAvKiBTZW5kIHJlYWQgc3BhcmUgYXJlYSBjb21tYW5kIHNlcXVlbmNlICovICAgICAKLSAgICAgICooX19JTyB1aW50OF90ICopKCh1aW50MzJfdCkoZGV2aWNlQWRkcmVzcyB8IENNRF9BUkVBKSkgPSBOQU5EX0NNRF9BUkVBX0E7Ci0gICAgICBfX0RTQigpOwotICAgICAgCi0gICAgICBpZiAoKChobmFuZC0+Q29uZmlnLkJsb2NrU2l6ZSkqKGhuYW5kLT5Db25maWcuQmxvY2tOYnIpKSA8PSA2NTUzNSkKLSAgICAgIHsKLSAgICAgICAgKihfX0lPIHVpbnQ4X3QgKikoKHVpbnQzMl90KShkZXZpY2VBZGRyZXNzIHwgQUREUl9BUkVBKSkgPSBDT0xVTU5fMVNUX0NZQ0xFKGNvbHVtbkFkZHJlc3MpOwotICAgICAgICBfX0RTQigpOwotICAgICAgICAqKF9fSU8gdWludDhfdCAqKSgodWludDMyX3QpKGRldmljZUFkZHJlc3MgfCBBRERSX0FSRUEpKSA9IENPTFVNTl8yTkRfQ1lDTEUoY29sdW1uQWRkcmVzcyk7Ci0gICAgICAgIF9fRFNCKCk7Ci0gICAgICAgICooX19JTyB1aW50OF90ICopKCh1aW50MzJfdCkoZGV2aWNlQWRkcmVzcyB8IEFERFJfQVJFQSkpID0gQUREUl8xU1RfQ1lDTEUobmFuZEFkZHJlc3MpOwotICAgICAgICBfX0RTQigpOwotICAgICAgICAqKF9fSU8gdWludDhfdCAqKSgodWludDMyX3QpKGRldmljZUFkZHJlc3MgfCBBRERSX0FSRUEpKSA9IEFERFJfMk5EX0NZQ0xFKG5hbmRBZGRyZXNzKTsKLSAgICAgICAgX19EU0IoKTsKLSAgICAgIH0KLSAgICAgIGVsc2UgLyogKChobmFuZC0+Q29uZmlnLkJsb2NrU2l6ZSkqKGhuYW5kLT5Db25maWcuQmxvY2tOYnIpKSA+IDY1NTM1ICovCi0gICAgICB7Ci0gICAgICAgICooX19JTyB1aW50OF90ICopKCh1aW50MzJfdCkoZGV2aWNlQWRkcmVzcyB8IEFERFJfQVJFQSkpID0gQ09MVU1OXzFTVF9DWUNMRShjb2x1bW5BZGRyZXNzKTsKLSAgICAgICAgX19EU0IoKTsKLSAgICAgICAgKihfX0lPIHVpbnQ4X3QgKikoKHVpbnQzMl90KShkZXZpY2VBZGRyZXNzIHwgQUREUl9BUkVBKSkgPSBDT0xVTU5fMk5EX0NZQ0xFKGNvbHVtbkFkZHJlc3MpOwotICAgICAgICBfX0RTQigpOwotICAgICAgICAqKF9fSU8gdWludDhfdCAqKSgodWludDMyX3QpKGRldmljZUFkZHJlc3MgfCBBRERSX0FSRUEpKSA9IEFERFJfMVNUX0NZQ0xFKG5hbmRBZGRyZXNzKTsKLSAgICAgICAgX19EU0IoKTsKLSAgICAgICAgKihfX0lPIHVpbnQ4X3QgKikoKHVpbnQzMl90KShkZXZpY2VBZGRyZXNzIHwgQUREUl9BUkVBKSkgPSBBRERSXzJORF9DWUNMRShuYW5kQWRkcmVzcyk7Ci0gICAgICAgIF9fRFNCKCk7Ci0gICAgICAgICooX19JTyB1aW50OF90ICopKCh1aW50MzJfdCkoZGV2aWNlQWRkcmVzcyB8IEFERFJfQVJFQSkpID0gQUREUl8zUkRfQ1lDTEUobmFuZEFkZHJlc3MpOwotICAgICAgICBfX0RTQigpOwotICAgICAgfQotICAgIH0KKyAgICAvKiBVcGRhdGUgdGhlIE5BTkQgY29udHJvbGxlciBzdGF0ZSAqLworICAgIGhuYW5kLT5TdGF0ZSA9IEhBTF9OQU5EX1NUQVRFX0JVU1k7CiAKLSAgICAqKF9fSU8gdWludDhfdCAqKSgodWludDMyX3QpKGRldmljZUFkZHJlc3MgfCBDTURfQVJFQSkpID0gTkFORF9DTURfQVJFQV9UUlVFMTsKLSAgICBfX0RTQigpOworICAgIC8qIElkZW50aWZ5IHRoZSBkZXZpY2UgYWRkcmVzcyAqLworICAgIGRldmljZWFkZHJlc3MgPSBOQU5EX0RFVklDRTsKIAotICAgIGlmKGhuYW5kLT5Db25maWcuRXh0cmFDb21tYW5kRW5hYmxlID09IEVOQUJMRSkKKyAgICAvKiBOQU5EIHJhdyBhZGRyZXNzIGNhbGN1bGF0aW9uICovCisgICAgbmFuZGFkZHJlc3MgPSBBUlJBWV9BRERSRVNTKHBBZGRyZXNzLCBobmFuZCk7CisKKyAgICAvKiBDb2x1bW4gaW4gcGFnZSBhZGRyZXNzICovCisgICAgY29sdW1uYWRkcmVzcyA9ICh1aW50MzJfdCkoQ09MVU1OX0FERFJFU1MoaG5hbmQpKTsKKworICAgIC8qIFNwYXJlIGFyZWEocykgcmVhZCBsb29wICovCisgICAgd2hpbGUgKChuYnNwYXJlICE9IDBVKSAmJiAobmFuZGFkZHJlc3MgPCAoKGhuYW5kLT5Db25maWcuQmxvY2tTaXplKSAqIChobmFuZC0+Q29uZmlnLkJsb2NrTmJyKSkpKQogICAgIHsKLSAgICAgIC8qIEdldCB0aWNrICovCi0gICAgICB0aWNrc3RhcnQgPSBIQUxfR2V0VGljaygpOwotICAgICAgCi0gICAgICAvKiBSZWFkIHN0YXR1cyB1bnRpbCBOQU5EIGlzIHJlYWR5ICovCi0gICAgICB3aGlsZShIQUxfTkFORF9SZWFkX1N0YXR1cyhobmFuZCkgIT0gTkFORF9SRUFEWSkKKyAgICAgIC8qIENhcmRzIHdpdGggcGFnZSBzaXplIDw9IDUxMiBieXRlcyAqLworICAgICAgaWYgKChobmFuZC0+Q29uZmlnLlBhZ2VTaXplKSA8PSA1MTJVKQogICAgICAgewotICAgICAgICBpZigoSEFMX0dldFRpY2soKSAtIHRpY2tzdGFydCApID4gTkFORF9XUklURV9USU1FT1VUKQorICAgICAgICAvKiBTZW5kIHJlYWQgc3BhcmUgYXJlYSBjb21tYW5kIHNlcXVlbmNlICovCisgICAgICAgICooX19JTyB1aW50OF90ICopKCh1aW50MzJfdCkoZGV2aWNlYWRkcmVzcyB8IENNRF9BUkVBKSkgPSBOQU5EX0NNRF9BUkVBX0M7CisgICAgICAgIF9fRFNCKCk7CisKKyAgICAgICAgaWYgKCgoaG5hbmQtPkNvbmZpZy5CbG9ja1NpemUpICogKGhuYW5kLT5Db25maWcuQmxvY2tOYnIpKSA8PSA2NTUzNVUpCiAgICAgICAgIHsKLSAgICAgICAgICByZXR1cm4gSEFMX1RJTUVPVVQ7IAorICAgICAgICAgICooX19JTyB1aW50OF90ICopKCh1aW50MzJfdCkoZGV2aWNlYWRkcmVzcyB8IEFERFJfQVJFQSkpID0gMHgwMFU7CisgICAgICAgICAgX19EU0IoKTsKKyAgICAgICAgICAqKF9fSU8gdWludDhfdCAqKSgodWludDMyX3QpKGRldmljZWFkZHJlc3MgfCBBRERSX0FSRUEpKSA9IEFERFJfMVNUX0NZQ0xFKG5hbmRhZGRyZXNzKTsKKyAgICAgICAgICBfX0RTQigpOworICAgICAgICAgICooX19JTyB1aW50OF90ICopKCh1aW50MzJfdCkoZGV2aWNlYWRkcmVzcyB8IEFERFJfQVJFQSkpID0gQUREUl8yTkRfQ1lDTEUobmFuZGFkZHJlc3MpOworICAgICAgICAgIF9fRFNCKCk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSAvKiAoKGhuYW5kLT5Db25maWcuQmxvY2tTaXplKSooaG5hbmQtPkNvbmZpZy5CbG9ja05icikpID4gNjU1MzUgKi8KKyAgICAgICAgeworICAgICAgICAgICooX19JTyB1aW50OF90ICopKCh1aW50MzJfdCkoZGV2aWNlYWRkcmVzcyB8IEFERFJfQVJFQSkpID0gMHgwMFU7CisgICAgICAgICAgX19EU0IoKTsKKyAgICAgICAgICAqKF9fSU8gdWludDhfdCAqKSgodWludDMyX3QpKGRldmljZWFkZHJlc3MgfCBBRERSX0FSRUEpKSA9IEFERFJfMVNUX0NZQ0xFKG5hbmRhZGRyZXNzKTsKKyAgICAgICAgICBfX0RTQigpOworICAgICAgICAgICooX19JTyB1aW50OF90ICopKCh1aW50MzJfdCkoZGV2aWNlYWRkcmVzcyB8IEFERFJfQVJFQSkpID0gQUREUl8yTkRfQ1lDTEUobmFuZGFkZHJlc3MpOworICAgICAgICAgIF9fRFNCKCk7CisgICAgICAgICAgKihfX0lPIHVpbnQ4X3QgKikoKHVpbnQzMl90KShkZXZpY2VhZGRyZXNzIHwgQUREUl9BUkVBKSkgPSBBRERSXzNSRF9DWUNMRShuYW5kYWRkcmVzcyk7CisgICAgICAgICAgX19EU0IoKTsKICAgICAgICAgfQogICAgICAgfQotICAgICAgCi0gICAgICAvKiBHbyBiYWNrIHRvIHJlYWQgbW9kZSAqLwotICAgICAgKihfX0lPIHVpbnQ4X3QgKikoKHVpbnQzMl90KShkZXZpY2VBZGRyZXNzIHwgQ01EX0FSRUEpKSA9ICgodWludDhfdCkweDAwVSk7Ci0gICAgICBfX0RTQigpOwotICAgIH0KLSAgICAKLSAgICAvKiBHZXQgRGF0YSBpbnRvIEJ1ZmZlciAqLwotICAgIGZvcig7IGluZGV4IDwgc2l6ZTsgaW5kZXgrKykKLSAgICB7Ci0gICAgICAqKHVpbnQxNl90ICopcEJ1ZmZlcisrID0gKih1aW50MTZfdCAqKWRldmljZUFkZHJlc3M7Ci0gICAgfQotICAgIAotICAgIC8qIEluY3JlbWVudCByZWFkIHNwYXJlIGFyZWFzIG51bWJlciAqLwotICAgIG51bVNwYXJlQXJlYVJlYWQrKzsKLSAgICAKLSAgICAvKiBEZWNyZW1lbnQgc3BhcmUgYXJlYXMgdG8gcmVhZCAqLwotICAgIE51bVNwYXJlQXJlYVRvUmVhZC0tOwotICAgIAotICAgIC8qIEluY3JlbWVudCB0aGUgTkFORCBhZGRyZXNzICovCi0gICAgbmFuZEFkZHJlc3MgPSAodWludDMyX3QpKG5hbmRBZGRyZXNzICsgMSk7Ci0gIH0KLSAgCi0gIC8qIFVwZGF0ZSB0aGUgTkFORCBjb250cm9sbGVyIHN0YXRlICovCi0gIGhuYW5kLT5TdGF0ZSA9IEhBTF9OQU5EX1NUQVRFX1JFQURZOwotICAKLSAgLyogUHJvY2VzcyB1bmxvY2tlZCAqLwotICBfX0hBTF9VTkxPQ0soaG5hbmQpOyAgICAgCisgICAgICBlbHNlIC8qIChobmFuZC0+Q29uZmlnLlBhZ2VTaXplKSA+IDUxMiAqLworICAgICAgeworICAgICAgICAvKiBTZW5kIHJlYWQgc3BhcmUgYXJlYSBjb21tYW5kIHNlcXVlbmNlICovCisgICAgICAgICooX19JTyB1aW50OF90ICopKCh1aW50MzJfdCkoZGV2aWNlYWRkcmVzcyB8IENNRF9BUkVBKSkgPSBOQU5EX0NNRF9BUkVBX0E7CisgICAgICAgIF9fRFNCKCk7CiAKLSAgcmV0dXJuIEhBTF9PSzsgIAorICAgICAgICBpZiAoKChobmFuZC0+Q29uZmlnLkJsb2NrU2l6ZSkgKiAoaG5hbmQtPkNvbmZpZy5CbG9ja05icikpIDw9IDY1NTM1VSkKKyAgICAgICAgeworICAgICAgICAgICooX19JTyB1aW50OF90ICopKCh1aW50MzJfdCkoZGV2aWNlYWRkcmVzcyB8IEFERFJfQVJFQSkpID0gQ09MVU1OXzFTVF9DWUNMRShjb2x1bW5hZGRyZXNzKTsKKyAgICAgICAgICBfX0RTQigpOworICAgICAgICAgICooX19JTyB1aW50OF90ICopKCh1aW50MzJfdCkoZGV2aWNlYWRkcmVzcyB8IEFERFJfQVJFQSkpID0gQ09MVU1OXzJORF9DWUNMRShjb2x1bW5hZGRyZXNzKTsKKyAgICAgICAgICBfX0RTQigpOworICAgICAgICAgICooX19JTyB1aW50OF90ICopKCh1aW50MzJfdCkoZGV2aWNlYWRkcmVzcyB8IEFERFJfQVJFQSkpID0gQUREUl8xU1RfQ1lDTEUobmFuZGFkZHJlc3MpOworICAgICAgICAgIF9fRFNCKCk7CisgICAgICAgICAgKihfX0lPIHVpbnQ4X3QgKikoKHVpbnQzMl90KShkZXZpY2VhZGRyZXNzIHwgQUREUl9BUkVBKSkgPSBBRERSXzJORF9DWUNMRShuYW5kYWRkcmVzcyk7CisgICAgICAgICAgX19EU0IoKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIC8qICgoaG5hbmQtPkNvbmZpZy5CbG9ja1NpemUpKihobmFuZC0+Q29uZmlnLkJsb2NrTmJyKSkgPiA2NTUzNSAqLworICAgICAgICB7CisgICAgICAgICAgKihfX0lPIHVpbnQ4X3QgKikoKHVpbnQzMl90KShkZXZpY2VhZGRyZXNzIHwgQUREUl9BUkVBKSkgPSBDT0xVTU5fMVNUX0NZQ0xFKGNvbHVtbmFkZHJlc3MpOworICAgICAgICAgIF9fRFNCKCk7CisgICAgICAgICAgKihfX0lPIHVpbnQ4X3QgKikoKHVpbnQzMl90KShkZXZpY2VhZGRyZXNzIHwgQUREUl9BUkVBKSkgPSBDT0xVTU5fMk5EX0NZQ0xFKGNvbHVtbmFkZHJlc3MpOworICAgICAgICAgIF9fRFNCKCk7CisgICAgICAgICAgKihfX0lPIHVpbnQ4X3QgKikoKHVpbnQzMl90KShkZXZpY2VhZGRyZXNzIHwgQUREUl9BUkVBKSkgPSBBRERSXzFTVF9DWUNMRShuYW5kYWRkcmVzcyk7CisgICAgICAgICAgX19EU0IoKTsKKyAgICAgICAgICAqKF9fSU8gdWludDhfdCAqKSgodWludDMyX3QpKGRldmljZWFkZHJlc3MgfCBBRERSX0FSRUEpKSA9IEFERFJfMk5EX0NZQ0xFKG5hbmRhZGRyZXNzKTsKKyAgICAgICAgICBfX0RTQigpOworICAgICAgICAgICooX19JTyB1aW50OF90ICopKCh1aW50MzJfdCkoZGV2aWNlYWRkcmVzcyB8IEFERFJfQVJFQSkpID0gQUREUl8zUkRfQ1lDTEUobmFuZGFkZHJlc3MpOworICAgICAgICAgIF9fRFNCKCk7CisgICAgICAgIH0KKyAgICAgIH0KKworICAgICAgKihfX0lPIHVpbnQ4X3QgKikoKHVpbnQzMl90KShkZXZpY2VhZGRyZXNzIHwgQ01EX0FSRUEpKSA9IE5BTkRfQ01EX0FSRUFfVFJVRTE7CisgICAgICBfX0RTQigpOworCisgICAgICBpZiAoaG5hbmQtPkNvbmZpZy5FeHRyYUNvbW1hbmRFbmFibGUgPT0gRU5BQkxFKQorICAgICAgeworICAgICAgICAvKiBHZXQgdGljayAqLworICAgICAgICB0aWNrc3RhcnQgPSBIQUxfR2V0VGljaygpOworCisgICAgICAgIC8qIFJlYWQgc3RhdHVzIHVudGlsIE5BTkQgaXMgcmVhZHkgKi8KKyAgICAgICAgd2hpbGUgKEhBTF9OQU5EX1JlYWRfU3RhdHVzKGhuYW5kKSAhPSBOQU5EX1JFQURZKQorICAgICAgICB7CisgICAgICAgICAgaWYgKChIQUxfR2V0VGljaygpIC0gdGlja3N0YXJ0KSA+IE5BTkRfV1JJVEVfVElNRU9VVCkKKyAgICAgICAgICB7CisgICAgICAgICAgICAvKiBVcGRhdGUgdGhlIE5BTkQgY29udHJvbGxlciBzdGF0ZSAqLworICAgICAgICAgICAgaG5hbmQtPlN0YXRlID0gSEFMX05BTkRfU1RBVEVfRVJST1I7CisKKyAgICAgICAgICAgIC8qIFByb2Nlc3MgdW5sb2NrZWQgKi8KKyAgICAgICAgICAgIF9fSEFMX1VOTE9DSyhobmFuZCk7CisKKyAgICAgICAgICAgIHJldHVybiBIQUxfVElNRU9VVDsKKyAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvKiBHbyBiYWNrIHRvIHJlYWQgbW9kZSAqLworICAgICAgICAqKF9fSU8gdWludDhfdCAqKSgodWludDMyX3QpKGRldmljZWFkZHJlc3MgfCBDTURfQVJFQSkpID0gKCh1aW50OF90KTB4MDApOworICAgICAgICBfX0RTQigpOworICAgICAgfQorCisgICAgICAvKiBHZXQgRGF0YSBpbnRvIEJ1ZmZlciAqLworICAgICAgZm9yIChpbmRleCA9IDBVOyBpbmRleCA8IGhuYW5kLT5Db25maWcuU3BhcmVBcmVhU2l6ZTsgaW5kZXgrKykKKyAgICAgIHsKKyAgICAgICAgKmJ1ZmYgPSAqKHVpbnQxNl90ICopZGV2aWNlYWRkcmVzczsKKyAgICAgICAgYnVmZisrOworICAgICAgfQorCisgICAgICAvKiBJbmNyZW1lbnQgcmVhZCBzcGFyZSBhcmVhcyBudW1iZXIgKi8KKyAgICAgIG51bXNwYXJlYXJlYXJlYWQrKzsKKworICAgICAgLyogRGVjcmVtZW50IHNwYXJlIGFyZWFzIHRvIHJlYWQgKi8KKyAgICAgIG5ic3BhcmUtLTsKKworICAgICAgLyogSW5jcmVtZW50IHRoZSBOQU5EIGFkZHJlc3MgKi8KKyAgICAgIG5hbmRhZGRyZXNzID0gKHVpbnQzMl90KShuYW5kYWRkcmVzcyArIDFVKTsKKyAgICB9CisKKyAgICAvKiBVcGRhdGUgdGhlIE5BTkQgY29udHJvbGxlciBzdGF0ZSAqLworICAgIGhuYW5kLT5TdGF0ZSA9IEhBTF9OQU5EX1NUQVRFX1JFQURZOworCisgICAgLyogUHJvY2VzcyB1bmxvY2tlZCAqLworICAgIF9fSEFMX1VOTE9DSyhobmFuZCk7CisgIH0KKyAgZWxzZQorICB7CisgICAgcmV0dXJuIEhBTF9FUlJPUjsKKyAgfQorCisgIHJldHVybiBIQUxfT0s7CiB9CiAKIC8qKgpAQCAtMTM4MCwxNDYgKzE0ODMsMTYyIEBACiAgICogQHBhcmFtICBobmFuZCBwb2ludGVyIHRvIGEgTkFORF9IYW5kbGVUeXBlRGVmIHN0cnVjdHVyZSB0aGF0IGNvbnRhaW5zCiAgICogICAgICAgICAgICAgICAgdGhlIGNvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb24gZm9yIE5BTkQgbW9kdWxlLgogICAqIEBwYXJhbSAgcEFkZHJlc3MgIHBvaW50ZXIgdG8gTkFORCBhZGRyZXNzIHN0cnVjdHVyZQotICAqIEBwYXJhbSAgcEJ1ZmZlciAgcG9pbnRlciB0byBzb3VyY2UgYnVmZmVyIHRvIHdyaXRlICAKKyAgKiBAcGFyYW0gIHBCdWZmZXIgIHBvaW50ZXIgdG8gc291cmNlIGJ1ZmZlciB0byB3cml0ZQogICAqIEBwYXJhbSAgTnVtU3BhcmVBcmVhVG93cml0ZSAgIG51bWJlciBvZiBzcGFyZSBhcmVhcyB0byB3cml0ZSB0byBibG9jawogICAqIEByZXR2YWwgSEFMIHN0YXR1cwogICAqLwotSEFMX1N0YXR1c1R5cGVEZWYgSEFMX05BTkRfV3JpdGVfU3BhcmVBcmVhXzhiKE5BTkRfSGFuZGxlVHlwZURlZiAqaG5hbmQsIE5BTkRfQWRkcmVzc1R5cGVEZWYgKnBBZGRyZXNzLCB1aW50OF90ICpwQnVmZmVyLCB1aW50MzJfdCBOdW1TcGFyZUFyZWFUb3dyaXRlKQorSEFMX1N0YXR1c1R5cGVEZWYgSEFMX05BTkRfV3JpdGVfU3BhcmVBcmVhXzhiKE5BTkRfSGFuZGxlVHlwZURlZiAqaG5hbmQsIE5BTkRfQWRkcmVzc1R5cGVEZWYgKnBBZGRyZXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKnBCdWZmZXIsIHVpbnQzMl90IE51bVNwYXJlQXJlYVRvd3JpdGUpCiB7Ci0gIF9fSU8gdWludDMyX3QgaW5kZXggPSAwOwotICB1aW50MzJfdCB0aWNrc3RhcnQgPSAwOwotICB1aW50MzJfdCBkZXZpY2VBZGRyZXNzID0gMCwgc2l6ZSA9IDAsIG51bVNwYXJlQXJlYVdyaXR0ZW4gPSAwLCBuYW5kQWRkcmVzcyA9IDAsIGNvbHVtbkFkZHJlc3MgPTA7CisgIHVpbnQzMl90IGluZGV4OworICB1aW50MzJfdCB0aWNrc3RhcnQ7CisgIHVpbnQzMl90IGRldmljZWFkZHJlc3M7CisgIHVpbnQzMl90IG51bXNwYXJlYXJlYXdyaXR0ZW4gPSAwVTsKKyAgdWludDMyX3QgbmFuZGFkZHJlc3M7CisgIHVpbnQzMl90IGNvbHVtbmFkZHJlc3M7CisgIHVpbnQzMl90IG5ic3BhcmUgPSBOdW1TcGFyZUFyZWFUb3dyaXRlOworICB1aW50OF90ICpidWZmID0gcEJ1ZmZlcjsKIAotICAvKiBQcm9jZXNzIExvY2tlZCAqLwotICBfX0hBTF9MT0NLKGhuYW5kKTsgCi0gIAogICAvKiBDaGVjayB0aGUgTkFORCBjb250cm9sbGVyIHN0YXRlICovCi0gIGlmKGhuYW5kLT5TdGF0ZSA9PSBIQUxfTkFORF9TVEFURV9CVVNZKQorICBpZiAoaG5hbmQtPlN0YXRlID09IEhBTF9OQU5EX1NUQVRFX0JVU1kpCiAgIHsKLSAgICAgcmV0dXJuIEhBTF9CVVNZOworICAgIHJldHVybiBIQUxfQlVTWTsKICAgfQotICAKLSAgLyogSWRlbnRpZnkgdGhlIGRldmljZSBhZGRyZXNzICovCi0gIGRldmljZUFkZHJlc3MgPSBOQU5EX0RFVklDRTsKLSAgCi0gIC8qIFVwZGF0ZSB0aGUgRk1DX05BTkQgY29udHJvbGxlciBzdGF0ZSAqLwotICBobmFuZC0+U3RhdGUgPSBIQUxfTkFORF9TVEFURV9CVVNZOyAgCi0gIAotICAvKiBQYWdlIGFkZHJlc3MgY2FsY3VsYXRpb24gKi8KLSAgbmFuZEFkZHJlc3MgPSBBUlJBWV9BRERSRVNTKHBBZGRyZXNzLCBobmFuZCk7IAotICAKLSAgLyogQ29sdW1uIGluIHBhZ2UgYWRkcmVzcyAqLwotICBjb2x1bW5BZGRyZXNzID0gQ09MVU1OX0FERFJFU1MoaG5hbmQpOwotICAKLSAgLyogU3BhcmUgYXJlYShzKSB3cml0ZSBsb29wICovCi0gIHdoaWxlKChOdW1TcGFyZUFyZWFUb3dyaXRlICE9IDApICYmIChuYW5kQWRkcmVzcyA8ICgoaG5hbmQtPkNvbmZpZy5CbG9ja1NpemUpICogKGhuYW5kLT5Db25maWcuQmxvY2tOYnIpKSkpCisgIGVsc2UgaWYgKGhuYW5kLT5TdGF0ZSA9PSBIQUxfTkFORF9TVEFURV9SRUFEWSkKICAgewotICAgIC8qIHVwZGF0ZSB0aGUgYnVmZmVyIHNpemUgKi8KLSAgICBzaXplID0gKGhuYW5kLT5Db25maWcuU3BhcmVBcmVhU2l6ZSkgKyAoKGhuYW5kLT5Db25maWcuU3BhcmVBcmVhU2l6ZSkgKiBudW1TcGFyZUFyZWFXcml0dGVuKTsKKyAgICAvKiBQcm9jZXNzIExvY2tlZCAqLworICAgIF9fSEFMX0xPQ0soaG5hbmQpOwogCi0gICAgLyogQ2FyZHMgd2l0aCBwYWdlIHNpemUgPD0gNTEyIGJ5dGVzICovCi0gICAgaWYoKGhuYW5kLT5Db25maWcuUGFnZVNpemUpIDw9IDUxMikKKyAgICAvKiBVcGRhdGUgdGhlIE5BTkQgY29udHJvbGxlciBzdGF0ZSAqLworICAgIGhuYW5kLT5TdGF0ZSA9IEhBTF9OQU5EX1NUQVRFX0JVU1k7CisKKyAgICAvKiBJZGVudGlmeSB0aGUgZGV2aWNlIGFkZHJlc3MgKi8KKyAgICBkZXZpY2VhZGRyZXNzID0gTkFORF9ERVZJQ0U7CisKKyAgICAvKiBQYWdlIGFkZHJlc3MgY2FsY3VsYXRpb24gKi8KKyAgICBuYW5kYWRkcmVzcyA9IEFSUkFZX0FERFJFU1MocEFkZHJlc3MsIGhuYW5kKTsKKworICAgIC8qIENvbHVtbiBpbiBwYWdlIGFkZHJlc3MgKi8KKyAgICBjb2x1bW5hZGRyZXNzID0gQ09MVU1OX0FERFJFU1MoaG5hbmQpOworCisgICAgLyogU3BhcmUgYXJlYShzKSB3cml0ZSBsb29wICovCisgICAgd2hpbGUgKChuYnNwYXJlICE9IDBVKSAmJiAobmFuZGFkZHJlc3MgPCAoKGhuYW5kLT5Db25maWcuQmxvY2tTaXplKSAqIChobmFuZC0+Q29uZmlnLkJsb2NrTmJyKSkpKQogICAgIHsKLSAgICAgIC8qIFNlbmQgd3JpdGUgU3BhcmUgYXJlYSBjb21tYW5kIHNlcXVlbmNlICovCi0gICAgICAqKF9fSU8gdWludDhfdCAqKSgodWludDMyX3QpKGRldmljZUFkZHJlc3MgfCBDTURfQVJFQSkpID0gTkFORF9DTURfQVJFQV9DOwotICAgICAgX19EU0IoKTsKLSAgICAgICooX19JTyB1aW50OF90ICopKCh1aW50MzJfdCkoZGV2aWNlQWRkcmVzcyB8IENNRF9BUkVBKSkgPSBOQU5EX0NNRF9XUklURTA7Ci0gICAgICBfX0RTQigpOwotICAgICAgCi0gICAgICBpZiAoKChobmFuZC0+Q29uZmlnLkJsb2NrU2l6ZSkqKGhuYW5kLT5Db25maWcuQmxvY2tOYnIpKSA8PSA2NTUzNSkKKyAgICAgIC8qIENhcmRzIHdpdGggcGFnZSBzaXplIDw9IDUxMiBieXRlcyAqLworICAgICAgaWYgKChobmFuZC0+Q29uZmlnLlBhZ2VTaXplKSA8PSA1MTJVKQogICAgICAgewotICAgICAgICAqKF9fSU8gdWludDhfdCAqKSgodWludDMyX3QpKGRldmljZUFkZHJlc3MgfCBBRERSX0FSRUEpKSA9IDB4MDA7CisgICAgICAgIC8qIFNlbmQgd3JpdGUgU3BhcmUgYXJlYSBjb21tYW5kIHNlcXVlbmNlICovCisgICAgICAgICooX19JTyB1aW50OF90ICopKCh1aW50MzJfdCkoZGV2aWNlYWRkcmVzcyB8IENNRF9BUkVBKSkgPSBOQU5EX0NNRF9BUkVBX0M7CiAgICAgICAgIF9fRFNCKCk7Ci0gICAgICAgICooX19JTyB1aW50OF90ICopKCh1aW50MzJfdCkoZGV2aWNlQWRkcmVzcyB8IEFERFJfQVJFQSkpID0gQUREUl8xU1RfQ1lDTEUobmFuZEFkZHJlc3MpOworICAgICAgICAqKF9fSU8gdWludDhfdCAqKSgodWludDMyX3QpKGRldmljZWFkZHJlc3MgfCBDTURfQVJFQSkpID0gTkFORF9DTURfV1JJVEUwOwogICAgICAgICBfX0RTQigpOwotICAgICAgICAqKF9fSU8gdWludDhfdCAqKSgodWludDMyX3QpKGRldmljZUFkZHJlc3MgfCBBRERSX0FSRUEpKSA9IEFERFJfMk5EX0NZQ0xFKG5hbmRBZGRyZXNzKTsKKworICAgICAgICBpZiAoKChobmFuZC0+Q29uZmlnLkJsb2NrU2l6ZSkgKiAoaG5hbmQtPkNvbmZpZy5CbG9ja05icikpIDw9IDY1NTM1VSkKKyAgICAgICAgeworICAgICAgICAgICooX19JTyB1aW50OF90ICopKCh1aW50MzJfdCkoZGV2aWNlYWRkcmVzcyB8IEFERFJfQVJFQSkpID0gMHgwMFU7CisgICAgICAgICAgX19EU0IoKTsKKyAgICAgICAgICAqKF9fSU8gdWludDhfdCAqKSgodWludDMyX3QpKGRldmljZWFkZHJlc3MgfCBBRERSX0FSRUEpKSA9IEFERFJfMVNUX0NZQ0xFKG5hbmRhZGRyZXNzKTsKKyAgICAgICAgICBfX0RTQigpOworICAgICAgICAgICooX19JTyB1aW50OF90ICopKCh1aW50MzJfdCkoZGV2aWNlYWRkcmVzcyB8IEFERFJfQVJFQSkpID0gQUREUl8yTkRfQ1lDTEUobmFuZGFkZHJlc3MpOworICAgICAgICAgIF9fRFNCKCk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSAvKiAoKGhuYW5kLT5Db25maWcuQmxvY2tTaXplKSooaG5hbmQtPkNvbmZpZy5CbG9ja05icikpID4gNjU1MzUgKi8KKyAgICAgICAgeworICAgICAgICAgICooX19JTyB1aW50OF90ICopKCh1aW50MzJfdCkoZGV2aWNlYWRkcmVzcyB8IEFERFJfQVJFQSkpID0gMHgwMFU7CisgICAgICAgICAgX19EU0IoKTsKKyAgICAgICAgICAqKF9fSU8gdWludDhfdCAqKSgodWludDMyX3QpKGRldmljZWFkZHJlc3MgfCBBRERSX0FSRUEpKSA9IEFERFJfMVNUX0NZQ0xFKG5hbmRhZGRyZXNzKTsKKyAgICAgICAgICBfX0RTQigpOworICAgICAgICAgICooX19JTyB1aW50OF90ICopKCh1aW50MzJfdCkoZGV2aWNlYWRkcmVzcyB8IEFERFJfQVJFQSkpID0gQUREUl8yTkRfQ1lDTEUobmFuZGFkZHJlc3MpOworICAgICAgICAgIF9fRFNCKCk7CisgICAgICAgICAgKihfX0lPIHVpbnQ4X3QgKikoKHVpbnQzMl90KShkZXZpY2VhZGRyZXNzIHwgQUREUl9BUkVBKSkgPSBBRERSXzNSRF9DWUNMRShuYW5kYWRkcmVzcyk7CisgICAgICAgICAgX19EU0IoKTsKKyAgICAgICAgfQorICAgICAgfQorICAgICAgZWxzZSAvKiAoaG5hbmQtPkNvbmZpZy5QYWdlU2l6ZSkgPiA1MTIgKi8KKyAgICAgIHsKKyAgICAgICAgLyogU2VuZCB3cml0ZSBTcGFyZSBhcmVhIGNvbW1hbmQgc2VxdWVuY2UgKi8KKyAgICAgICAgKihfX0lPIHVpbnQ4X3QgKikoKHVpbnQzMl90KShkZXZpY2VhZGRyZXNzIHwgQ01EX0FSRUEpKSA9IE5BTkRfQ01EX0FSRUFfQTsKKyAgICAgICAgX19EU0IoKTsKKyAgICAgICAgKihfX0lPIHVpbnQ4X3QgKikoKHVpbnQzMl90KShkZXZpY2VhZGRyZXNzIHwgQ01EX0FSRUEpKSA9IE5BTkRfQ01EX1dSSVRFMDsKKyAgICAgICAgX19EU0IoKTsKKworICAgICAgICBpZiAoKChobmFuZC0+Q29uZmlnLkJsb2NrU2l6ZSkgKiAoaG5hbmQtPkNvbmZpZy5CbG9ja05icikpIDw9IDY1NTM1VSkKKyAgICAgICAgeworICAgICAgICAgICooX19JTyB1aW50OF90ICopKCh1aW50MzJfdCkoZGV2aWNlYWRkcmVzcyB8IEFERFJfQVJFQSkpID0gQ09MVU1OXzFTVF9DWUNMRShjb2x1bW5hZGRyZXNzKTsKKyAgICAgICAgICBfX0RTQigpOworICAgICAgICAgICooX19JTyB1aW50OF90ICopKCh1aW50MzJfdCkoZGV2aWNlYWRkcmVzcyB8IEFERFJfQVJFQSkpID0gQ09MVU1OXzJORF9DWUNMRShjb2x1bW5hZGRyZXNzKTsKKyAgICAgICAgICBfX0RTQigpOworICAgICAgICAgICooX19JTyB1aW50OF90ICopKCh1aW50MzJfdCkoZGV2aWNlYWRkcmVzcyB8IEFERFJfQVJFQSkpID0gQUREUl8xU1RfQ1lDTEUobmFuZGFkZHJlc3MpOworICAgICAgICAgIF9fRFNCKCk7CisgICAgICAgICAgKihfX0lPIHVpbnQ4X3QgKikoKHVpbnQzMl90KShkZXZpY2VhZGRyZXNzIHwgQUREUl9BUkVBKSkgPSBBRERSXzJORF9DWUNMRShuYW5kYWRkcmVzcyk7CisgICAgICAgICAgX19EU0IoKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIC8qICgoaG5hbmQtPkNvbmZpZy5CbG9ja1NpemUpKihobmFuZC0+Q29uZmlnLkJsb2NrTmJyKSkgPiA2NTUzNSAqLworICAgICAgICB7CisgICAgICAgICAgKihfX0lPIHVpbnQ4X3QgKikoKHVpbnQzMl90KShkZXZpY2VhZGRyZXNzIHwgQUREUl9BUkVBKSkgPSBDT0xVTU5fMVNUX0NZQ0xFKGNvbHVtbmFkZHJlc3MpOworICAgICAgICAgIF9fRFNCKCk7CisgICAgICAgICAgKihfX0lPIHVpbnQ4X3QgKikoKHVpbnQzMl90KShkZXZpY2VhZGRyZXNzIHwgQUREUl9BUkVBKSkgPSBDT0xVTU5fMk5EX0NZQ0xFKGNvbHVtbmFkZHJlc3MpOworICAgICAgICAgIF9fRFNCKCk7CisgICAgICAgICAgKihfX0lPIHVpbnQ4X3QgKikoKHVpbnQzMl90KShkZXZpY2VhZGRyZXNzIHwgQUREUl9BUkVBKSkgPSBBRERSXzFTVF9DWUNMRShuYW5kYWRkcmVzcyk7CisgICAgICAgICAgX19EU0IoKTsKKyAgICAgICAgICAqKF9fSU8gdWludDhfdCAqKSgodWludDMyX3QpKGRldmljZWFkZHJlc3MgfCBBRERSX0FSRUEpKSA9IEFERFJfMk5EX0NZQ0xFKG5hbmRhZGRyZXNzKTsKKyAgICAgICAgICBfX0RTQigpOworICAgICAgICAgICooX19JTyB1aW50OF90ICopKCh1aW50MzJfdCkoZGV2aWNlYWRkcmVzcyB8IEFERFJfQVJFQSkpID0gQUREUl8zUkRfQ1lDTEUobmFuZGFkZHJlc3MpOworICAgICAgICAgIF9fRFNCKCk7CisgICAgICAgIH0KKyAgICAgIH0KKworICAgICAgLyogV3JpdGUgZGF0YSB0byBtZW1vcnkgKi8KKyAgICAgIGZvciAoaW5kZXggPSAwVTsgaW5kZXggPCBobmFuZC0+Q29uZmlnLlNwYXJlQXJlYVNpemU7IGluZGV4KyspCisgICAgICB7CisgICAgICAgICooX19JTyB1aW50OF90ICopZGV2aWNlYWRkcmVzcyA9ICpidWZmOworICAgICAgICBidWZmKys7CiAgICAgICAgIF9fRFNCKCk7CiAgICAgICB9Ci0gICAgICBlbHNlIC8qICgoaG5hbmQtPkNvbmZpZy5CbG9ja1NpemUpKihobmFuZC0+Q29uZmlnLkJsb2NrTmJyKSkgPiA2NTUzNSAqLwotICAgICAgewotICAgICAgICAqKF9fSU8gdWludDhfdCAqKSgodWludDMyX3QpKGRldmljZUFkZHJlc3MgfCBBRERSX0FSRUEpKSA9IDB4MDA7Ci0gICAgICAgIF9fRFNCKCk7Ci0gICAgICAgICooX19JTyB1aW50OF90ICopKCh1aW50MzJfdCkoZGV2aWNlQWRkcmVzcyB8IEFERFJfQVJFQSkpID0gQUREUl8xU1RfQ1lDTEUobmFuZEFkZHJlc3MpOwotICAgICAgICBfX0RTQigpOwotICAgICAgICAqKF9fSU8gdWludDhfdCAqKSgodWludDMyX3QpKGRldmljZUFkZHJlc3MgfCBBRERSX0FSRUEpKSA9IEFERFJfMk5EX0NZQ0xFKG5hbmRBZGRyZXNzKTsKLSAgICAgICAgX19EU0IoKTsKLSAgICAgICAgKihfX0lPIHVpbnQ4X3QgKikoKHVpbnQzMl90KShkZXZpY2VBZGRyZXNzIHwgQUREUl9BUkVBKSkgPSBBRERSXzNSRF9DWUNMRShuYW5kQWRkcmVzcyk7Ci0gICAgICAgIF9fRFNCKCk7Ci0gICAgICB9Ci0gICAgfQotICAgIGVsc2UgLyogKGhuYW5kLT5Db25maWcuUGFnZVNpemUpID4gNTEyICovCi0gICAgewotICAgICAgLyogU2VuZCB3cml0ZSBTcGFyZSBhcmVhIGNvbW1hbmQgc2VxdWVuY2UgKi8KLSAgICAgICooX19JTyB1aW50OF90ICopKCh1aW50MzJfdCkoZGV2aWNlQWRkcmVzcyB8IENNRF9BUkVBKSkgPSBOQU5EX0NNRF9BUkVBX0E7CisKKyAgICAgICooX19JTyB1aW50OF90ICopKCh1aW50MzJfdCkoZGV2aWNlYWRkcmVzcyB8IENNRF9BUkVBKSkgPSBOQU5EX0NNRF9XUklURV9UUlVFMTsKICAgICAgIF9fRFNCKCk7Ci0gICAgICAqKF9fSU8gdWludDhfdCAqKSgodWludDMyX3QpKGRldmljZUFkZHJlc3MgfCBDTURfQVJFQSkpID0gTkFORF9DTURfV1JJVEUwOwotICAgICAgX19EU0IoKTsKLSAgICAKLSAgICAgIGlmICgoKGhuYW5kLT5Db25maWcuQmxvY2tTaXplKSooaG5hbmQtPkNvbmZpZy5CbG9ja05icikpIDw9IDY1NTM1KQorCisgICAgICAvKiBHZXQgdGljayAqLworICAgICAgdGlja3N0YXJ0ID0gSEFMX0dldFRpY2soKTsKKworICAgICAgLyogUmVhZCBzdGF0dXMgdW50aWwgTkFORCBpcyByZWFkeSAqLworICAgICAgd2hpbGUgKEhBTF9OQU5EX1JlYWRfU3RhdHVzKGhuYW5kKSAhPSBOQU5EX1JFQURZKQogICAgICAgewotICAgICAgICAqKF9fSU8gdWludDhfdCAqKSgodWludDMyX3QpKGRldmljZUFkZHJlc3MgfCBBRERSX0FSRUEpKSA9IENPTFVNTl8xU1RfQ1lDTEUoY29sdW1uQWRkcmVzcyk7Ci0gICAgICAgIF9fRFNCKCk7Ci0gICAgICAgICooX19JTyB1aW50OF90ICopKCh1aW50MzJfdCkoZGV2aWNlQWRkcmVzcyB8IEFERFJfQVJFQSkpID0gQ09MVU1OXzJORF9DWUNMRShjb2x1bW5BZGRyZXNzKTsKLSAgICAgICAgX19EU0IoKTsKLSAgICAgICAgKihfX0lPIHVpbnQ4X3QgKikoKHVpbnQzMl90KShkZXZpY2VBZGRyZXNzIHwgQUREUl9BUkVBKSkgPSBBRERSXzFTVF9DWUNMRShuYW5kQWRkcmVzcyk7Ci0gICAgICAgIF9fRFNCKCk7Ci0gICAgICAgICooX19JTyB1aW50OF90ICopKCh1aW50MzJfdCkoZGV2aWNlQWRkcmVzcyB8IEFERFJfQVJFQSkpID0gQUREUl8yTkRfQ1lDTEUobmFuZEFkZHJlc3MpOwotICAgICAgICBfX0RTQigpOworICAgICAgICBpZiAoKEhBTF9HZXRUaWNrKCkgLSB0aWNrc3RhcnQpID4gTkFORF9XUklURV9USU1FT1VUKQorICAgICAgICB7CisgICAgICAgICAgLyogVXBkYXRlIHRoZSBOQU5EIGNvbnRyb2xsZXIgc3RhdGUgKi8KKyAgICAgICAgICBobmFuZC0+U3RhdGUgPSBIQUxfTkFORF9TVEFURV9FUlJPUjsKKworICAgICAgICAgIC8qIFByb2Nlc3MgdW5sb2NrZWQgKi8KKyAgICAgICAgICBfX0hBTF9VTkxPQ0soaG5hbmQpOworCisgICAgICAgICAgcmV0dXJuIEhBTF9USU1FT1VUOworICAgICAgICB9CiAgICAgICB9Ci0gICAgICBlbHNlIC8qICgoaG5hbmQtPkNvbmZpZy5CbG9ja1NpemUpKihobmFuZC0+Q29uZmlnLkJsb2NrTmJyKSkgPiA2NTUzNSAqLwotICAgICAgewotICAgICAgICAqKF9fSU8gdWludDhfdCAqKSgodWludDMyX3QpKGRldmljZUFkZHJlc3MgfCBBRERSX0FSRUEpKSA9IENPTFVNTl8xU1RfQ1lDTEUoY29sdW1uQWRkcmVzcyk7Ci0gICAgICAgIF9fRFNCKCk7Ci0gICAgICAgICooX19JTyB1aW50OF90ICopKCh1aW50MzJfdCkoZGV2aWNlQWRkcmVzcyB8IEFERFJfQVJFQSkpID0gQ09MVU1OXzJORF9DWUNMRShjb2x1bW5BZGRyZXNzKTsKLSAgICAgICAgX19EU0IoKTsKLSAgICAgICAgKihfX0lPIHVpbnQ4X3QgKikoKHVpbnQzMl90KShkZXZpY2VBZGRyZXNzIHwgQUREUl9BUkVBKSkgPSBBRERSXzFTVF9DWUNMRShuYW5kQWRkcmVzcyk7Ci0gICAgICAgIF9fRFNCKCk7Ci0gICAgICAgICooX19JTyB1aW50OF90ICopKCh1aW50MzJfdCkoZGV2aWNlQWRkcmVzcyB8IEFERFJfQVJFQSkpID0gQUREUl8yTkRfQ1lDTEUobmFuZEFkZHJlc3MpOwotICAgICAgICBfX0RTQigpOwotICAgICAgICAqKF9fSU8gdWludDhfdCAqKSgodWludDMyX3QpKGRldmljZUFkZHJlc3MgfCBBRERSX0FSRUEpKSA9IEFERFJfM1JEX0NZQ0xFKG5hbmRBZGRyZXNzKTsKLSAgICAgICAgX19EU0IoKTsKLSAgICAgIH0KLSAgICB9Ci0gIAotICAgIC8qIFdyaXRlIGRhdGEgdG8gbWVtb3J5ICovCi0gICAgZm9yKDsgaW5kZXggPCBzaXplOyBpbmRleCsrKQotICAgIHsKLSAgICAgICooX19JTyB1aW50OF90ICopZGV2aWNlQWRkcmVzcyA9ICoodWludDhfdCAqKXBCdWZmZXIrKzsKLSAgICAgIF9fRFNCKCk7Ci0gICAgfQotICAgCi0gICAgKihfX0lPIHVpbnQ4X3QgKikoKHVpbnQzMl90KShkZXZpY2VBZGRyZXNzIHwgQ01EX0FSRUEpKSA9IE5BTkRfQ01EX1dSSVRFX1RSVUUxOwotICAgIF9fRFNCKCk7Ci0gICAKLSAgICAvKiBHZXQgdGljayAqLwotICAgIHRpY2tzdGFydCA9IEhBTF9HZXRUaWNrKCk7Ci0JCi0gICAgLyogUmVhZCBzdGF0dXMgdW50aWwgTkFORCBpcyByZWFkeSAqLwotICAgIHdoaWxlKEhBTF9OQU5EX1JlYWRfU3RhdHVzKGhuYW5kKSAhPSBOQU5EX1JFQURZKQotICAgIHsgIAotICAgICAgaWYoKEhBTF9HZXRUaWNrKCkgLSB0aWNrc3RhcnQgKSA+IE5BTkRfV1JJVEVfVElNRU9VVCkKLSAgICAgIHsKLSAgICAgICAgcmV0dXJuIEhBTF9USU1FT1VUOyAKLSAgICAgIH0KKworICAgICAgLyogSW5jcmVtZW50IHdyaXR0ZW4gc3BhcmUgYXJlYXMgbnVtYmVyICovCisgICAgICBudW1zcGFyZWFyZWF3cml0dGVuKys7CisKKyAgICAgIC8qIERlY3JlbWVudCBzcGFyZSBhcmVhcyB0byB3cml0ZSAqLworICAgICAgbmJzcGFyZS0tOworCisgICAgICAvKiBJbmNyZW1lbnQgdGhlIE5BTkQgYWRkcmVzcyAqLworICAgICAgbmFuZGFkZHJlc3MgPSAodWludDMyX3QpKG5hbmRhZGRyZXNzICsgMVUpOwogICAgIH0KIAotICAgIC8qIEluY3JlbWVudCB3cml0dGVuIHNwYXJlIGFyZWFzIG51bWJlciAqLwotICAgIG51bVNwYXJlQXJlYVdyaXR0ZW4rKzsKLSAgICAKLSAgICAvKiBEZWNyZW1lbnQgc3BhcmUgYXJlYXMgdG8gd3JpdGUgKi8KLSAgICBOdW1TcGFyZUFyZWFUb3dyaXRlLS07Ci0gICAgCi0gICAgLyogSW5jcmVtZW50IHRoZSBOQU5EIGFkZHJlc3MgKi8KLSAgICBuYW5kQWRkcmVzcyA9ICh1aW50MzJfdCkobmFuZEFkZHJlc3MgKyAxKTsKKyAgICAvKiBVcGRhdGUgdGhlIE5BTkQgY29udHJvbGxlciBzdGF0ZSAqLworICAgIGhuYW5kLT5TdGF0ZSA9IEhBTF9OQU5EX1NUQVRFX1JFQURZOworCisgICAgLyogUHJvY2VzcyB1bmxvY2tlZCAqLworICAgIF9fSEFMX1VOTE9DSyhobmFuZCk7CisgIH0KKyAgZWxzZQorICB7CisgICAgcmV0dXJuIEhBTF9FUlJPUjsKICAgfQogCi0gIC8qIFVwZGF0ZSB0aGUgTkFORCBjb250cm9sbGVyIHN0YXRlICovCi0gIGhuYW5kLT5TdGF0ZSA9IEhBTF9OQU5EX1NUQVRFX1JFQURZOwotCi0gIC8qIFByb2Nlc3MgdW5sb2NrZWQgKi8KLSAgX19IQUxfVU5MT0NLKGhuYW5kKTsKLQotICByZXR1cm4gSEFMX09LOyAgCisgIHJldHVybiBIQUxfT0s7CiB9CiAKIC8qKgpAQCAtMTUyNywxNTAgKzE2NDYsMTY2IEBACiAgICogQHBhcmFtICBobmFuZCBwb2ludGVyIHRvIGEgTkFORF9IYW5kbGVUeXBlRGVmIHN0cnVjdHVyZSB0aGF0IGNvbnRhaW5zCiAgICogICAgICAgICAgICAgICAgdGhlIGNvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb24gZm9yIE5BTkQgbW9kdWxlLgogICAqIEBwYXJhbSAgcEFkZHJlc3MgIHBvaW50ZXIgdG8gTkFORCBhZGRyZXNzIHN0cnVjdHVyZQotICAqIEBwYXJhbSAgcEJ1ZmZlciAgcG9pbnRlciB0byBzb3VyY2UgYnVmZmVyIHRvIHdyaXRlLiBwQnVmZmVyIHNob3VsZCBiZSAxNmJpdHMgYWxpZ25lZC4gIAorICAqIEBwYXJhbSAgcEJ1ZmZlciAgcG9pbnRlciB0byBzb3VyY2UgYnVmZmVyIHRvIHdyaXRlLiBwQnVmZmVyIHNob3VsZCBiZSAxNmJpdHMgYWxpZ25lZC4KICAgKiBAcGFyYW0gIE51bVNwYXJlQXJlYVRvd3JpdGUgICBudW1iZXIgb2Ygc3BhcmUgYXJlYXMgdG8gd3JpdGUgdG8gYmxvY2sKICAgKiBAcmV0dmFsIEhBTCBzdGF0dXMKICAgKi8KLUhBTF9TdGF0dXNUeXBlRGVmIEhBTF9OQU5EX1dyaXRlX1NwYXJlQXJlYV8xNmIoTkFORF9IYW5kbGVUeXBlRGVmICpobmFuZCwgTkFORF9BZGRyZXNzVHlwZURlZiAqcEFkZHJlc3MsIHVpbnQxNl90ICpwQnVmZmVyLCB1aW50MzJfdCBOdW1TcGFyZUFyZWFUb3dyaXRlKQorSEFMX1N0YXR1c1R5cGVEZWYgSEFMX05BTkRfV3JpdGVfU3BhcmVBcmVhXzE2YihOQU5EX0hhbmRsZVR5cGVEZWYgKmhuYW5kLCBOQU5EX0FkZHJlc3NUeXBlRGVmICpwQWRkcmVzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDE2X3QgKnBCdWZmZXIsIHVpbnQzMl90IE51bVNwYXJlQXJlYVRvd3JpdGUpCiB7Ci0gIF9fSU8gdWludDMyX3QgaW5kZXggPSAwOwotICB1aW50MzJfdCB0aWNrc3RhcnQgPSAwOwotICB1aW50MzJfdCBkZXZpY2VBZGRyZXNzID0gMCwgc2l6ZSA9IDAsIG51bVNwYXJlQXJlYVdyaXR0ZW4gPSAwLCBuYW5kQWRkcmVzcyA9IDAsIGNvbHVtbkFkZHJlc3MgPSAwOworICB1aW50MzJfdCBpbmRleDsKKyAgdWludDMyX3QgdGlja3N0YXJ0OworICB1aW50MzJfdCBkZXZpY2VhZGRyZXNzOworICB1aW50MzJfdCBudW1zcGFyZWFyZWF3cml0dGVuID0gMFU7CisgIHVpbnQzMl90IG5hbmRhZGRyZXNzOworICB1aW50MzJfdCBjb2x1bW5hZGRyZXNzOworICB1aW50MzJfdCBuYnNwYXJlID0gTnVtU3BhcmVBcmVhVG93cml0ZTsKKyAgdWludDE2X3QgKmJ1ZmYgPSBwQnVmZmVyOwogCi0gIC8qIFByb2Nlc3MgTG9ja2VkICovCi0gIF9fSEFMX0xPQ0soaG5hbmQpOyAKLSAgCiAgIC8qIENoZWNrIHRoZSBOQU5EIGNvbnRyb2xsZXIgc3RhdGUgKi8KLSAgaWYoaG5hbmQtPlN0YXRlID09IEhBTF9OQU5EX1NUQVRFX0JVU1kpCisgIGlmIChobmFuZC0+U3RhdGUgPT0gSEFMX05BTkRfU1RBVEVfQlVTWSkKICAgewotICAgICByZXR1cm4gSEFMX0JVU1k7CisgICAgcmV0dXJuIEhBTF9CVVNZOwogICB9Ci0gIAotICAvKiBJZGVudGlmeSB0aGUgZGV2aWNlIGFkZHJlc3MgKi8KLSAgZGV2aWNlQWRkcmVzcyA9IE5BTkRfREVWSUNFOwotICAKLSAgLyogVXBkYXRlIHRoZSBGTUNfTkFORCBjb250cm9sbGVyIHN0YXRlICovCi0gIGhuYW5kLT5TdGF0ZSA9IEhBTF9OQU5EX1NUQVRFX0JVU1k7ICAKLSAgCi0gIC8qIE5BTkQgcmF3IGFkZHJlc3MgY2FsY3VsYXRpb24gKi8KLSAgbmFuZEFkZHJlc3MgPSBBUlJBWV9BRERSRVNTKHBBZGRyZXNzLCBobmFuZCk7Ci0gIAotICAvKiBDb2x1bW4gaW4gcGFnZSBhZGRyZXNzICovCi0gIGNvbHVtbkFkZHJlc3MgPSAodWludDMyX3QpKENPTFVNTl9BRERSRVNTKGhuYW5kKSk7Ci0gIAotICAvKiBTcGFyZSBhcmVhKHMpIHdyaXRlIGxvb3AgKi8KLSAgd2hpbGUoKE51bVNwYXJlQXJlYVRvd3JpdGUgIT0gMCkgJiYgKG5hbmRBZGRyZXNzIDwgKChobmFuZC0+Q29uZmlnLkJsb2NrU2l6ZSkgKiAoaG5hbmQtPkNvbmZpZy5CbG9ja05icikpKSkKKyAgZWxzZSBpZiAoaG5hbmQtPlN0YXRlID09IEhBTF9OQU5EX1NUQVRFX1JFQURZKQogICB7Ci0gICAgLyogdXBkYXRlIHRoZSBidWZmZXIgc2l6ZSAqLwotICAgIHNpemUgPSAoaG5hbmQtPkNvbmZpZy5TcGFyZUFyZWFTaXplKSArICgoaG5hbmQtPkNvbmZpZy5TcGFyZUFyZWFTaXplKSAqIG51bVNwYXJlQXJlYVdyaXR0ZW4pOworICAgIC8qIFByb2Nlc3MgTG9ja2VkICovCisgICAgX19IQUxfTE9DSyhobmFuZCk7CiAKLSAgICAvKiBDYXJkcyB3aXRoIHBhZ2Ugc2l6ZSA8PSA1MTIgYnl0ZXMgKi8KLSAgICBpZigoaG5hbmQtPkNvbmZpZy5QYWdlU2l6ZSkgPD0gNTEyKQorICAgIC8qIFVwZGF0ZSB0aGUgTkFORCBjb250cm9sbGVyIHN0YXRlICovCisgICAgaG5hbmQtPlN0YXRlID0gSEFMX05BTkRfU1RBVEVfQlVTWTsKKworICAgIC8qIElkZW50aWZ5IHRoZSBkZXZpY2UgYWRkcmVzcyAqLworICAgIGRldmljZWFkZHJlc3MgPSBOQU5EX0RFVklDRTsKKworICAgIC8qIE5BTkQgcmF3IGFkZHJlc3MgY2FsY3VsYXRpb24gKi8KKyAgICBuYW5kYWRkcmVzcyA9IEFSUkFZX0FERFJFU1MocEFkZHJlc3MsIGhuYW5kKTsKKworICAgIC8qIENvbHVtbiBpbiBwYWdlIGFkZHJlc3MgKi8KKyAgICBjb2x1bW5hZGRyZXNzID0gKHVpbnQzMl90KShDT0xVTU5fQUREUkVTUyhobmFuZCkpOworCisgICAgLyogU3BhcmUgYXJlYShzKSB3cml0ZSBsb29wICovCisgICAgd2hpbGUgKChuYnNwYXJlICE9IDBVKSAmJiAobmFuZGFkZHJlc3MgPCAoKGhuYW5kLT5Db25maWcuQmxvY2tTaXplKSAqIChobmFuZC0+Q29uZmlnLkJsb2NrTmJyKSkpKQogICAgIHsKLSAgICAgIC8qIFNlbmQgd3JpdGUgU3BhcmUgYXJlYSBjb21tYW5kIHNlcXVlbmNlICovCi0gICAgICAqKF9fSU8gdWludDhfdCAqKSgodWludDMyX3QpKGRldmljZUFkZHJlc3MgfCBDTURfQVJFQSkpID0gTkFORF9DTURfQVJFQV9DOwotICAgICAgX19EU0IoKTsKLSAgICAgICooX19JTyB1aW50OF90ICopKCh1aW50MzJfdCkoZGV2aWNlQWRkcmVzcyB8IENNRF9BUkVBKSkgPSBOQU5EX0NNRF9XUklURTA7Ci0gICAgICBfX0RTQigpOwotICAgIAotICAgICAgaWYgKCgoaG5hbmQtPkNvbmZpZy5CbG9ja1NpemUpKihobmFuZC0+Q29uZmlnLkJsb2NrTmJyKSkgPD0gNjU1MzUpCisgICAgICAvKiBDYXJkcyB3aXRoIHBhZ2Ugc2l6ZSA8PSA1MTIgYnl0ZXMgKi8KKyAgICAgIGlmICgoaG5hbmQtPkNvbmZpZy5QYWdlU2l6ZSkgPD0gNTEyVSkKICAgICAgIHsKLSAgICAgICAgKihfX0lPIHVpbnQ4X3QgKikoKHVpbnQzMl90KShkZXZpY2VBZGRyZXNzIHwgQUREUl9BUkVBKSkgPSAweDAwOworICAgICAgICAvKiBTZW5kIHdyaXRlIFNwYXJlIGFyZWEgY29tbWFuZCBzZXF1ZW5jZSAqLworICAgICAgICAqKF9fSU8gdWludDhfdCAqKSgodWludDMyX3QpKGRldmljZWFkZHJlc3MgfCBDTURfQVJFQSkpID0gTkFORF9DTURfQVJFQV9DOwogICAgICAgICBfX0RTQigpOwotICAgICAgICAqKF9fSU8gdWludDhfdCAqKSgodWludDMyX3QpKGRldmljZUFkZHJlc3MgfCBBRERSX0FSRUEpKSA9IEFERFJfMVNUX0NZQ0xFKG5hbmRBZGRyZXNzKTsKKyAgICAgICAgKihfX0lPIHVpbnQ4X3QgKikoKHVpbnQzMl90KShkZXZpY2VhZGRyZXNzIHwgQ01EX0FSRUEpKSA9IE5BTkRfQ01EX1dSSVRFMDsKICAgICAgICAgX19EU0IoKTsKLSAgICAgICAgKihfX0lPIHVpbnQ4X3QgKikoKHVpbnQzMl90KShkZXZpY2VBZGRyZXNzIHwgQUREUl9BUkVBKSkgPSBBRERSXzJORF9DWUNMRShuYW5kQWRkcmVzcyk7CisKKyAgICAgICAgaWYgKCgoaG5hbmQtPkNvbmZpZy5CbG9ja1NpemUpICogKGhuYW5kLT5Db25maWcuQmxvY2tOYnIpKSA8PSA2NTUzNVUpCisgICAgICAgIHsKKyAgICAgICAgICAqKF9fSU8gdWludDhfdCAqKSgodWludDMyX3QpKGRldmljZWFkZHJlc3MgfCBBRERSX0FSRUEpKSA9IDB4MDBVOworICAgICAgICAgIF9fRFNCKCk7CisgICAgICAgICAgKihfX0lPIHVpbnQ4X3QgKikoKHVpbnQzMl90KShkZXZpY2VhZGRyZXNzIHwgQUREUl9BUkVBKSkgPSBBRERSXzFTVF9DWUNMRShuYW5kYWRkcmVzcyk7CisgICAgICAgICAgX19EU0IoKTsKKyAgICAgICAgICAqKF9fSU8gdWludDhfdCAqKSgodWludDMyX3QpKGRldmljZWFkZHJlc3MgfCBBRERSX0FSRUEpKSA9IEFERFJfMk5EX0NZQ0xFKG5hbmRhZGRyZXNzKTsKKyAgICAgICAgICBfX0RTQigpOworICAgICAgICB9CisgICAgICAgIGVsc2UgLyogKChobmFuZC0+Q29uZmlnLkJsb2NrU2l6ZSkqKGhuYW5kLT5Db25maWcuQmxvY2tOYnIpKSA+IDY1NTM1ICovCisgICAgICAgIHsKKyAgICAgICAgICAqKF9fSU8gdWludDhfdCAqKSgodWludDMyX3QpKGRldmljZWFkZHJlc3MgfCBBRERSX0FSRUEpKSA9IDB4MDBVOworICAgICAgICAgIF9fRFNCKCk7CisgICAgICAgICAgKihfX0lPIHVpbnQ4X3QgKikoKHVpbnQzMl90KShkZXZpY2VhZGRyZXNzIHwgQUREUl9BUkVBKSkgPSBBRERSXzFTVF9DWUNMRShuYW5kYWRkcmVzcyk7CisgICAgICAgICAgX19EU0IoKTsKKyAgICAgICAgICAqKF9fSU8gdWludDhfdCAqKSgodWludDMyX3QpKGRldmljZWFkZHJlc3MgfCBBRERSX0FSRUEpKSA9IEFERFJfMk5EX0NZQ0xFKG5hbmRhZGRyZXNzKTsKKyAgICAgICAgICBfX0RTQigpOworICAgICAgICAgICooX19JTyB1aW50OF90ICopKCh1aW50MzJfdCkoZGV2aWNlYWRkcmVzcyB8IEFERFJfQVJFQSkpID0gQUREUl8zUkRfQ1lDTEUobmFuZGFkZHJlc3MpOworICAgICAgICAgIF9fRFNCKCk7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIGVsc2UgLyogKGhuYW5kLT5Db25maWcuUGFnZVNpemUpID4gNTEyICovCisgICAgICB7CisgICAgICAgIC8qIFNlbmQgd3JpdGUgU3BhcmUgYXJlYSBjb21tYW5kIHNlcXVlbmNlICovCisgICAgICAgICooX19JTyB1aW50OF90ICopKCh1aW50MzJfdCkoZGV2aWNlYWRkcmVzcyB8IENNRF9BUkVBKSkgPSBOQU5EX0NNRF9BUkVBX0E7CisgICAgICAgIF9fRFNCKCk7CisgICAgICAgICooX19JTyB1aW50OF90ICopKCh1aW50MzJfdCkoZGV2aWNlYWRkcmVzcyB8IENNRF9BUkVBKSkgPSBOQU5EX0NNRF9XUklURTA7CisgICAgICAgIF9fRFNCKCk7CisKKyAgICAgICAgaWYgKCgoaG5hbmQtPkNvbmZpZy5CbG9ja1NpemUpICogKGhuYW5kLT5Db25maWcuQmxvY2tOYnIpKSA8PSA2NTUzNVUpCisgICAgICAgIHsKKyAgICAgICAgICAqKF9fSU8gdWludDhfdCAqKSgodWludDMyX3QpKGRldmljZWFkZHJlc3MgfCBBRERSX0FSRUEpKSA9IENPTFVNTl8xU1RfQ1lDTEUoY29sdW1uYWRkcmVzcyk7CisgICAgICAgICAgX19EU0IoKTsKKyAgICAgICAgICAqKF9fSU8gdWludDhfdCAqKSgodWludDMyX3QpKGRldmljZWFkZHJlc3MgfCBBRERSX0FSRUEpKSA9IENPTFVNTl8yTkRfQ1lDTEUoY29sdW1uYWRkcmVzcyk7CisgICAgICAgICAgX19EU0IoKTsKKyAgICAgICAgICAqKF9fSU8gdWludDhfdCAqKSgodWludDMyX3QpKGRldmljZWFkZHJlc3MgfCBBRERSX0FSRUEpKSA9IEFERFJfMVNUX0NZQ0xFKG5hbmRhZGRyZXNzKTsKKyAgICAgICAgICBfX0RTQigpOworICAgICAgICAgICooX19JTyB1aW50OF90ICopKCh1aW50MzJfdCkoZGV2aWNlYWRkcmVzcyB8IEFERFJfQVJFQSkpID0gQUREUl8yTkRfQ1lDTEUobmFuZGFkZHJlc3MpOworICAgICAgICAgIF9fRFNCKCk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSAvKiAoKGhuYW5kLT5Db25maWcuQmxvY2tTaXplKSooaG5hbmQtPkNvbmZpZy5CbG9ja05icikpID4gNjU1MzUgKi8KKyAgICAgICAgeworICAgICAgICAgICooX19JTyB1aW50OF90ICopKCh1aW50MzJfdCkoZGV2aWNlYWRkcmVzcyB8IEFERFJfQVJFQSkpID0gQ09MVU1OXzFTVF9DWUNMRShjb2x1bW5hZGRyZXNzKTsKKyAgICAgICAgICBfX0RTQigpOworICAgICAgICAgICooX19JTyB1aW50OF90ICopKCh1aW50MzJfdCkoZGV2aWNlYWRkcmVzcyB8IEFERFJfQVJFQSkpID0gQ09MVU1OXzJORF9DWUNMRShjb2x1bW5hZGRyZXNzKTsKKyAgICAgICAgICBfX0RTQigpOworICAgICAgICAgICooX19JTyB1aW50OF90ICopKCh1aW50MzJfdCkoZGV2aWNlYWRkcmVzcyB8IEFERFJfQVJFQSkpID0gQUREUl8xU1RfQ1lDTEUobmFuZGFkZHJlc3MpOworICAgICAgICAgIF9fRFNCKCk7CisgICAgICAgICAgKihfX0lPIHVpbnQ4X3QgKikoKHVpbnQzMl90KShkZXZpY2VhZGRyZXNzIHwgQUREUl9BUkVBKSkgPSBBRERSXzJORF9DWUNMRShuYW5kYWRkcmVzcyk7CisgICAgICAgICAgX19EU0IoKTsKKyAgICAgICAgICAqKF9fSU8gdWludDhfdCAqKSgodWludDMyX3QpKGRldmljZWFkZHJlc3MgfCBBRERSX0FSRUEpKSA9IEFERFJfM1JEX0NZQ0xFKG5hbmRhZGRyZXNzKTsKKyAgICAgICAgICBfX0RTQigpOworICAgICAgICB9CisgICAgICB9CisKKyAgICAgIC8qIFdyaXRlIGRhdGEgdG8gbWVtb3J5ICovCisgICAgICBmb3IgKGluZGV4ID0gMFU7IGluZGV4IDwgaG5hbmQtPkNvbmZpZy5TcGFyZUFyZWFTaXplOyBpbmRleCsrKQorICAgICAgeworICAgICAgICAqKF9fSU8gdWludDE2X3QgKilkZXZpY2VhZGRyZXNzID0gKmJ1ZmY7CisgICAgICAgIGJ1ZmYrKzsKICAgICAgICAgX19EU0IoKTsKICAgICAgIH0KLSAgICAgIGVsc2UgLyogKChobmFuZC0+Q29uZmlnLkJsb2NrU2l6ZSkqKGhuYW5kLT5Db25maWcuQmxvY2tOYnIpKSA+IDY1NTM1ICovCi0gICAgICB7Ci0gICAgICAgICooX19JTyB1aW50OF90ICopKCh1aW50MzJfdCkoZGV2aWNlQWRkcmVzcyB8IEFERFJfQVJFQSkpID0gMHgwMDsKLSAgICAgICAgX19EU0IoKTsKLSAgICAgICAgKihfX0lPIHVpbnQ4X3QgKikoKHVpbnQzMl90KShkZXZpY2VBZGRyZXNzIHwgQUREUl9BUkVBKSkgPSBBRERSXzFTVF9DWUNMRShuYW5kQWRkcmVzcyk7Ci0gICAgICAgIF9fRFNCKCk7Ci0gICAgICAgICooX19JTyB1aW50OF90ICopKCh1aW50MzJfdCkoZGV2aWNlQWRkcmVzcyB8IEFERFJfQVJFQSkpID0gQUREUl8yTkRfQ1lDTEUobmFuZEFkZHJlc3MpOwotICAgICAgICBfX0RTQigpOwotICAgICAgICAqKF9fSU8gdWludDhfdCAqKSgodWludDMyX3QpKGRldmljZUFkZHJlc3MgfCBBRERSX0FSRUEpKSA9IEFERFJfM1JEX0NZQ0xFKG5hbmRBZGRyZXNzKTsKLSAgICAgICAgX19EU0IoKTsKLSAgICAgIH0KLSAgICB9Ci0gICAgZWxzZSAvKiAoaG5hbmQtPkNvbmZpZy5QYWdlU2l6ZSkgPiA1MTIgKi8KLSAgICB7Ci0gICAgICAvKiBTZW5kIHdyaXRlIFNwYXJlIGFyZWEgY29tbWFuZCBzZXF1ZW5jZSAqLwotICAgICAgKihfX0lPIHVpbnQ4X3QgKikoKHVpbnQzMl90KShkZXZpY2VBZGRyZXNzIHwgQ01EX0FSRUEpKSA9IE5BTkRfQ01EX0FSRUFfQTsKKworICAgICAgKihfX0lPIHVpbnQ4X3QgKikoKHVpbnQzMl90KShkZXZpY2VhZGRyZXNzIHwgQ01EX0FSRUEpKSA9IE5BTkRfQ01EX1dSSVRFX1RSVUUxOwogICAgICAgX19EU0IoKTsKLSAgICAgICooX19JTyB1aW50OF90ICopKCh1aW50MzJfdCkoZGV2aWNlQWRkcmVzcyB8IENNRF9BUkVBKSkgPSBOQU5EX0NNRF9XUklURTA7Ci0gICAgICBfX0RTQigpOwotICAgIAotICAgICAgaWYgKCgoaG5hbmQtPkNvbmZpZy5CbG9ja1NpemUpKihobmFuZC0+Q29uZmlnLkJsb2NrTmJyKSkgPD0gNjU1MzUpCisKKyAgICAgIC8qIEdldCB0aWNrICovCisgICAgICB0aWNrc3RhcnQgPSBIQUxfR2V0VGljaygpOworCisgICAgICAvKiBSZWFkIHN0YXR1cyB1bnRpbCBOQU5EIGlzIHJlYWR5ICovCisgICAgICB3aGlsZSAoSEFMX05BTkRfUmVhZF9TdGF0dXMoaG5hbmQpICE9IE5BTkRfUkVBRFkpCiAgICAgICB7Ci0gICAgICAgICooX19JTyB1aW50OF90ICopKCh1aW50MzJfdCkoZGV2aWNlQWRkcmVzcyB8IEFERFJfQVJFQSkpID0gQ09MVU1OXzFTVF9DWUNMRShjb2x1bW5BZGRyZXNzKTsKLSAgICAgICAgX19EU0IoKTsKLSAgICAgICAgKihfX0lPIHVpbnQ4X3QgKikoKHVpbnQzMl90KShkZXZpY2VBZGRyZXNzIHwgQUREUl9BUkVBKSkgPSBDT0xVTU5fMk5EX0NZQ0xFKGNvbHVtbkFkZHJlc3MpOwotICAgICAgICBfX0RTQigpOwotICAgICAgICAqKF9fSU8gdWludDhfdCAqKSgodWludDMyX3QpKGRldmljZUFkZHJlc3MgfCBBRERSX0FSRUEpKSA9IEFERFJfMVNUX0NZQ0xFKG5hbmRBZGRyZXNzKTsKLSAgICAgICAgX19EU0IoKTsKLSAgICAgICAgKihfX0lPIHVpbnQ4X3QgKikoKHVpbnQzMl90KShkZXZpY2VBZGRyZXNzIHwgQUREUl9BUkVBKSkgPSBBRERSXzJORF9DWUNMRShuYW5kQWRkcmVzcyk7Ci0gICAgICAgIF9fRFNCKCk7CisgICAgICAgIGlmICgoSEFMX0dldFRpY2soKSAtIHRpY2tzdGFydCkgPiBOQU5EX1dSSVRFX1RJTUVPVVQpCisgICAgICAgIHsKKyAgICAgICAgICAvKiBVcGRhdGUgdGhlIE5BTkQgY29udHJvbGxlciBzdGF0ZSAqLworICAgICAgICAgIGhuYW5kLT5TdGF0ZSA9IEhBTF9OQU5EX1NUQVRFX0VSUk9SOworCisgICAgICAgICAgLyogUHJvY2VzcyB1bmxvY2tlZCAqLworICAgICAgICAgIF9fSEFMX1VOTE9DSyhobmFuZCk7CisKKyAgICAgICAgICByZXR1cm4gSEFMX1RJTUVPVVQ7CisgICAgICAgIH0KICAgICAgIH0KLSAgICAgIGVsc2UgLyogKChobmFuZC0+Q29uZmlnLkJsb2NrU2l6ZSkqKGhuYW5kLT5Db25maWcuQmxvY2tOYnIpKSA+IDY1NTM1ICovCi0gICAgICB7Ci0gICAgICAgICooX19JTyB1aW50OF90ICopKCh1aW50MzJfdCkoZGV2aWNlQWRkcmVzcyB8IEFERFJfQVJFQSkpID0gQ09MVU1OXzFTVF9DWUNMRShjb2x1bW5BZGRyZXNzKTsKLSAgICAgICAgX19EU0IoKTsKLSAgICAgICAgKihfX0lPIHVpbnQ4X3QgKikoKHVpbnQzMl90KShkZXZpY2VBZGRyZXNzIHwgQUREUl9BUkVBKSkgPSBDT0xVTU5fMk5EX0NZQ0xFKGNvbHVtbkFkZHJlc3MpOwotICAgICAgICBfX0RTQigpOwotICAgICAgICAqKF9fSU8gdWludDhfdCAqKSgodWludDMyX3QpKGRldmljZUFkZHJlc3MgfCBBRERSX0FSRUEpKSA9IEFERFJfMVNUX0NZQ0xFKG5hbmRBZGRyZXNzKTsKLSAgICAgICAgX19EU0IoKTsKLSAgICAgICAgKihfX0lPIHVpbnQ4X3QgKikoKHVpbnQzMl90KShkZXZpY2VBZGRyZXNzIHwgQUREUl9BUkVBKSkgPSBBRERSXzJORF9DWUNMRShuYW5kQWRkcmVzcyk7Ci0gICAgICAgIF9fRFNCKCk7Ci0gICAgICAgICooX19JTyB1aW50OF90ICopKCh1aW50MzJfdCkoZGV2aWNlQWRkcmVzcyB8IEFERFJfQVJFQSkpID0gQUREUl8zUkRfQ1lDTEUobmFuZEFkZHJlc3MpOwotICAgICAgICBfX0RTQigpOwotICAgICAgfQotICAgIH0KLSAgCi0gICAgLyogV3JpdGUgZGF0YSB0byBtZW1vcnkgKi8KLSAgICBmb3IoOyBpbmRleCA8IHNpemU7IGluZGV4KyspCi0gICAgewotICAgICAgKihfX0lPIHVpbnQxNl90ICopZGV2aWNlQWRkcmVzcyA9ICoodWludDE2X3QgKilwQnVmZmVyKys7Ci0gICAgICBfX0RTQigpOwotICAgIH0KLSAgIAotICAgICooX19JTyB1aW50OF90ICopKCh1aW50MzJfdCkoZGV2aWNlQWRkcmVzcyB8IENNRF9BUkVBKSkgPSBOQU5EX0NNRF9XUklURV9UUlVFMTsKLSAgICBfX0RTQigpOwotICAgCi0gICAgLyogR2V0IHRpY2sgKi8KLSAgICB0aWNrc3RhcnQgPSBIQUxfR2V0VGljaygpOwotCSAgCi0gICAgLyogUmVhZCBzdGF0dXMgdW50aWwgTkFORCBpcyByZWFkeSAqLwotICAgIHdoaWxlKEhBTF9OQU5EX1JlYWRfU3RhdHVzKGhuYW5kKSAhPSBOQU5EX1JFQURZKQotICAgIHsgCi0gICAgICBpZigoSEFMX0dldFRpY2soKSAtIHRpY2tzdGFydCApID4gTkFORF9XUklURV9USU1FT1VUKQotICAgICAgewotICAgICAgICByZXR1cm4gSEFMX1RJTUVPVVQ7IAotICAgICAgfQorCisgICAgICAvKiBJbmNyZW1lbnQgd3JpdHRlbiBzcGFyZSBhcmVhcyBudW1iZXIgKi8KKyAgICAgIG51bXNwYXJlYXJlYXdyaXR0ZW4rKzsKKworICAgICAgLyogRGVjcmVtZW50IHNwYXJlIGFyZWFzIHRvIHdyaXRlICovCisgICAgICBuYnNwYXJlLS07CisKKyAgICAgIC8qIEluY3JlbWVudCB0aGUgTkFORCBhZGRyZXNzICovCisgICAgICBuYW5kYWRkcmVzcyA9ICh1aW50MzJfdCkobmFuZGFkZHJlc3MgKyAxVSk7CiAgICAgfQogCi0gICAgLyogSW5jcmVtZW50IHdyaXR0ZW4gc3BhcmUgYXJlYXMgbnVtYmVyICovCi0gICAgbnVtU3BhcmVBcmVhV3JpdHRlbisrOwotICAgIAotICAgIC8qIERlY3JlbWVudCBzcGFyZSBhcmVhcyB0byB3cml0ZSAqLwotICAgIE51bVNwYXJlQXJlYVRvd3JpdGUtLTsKLSAgICAKLSAgICAvKiBJbmNyZW1lbnQgdGhlIE5BTkQgYWRkcmVzcyAqLwotICAgIG5hbmRBZGRyZXNzID0gKHVpbnQzMl90KShuYW5kQWRkcmVzcyArIDEpOworICAgIC8qIFVwZGF0ZSB0aGUgTkFORCBjb250cm9sbGVyIHN0YXRlICovCisgICAgaG5hbmQtPlN0YXRlID0gSEFMX05BTkRfU1RBVEVfUkVBRFk7CisKKyAgICAvKiBQcm9jZXNzIHVubG9ja2VkICovCisgICAgX19IQUxfVU5MT0NLKGhuYW5kKTsKKyAgfQorICBlbHNlCisgIHsKKyAgICByZXR1cm4gSEFMX0VSUk9SOwogICB9CiAKLSAgLyogVXBkYXRlIHRoZSBOQU5EIGNvbnRyb2xsZXIgc3RhdGUgKi8KLSAgaG5hbmQtPlN0YXRlID0gSEFMX05BTkRfU1RBVEVfUkVBRFk7Ci0KLSAgLyogUHJvY2VzcyB1bmxvY2tlZCAqLwotICBfX0hBTF9VTkxPQ0soaG5hbmQpOwotCi0gIHJldHVybiBIQUxfT0s7ICAKKyAgcmV0dXJuIEhBTF9PSzsKIH0KIAogLyoqCi0gICogQGJyaWVmICBOQU5EIG1lbW9yeSBCbG9jayBlcmFzZSAKKyAgKiBAYnJpZWYgIE5BTkQgbWVtb3J5IEJsb2NrIGVyYXNlCiAgICogQHBhcmFtICBobmFuZCBwb2ludGVyIHRvIGEgTkFORF9IYW5kbGVUeXBlRGVmIHN0cnVjdHVyZSB0aGF0IGNvbnRhaW5zCiAgICogICAgICAgICAgICAgICAgdGhlIGNvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb24gZm9yIE5BTkQgbW9kdWxlLgogICAqIEBwYXJhbSAgcEFkZHJlc3MgIHBvaW50ZXIgdG8gTkFORCBhZGRyZXNzIHN0cnVjdHVyZQpAQCAtMTY3OCw0MyArMTgxMyw0OSBAQAogICAqLwogSEFMX1N0YXR1c1R5cGVEZWYgSEFMX05BTkRfRXJhc2VfQmxvY2soTkFORF9IYW5kbGVUeXBlRGVmICpobmFuZCwgTkFORF9BZGRyZXNzVHlwZURlZiAqcEFkZHJlc3MpCiB7Ci0gIHVpbnQzMl90IERldmljZUFkZHJlc3MgPSAwOwotICAKLSAgLyogUHJvY2VzcyBMb2NrZWQgKi8KLSAgX19IQUxfTE9DSyhobmFuZCk7Ci0gIAorICB1aW50MzJfdCBkZXZpY2VhZGRyZXNzOworCiAgIC8qIENoZWNrIHRoZSBOQU5EIGNvbnRyb2xsZXIgc3RhdGUgKi8KLSAgaWYoaG5hbmQtPlN0YXRlID09IEhBTF9OQU5EX1NUQVRFX0JVU1kpCisgIGlmIChobmFuZC0+U3RhdGUgPT0gSEFMX05BTkRfU1RBVEVfQlVTWSkKICAgewotICAgICByZXR1cm4gSEFMX0JVU1k7CisgICAgcmV0dXJuIEhBTF9CVVNZOwogICB9Ci0gIAotICAvKiBJZGVudGlmeSB0aGUgZGV2aWNlIGFkZHJlc3MgKi8KLSAgRGV2aWNlQWRkcmVzcyA9IE5BTkRfREVWSUNFOwotICAKLSAgLyogVXBkYXRlIHRoZSBOQU5EIGNvbnRyb2xsZXIgc3RhdGUgKi8KLSAgaG5hbmQtPlN0YXRlID0gSEFMX05BTkRfU1RBVEVfQlVTWTsgIAotICAKLSAgLyogU2VuZCBFcmFzZSBibG9jayBjb21tYW5kIHNlcXVlbmNlICovCi0gICooX19JTyB1aW50OF90ICopKCh1aW50MzJfdCkoRGV2aWNlQWRkcmVzcyB8IENNRF9BUkVBKSkgPSBOQU5EX0NNRF9FUkFTRTA7Ci0gIF9fRFNCKCk7Ci0gICooX19JTyB1aW50OF90ICopKCh1aW50MzJfdCkoRGV2aWNlQWRkcmVzcyB8IEFERFJfQVJFQSkpID0gQUREUl8xU1RfQ1lDTEUoQVJSQVlfQUREUkVTUyhwQWRkcmVzcywgaG5hbmQpKTsKKyAgZWxzZSBpZiAoaG5hbmQtPlN0YXRlID09IEhBTF9OQU5EX1NUQVRFX1JFQURZKQorICB7CisgICAgLyogUHJvY2VzcyBMb2NrZWQgKi8KKyAgICBfX0hBTF9MT0NLKGhuYW5kKTsKKworICAgIC8qIFVwZGF0ZSB0aGUgTkFORCBjb250cm9sbGVyIHN0YXRlICovCisgICAgaG5hbmQtPlN0YXRlID0gSEFMX05BTkRfU1RBVEVfQlVTWTsKKworICAgIC8qIElkZW50aWZ5IHRoZSBkZXZpY2UgYWRkcmVzcyAqLworICAgIGRldmljZWFkZHJlc3MgPSBOQU5EX0RFVklDRTsKKworICAgIC8qIFNlbmQgRXJhc2UgYmxvY2sgY29tbWFuZCBzZXF1ZW5jZSAqLworICAgICooX19JTyB1aW50OF90ICopKCh1aW50MzJfdCkoZGV2aWNlYWRkcmVzcyB8IENNRF9BUkVBKSkgPSBOQU5EX0NNRF9FUkFTRTA7CiAgICAgX19EU0IoKTsKLSAgKihfX0lPIHVpbnQ4X3QgKikoKHVpbnQzMl90KShEZXZpY2VBZGRyZXNzIHwgQUREUl9BUkVBKSkgPSBBRERSXzJORF9DWUNMRShBUlJBWV9BRERSRVNTKHBBZGRyZXNzLCBobmFuZCkpOworICAgICooX19JTyB1aW50OF90ICopKCh1aW50MzJfdCkoZGV2aWNlYWRkcmVzcyB8IEFERFJfQVJFQSkpID0gQUREUl8xU1RfQ1lDTEUoQVJSQVlfQUREUkVTUyhwQWRkcmVzcywgaG5hbmQpKTsKICAgICBfX0RTQigpOwotICAqKF9fSU8gdWludDhfdCAqKSgodWludDMyX3QpKERldmljZUFkZHJlc3MgfCBBRERSX0FSRUEpKSA9IEFERFJfM1JEX0NZQ0xFKEFSUkFZX0FERFJFU1MocEFkZHJlc3MsIGhuYW5kKSk7Ci0gIF9fRFNCKCk7Ci0JCQotICAqKF9fSU8gdWludDhfdCAqKSgodWludDMyX3QpKERldmljZUFkZHJlc3MgfCBDTURfQVJFQSkpID0gTkFORF9DTURfRVJBU0UxOyAKLSAgX19EU0IoKTsKLSAgCi0gIC8qIFVwZGF0ZSB0aGUgTkFORCBjb250cm9sbGVyIHN0YXRlICovCi0gIGhuYW5kLT5TdGF0ZSA9IEhBTF9OQU5EX1NUQVRFX1JFQURZOwotICAKLSAgLyogUHJvY2VzcyB1bmxvY2tlZCAqLwotICBfX0hBTF9VTkxPQ0soaG5hbmQpOyAgICAKLSAgCi0gIHJldHVybiBIQUxfT0s7ICAKKyAgICAqKF9fSU8gdWludDhfdCAqKSgodWludDMyX3QpKGRldmljZWFkZHJlc3MgfCBBRERSX0FSRUEpKSA9IEFERFJfMk5EX0NZQ0xFKEFSUkFZX0FERFJFU1MocEFkZHJlc3MsIGhuYW5kKSk7CisgICAgX19EU0IoKTsKKyAgICAqKF9fSU8gdWludDhfdCAqKSgodWludDMyX3QpKGRldmljZWFkZHJlc3MgfCBBRERSX0FSRUEpKSA9IEFERFJfM1JEX0NZQ0xFKEFSUkFZX0FERFJFU1MocEFkZHJlc3MsIGhuYW5kKSk7CisgICAgX19EU0IoKTsKKworICAgICooX19JTyB1aW50OF90ICopKCh1aW50MzJfdCkoZGV2aWNlYWRkcmVzcyB8IENNRF9BUkVBKSkgPSBOQU5EX0NNRF9FUkFTRTE7CisgICAgX19EU0IoKTsKKworICAgIC8qIFVwZGF0ZSB0aGUgTkFORCBjb250cm9sbGVyIHN0YXRlICovCisgICAgaG5hbmQtPlN0YXRlID0gSEFMX05BTkRfU1RBVEVfUkVBRFk7CisKKyAgICAvKiBQcm9jZXNzIHVubG9ja2VkICovCisgICAgX19IQUxfVU5MT0NLKGhuYW5kKTsKKyAgfQorICBlbHNlCisgIHsKKyAgICByZXR1cm4gSEFMX0VSUk9SOworICB9CisKKyAgcmV0dXJuIEhBTF9PSzsKIH0KIAogLyoqCkBAIC0xNzI5LDI4ICsxODcwLDI4IEBACiB1aW50MzJfdCBIQUxfTkFORF9BZGRyZXNzX0luYyhOQU5EX0hhbmRsZVR5cGVEZWYgKmhuYW5kLCBOQU5EX0FkZHJlc3NUeXBlRGVmICpwQWRkcmVzcykKIHsKICAgdWludDMyX3Qgc3RhdHVzID0gTkFORF9WQUxJRF9BRERSRVNTOwotIAorCiAgIC8qIEluY3JlbWVudCBwYWdlIGFkZHJlc3MgKi8KICAgcEFkZHJlc3MtPlBhZ2UrKzsKIAogICAvKiBDaGVjayBOQU5EIGFkZHJlc3MgaXMgdmFsaWQgKi8KLSAgaWYocEFkZHJlc3MtPlBhZ2UgPT0gaG5hbmQtPkNvbmZpZy5CbG9ja1NpemUpCisgIGlmIChwQWRkcmVzcy0+UGFnZSA9PSBobmFuZC0+Q29uZmlnLkJsb2NrU2l6ZSkKICAgewogICAgIHBBZGRyZXNzLT5QYWdlID0gMDsKICAgICBwQWRkcmVzcy0+QmxvY2srKzsKLSAgICAKLSAgICBpZihwQWRkcmVzcy0+QmxvY2sgPT0gaG5hbmQtPkNvbmZpZy5QbGFuZVNpemUpCisKKyAgICBpZiAocEFkZHJlc3MtPkJsb2NrID09IGhuYW5kLT5Db25maWcuUGxhbmVTaXplKQogICAgIHsKICAgICAgIHBBZGRyZXNzLT5CbG9jayA9IDA7CiAgICAgICBwQWRkcmVzcy0+UGxhbmUrKzsKIAotICAgICAgaWYocEFkZHJlc3MtPlBsYW5lID09IChobmFuZC0+Q29uZmlnLlBsYW5lTmJyKSkKKyAgICAgIGlmIChwQWRkcmVzcy0+UGxhbmUgPT0gKGhuYW5kLT5Db25maWcuUGxhbmVOYnIpKQogICAgICAgewogICAgICAgICBzdGF0dXMgPSBOQU5EX0lOVkFMSURfQUREUkVTUzsKICAgICAgIH0KICAgICB9Ci0gIH0gCi0gIAorICB9CisKICAgcmV0dXJuIChzdGF0dXMpOwogfQogCkBAIC0xNzY3LDExICsxOTA4LDEyIEBACiAgICogQHBhcmFtIHBDYWxsYmFjayA6IHBvaW50ZXIgdG8gdGhlIENhbGxiYWNrIGZ1bmN0aW9uCiAgICogQHJldHZhbCBzdGF0dXMKICAgKi8KLUhBTF9TdGF0dXNUeXBlRGVmIEhBTF9OQU5EX1JlZ2lzdGVyQ2FsbGJhY2sgKE5BTkRfSGFuZGxlVHlwZURlZiAqaG5hbmQsIEhBTF9OQU5EX0NhbGxiYWNrSURUeXBlRGVmIENhbGxiYWNrSWQsIHBOQU5EX0NhbGxiYWNrVHlwZURlZiBwQ2FsbGJhY2spCitIQUxfU3RhdHVzVHlwZURlZiBIQUxfTkFORF9SZWdpc3RlckNhbGxiYWNrKE5BTkRfSGFuZGxlVHlwZURlZiAqaG5hbmQsIEhBTF9OQU5EX0NhbGxiYWNrSURUeXBlRGVmIENhbGxiYWNrSWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBOQU5EX0NhbGxiYWNrVHlwZURlZiBwQ2FsbGJhY2spCiB7CiAgIEhBTF9TdGF0dXNUeXBlRGVmIHN0YXR1cyA9IEhBTF9PSzsKIAotICBpZihwQ2FsbGJhY2sgPT0gTlVMTCkKKyAgaWYgKHBDYWxsYmFjayA9PSBOVUxMKQogICB7CiAgICAgcmV0dXJuIEhBTF9FUlJPUjsKICAgfQpAQCAtMTc3OSwzOSArMTkyMSwzOSBAQAogICAvKiBQcm9jZXNzIGxvY2tlZCAqLwogICBfX0hBTF9MT0NLKGhuYW5kKTsKIAotICBpZihobmFuZC0+U3RhdGUgPT0gSEFMX05BTkRfU1RBVEVfUkVBRFkpCisgIGlmIChobmFuZC0+U3RhdGUgPT0gSEFMX05BTkRfU1RBVEVfUkVBRFkpCiAgIHsKICAgICBzd2l0Y2ggKENhbGxiYWNrSWQpCiAgICAgewotICAgIGNhc2UgSEFMX05BTkRfTVNQX0lOSVRfQ0JfSUQgOgotICAgICAgaG5hbmQtPk1zcEluaXRDYWxsYmFjayA9IHBDYWxsYmFjazsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgSEFMX05BTkRfTVNQX0RFSU5JVF9DQl9JRCA6Ci0gICAgICBobmFuZC0+TXNwRGVJbml0Q2FsbGJhY2sgPSBwQ2FsbGJhY2s7Ci0gICAgICBicmVhazsKLSAgICBjYXNlIEhBTF9OQU5EX0lUX0NCX0lEIDoKLSAgICAgIGhuYW5kLT5JdENhbGxiYWNrID0gcENhbGxiYWNrOwotICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdCA6Ci0gICAgICAvKiB1cGRhdGUgcmV0dXJuIHN0YXR1cyAqLwotICAgICAgc3RhdHVzID0gIEhBTF9FUlJPUjsKLSAgICAgIGJyZWFrOworICAgICAgY2FzZSBIQUxfTkFORF9NU1BfSU5JVF9DQl9JRCA6CisgICAgICAgIGhuYW5kLT5Nc3BJbml0Q2FsbGJhY2sgPSBwQ2FsbGJhY2s7CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBIQUxfTkFORF9NU1BfREVJTklUX0NCX0lEIDoKKyAgICAgICAgaG5hbmQtPk1zcERlSW5pdENhbGxiYWNrID0gcENhbGxiYWNrOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgSEFMX05BTkRfSVRfQ0JfSUQgOgorICAgICAgICBobmFuZC0+SXRDYWxsYmFjayA9IHBDYWxsYmFjazsKKyAgICAgICAgYnJlYWs7CisgICAgICBkZWZhdWx0IDoKKyAgICAgICAgLyogdXBkYXRlIHJldHVybiBzdGF0dXMgKi8KKyAgICAgICAgc3RhdHVzID0gIEhBTF9FUlJPUjsKKyAgICAgICAgYnJlYWs7CiAgICAgfQogICB9Ci0gIGVsc2UgaWYoaG5hbmQtPlN0YXRlID09IEhBTF9OQU5EX1NUQVRFX1JFU0VUKQorICBlbHNlIGlmIChobmFuZC0+U3RhdGUgPT0gSEFMX05BTkRfU1RBVEVfUkVTRVQpCiAgIHsKICAgICBzd2l0Y2ggKENhbGxiYWNrSWQpCiAgICAgewotICAgIGNhc2UgSEFMX05BTkRfTVNQX0lOSVRfQ0JfSUQgOgotICAgICAgaG5hbmQtPk1zcEluaXRDYWxsYmFjayA9IHBDYWxsYmFjazsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgSEFMX05BTkRfTVNQX0RFSU5JVF9DQl9JRCA6Ci0gICAgICBobmFuZC0+TXNwRGVJbml0Q2FsbGJhY2sgPSBwQ2FsbGJhY2s7Ci0gICAgICBicmVhazsKLSAgICBkZWZhdWx0IDoKLSAgICAgIC8qIHVwZGF0ZSByZXR1cm4gc3RhdHVzICovCi0gICAgICBzdGF0dXMgPSAgSEFMX0VSUk9SOwotICAgICAgYnJlYWs7CisgICAgICBjYXNlIEhBTF9OQU5EX01TUF9JTklUX0NCX0lEIDoKKyAgICAgICAgaG5hbmQtPk1zcEluaXRDYWxsYmFjayA9IHBDYWxsYmFjazsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEhBTF9OQU5EX01TUF9ERUlOSVRfQ0JfSUQgOgorICAgICAgICBobmFuZC0+TXNwRGVJbml0Q2FsbGJhY2sgPSBwQ2FsbGJhY2s7CisgICAgICAgIGJyZWFrOworICAgICAgZGVmYXVsdCA6CisgICAgICAgIC8qIHVwZGF0ZSByZXR1cm4gc3RhdHVzICovCisgICAgICAgIHN0YXR1cyA9ICBIQUxfRVJST1I7CisgICAgICAgIGJyZWFrOwogICAgIH0KICAgfQogICBlbHNlCkBAIC0xODM2LDQ2ICsxOTc4LDQ2IEBACiAgICogICAgICAgICAgQGFyZyBAcmVmIEhBTF9OQU5EX0lUX0NCX0lEICAgICAgICAgICAgIE5BTkQgSVQgY2FsbGJhY2sgSUQKICAgKiBAcmV0dmFsIHN0YXR1cwogICAqLwotSEFMX1N0YXR1c1R5cGVEZWYgSEFMX05BTkRfVW5SZWdpc3RlckNhbGxiYWNrIChOQU5EX0hhbmRsZVR5cGVEZWYgKmhuYW5kLCBIQUxfTkFORF9DYWxsYmFja0lEVHlwZURlZiBDYWxsYmFja0lkKQorSEFMX1N0YXR1c1R5cGVEZWYgSEFMX05BTkRfVW5SZWdpc3RlckNhbGxiYWNrKE5BTkRfSGFuZGxlVHlwZURlZiAqaG5hbmQsIEhBTF9OQU5EX0NhbGxiYWNrSURUeXBlRGVmIENhbGxiYWNrSWQpCiB7CiAgIEhBTF9TdGF0dXNUeXBlRGVmIHN0YXR1cyA9IEhBTF9PSzsKIAogICAvKiBQcm9jZXNzIGxvY2tlZCAqLwogICBfX0hBTF9MT0NLKGhuYW5kKTsKIAotICBpZihobmFuZC0+U3RhdGUgPT0gSEFMX05BTkRfU1RBVEVfUkVBRFkpCisgIGlmIChobmFuZC0+U3RhdGUgPT0gSEFMX05BTkRfU1RBVEVfUkVBRFkpCiAgIHsKICAgICBzd2l0Y2ggKENhbGxiYWNrSWQpCiAgICAgewotICAgIGNhc2UgSEFMX05BTkRfTVNQX0lOSVRfQ0JfSUQgOgotICAgICAgaG5hbmQtPk1zcEluaXRDYWxsYmFjayA9IEhBTF9OQU5EX01zcEluaXQ7Ci0gICAgICBicmVhazsKLSAgICBjYXNlIEhBTF9OQU5EX01TUF9ERUlOSVRfQ0JfSUQgOgotICAgICAgaG5hbmQtPk1zcERlSW5pdENhbGxiYWNrID0gSEFMX05BTkRfTXNwRGVJbml0OwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSBIQUxfTkFORF9JVF9DQl9JRCA6Ci0gICAgICBobmFuZC0+SXRDYWxsYmFjayA9IEhBTF9OQU5EX0lUQ2FsbGJhY2s7Ci0gICAgICBicmVhazsKLSAgICBkZWZhdWx0IDoKLSAgICAgIC8qIHVwZGF0ZSByZXR1cm4gc3RhdHVzICovCi0gICAgICBzdGF0dXMgPSAgSEFMX0VSUk9SOwotICAgICAgYnJlYWs7CisgICAgICBjYXNlIEhBTF9OQU5EX01TUF9JTklUX0NCX0lEIDoKKyAgICAgICAgaG5hbmQtPk1zcEluaXRDYWxsYmFjayA9IEhBTF9OQU5EX01zcEluaXQ7CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBIQUxfTkFORF9NU1BfREVJTklUX0NCX0lEIDoKKyAgICAgICAgaG5hbmQtPk1zcERlSW5pdENhbGxiYWNrID0gSEFMX05BTkRfTXNwRGVJbml0OworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgSEFMX05BTkRfSVRfQ0JfSUQgOgorICAgICAgICBobmFuZC0+SXRDYWxsYmFjayA9IEhBTF9OQU5EX0lUQ2FsbGJhY2s7CisgICAgICAgIGJyZWFrOworICAgICAgZGVmYXVsdCA6CisgICAgICAgIC8qIHVwZGF0ZSByZXR1cm4gc3RhdHVzICovCisgICAgICAgIHN0YXR1cyA9ICBIQUxfRVJST1I7CisgICAgICAgIGJyZWFrOwogICAgIH0KICAgfQotICBlbHNlIGlmKGhuYW5kLT5TdGF0ZSA9PSBIQUxfTkFORF9TVEFURV9SRVNFVCkKKyAgZWxzZSBpZiAoaG5hbmQtPlN0YXRlID09IEhBTF9OQU5EX1NUQVRFX1JFU0VUKQogICB7CiAgICAgc3dpdGNoIChDYWxsYmFja0lkKQogICAgIHsKLSAgICBjYXNlIEhBTF9OQU5EX01TUF9JTklUX0NCX0lEIDoKLSAgICAgIGhuYW5kLT5Nc3BJbml0Q2FsbGJhY2sgPSBIQUxfTkFORF9Nc3BJbml0OwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSBIQUxfTkFORF9NU1BfREVJTklUX0NCX0lEIDoKLSAgICAgIGhuYW5kLT5Nc3BEZUluaXRDYWxsYmFjayA9IEhBTF9OQU5EX01zcERlSW5pdDsKLSAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQgOgotICAgICAgLyogdXBkYXRlIHJldHVybiBzdGF0dXMgKi8KLSAgICAgIHN0YXR1cyA9ICBIQUxfRVJST1I7Ci0gICAgICBicmVhazsKKyAgICAgIGNhc2UgSEFMX05BTkRfTVNQX0lOSVRfQ0JfSUQgOgorICAgICAgICBobmFuZC0+TXNwSW5pdENhbGxiYWNrID0gSEFMX05BTkRfTXNwSW5pdDsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEhBTF9OQU5EX01TUF9ERUlOSVRfQ0JfSUQgOgorICAgICAgICBobmFuZC0+TXNwRGVJbml0Q2FsbGJhY2sgPSBIQUxfTkFORF9Nc3BEZUluaXQ7CisgICAgICAgIGJyZWFrOworICAgICAgZGVmYXVsdCA6CisgICAgICAgIC8qIHVwZGF0ZSByZXR1cm4gc3RhdHVzICovCisgICAgICAgIHN0YXR1cyA9ICBIQUxfRVJST1I7CisgICAgICAgIGJyZWFrOwogICAgIH0KICAgfQogICBlbHNlCkBAIC0xODg4LDUyICsyMDMwLDU4IEBACiAgIF9fSEFMX1VOTE9DSyhobmFuZCk7CiAgIHJldHVybiBzdGF0dXM7CiB9Ci0jZW5kaWYKKyNlbmRpZiAvKiBVU0VfSEFMX05BTkRfUkVHSVNURVJfQ0FMTEJBQ0tTICovCiAKIC8qKgogICAqIEB9CiAgICovCiAKLS8qKiBAZGVmZ3JvdXAgTkFORF9FeHBvcnRlZF9GdW5jdGlvbnNfR3JvdXAzIFBlcmlwaGVyYWwgQ29udHJvbCBmdW5jdGlvbnMgCi0gKiAgQGJyaWVmICAgbWFuYWdlbWVudCBmdW5jdGlvbnMgCi0gKgotQHZlcmJhdGltICAgCisvKiogQGRlZmdyb3VwIE5BTkRfRXhwb3J0ZWRfRnVuY3Rpb25zX0dyb3VwMyBQZXJpcGhlcmFsIENvbnRyb2wgZnVuY3Rpb25zCisgICogIEBicmllZiAgIG1hbmFnZW1lbnQgZnVuY3Rpb25zCisgICoKK0B2ZXJiYXRpbQogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgICAgICAgICAgICAgICAgICAgICAgICAjIyMjIyBOQU5EIENvbnRyb2wgZnVuY3Rpb25zICMjIyMjCi0gID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAgCisgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBbLi5dCiAgICAgVGhpcyBzdWJzZWN0aW9uIHByb3ZpZGVzIGEgc2V0IG9mIGZ1bmN0aW9ucyBhbGxvd2luZyB0byBjb250cm9sIGR5bmFtaWNhbGx5CiAgICAgdGhlIE5BTkQgaW50ZXJmYWNlLgogCiBAZW5kdmVyYmF0aW0KICAgKiBAewotICAqLyAKKyAgKi8KIAotICAgIAorCiAvKioKICAgKiBAYnJpZWYgIEVuYWJsZXMgZHluYW1pY2FsbHkgTkFORCBFQ0MgZmVhdHVyZS4KICAgKiBAcGFyYW0gIGhuYW5kIHBvaW50ZXIgdG8gYSBOQU5EX0hhbmRsZVR5cGVEZWYgc3RydWN0dXJlIHRoYXQgY29udGFpbnMKICAgKiAgICAgICAgICAgICAgICB0aGUgY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbiBmb3IgTkFORCBtb2R1bGUuCiAgICogQHJldHZhbCBIQUwgc3RhdHVzCi0gICovICAgIAorICAqLwogSEFMX1N0YXR1c1R5cGVEZWYgIEhBTF9OQU5EX0VDQ19FbmFibGUoTkFORF9IYW5kbGVUeXBlRGVmICpobmFuZCkKIHsKICAgLyogQ2hlY2sgdGhlIE5BTkQgY29udHJvbGxlciBzdGF0ZSAqLwotICBpZihobmFuZC0+U3RhdGUgPT0gSEFMX05BTkRfU1RBVEVfQlVTWSkKKyAgaWYgKGhuYW5kLT5TdGF0ZSA9PSBIQUxfTkFORF9TVEFURV9CVVNZKQogICB7Ci0gICAgIHJldHVybiBIQUxfQlVTWTsKKyAgICByZXR1cm4gSEFMX0JVU1k7CisgIH0KKyAgZWxzZSBpZiAoaG5hbmQtPlN0YXRlID09IEhBTF9OQU5EX1NUQVRFX1JFQURZKQorICB7CisgICAgLyogVXBkYXRlIHRoZSBOQU5EIHN0YXRlICovCisgICAgaG5hbmQtPlN0YXRlID0gSEFMX05BTkRfU1RBVEVfQlVTWTsKKworICAgIC8qIEVuYWJsZSBFQ0MgZmVhdHVyZSAqLworICAgICh2b2lkKUZNQ19OQU5EX0VDQ19FbmFibGUoaG5hbmQtPkluc3RhbmNlLCBobmFuZC0+SW5pdC5OYW5kQmFuayk7CisKKyAgICAvKiBVcGRhdGUgdGhlIE5BTkQgc3RhdGUgKi8KKyAgICBobmFuZC0+U3RhdGUgPSBIQUxfTkFORF9TVEFURV9SRUFEWTsKKyAgfQorICBlbHNlCisgIHsKKyAgICByZXR1cm4gSEFMX0VSUk9SOwogICB9CiAKLSAgLyogVXBkYXRlIHRoZSBOQU5EIHN0YXRlICovCi0gIGhuYW5kLT5TdGF0ZSA9IEhBTF9OQU5EX1NUQVRFX0JVU1k7Ci0gICAKLSAgLyogRW5hYmxlIEVDQyBmZWF0dXJlICovCi0gIEZNQ19OQU5EX0VDQ19FbmFibGUoaG5hbmQtPkluc3RhbmNlLCBobmFuZC0+SW5pdC5OYW5kQmFuayk7Ci0gIAotICAvKiBVcGRhdGUgdGhlIE5BTkQgc3RhdGUgKi8KLSAgaG5hbmQtPlN0YXRlID0gSEFMX05BTkRfU1RBVEVfUkVBRFk7Ci0gIAotICByZXR1cm4gSEFMX09LOyAgCisgIHJldHVybiBIQUxfT0s7CiB9CiAKIC8qKgpAQCAtMTk0MSw3NyArMjA4OSw4OSBAQAogICAqIEBwYXJhbSAgaG5hbmQgcG9pbnRlciB0byBhIE5BTkRfSGFuZGxlVHlwZURlZiBzdHJ1Y3R1cmUgdGhhdCBjb250YWlucwogICAqICAgICAgICAgICAgICAgIHRoZSBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uIGZvciBOQU5EIG1vZHVsZS4KICAgKiBAcmV0dmFsIEhBTCBzdGF0dXMKLSAgKi8gIAotSEFMX1N0YXR1c1R5cGVEZWYgIEhBTF9OQU5EX0VDQ19EaXNhYmxlKE5BTkRfSGFuZGxlVHlwZURlZiAqaG5hbmQpICAKKyAgKi8KK0hBTF9TdGF0dXNUeXBlRGVmICBIQUxfTkFORF9FQ0NfRGlzYWJsZShOQU5EX0hhbmRsZVR5cGVEZWYgKmhuYW5kKQogewogICAvKiBDaGVjayB0aGUgTkFORCBjb250cm9sbGVyIHN0YXRlICovCi0gIGlmKGhuYW5kLT5TdGF0ZSA9PSBIQUxfTkFORF9TVEFURV9CVVNZKQorICBpZiAoaG5hbmQtPlN0YXRlID09IEhBTF9OQU5EX1NUQVRFX0JVU1kpCiAgIHsKLSAgICAgcmV0dXJuIEhBTF9CVVNZOworICAgIHJldHVybiBIQUxfQlVTWTsKKyAgfQorICBlbHNlIGlmIChobmFuZC0+U3RhdGUgPT0gSEFMX05BTkRfU1RBVEVfUkVBRFkpCisgIHsKKyAgICAvKiBVcGRhdGUgdGhlIE5BTkQgc3RhdGUgKi8KKyAgICBobmFuZC0+U3RhdGUgPSBIQUxfTkFORF9TVEFURV9CVVNZOworCisgICAgLyogRGlzYWJsZSBFQ0MgZmVhdHVyZSAqLworICAgICh2b2lkKUZNQ19OQU5EX0VDQ19EaXNhYmxlKGhuYW5kLT5JbnN0YW5jZSwgaG5hbmQtPkluaXQuTmFuZEJhbmspOworCisgICAgLyogVXBkYXRlIHRoZSBOQU5EIHN0YXRlICovCisgICAgaG5hbmQtPlN0YXRlID0gSEFMX05BTkRfU1RBVEVfUkVBRFk7CisgIH0KKyAgZWxzZQorICB7CisgICAgcmV0dXJuIEhBTF9FUlJPUjsKICAgfQogCi0gIC8qIFVwZGF0ZSB0aGUgTkFORCBzdGF0ZSAqLwotICBobmFuZC0+U3RhdGUgPSBIQUxfTkFORF9TVEFURV9CVVNZOwotICAgIAotICAvKiBEaXNhYmxlIEVDQyBmZWF0dXJlICovCi0gIEZNQ19OQU5EX0VDQ19EaXNhYmxlKGhuYW5kLT5JbnN0YW5jZSwgaG5hbmQtPkluaXQuTmFuZEJhbmspOwotICAKLSAgLyogVXBkYXRlIHRoZSBOQU5EIHN0YXRlICovCi0gIGhuYW5kLT5TdGF0ZSA9IEhBTF9OQU5EX1NUQVRFX1JFQURZOwotICAKLSAgcmV0dXJuIEhBTF9PSzsgIAorICByZXR1cm4gSEFMX09LOwogfQogCiAvKioKICAgKiBAYnJpZWYgIERpc2FibGVzIGR5bmFtaWNhbGx5IE5BTkQgRUNDIGZlYXR1cmUuCiAgICogQHBhcmFtICBobmFuZCBwb2ludGVyIHRvIGEgTkFORF9IYW5kbGVUeXBlRGVmIHN0cnVjdHVyZSB0aGF0IGNvbnRhaW5zCiAgICogICAgICAgICAgICAgICAgdGhlIGNvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb24gZm9yIE5BTkQgbW9kdWxlLgotICAqIEBwYXJhbSAgRUNDdmFsIHBvaW50ZXIgdG8gRUNDIHZhbHVlIAotICAqIEBwYXJhbSAgVGltZW91dCBtYXhpbXVtIHRpbWVvdXQgdG8gd2FpdCAgICAKKyAgKiBAcGFyYW0gIEVDQ3ZhbCBwb2ludGVyIHRvIEVDQyB2YWx1ZQorICAqIEBwYXJhbSAgVGltZW91dCBtYXhpbXVtIHRpbWVvdXQgdG8gd2FpdAogICAqIEByZXR2YWwgSEFMIHN0YXR1cwogICAqLwogSEFMX1N0YXR1c1R5cGVEZWYgIEhBTF9OQU5EX0dldEVDQyhOQU5EX0hhbmRsZVR5cGVEZWYgKmhuYW5kLCB1aW50MzJfdCAqRUNDdmFsLCB1aW50MzJfdCBUaW1lb3V0KQogewotICBIQUxfU3RhdHVzVHlwZURlZiBzdGF0dXMgPSBIQUxfT0s7Ci0gIAotICAvKiBDaGVjayB0aGUgTkFORCBjb250cm9sbGVyIHN0YXRlICovCi0gIGlmKGhuYW5kLT5TdGF0ZSA9PSBIQUxfTkFORF9TVEFURV9CVVNZKQotICB7Ci0gICAgIHJldHVybiBIQUxfQlVTWTsKLSAgfQotICAKLSAgLyogVXBkYXRlIHRoZSBOQU5EIHN0YXRlICovCi0gIGhuYW5kLT5TdGF0ZSA9IEhBTF9OQU5EX1NUQVRFX0JVU1k7ICAKLSAgIAotICAvKiBHZXQgTkFORCBFQ0MgdmFsdWUgKi8KLSAgc3RhdHVzID0gRk1DX05BTkRfR2V0RUNDKGhuYW5kLT5JbnN0YW5jZSwgRUNDdmFsLCBobmFuZC0+SW5pdC5OYW5kQmFuaywgVGltZW91dCk7Ci0gIAotICAvKiBVcGRhdGUgdGhlIE5BTkQgc3RhdGUgKi8KLSAgaG5hbmQtPlN0YXRlID0gSEFMX05BTkRfU1RBVEVfUkVBRFk7CisgIEhBTF9TdGF0dXNUeXBlRGVmIHN0YXR1czsKIAotICByZXR1cm4gc3RhdHVzOyAgCisgIC8qIENoZWNrIHRoZSBOQU5EIGNvbnRyb2xsZXIgc3RhdGUgKi8KKyAgaWYgKGhuYW5kLT5TdGF0ZSA9PSBIQUxfTkFORF9TVEFURV9CVVNZKQorICB7CisgICAgcmV0dXJuIEhBTF9CVVNZOworICB9CisgIGVsc2UgaWYgKGhuYW5kLT5TdGF0ZSA9PSBIQUxfTkFORF9TVEFURV9SRUFEWSkKKyAgeworICAgIC8qIFVwZGF0ZSB0aGUgTkFORCBzdGF0ZSAqLworICAgIGhuYW5kLT5TdGF0ZSA9IEhBTF9OQU5EX1NUQVRFX0JVU1k7CisKKyAgICAvKiBHZXQgTkFORCBFQ0MgdmFsdWUgKi8KKyAgICBzdGF0dXMgPSBGTUNfTkFORF9HZXRFQ0MoaG5hbmQtPkluc3RhbmNlLCBFQ0N2YWwsIGhuYW5kLT5Jbml0Lk5hbmRCYW5rLCBUaW1lb3V0KTsKKworICAgIC8qIFVwZGF0ZSB0aGUgTkFORCBzdGF0ZSAqLworICAgIGhuYW5kLT5TdGF0ZSA9IEhBTF9OQU5EX1NUQVRFX1JFQURZOworICB9CisgIGVsc2UKKyAgeworICAgIHJldHVybiBIQUxfRVJST1I7CisgIH0KKworICByZXR1cm4gc3RhdHVzOwogfQotICAgICAgICAgICAgICAgICAgICAgIAorCiAvKioKICAgKiBAfQogICAqLwotICAKLSAgICAKLS8qKiBAZGVmZ3JvdXAgTkFORF9FeHBvcnRlZF9GdW5jdGlvbnNfR3JvdXA0IFBlcmlwaGVyYWwgU3RhdGUgZnVuY3Rpb25zICAKLSAqICBAYnJpZWYgICBQZXJpcGhlcmFsIFN0YXRlIGZ1bmN0aW9ucyAKLSAqCi1AdmVyYmF0aW0gICAKKworCisvKiogQGRlZmdyb3VwIE5BTkRfRXhwb3J0ZWRfRnVuY3Rpb25zX0dyb3VwNCBQZXJpcGhlcmFsIFN0YXRlIGZ1bmN0aW9ucworICAqICBAYnJpZWYgICBQZXJpcGhlcmFsIFN0YXRlIGZ1bmN0aW9ucworICAqCitAdmVyYmF0aW0KICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgICAgICAgICAgICAgICAgICAgICAgICAgIyMjIyMgTkFORCBTdGF0ZSBmdW5jdGlvbnMgIyMjIyMKLSAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICAKKyAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIFsuLl0KLSAgICBUaGlzIHN1YnNlY3Rpb24gcGVybWl0cyB0byBnZXQgaW4gcnVuLXRpbWUgdGhlIHN0YXR1cyBvZiB0aGUgTkFORCBjb250cm9sbGVyIAorICAgIFRoaXMgc3Vic2VjdGlvbiBwZXJtaXRzIHRvIGdldCBpbiBydW4tdGltZSB0aGUgc3RhdHVzIG9mIHRoZSBOQU5EIGNvbnRyb2xsZXIKICAgICBhbmQgdGhlIGRhdGEgZmxvdy4KIAogQGVuZHZlcmJhdGltCiAgICogQHsKICAgKi8KLSAgCisKIC8qKgogICAqIEBicmllZiAgcmV0dXJuIHRoZSBOQU5EIHN0YXRlCiAgICogQHBhcmFtICBobmFuZCBwb2ludGVyIHRvIGEgTkFORF9IYW5kbGVUeXBlRGVmIHN0cnVjdHVyZSB0aGF0IGNvbnRhaW5zCkBAIC0yMDI0LDQxICsyMTg0LDQ4IEBACiB9CiAKIC8qKgotICAqIEBicmllZiAgTkFORCBtZW1vcnkgcmVhZCBzdGF0dXMgCisgICogQGJyaWVmICBOQU5EIG1lbW9yeSByZWFkIHN0YXR1cwogICAqIEBwYXJhbSAgaG5hbmQgcG9pbnRlciB0byBhIE5BTkRfSGFuZGxlVHlwZURlZiBzdHJ1Y3R1cmUgdGhhdCBjb250YWlucwogICAqICAgICAgICAgICAgICAgIHRoZSBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uIGZvciBOQU5EIG1vZHVsZS4KICAgKiBAcmV0dmFsIE5BTkQgc3RhdHVzCiAgICovCiB1aW50MzJfdCBIQUxfTkFORF9SZWFkX1N0YXR1cyhOQU5EX0hhbmRsZVR5cGVEZWYgKmhuYW5kKQogewotICB1aW50MzJfdCBkYXRhID0gMDsKLSAgdWludDMyX3QgRGV2aWNlQWRkcmVzcyA9IDA7Ci0gIAorICB1aW50MzJfdCBkYXRhOworICB1aW50MzJfdCBkZXZpY2VhZGRyZXNzOworICBVTlVTRUQoaG5hbmQpOworCiAgIC8qIElkZW50aWZ5IHRoZSBkZXZpY2UgYWRkcmVzcyAqLwotICAgRGV2aWNlQWRkcmVzcyA9IE5BTkRfREVWSUNFOworICBkZXZpY2VhZGRyZXNzID0gTkFORF9ERVZJQ0U7CiAKICAgLyogU2VuZCBSZWFkIHN0YXR1cyBvcGVyYXRpb24gY29tbWFuZCAqLwotICAqKF9fSU8gdWludDhfdCAqKSgodWludDMyX3QpKERldmljZUFkZHJlc3MgfCBDTURfQVJFQSkpID0gTkFORF9DTURfU1RBVFVTOwotICAKKyAgKihfX0lPIHVpbnQ4X3QgKikoKHVpbnQzMl90KShkZXZpY2VhZGRyZXNzIHwgQ01EX0FSRUEpKSA9IE5BTkRfQ01EX1NUQVRVUzsKKwogICAvKiBSZWFkIHN0YXR1cyByZWdpc3RlciBkYXRhICovCi0gIGRhdGEgPSAqKF9fSU8gdWludDhfdCAqKURldmljZUFkZHJlc3M7CisgIGRhdGEgPSAqKF9fSU8gdWludDhfdCAqKWRldmljZWFkZHJlc3M7CiAKICAgLyogUmV0dXJuIHRoZSBzdGF0dXMgKi8KLSAgaWYoKGRhdGEgJiBOQU5EX0VSUk9SKSA9PSBOQU5EX0VSUk9SKQorICBpZiAoKGRhdGEgJiBOQU5EX0VSUk9SKSA9PSBOQU5EX0VSUk9SKQogICB7CiAgICAgcmV0dXJuIE5BTkRfRVJST1I7Ci0gIH0gCi0gIGVsc2UgaWYoKGRhdGEgJiBOQU5EX1JFQURZKSA9PSBOQU5EX1JFQURZKQorICB9CisgIGVsc2UgaWYgKChkYXRhICYgTkFORF9SRUFEWSkgPT0gTkFORF9SRUFEWSkKICAgewogICAgIHJldHVybiBOQU5EX1JFQURZOwogICB9Ci0KLSAgcmV0dXJuIE5BTkRfQlVTWTsgCisgIGVsc2UKKyAgeworICAgIHJldHVybiBOQU5EX0JVU1k7CisgIH0KIH0KIAogLyoqCiAgICogQH0KLSAgKi8gIAorICAqLworCisvKioKKyAgKiBAfQorICAqLwogCiAvKioKICAgKiBAfQpAQCAtMjA3MCw4ICsyMjM3LDMgQEAKICAgKiBAfQogICAqLwogCi0vKioKLSAgKiBAfQotICAqLwotCi0vKioqKioqKioqKioqKioqKioqKioqKioqIChDKSBDT1BZUklHSFQgU1RNaWNyb2VsZWN0cm9uaWNzICoqKioqRU5EIE9GIEZJTEUqKioqLwpkaWZmIC0tZ2l0IGEvU3JjL3N0bTMyZjd4eF9oYWxfbm9yLmMgYi9TcmMvc3RtMzJmN3h4X2hhbF9ub3IuYwppbmRleCAxZDE2N2FjLi5jMGZmYzc2IDEwMDY0NAotLS0gYS9TcmMvc3RtMzJmN3h4X2hhbF9ub3IuYworKysgYi9TcmMvc3RtMzJmN3h4X2hhbF9ub3IuYwpAQCAtMyw1MCArMyw2MSBAQAogICAqIEBmaWxlICAgIHN0bTMyZjd4eF9oYWxfbm9yLmMKICAgKiBAYXV0aG9yICBNQ0QgQXBwbGljYXRpb24gVGVhbQogICAqIEBicmllZiAgIE5PUiBIQUwgbW9kdWxlIGRyaXZlci4KLSAgKiAgICAgICAgICBUaGlzIGZpbGUgcHJvdmlkZXMgYSBnZW5lcmljIGZpcm13YXJlIHRvIGRyaXZlIE5PUiBtZW1vcmllcyBtb3VudGVkIAorICAqICAgICAgICAgIFRoaXMgZmlsZSBwcm92aWRlcyBhIGdlbmVyaWMgZmlybXdhcmUgdG8gZHJpdmUgTk9SIG1lbW9yaWVzIG1vdW50ZWQKICAgKiAgICAgICAgICBhcyBleHRlcm5hbCBkZXZpY2UuCi0gICogICAgICAgICAKKyAgKgorICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgKiBAYXR0ZW50aW9uCisgICoKKyAgKiBDb3B5cmlnaHQgKGMpIDIwMTcgU1RNaWNyb2VsZWN0cm9uaWNzLgorICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgICoKKyAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIHVuZGVyIHRlcm1zIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUKKyAgKiBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb2Z0d2FyZSBjb21wb25lbnQuCisgICogSWYgbm8gTElDRU5TRSBmaWxlIGNvbWVzIHdpdGggdGhpcyBzb2Z0d2FyZSwgaXQgaXMgcHJvdmlkZWQgQVMtSVMuCisgICoKKyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgIEB2ZXJiYXRpbQogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgICAgICAgICAgICAgICAgICAgICMjIyMjIEhvdyB0byB1c2UgdGhpcyBkcml2ZXIgIyMjIyMKLSAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICAgICAgIAorICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgICBbLi5dCi0gICAgICBUaGlzIGRyaXZlciBpcyBhIGdlbmVyaWMgbGF5ZXJlZCBkcml2ZXIgd2hpY2ggY29udGFpbnMgYSBzZXQgb2YgQVBJcyB1c2VkIHRvIAotICAgICAgY29udHJvbCBOT1IgZmxhc2ggbWVtb3JpZXMuIEl0IHVzZXMgdGhlIEZNQyBsYXllciBmdW5jdGlvbnMgdG8gaW50ZXJmYWNlIAorICAgICAgVGhpcyBkcml2ZXIgaXMgYSBnZW5lcmljIGxheWVyZWQgZHJpdmVyIHdoaWNoIGNvbnRhaW5zIGEgc2V0IG9mIEFQSXMgdXNlZCB0bworICAgICAgY29udHJvbCBOT1IgZmxhc2ggbWVtb3JpZXMuIEl0IHVzZXMgdGhlIEZNQyBsYXllciBmdW5jdGlvbnMgdG8gaW50ZXJmYWNlCiAgICAgICB3aXRoIE5PUiBkZXZpY2VzLiBUaGlzIGRyaXZlciBpcyB1c2VkIGFzIGZvbGxvd3M6Ci0gICAgCi0gICAgICAoKykgTk9SIGZsYXNoIG1lbW9yeSBjb25maWd1cmF0aW9uIHNlcXVlbmNlIHVzaW5nIHRoZSBmdW5jdGlvbiBIQUxfTk9SX0luaXQoKSAKKworICAgICAgKCspIE5PUiBmbGFzaCBtZW1vcnkgY29uZmlndXJhdGlvbiBzZXF1ZW5jZSB1c2luZyB0aGUgZnVuY3Rpb24gSEFMX05PUl9Jbml0KCkKICAgICAgICAgICB3aXRoIGNvbnRyb2wgYW5kIHRpbWluZyBwYXJhbWV0ZXJzIGZvciBib3RoIG5vcm1hbCBhbmQgZXh0ZW5kZWQgbW9kZS4KLSAgICAgICAgICAgIAorCiAgICAgICAoKykgUmVhZCBOT1IgZmxhc2ggbWVtb3J5IG1hbnVmYWN0dXJlciBjb2RlIGFuZCBkZXZpY2UgSURzIHVzaW5nIHRoZSBmdW5jdGlvbgotICAgICAgICAgIEhBTF9OT1JfUmVhZF9JRCgpLiBUaGUgcmVhZCBpbmZvcm1hdGlvbiBpcyBzdG9yZWQgaW4gdGhlIE5PUl9JRF9UeXBlRGVmIAotICAgICAgICAgIHN0cnVjdHVyZSBkZWNsYXJlZCBieSB0aGUgZnVuY3Rpb24gY2FsbGVyLiAKLSAgICAgICAgCisgICAgICAgICAgSEFMX05PUl9SZWFkX0lEKCkuIFRoZSByZWFkIGluZm9ybWF0aW9uIGlzIHN0b3JlZCBpbiB0aGUgTk9SX0lEX1R5cGVEZWYKKyAgICAgICAgICBzdHJ1Y3R1cmUgZGVjbGFyZWQgYnkgdGhlIGZ1bmN0aW9uIGNhbGxlci4KKwogICAgICAgKCspIEFjY2VzcyBOT1IgZmxhc2ggbWVtb3J5IGJ5IHJlYWQvd3JpdGUgZGF0YSB1bml0IG9wZXJhdGlvbnMgdXNpbmcgdGhlIGZ1bmN0aW9ucwogICAgICAgICAgIEhBTF9OT1JfUmVhZCgpLCBIQUxfTk9SX1Byb2dyYW0oKS4KLSAgICAgICAgCi0gICAgICAoKykgUGVyZm9ybSBOT1IgZmxhc2ggZXJhc2UgYmxvY2svY2hpcCBvcGVyYXRpb25zIHVzaW5nIHRoZSBmdW5jdGlvbnMgCisKKyAgICAgICgrKSBQZXJmb3JtIE5PUiBmbGFzaCBlcmFzZSBibG9jay9jaGlwIG9wZXJhdGlvbnMgdXNpbmcgdGhlIGZ1bmN0aW9ucwogICAgICAgICAgIEhBTF9OT1JfRXJhc2VfQmxvY2soKSBhbmQgSEFMX05PUl9FcmFzZV9DaGlwKCkuCi0gICAgICAgIAorCiAgICAgICAoKykgUmVhZCB0aGUgTk9SIGZsYXNoIENGSSAoY29tbW9uIGZsYXNoIGludGVyZmFjZSkgSURzIHVzaW5nIHRoZSBmdW5jdGlvbgogICAgICAgICAgIEhBTF9OT1JfUmVhZF9DRkkoKS4gVGhlIHJlYWQgaW5mb3JtYXRpb24gaXMgc3RvcmVkIGluIHRoZSBOT1JfQ0ZJX1R5cGVEZWYKICAgICAgICAgICBzdHJ1Y3R1cmUgZGVjbGFyZWQgYnkgdGhlIGZ1bmN0aW9uIGNhbGxlci4KLSAgICAgICAgCisKICAgICAgICgrKSBZb3UgY2FuIGFsc28gY29udHJvbCB0aGUgTk9SIGRldmljZSBieSBjYWxsaW5nIHRoZSBjb250cm9sIEFQSXMgSEFMX05PUl9Xcml0ZU9wZXJhdGlvbl9FbmFibGUoKS8KLSAgICAgICAgICBIQUxfTk9SX1dyaXRlT3BlcmF0aW9uX0Rpc2FibGUoKSB0byByZXNwZWN0aXZlbHkgZW5hYmxlL2Rpc2FibGUgdGhlIE5PUiB3cml0ZSBvcGVyYXRpb24gIAotICAgICAgIAorICAgICAgICAgIEhBTF9OT1JfV3JpdGVPcGVyYXRpb25fRGlzYWJsZSgpIHRvIHJlc3BlY3RpdmVseSBlbmFibGUvZGlzYWJsZSB0aGUgTk9SIHdyaXRlIG9wZXJhdGlvbgorCiAgICAgICAoKykgWW91IGNhbiBtb25pdG9yIHRoZSBOT1IgZGV2aWNlIEhBTCBzdGF0ZSBieSBjYWxsaW5nIHRoZSBmdW5jdGlvbgotICAgICAgICAgIEhBTF9OT1JfR2V0U3RhdGUoKSAKKyAgICAgICAgICBIQUxfTk9SX0dldFN0YXRlKCkKICAgICBbLi5dCiAgICAgIChAKSBUaGlzIGRyaXZlciBpcyBhIHNldCBvZiBnZW5lcmljIEFQSXMgd2hpY2ggaGFuZGxlIHN0YW5kYXJkIE5PUiBmbGFzaCBvcGVyYXRpb25zLgotICAgICAgICAgSWYgYSBOT1IgZmxhc2ggZGV2aWNlIGNvbnRhaW5zIGRpZmZlcmVudCBvcGVyYXRpb25zIGFuZC9vciBpbXBsZW1lbnRhdGlvbnMsIAorICAgICAgICAgSWYgYSBOT1IgZmxhc2ggZGV2aWNlIGNvbnRhaW5zIGRpZmZlcmVudCBvcGVyYXRpb25zIGFuZC9vciBpbXBsZW1lbnRhdGlvbnMsCiAgICAgICAgICBpdCBzaG91bGQgYmUgaW1wbGVtZW50ZWQgc2VwYXJhdGVseS4KIAogICAgICAqKiogTk9SIEhBTCBkcml2ZXIgbWFjcm9zIGxpc3QgKioqCi0gICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAKKyAgICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgICAgIFsuLl0KICAgICAgICBCZWxvdyB0aGUgbGlzdCBvZiBtb3N0IHVzZWQgbWFjcm9zIGluIE5PUiBIQUwgZHJpdmVyLgotICAgICAgIAorCiAgICAgICAoKykgTk9SX1dSSVRFIDogTk9SIG1lbW9yeSB3cml0ZSBkYXRhIHRvIHNwZWNpZmllZCBhZGRyZXNzCiAKICAgICAqKiogQ2FsbGJhY2sgcmVnaXN0cmF0aW9uICoqKgpAQCAtNTUsMjUgKzY2LDI1IEBACiAgICAgICBUaGUgY29tcGlsYXRpb24gZGVmaW5lICBVU0VfSEFMX05PUl9SRUdJU1RFUl9DQUxMQkFDS1Mgd2hlbiBzZXQgdG8gMQogICAgICAgYWxsb3dzIHRoZSB1c2VyIHRvIGNvbmZpZ3VyZSBkeW5hbWljYWxseSB0aGUgZHJpdmVyIGNhbGxiYWNrcy4KIAotICAgICAgVXNlIEZ1bmN0aW9ucyBAcmVmIEhBTF9OT1JfUmVnaXN0ZXJDYWxsYmFjaygpIHRvIHJlZ2lzdGVyIGEgdXNlciBjYWxsYmFjaywKKyAgICAgIFVzZSBGdW5jdGlvbnMgSEFMX05PUl9SZWdpc3RlckNhbGxiYWNrKCkgdG8gcmVnaXN0ZXIgYSB1c2VyIGNhbGxiYWNrLAogICAgICAgaXQgYWxsb3dzIHRvIHJlZ2lzdGVyIGZvbGxvd2luZyBjYWxsYmFja3M6CiAgICAgICAgICgrKSBNc3BJbml0Q2FsbGJhY2sgICAgOiBOT1IgTXNwSW5pdC4KICAgICAgICAgKCspIE1zcERlSW5pdENhbGxiYWNrICA6IE5PUiBNc3BEZUluaXQuCiAgICAgICBUaGlzIGZ1bmN0aW9uIHRha2VzIGFzIHBhcmFtZXRlcnMgdGhlIEhBTCBwZXJpcGhlcmFsIGhhbmRsZSwgdGhlIENhbGxiYWNrIElECiAgICAgICBhbmQgYSBwb2ludGVyIHRvIHRoZSB1c2VyIGNhbGxiYWNrIGZ1bmN0aW9uLgogCi0gICAgICBVc2UgZnVuY3Rpb24gQHJlZiBIQUxfTk9SX1VuUmVnaXN0ZXJDYWxsYmFjaygpIHRvIHJlc2V0IGEgY2FsbGJhY2sgdG8gdGhlIGRlZmF1bHQKKyAgICAgIFVzZSBmdW5jdGlvbiBIQUxfTk9SX1VuUmVnaXN0ZXJDYWxsYmFjaygpIHRvIHJlc2V0IGEgY2FsbGJhY2sgdG8gdGhlIGRlZmF1bHQKICAgICAgIHdlYWsgKHN1cmNoYXJnZWQpIGZ1bmN0aW9uLiBJdCBhbGxvd3MgdG8gcmVzZXQgZm9sbG93aW5nIGNhbGxiYWNrczoKICAgICAgICAgKCspIE1zcEluaXRDYWxsYmFjayAgICA6IE5PUiBNc3BJbml0LgogICAgICAgICAoKykgTXNwRGVJbml0Q2FsbGJhY2sgIDogTk9SIE1zcERlSW5pdC4KICAgICAgIFRoaXMgZnVuY3Rpb24pIHRha2VzIGFzIHBhcmFtZXRlcnMgdGhlIEhBTCBwZXJpcGhlcmFsIGhhbmRsZSBhbmQgdGhlIENhbGxiYWNrIElELgogCi0gICAgICBCeSBkZWZhdWx0LCBhZnRlciB0aGUgQHJlZiBIQUxfTk9SX0luaXQgYW5kIGlmIHRoZSBzdGF0ZSBpcyBIQUxfTk9SX1NUQVRFX1JFU0VUCisgICAgICBCeSBkZWZhdWx0LCBhZnRlciB0aGUgSEFMX05PUl9Jbml0IGFuZCBpZiB0aGUgc3RhdGUgaXMgSEFMX05PUl9TVEFURV9SRVNFVAogICAgICAgYWxsIGNhbGxiYWNrcyBhcmUgcmVzZXQgdG8gdGhlIGNvcnJlc3BvbmRpbmcgbGVnYWN5IHdlYWsgKHN1cmNoYXJnZWQpIGZ1bmN0aW9ucy4KICAgICAgIEV4Y2VwdGlvbiBkb25lIGZvciBNc3BJbml0IGFuZCBNc3BEZUluaXQgY2FsbGJhY2tzIHRoYXQgYXJlIHJlc3BlY3RpdmVseQotICAgICAgcmVzZXQgdG8gdGhlIGxlZ2FjeSB3ZWFrIChzdXJjaGFyZ2VkKSBmdW5jdGlvbnMgaW4gdGhlIEByZWYgSEFMX05PUl9Jbml0Ci0gICAgICBhbmQgQHJlZiAgSEFMX05PUl9EZUluaXQgb25seSB3aGVuIHRoZXNlIGNhbGxiYWNrcyBhcmUgbnVsbCAobm90IHJlZ2lzdGVyZWQgYmVmb3JlaGFuZCkuCi0gICAgICBJZiBub3QsIE1zcEluaXQgb3IgTXNwRGVJbml0IGFyZSBub3QgbnVsbCwgdGhlIEByZWYgSEFMX05PUl9Jbml0IGFuZCBAcmVmIEhBTF9OT1JfRGVJbml0CisgICAgICByZXNldCB0byB0aGUgbGVnYWN5IHdlYWsgKHN1cmNoYXJnZWQpIGZ1bmN0aW9ucyBpbiB0aGUgSEFMX05PUl9Jbml0CisgICAgICBhbmQgIEhBTF9OT1JfRGVJbml0IG9ubHkgd2hlbiB0aGVzZSBjYWxsYmFja3MgYXJlIG51bGwgKG5vdCByZWdpc3RlcmVkIGJlZm9yZWhhbmQpLgorICAgICAgSWYgbm90LCBNc3BJbml0IG9yIE1zcERlSW5pdCBhcmUgbm90IG51bGwsIHRoZSBIQUxfTk9SX0luaXQgYW5kIEhBTF9OT1JfRGVJbml0CiAgICAgICBrZWVwIGFuZCB1c2UgdGhlIHVzZXIgTXNwSW5pdC9Nc3BEZUluaXQgY2FsbGJhY2tzIChyZWdpc3RlcmVkIGJlZm9yZWhhbmQpCiAKICAgICAgIENhbGxiYWNrcyBjYW4gYmUgcmVnaXN0ZXJlZC91bnJlZ2lzdGVyZWQgaW4gUkVBRFkgc3RhdGUgb25seS4KQEAgLTgxLDggKzkyLDggQEAKICAgICAgIGluIFJFQURZIG9yIFJFU0VUIHN0YXRlLCB0aHVzIHJlZ2lzdGVyZWQgKHVzZXIpIE1zcEluaXQvRGVJbml0IGNhbGxiYWNrcyBjYW4gYmUgdXNlZAogICAgICAgZHVyaW5nIHRoZSBJbml0L0RlSW5pdC4KICAgICAgIEluIHRoYXQgY2FzZSBmaXJzdCByZWdpc3RlciB0aGUgTXNwSW5pdC9Nc3BEZUluaXQgdXNlciBjYWxsYmFja3MKLSAgICAgIHVzaW5nIEByZWYgSEFMX05PUl9SZWdpc3RlckNhbGxiYWNrIGJlZm9yZSBjYWxsaW5nIEByZWYgSEFMX05PUl9EZUluaXQKLSAgICAgIG9yIEByZWYgSEFMX05PUl9Jbml0IGZ1bmN0aW9uLgorICAgICAgdXNpbmcgSEFMX05PUl9SZWdpc3RlckNhbGxiYWNrIGJlZm9yZSBjYWxsaW5nIEhBTF9OT1JfRGVJbml0CisgICAgICBvciBIQUxfTk9SX0luaXQgZnVuY3Rpb24uCiAKICAgICAgIFdoZW4gVGhlIGNvbXBpbGF0aW9uIGRlZmluZSBVU0VfSEFMX05PUl9SRUdJU1RFUl9DQUxMQkFDS1MgaXMgc2V0IHRvIDAgb3IKICAgICAgIG5vdCBkZWZpbmVkLCB0aGUgY2FsbGJhY2sgcmVnaXN0ZXJpbmcgZmVhdHVyZSBpcyBub3QgYXZhaWxhYmxlCkBAIC05MCwzNSArMTAxLDI2IEBACiAKICAgQGVuZHZlcmJhdGltCiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICAqIEBhdHRlbnRpb24KLSAgKgotICAqIDxoMj48Y2VudGVyPiZjb3B5OyBDb3B5cmlnaHQgKGMpIDIwMTcgU1RNaWNyb2VsZWN0cm9uaWNzLgotICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuPC9jZW50ZXI+PC9oMj4KLSAgKgotICAqIFRoaXMgc29mdHdhcmUgY29tcG9uZW50IGlzIGxpY2Vuc2VkIGJ5IFNUIHVuZGVyIEJTRCAzLUNsYXVzZSBsaWNlbnNlLAotICAqIHRoZSAiTGljZW5zZSI7IFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUKLSAgKiBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQ6Ci0gICogICAgICAgICAgICAgICAgICAgICAgICBvcGVuc291cmNlLm9yZy9saWNlbnNlcy9CU0QtMy1DbGF1c2UKLSAgKgotICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAgKi8gCisgICovCiAKIC8qIEluY2x1ZGVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAjaW5jbHVkZSAic3RtMzJmN3h4X2hhbC5oIgogCisKIC8qKiBAYWRkdG9ncm91cCBTVE0zMkY3eHhfSEFMX0RyaXZlcgogICAqIEB7CiAgICovCiAKKyNpZmRlZiBIQUxfTk9SX01PRFVMRV9FTkFCTEVECisKIC8qKiBAZGVmZ3JvdXAgTk9SIE5PUgogICAqIEBicmllZiBOT1IgZHJpdmVyIG1vZHVsZXMKICAgKiBAewogICAqLwotI2lmZGVmIEhBTF9OT1JfTU9EVUxFX0VOQUJMRUQKIAogLyogUHJpdmF0ZSB0eXBlZGVmIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KIC8qIFByaXZhdGUgZGVmaW5lIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi0gICAgICAKKwogLyoqIEBkZWZncm91cCBOT1JfUHJpdmF0ZV9EZWZpbmVzIE5PUiBQcml2YXRlIERlZmluZXMKICAgKiBAewogICAqLwpAQCAtMTQ4LDE0ICsxNTAsNDAgQEAKICNkZWZpbmUgTk9SX0NNRF9EQVRBX0JVRkZFUl9BTkRfUFJPR19DT05GSVJNICAodWludDhfdCkweDI5CiAjZGVmaW5lIE5PUl9DTURfREFUQV9CTE9DS19FUkFTRSAgICAgICAgICAgICAgKHVpbnQ4X3QpMHgzMAogCisjZGVmaW5lIE5PUl9DTURfUkVBRF9BUlJBWSAgICAgICAgICAgICAgICAgICAgKHVpbnQxNl90KTB4MDBGRgorI2RlZmluZSBOT1JfQ01EX1dPUkRfUFJPR1JBTSAgICAgICAgICAgICAgICAgICh1aW50MTZfdCkweDAwNDAKKyNkZWZpbmUgTk9SX0NNRF9CVUZGRVJFRF9QUk9HUkFNICAgICAgICAgICAgICAodWludDE2X3QpMHgwMEU4CisjZGVmaW5lIE5PUl9DTURfQ09ORklSTSAgICAgICAgICAgICAgICAgICAgICAgKHVpbnQxNl90KTB4MDBEMAorI2RlZmluZSBOT1JfQ01EX0JMT0NLX0VSQVNFICAgICAgICAgICAgICAgICAgICh1aW50MTZfdCkweDAwMjAKKyNkZWZpbmUgTk9SX0NNRF9CTE9DS19VTkxPQ0sgICAgICAgICAgICAgICAgICAodWludDE2X3QpMHgwMDYwCisjZGVmaW5lIE5PUl9DTURfUkVBRF9TVEFUVVNfUkVHICAgICAgICAgICAgICAgKHVpbnQxNl90KTB4MDA3MAorI2RlZmluZSBOT1JfQ01EX0NMRUFSX1NUQVRVU19SRUcgICAgICAgICAgICAgICh1aW50MTZfdCkweDAwNTAKKwogLyogTWFzayBvbiBOT1IgU1RBVFVTIFJFR0lTVEVSICovCisjZGVmaW5lIE5PUl9NQVNLX1NUQVRVU19EUTQgICAgICAgICAgICAgICAgICAgKHVpbnQxNl90KTB4MDAxMAogI2RlZmluZSBOT1JfTUFTS19TVEFUVVNfRFE1ICAgICAgICAgICAgICAgICAgICh1aW50MTZfdCkweDAwMjAKICNkZWZpbmUgTk9SX01BU0tfU1RBVFVTX0RRNiAgICAgICAgICAgICAgICAgICAodWludDE2X3QpMHgwMDQwCisjZGVmaW5lIE5PUl9NQVNLX1NUQVRVU19EUTcgICAgICAgICAgICAgICAgICAgKHVpbnQxNl90KTB4MDA4MAorCisvKiBBZGRyZXNzIG9mIHRoZSBwcmltYXJ5IGNvbW1hbmQgc2V0ICovCisjZGVmaW5lIE5PUl9BRERSRVNTX0NPTU1BTkRfU0VUICAgICAgICAgICAgICAgKHVpbnQxNl90KTB4MDAxMworCisvKiBDb21tYW5kIHNldCBjb2RlIGFzc2lnbm1lbnQgKGRlZmluZWQgaW4gSkVERUMgSkVQMTM3QiB2ZXJzaW9uIG1heSAyMDA0KSAqLworI2RlZmluZSBOT1JfSU5URUxfU0hBUlBfRVhUX0NPTU1BTkRfU0VUICAgICAgICh1aW50MTZfdCkweDAwMDEgLyogU3VwcG9ydGVkIGluIHRoaXMgZHJpdmVyICovCisjZGVmaW5lIE5PUl9BTURfRlVKSVRTVV9DT01NQU5EX1NFVCAgICAgICAgICAgKHVpbnQxNl90KTB4MDAwMiAvKiBTdXBwb3J0ZWQgaW4gdGhpcyBkcml2ZXIgKi8KKyNkZWZpbmUgTk9SX0lOVEVMX1NUQU5EQVJEX0NPTU1BTkRfU0VUICAgICAgICAodWludDE2X3QpMHgwMDAzIC8qIE5vdCBTdXBwb3J0ZWQgaW4gdGhpcyBkcml2ZXIgKi8KKyNkZWZpbmUgTk9SX0FNRF9GVUpJVFNVX0VYVF9DT01NQU5EX1NFVCAgICAgICAodWludDE2X3QpMHgwMDA0IC8qIE5vdCBTdXBwb3J0ZWQgaW4gdGhpcyBkcml2ZXIgKi8KKyNkZWZpbmUgTk9SX1dJTkRCT05EX1NUQU5EQVJEX0NPTU1BTkRfU0VUICAgICAodWludDE2X3QpMHgwMDA2IC8qIE5vdCBTdXBwb3J0ZWQgaW4gdGhpcyBkcml2ZXIgKi8KKyNkZWZpbmUgTk9SX01JVFNVQklTSElfU1RBTkRBUkRfQ09NTUFORF9TRVQgICAodWludDE2X3QpMHgwMTAwIC8qIE5vdCBTdXBwb3J0ZWQgaW4gdGhpcyBkcml2ZXIgKi8KKyNkZWZpbmUgTk9SX01JVFNVQklTSElfRVhUX0NPTU1BTkRfU0VUICAgICAgICAodWludDE2X3QpMHgwMTAxIC8qIE5vdCBTdXBwb3J0ZWQgaW4gdGhpcyBkcml2ZXIgKi8KKyNkZWZpbmUgTk9SX1BBR0VfV1JJVEVfQ09NTUFORF9TRVQgICAgICAgICAgICAodWludDE2X3QpMHgwMTAyIC8qIE5vdCBTdXBwb3J0ZWQgaW4gdGhpcyBkcml2ZXIgKi8KKyNkZWZpbmUgTk9SX0lOVEVMX1BFUkZPUk1BTkNFX0NPTU1BTkRfU0VUICAgICAodWludDE2X3QpMHgwMjAwIC8qIE5vdCBTdXBwb3J0ZWQgaW4gdGhpcyBkcml2ZXIgKi8KKyNkZWZpbmUgTk9SX0lOVEVMX0RBVEFfQ09NTUFORF9TRVQgICAgICAgICAgICAodWludDE2X3QpMHgwMjEwIC8qIE5vdCBTdXBwb3J0ZWQgaW4gdGhpcyBkcml2ZXIgKi8KIAogLyoqCiAgICogQH0KICAgKi8KLSAgICAgIAorCiAvKiBQcml2YXRlIG1hY3JvIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogLyogUHJpdmF0ZSB2YXJpYWJsZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KIC8qKiBAZGVmZ3JvdXAgTk9SX1ByaXZhdGVfVmFyaWFibGVzIE5PUiBQcml2YXRlIFZhcmlhYmxlcwpAQCAtMTc0LDQ0ICsyMDIsNDcgQEAKICAgKiBAewogICAqLwogCi0vKiogQGRlZmdyb3VwIE5PUl9FeHBvcnRlZF9GdW5jdGlvbnNfR3JvdXAxIEluaXRpYWxpemF0aW9uIGFuZCBkZS1pbml0aWFsaXphdGlvbiBmdW5jdGlvbnMgCi0gICogQGJyaWVmICAgIEluaXRpYWxpemF0aW9uIGFuZCBDb25maWd1cmF0aW9uIGZ1bmN0aW9ucyAKKy8qKiBAZGVmZ3JvdXAgTk9SX0V4cG9ydGVkX0Z1bmN0aW9uc19Hcm91cDEgSW5pdGlhbGl6YXRpb24gYW5kIGRlLWluaXRpYWxpemF0aW9uIGZ1bmN0aW9ucworICAqIEBicmllZiAgICBJbml0aWFsaXphdGlvbiBhbmQgQ29uZmlndXJhdGlvbiBmdW5jdGlvbnMKICAgKgotICBAdmVyYmF0aW0gICAgCisgIEB2ZXJiYXRpbQogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgICAgICAgICAgIyMjIyMgTk9SIEluaXRpYWxpemF0aW9uIGFuZCBkZV9pbml0aWFsaXphdGlvbiBmdW5jdGlvbnMgIyMjIyMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0gIFsuLl0gIAorICBbLi5dCiAgICAgVGhpcyBzZWN0aW9uIHByb3ZpZGVzIGZ1bmN0aW9ucyBhbGxvd2luZyB0byBpbml0aWFsaXplL2RlLWluaXRpYWxpemUKICAgICB0aGUgTk9SIG1lbW9yeQotICAKKwogQGVuZHZlcmJhdGltCiAgICogQHsKICAgKi8KLSAgICAKKwogLyoqCiAgICogQGJyaWVmICBQZXJmb3JtIHRoZSBOT1IgbWVtb3J5IEluaXRpYWxpemF0aW9uIHNlcXVlbmNlCiAgICogQHBhcmFtICBobm9yIHBvaW50ZXIgdG8gYSBOT1JfSGFuZGxlVHlwZURlZiBzdHJ1Y3R1cmUgdGhhdCBjb250YWlucwogICAqICAgICAgICAgICAgICAgIHRoZSBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uIGZvciBOT1IgbW9kdWxlLgotICAqIEBwYXJhbSAgVGltaW5nIHBvaW50ZXIgdG8gTk9SIGNvbnRyb2wgdGltaW5nIHN0cnVjdHVyZSAKLSAgKiBAcGFyYW0gIEV4dFRpbWluZyBwb2ludGVyIHRvIE5PUiBleHRlbmRlZCBtb2RlIHRpbWluZyBzdHJ1Y3R1cmUgICAgCisgICogQHBhcmFtICBUaW1pbmcgcG9pbnRlciB0byBOT1IgY29udHJvbCB0aW1pbmcgc3RydWN0dXJlCisgICogQHBhcmFtICBFeHRUaW1pbmcgcG9pbnRlciB0byBOT1IgZXh0ZW5kZWQgbW9kZSB0aW1pbmcgc3RydWN0dXJlCiAgICogQHJldHZhbCBIQUwgc3RhdHVzCiAgICovCi1IQUxfU3RhdHVzVHlwZURlZiBIQUxfTk9SX0luaXQoTk9SX0hhbmRsZVR5cGVEZWYgKmhub3IsIEZNQ19OT1JTUkFNX1RpbWluZ1R5cGVEZWYgKlRpbWluZywgRk1DX05PUlNSQU1fVGltaW5nVHlwZURlZiAqRXh0VGltaW5nKQorSEFMX1N0YXR1c1R5cGVEZWYgSEFMX05PUl9Jbml0KE5PUl9IYW5kbGVUeXBlRGVmICpobm9yLCBGTUNfTk9SU1JBTV9UaW1pbmdUeXBlRGVmICpUaW1pbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRk1DX05PUlNSQU1fVGltaW5nVHlwZURlZiAqRXh0VGltaW5nKQogeworICB1aW50MzJfdCBkZXZpY2VhZGRyZXNzOworCiAgIC8qIENoZWNrIHRoZSBOT1IgaGFuZGxlIHBhcmFtZXRlciAqLwotICBpZihobm9yID09IE5VTEwpCisgIGlmIChobm9yID09IE5VTEwpCiAgIHsKLSAgICAgcmV0dXJuIEhBTF9FUlJPUjsKKyAgICByZXR1cm4gSEFMX0VSUk9SOwogICB9Ci0gIAotICBpZihobm9yLT5TdGF0ZSA9PSBIQUxfTk9SX1NUQVRFX1JFU0VUKQorCisgIGlmIChobm9yLT5TdGF0ZSA9PSBIQUxfTk9SX1NUQVRFX1JFU0VUKQogICB7CiAgICAgLyogQWxsb2NhdGUgbG9jayByZXNvdXJjZSBhbmQgaW5pdGlhbGl6ZSBpdCAqLwogICAgIGhub3ItPkxvY2sgPSBIQUxfVU5MT0NLRUQ7CiAKICNpZiAoVVNFX0hBTF9OT1JfUkVHSVNURVJfQ0FMTEJBQ0tTID09IDEpCi0gICAgaWYoaG5vci0+TXNwSW5pdENhbGxiYWNrID09IE5VTEwpCisgICAgaWYgKGhub3ItPk1zcEluaXRDYWxsYmFjayA9PSBOVUxMKQogICAgIHsKICAgICAgIGhub3ItPk1zcEluaXRDYWxsYmFjayA9IEhBTF9OT1JfTXNwSW5pdDsKICAgICB9CkBAIC0yMjMsMTUgKzI1NCwxNSBAQAogICAgIEhBTF9OT1JfTXNwSW5pdChobm9yKTsKICNlbmRpZiAvKiAoVVNFX0hBTF9OT1JfUkVHSVNURVJfQ0FMTEJBQ0tTKSAqLwogICB9Ci0gIAorCiAgIC8qIEluaXRpYWxpemUgTk9SIGNvbnRyb2wgSW50ZXJmYWNlICovCi0gIEZNQ19OT1JTUkFNX0luaXQoaG5vci0+SW5zdGFuY2UsICYoaG5vci0+SW5pdCkpOworICAodm9pZClGTUNfTk9SU1JBTV9Jbml0KGhub3ItPkluc3RhbmNlLCAmKGhub3ItPkluaXQpKTsKIAogICAvKiBJbml0aWFsaXplIE5PUiB0aW1pbmcgSW50ZXJmYWNlICovCi0gIEZNQ19OT1JTUkFNX1RpbWluZ19Jbml0KGhub3ItPkluc3RhbmNlLCBUaW1pbmcsIGhub3ItPkluaXQuTlNCYW5rKTsgCisgICh2b2lkKUZNQ19OT1JTUkFNX1RpbWluZ19Jbml0KGhub3ItPkluc3RhbmNlLCBUaW1pbmcsIGhub3ItPkluaXQuTlNCYW5rKTsKIAogICAvKiBJbml0aWFsaXplIE5PUiBleHRlbmRlZCBtb2RlIHRpbWluZyBJbnRlcmZhY2UgKi8KLSAgRk1DX05PUlNSQU1fRXh0ZW5kZWRfVGltaW5nX0luaXQoaG5vci0+RXh0ZW5kZWQsIEV4dFRpbWluZywgaG5vci0+SW5pdC5OU0JhbmssIGhub3ItPkluaXQuRXh0ZW5kZWRNb2RlKTsKKyAgKHZvaWQpRk1DX05PUlNSQU1fRXh0ZW5kZWRfVGltaW5nX0luaXQoaG5vci0+RXh0ZW5kZWQsIEV4dFRpbWluZywgaG5vci0+SW5pdC5OU0JhbmssIGhub3ItPkluaXQuRXh0ZW5kZWRNb2RlKTsKIAogICAvKiBFbmFibGUgdGhlIE5PUlNSQU0gZGV2aWNlICovCiAgIF9fRk1DX05PUlNSQU1fRU5BQkxFKGhub3ItPkluc3RhbmNlLCBobm9yLT5Jbml0Lk5TQmFuayk7CkBAIC0yNDYsMTAgKzI3NywzMiBAQAogICAgIHV3Tk9STWVtb3J5RGF0YVdpZHRoID0gTk9SX01FTU9SWV8xNkI7CiAgIH0KIAotICAvKiBDaGVjayB0aGUgTk9SIGNvbnRyb2xsZXIgc3RhdGUgKi8KLSAgaG5vci0+U3RhdGUgPSBIQUxfTk9SX1NUQVRFX1JFQURZOyAKLSAgCi0gIHJldHVybiBIQUxfT0s7CisgIC8qIEluaXRpYWxpemUgdGhlIE5PUiBjb250cm9sbGVyIHN0YXRlICovCisgIGhub3ItPlN0YXRlID0gSEFMX05PUl9TVEFURV9SRUFEWTsKKworICAvKiBTZWxlY3QgdGhlIE5PUiBkZXZpY2UgYWRkcmVzcyAqLworICBpZiAoaG5vci0+SW5pdC5OU0JhbmsgPT0gRk1DX05PUlNSQU1fQkFOSzEpCisgIHsKKyAgICBkZXZpY2VhZGRyZXNzID0gTk9SX01FTU9SWV9BRFJFU1MxOworICB9CisgIGVsc2UgaWYgKGhub3ItPkluaXQuTlNCYW5rID09IEZNQ19OT1JTUkFNX0JBTksyKQorICB7CisgICAgZGV2aWNlYWRkcmVzcyA9IE5PUl9NRU1PUllfQURSRVNTMjsKKyAgfQorICBlbHNlIGlmIChobm9yLT5Jbml0Lk5TQmFuayA9PSBGTUNfTk9SU1JBTV9CQU5LMykKKyAgeworICAgIGRldmljZWFkZHJlc3MgPSBOT1JfTUVNT1JZX0FEUkVTUzM7CisgIH0KKyAgZWxzZSAvKiBGTUNfTk9SU1JBTV9CQU5LNCAqLworICB7CisgICAgZGV2aWNlYWRkcmVzcyA9IE5PUl9NRU1PUllfQURSRVNTNDsKKyAgfQorCisgIC8qIEdldCB0aGUgdmFsdWUgb2YgdGhlIGNvbW1hbmQgc2V0ICovCisgIE5PUl9XUklURShOT1JfQUREUl9TSElGVChkZXZpY2VhZGRyZXNzLCB1d05PUk1lbW9yeURhdGFXaWR0aCwgTk9SX0NNRF9BRERSRVNTX0ZJUlNUX0NGSSksIE5PUl9DTURfREFUQV9DRkkpOworICBobm9yLT5Db21tYW5kU2V0ID0gKihfX0lPIHVpbnQxNl90ICopIE5PUl9BRERSX1NISUZUKGRldmljZWFkZHJlc3MsIHV3Tk9STWVtb3J5RGF0YVdpZHRoLCBOT1JfQUREUkVTU19DT01NQU5EX1NFVCk7CisKKyAgcmV0dXJuIEhBTF9OT1JfUmV0dXJuVG9SZWFkTW9kZShobm9yKTsKIH0KIAogLyoqCkBAIC0yNTgsMTAgKzMxMSwxMCBAQAogICAqICAgICAgICAgICAgICAgIHRoZSBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uIGZvciBOT1IgbW9kdWxlLgogICAqIEByZXR2YWwgSEFMIHN0YXR1cwogICAqLwotSEFMX1N0YXR1c1R5cGVEZWYgSEFMX05PUl9EZUluaXQoTk9SX0hhbmRsZVR5cGVEZWYgKmhub3IpICAKK0hBTF9TdGF0dXNUeXBlRGVmIEhBTF9OT1JfRGVJbml0KE5PUl9IYW5kbGVUeXBlRGVmICpobm9yKQogewogI2lmIChVU0VfSEFMX05PUl9SRUdJU1RFUl9DQUxMQkFDS1MgPT0gMSkKLSAgaWYoaG5vci0+TXNwRGVJbml0Q2FsbGJhY2sgPT0gTlVMTCkKKyAgaWYgKGhub3ItPk1zcERlSW5pdENhbGxiYWNrID09IE5VTEwpCiAgIHsKICAgICBobm9yLT5Nc3BEZUluaXRDYWxsYmFjayA9IEhBTF9OT1JfTXNwRGVJbml0OwogICB9CkBAIC0yNzQsOSArMzI3LDkgQEAKICNlbmRpZiAvKiAoVVNFX0hBTF9OT1JfUkVHSVNURVJfQ0FMTEJBQ0tTKSAqLwogCiAgIC8qIENvbmZpZ3VyZSB0aGUgTk9SIHJlZ2lzdGVycyB3aXRoIHRoZWlyIHJlc2V0IHZhbHVlcyAqLwotICBGTUNfTk9SU1JBTV9EZUluaXQoaG5vci0+SW5zdGFuY2UsIGhub3ItPkV4dGVuZGVkLCBobm9yLT5Jbml0Lk5TQmFuayk7Ci0gIAotICAvKiBVcGRhdGUgdGhlIE5PUiBjb250cm9sbGVyIHN0YXRlICovCisgICh2b2lkKUZNQ19OT1JTUkFNX0RlSW5pdChobm9yLT5JbnN0YW5jZSwgaG5vci0+RXh0ZW5kZWQsIGhub3ItPkluaXQuTlNCYW5rKTsKKworICAvKiBSZXNldCB0aGUgTk9SIGNvbnRyb2xsZXIgc3RhdGUgKi8KICAgaG5vci0+U3RhdGUgPSBIQUxfTk9SX1NUQVRFX1JFU0VUOwogCiAgIC8qIFJlbGVhc2UgTG9jayAqLwpAQCAtMjk1LDEwICszNDgsMTAgQEAKIHsKICAgLyogUHJldmVudCB1bnVzZWQgYXJndW1lbnQocykgY29tcGlsYXRpb24gd2FybmluZyAqLwogICBVTlVTRUQoaG5vcik7Ci0gIAorCiAgIC8qIE5PVEUgOiBUaGlzIGZ1bmN0aW9uIFNob3VsZCBub3QgYmUgbW9kaWZpZWQsIHdoZW4gdGhlIGNhbGxiYWNrIGlzIG5lZWRlZCwKICAgICAgICAgICAgIHRoZSBIQUxfTk9SX01zcEluaXQgY291bGQgYmUgaW1wbGVtZW50ZWQgaW4gdGhlIHVzZXIgZmlsZQotICAgKi8gCisgICAqLwogfQogCiAvKioKQEAgLTMxMSwxMCArMzY0LDEwIEBACiB7CiAgIC8qIFByZXZlbnQgdW51c2VkIGFyZ3VtZW50KHMpIGNvbXBpbGF0aW9uIHdhcm5pbmcgKi8KICAgVU5VU0VEKGhub3IpOwotICAKKwogICAvKiBOT1RFIDogVGhpcyBmdW5jdGlvbiBTaG91bGQgbm90IGJlIG1vZGlmaWVkLCB3aGVuIHRoZSBjYWxsYmFjayBpcyBuZWVkZWQsCiAgICAgICAgICAgICB0aGUgSEFMX05PUl9Nc3BEZUluaXQgY291bGQgYmUgaW1wbGVtZW50ZWQgaW4gdGhlIHVzZXIgZmlsZQotICAgKi8gCisgICAqLwogfQogCiAvKioKQEAgLTMyOSwzMCArMzgyLDMwIEBACiAgIC8qIFByZXZlbnQgdW51c2VkIGFyZ3VtZW50KHMpIGNvbXBpbGF0aW9uIHdhcm5pbmcgKi8KICAgVU5VU0VEKGhub3IpOwogICBVTlVTRUQoVGltZW91dCk7Ci0gIAorCiAgIC8qIE5PVEUgOiBUaGlzIGZ1bmN0aW9uIFNob3VsZCBub3QgYmUgbW9kaWZpZWQsIHdoZW4gdGhlIGNhbGxiYWNrIGlzIG5lZWRlZCwKICAgICAgICAgICAgIHRoZSBIQUxfTk9SX01zcFdhaXQgY291bGQgYmUgaW1wbGVtZW50ZWQgaW4gdGhlIHVzZXIgZmlsZQotICAgKi8gCisgICAqLwogfQotICAKKwogLyoqCiAgICogQH0KICAgKi8KIAotLyoqIEBkZWZncm91cCBOT1JfRXhwb3J0ZWRfRnVuY3Rpb25zX0dyb3VwMiBJbnB1dCBhbmQgT3V0cHV0IGZ1bmN0aW9ucyAKLSAgKiBAYnJpZWYgICAgSW5wdXQgT3V0cHV0IGFuZCBtZW1vcnkgY29udHJvbCBmdW5jdGlvbnMgCisvKiogQGRlZmdyb3VwIE5PUl9FeHBvcnRlZF9GdW5jdGlvbnNfR3JvdXAyIElucHV0IGFuZCBPdXRwdXQgZnVuY3Rpb25zCisgICogQGJyaWVmICAgIElucHV0IE91dHB1dCBhbmQgbWVtb3J5IGNvbnRyb2wgZnVuY3Rpb25zCiAgICoKLSAgQHZlcmJhdGltICAgIAorICBAdmVyYmF0aW0KICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgICAgICAgICAgICAgICAgIyMjIyMgTk9SIElucHV0IGFuZCBPdXRwdXQgZnVuY3Rpb25zICMjIyMjCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotICBbLi5dICAKKyAgWy4uXQogICAgIFRoaXMgc2VjdGlvbiBwcm92aWRlcyBmdW5jdGlvbnMgYWxsb3dpbmcgdG8gdXNlIGFuZCBjb250cm9sIHRoZSBOT1IgbWVtb3J5Ci0gIAorCiBAZW5kdmVyYmF0aW0KICAgKiBAewogICAqLwotICAKKwogLyoqCiAgICogQGJyaWVmICBSZWFkIE5PUiBmbGFzaCBJRHMKICAgKiBAcGFyYW0gIGhub3IgcG9pbnRlciB0byBhIE5PUl9IYW5kbGVUeXBlRGVmIHN0cnVjdHVyZSB0aGF0IGNvbnRhaW5zCkBAIC0zNjIsNTYgKzQxNSw4MyBAQAogICAqLwogSEFMX1N0YXR1c1R5cGVEZWYgSEFMX05PUl9SZWFkX0lEKE5PUl9IYW5kbGVUeXBlRGVmICpobm9yLCBOT1JfSURUeXBlRGVmICpwTk9SX0lEKQogewotICB1aW50MzJfdCBkZXZpY2VhZGRyZXNzID0gMDsKLSAgCi0gIC8qIFByb2Nlc3MgTG9ja2VkICovCi0gIF9fSEFMX0xPQ0soaG5vcik7Ci0gIAotICAvKiBDaGVjayB0aGUgTk9SIGNvbnRyb2xsZXIgc3RhdGUgKi8KLSAgaWYoaG5vci0+U3RhdGUgPT0gSEFMX05PUl9TVEFURV9CVVNZKQotICB7Ci0gICAgIHJldHVybiBIQUxfQlVTWTsKLSAgfQotICAKLSAgLyogU2VsZWN0IHRoZSBOT1IgZGV2aWNlIGFkZHJlc3MgKi8KLSAgaWYgKGhub3ItPkluaXQuTlNCYW5rID09IEZNQ19OT1JTUkFNX0JBTksxKQotICB7Ci0gICAgZGV2aWNlYWRkcmVzcyA9IE5PUl9NRU1PUllfQURSRVNTMTsKLSAgfQotICBlbHNlIGlmIChobm9yLT5Jbml0Lk5TQmFuayA9PSBGTUNfTk9SU1JBTV9CQU5LMikKLSAgewotICAgIGRldmljZWFkZHJlc3MgPSBOT1JfTUVNT1JZX0FEUkVTUzI7Ci0gIH0KLSAgZWxzZSBpZiAoaG5vci0+SW5pdC5OU0JhbmsgPT0gRk1DX05PUlNSQU1fQkFOSzMpCi0gIHsKLSAgICBkZXZpY2VhZGRyZXNzID0gTk9SX01FTU9SWV9BRFJFU1MzOwotICB9Ci0gIGVsc2UgLyogRk1DX05PUlNSQU1fQkFOSzQgKi8KLSAgewotICAgIGRldmljZWFkZHJlc3MgPSBOT1JfTUVNT1JZX0FEUkVTUzQ7Ci0gIH0gIAotICAgIAotICAvKiBVcGRhdGUgdGhlIE5PUiBjb250cm9sbGVyIHN0YXRlICovCi0gIGhub3ItPlN0YXRlID0gSEFMX05PUl9TVEFURV9CVVNZOwotICAKLSAgLyogU2VuZCByZWFkIElEIGNvbW1hbmQgKi8KLSAgTk9SX1dSSVRFKE5PUl9BRERSX1NISUZUKGRldmljZWFkZHJlc3MsIHV3Tk9STWVtb3J5RGF0YVdpZHRoLCBOT1JfQ01EX0FERFJFU1NfRklSU1QpLCBOT1JfQ01EX0RBVEFfRklSU1QpOwotICBOT1JfV1JJVEUoTk9SX0FERFJfU0hJRlQoZGV2aWNlYWRkcmVzcywgdXdOT1JNZW1vcnlEYXRhV2lkdGgsIE5PUl9DTURfQUREUkVTU19TRUNPTkQpLCBOT1JfQ01EX0RBVEFfU0VDT05EKTsKLSAgTk9SX1dSSVRFKE5PUl9BRERSX1NISUZUKGRldmljZWFkZHJlc3MsIHV3Tk9STWVtb3J5RGF0YVdpZHRoLCBOT1JfQ01EX0FERFJFU1NfVEhJUkQpLCBOT1JfQ01EX0RBVEFfQVVUT19TRUxFQ1QpOworICB1aW50MzJfdCBkZXZpY2VhZGRyZXNzOworICBIQUxfTk9SX1N0YXRlVHlwZURlZiBzdGF0ZTsKKyAgSEFMX1N0YXR1c1R5cGVEZWYgc3RhdHVzID0gSEFMX09LOwogCi0gIC8qIFJlYWQgdGhlIE5PUiBJRHMgKi8KLSAgcE5PUl9JRC0+TWFudWZhY3R1cmVyX0NvZGUgPSAqKF9fSU8gdWludDE2X3QgKikgTk9SX0FERFJfU0hJRlQoZGV2aWNlYWRkcmVzcywgdXdOT1JNZW1vcnlEYXRhV2lkdGgsIE1DX0FERFJFU1MpOwotICBwTk9SX0lELT5EZXZpY2VfQ29kZTEgICAgICA9ICooX19JTyB1aW50MTZfdCAqKSBOT1JfQUREUl9TSElGVChkZXZpY2VhZGRyZXNzLCB1d05PUk1lbW9yeURhdGFXaWR0aCwgREVWSUNFX0NPREUxX0FERFIpOwotICBwTk9SX0lELT5EZXZpY2VfQ29kZTIgICAgICA9ICooX19JTyB1aW50MTZfdCAqKSBOT1JfQUREUl9TSElGVChkZXZpY2VhZGRyZXNzLCB1d05PUk1lbW9yeURhdGFXaWR0aCwgREVWSUNFX0NPREUyX0FERFIpOwotICBwTk9SX0lELT5EZXZpY2VfQ29kZTMgICAgICA9ICooX19JTyB1aW50MTZfdCAqKSBOT1JfQUREUl9TSElGVChkZXZpY2VhZGRyZXNzLCB1d05PUk1lbW9yeURhdGFXaWR0aCwgREVWSUNFX0NPREUzX0FERFIpOwotICAKICAgLyogQ2hlY2sgdGhlIE5PUiBjb250cm9sbGVyIHN0YXRlICovCi0gIGhub3ItPlN0YXRlID0gSEFMX05PUl9TVEFURV9SRUFEWTsKLSAgCi0gIC8qIFByb2Nlc3MgdW5sb2NrZWQgKi8KLSAgX19IQUxfVU5MT0NLKGhub3IpOyAgIAotICAKLSAgcmV0dXJuIEhBTF9PSzsKKyAgc3RhdGUgPSBobm9yLT5TdGF0ZTsKKyAgaWYgKHN0YXRlID09IEhBTF9OT1JfU1RBVEVfQlVTWSkKKyAgeworICAgIHJldHVybiBIQUxfQlVTWTsKKyAgfQorICBlbHNlIGlmICgoc3RhdGUgPT0gSEFMX05PUl9TVEFURV9SRUFEWSkgfHwgKHN0YXRlID09IEhBTF9OT1JfU1RBVEVfUFJPVEVDVEVEKSkKKyAgeworICAgIC8qIFByb2Nlc3MgTG9ja2VkICovCisgICAgX19IQUxfTE9DSyhobm9yKTsKKworICAgIC8qIFVwZGF0ZSB0aGUgTk9SIGNvbnRyb2xsZXIgc3RhdGUgKi8KKyAgICBobm9yLT5TdGF0ZSA9IEhBTF9OT1JfU1RBVEVfQlVTWTsKKworICAgIC8qIFNlbGVjdCB0aGUgTk9SIGRldmljZSBhZGRyZXNzICovCisgICAgaWYgKGhub3ItPkluaXQuTlNCYW5rID09IEZNQ19OT1JTUkFNX0JBTksxKQorICAgIHsKKyAgICAgIGRldmljZWFkZHJlc3MgPSBOT1JfTUVNT1JZX0FEUkVTUzE7CisgICAgfQorICAgIGVsc2UgaWYgKGhub3ItPkluaXQuTlNCYW5rID09IEZNQ19OT1JTUkFNX0JBTksyKQorICAgIHsKKyAgICAgIGRldmljZWFkZHJlc3MgPSBOT1JfTUVNT1JZX0FEUkVTUzI7CisgICAgfQorICAgIGVsc2UgaWYgKGhub3ItPkluaXQuTlNCYW5rID09IEZNQ19OT1JTUkFNX0JBTkszKQorICAgIHsKKyAgICAgIGRldmljZWFkZHJlc3MgPSBOT1JfTUVNT1JZX0FEUkVTUzM7CisgICAgfQorICAgIGVsc2UgLyogRk1DX05PUlNSQU1fQkFOSzQgKi8KKyAgICB7CisgICAgICBkZXZpY2VhZGRyZXNzID0gTk9SX01FTU9SWV9BRFJFU1M0OworICAgIH0KKworICAgIC8qIFNlbmQgcmVhZCBJRCBjb21tYW5kICovCisgICAgaWYgKGhub3ItPkNvbW1hbmRTZXQgPT0gTk9SX0FNRF9GVUpJVFNVX0NPTU1BTkRfU0VUKQorICAgIHsKKyAgICAgIE5PUl9XUklURShOT1JfQUREUl9TSElGVChkZXZpY2VhZGRyZXNzLCB1d05PUk1lbW9yeURhdGFXaWR0aCwgTk9SX0NNRF9BRERSRVNTX0ZJUlNUKSwgTk9SX0NNRF9EQVRBX0ZJUlNUKTsKKyAgICAgIE5PUl9XUklURShOT1JfQUREUl9TSElGVChkZXZpY2VhZGRyZXNzLCB1d05PUk1lbW9yeURhdGFXaWR0aCwgTk9SX0NNRF9BRERSRVNTX1NFQ09ORCksIE5PUl9DTURfREFUQV9TRUNPTkQpOworICAgICAgTk9SX1dSSVRFKE5PUl9BRERSX1NISUZUKGRldmljZWFkZHJlc3MsIHV3Tk9STWVtb3J5RGF0YVdpZHRoLCBOT1JfQ01EX0FERFJFU1NfVEhJUkQpLCBOT1JfQ01EX0RBVEFfQVVUT19TRUxFQ1QpOworICAgIH0KKyAgICBlbHNlIGlmIChobm9yLT5Db21tYW5kU2V0ID09IE5PUl9JTlRFTF9TSEFSUF9FWFRfQ09NTUFORF9TRVQpCisgICAgeworICAgICAgTk9SX1dSSVRFKGRldmljZWFkZHJlc3MsIE5PUl9DTURfREFUQV9BVVRPX1NFTEVDVCk7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAvKiBQcmltYXJ5IGNvbW1hbmQgc2V0IG5vdCBzdXBwb3J0ZWQgYnkgdGhlIGRyaXZlciAqLworICAgICAgc3RhdHVzID0gSEFMX0VSUk9SOworICAgIH0KKworICAgIGlmIChzdGF0dXMgIT0gSEFMX0VSUk9SKQorICAgIHsKKyAgICAgIC8qIFJlYWQgdGhlIE5PUiBJRHMgKi8KKyAgICAgIHBOT1JfSUQtPk1hbnVmYWN0dXJlcl9Db2RlID0gKihfX0lPIHVpbnQxNl90ICopIE5PUl9BRERSX1NISUZUKGRldmljZWFkZHJlc3MsIHV3Tk9STWVtb3J5RGF0YVdpZHRoLCBNQ19BRERSRVNTKTsKKyAgICAgIHBOT1JfSUQtPkRldmljZV9Db2RlMSAgICAgID0gKihfX0lPIHVpbnQxNl90ICopIE5PUl9BRERSX1NISUZUKGRldmljZWFkZHJlc3MsIHV3Tk9STWVtb3J5RGF0YVdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREVWSUNFX0NPREUxX0FERFIpOworICAgICAgcE5PUl9JRC0+RGV2aWNlX0NvZGUyICAgICAgPSAqKF9fSU8gdWludDE2X3QgKikgTk9SX0FERFJfU0hJRlQoZGV2aWNlYWRkcmVzcywgdXdOT1JNZW1vcnlEYXRhV2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBERVZJQ0VfQ09ERTJfQUREUik7CisgICAgICBwTk9SX0lELT5EZXZpY2VfQ29kZTMgICAgICA9ICooX19JTyB1aW50MTZfdCAqKSBOT1JfQUREUl9TSElGVChkZXZpY2VhZGRyZXNzLCB1d05PUk1lbW9yeURhdGFXaWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERFVklDRV9DT0RFM19BRERSKTsKKyAgICB9CisKKyAgICAvKiBDaGVjayB0aGUgTk9SIGNvbnRyb2xsZXIgc3RhdGUgKi8KKyAgICBobm9yLT5TdGF0ZSA9IHN0YXRlOworCisgICAgLyogUHJvY2VzcyB1bmxvY2tlZCAqLworICAgIF9fSEFMX1VOTE9DSyhobm9yKTsKKyAgfQorICBlbHNlCisgIHsKKyAgICByZXR1cm4gSEFMX0VSUk9SOworICB9CisKKyAgcmV0dXJuIHN0YXR1czsKIH0KIAogLyoqCkBAIC00MjIsNDg0ICs1MDIsNjY1IEBACiAgICovCiBIQUxfU3RhdHVzVHlwZURlZiBIQUxfTk9SX1JldHVyblRvUmVhZE1vZGUoTk9SX0hhbmRsZVR5cGVEZWYgKmhub3IpCiB7Ci0gIHVpbnQzMl90IGRldmljZWFkZHJlc3MgPSAwOyAgCi0gIAotICAvKiBQcm9jZXNzIExvY2tlZCAqLwotICBfX0hBTF9MT0NLKGhub3IpOwotICAKLSAgLyogQ2hlY2sgdGhlIE5PUiBjb250cm9sbGVyIHN0YXRlICovCi0gIGlmKGhub3ItPlN0YXRlID09IEhBTF9OT1JfU1RBVEVfQlVTWSkKLSAgewotICAgICByZXR1cm4gSEFMX0JVU1k7Ci0gIH0KLSAgCi0gIC8qIFNlbGVjdCB0aGUgTk9SIGRldmljZSBhZGRyZXNzICovCi0gIGlmIChobm9yLT5Jbml0Lk5TQmFuayA9PSBGTUNfTk9SU1JBTV9CQU5LMSkKLSAgewotICAgIGRldmljZWFkZHJlc3MgPSBOT1JfTUVNT1JZX0FEUkVTUzE7Ci0gIH0KLSAgZWxzZSBpZiAoaG5vci0+SW5pdC5OU0JhbmsgPT0gRk1DX05PUlNSQU1fQkFOSzIpCi0gIHsKLSAgICBkZXZpY2VhZGRyZXNzID0gTk9SX01FTU9SWV9BRFJFU1MyOwotICB9Ci0gIGVsc2UgaWYgKGhub3ItPkluaXQuTlNCYW5rID09IEZNQ19OT1JTUkFNX0JBTkszKQotICB7Ci0gICAgZGV2aWNlYWRkcmVzcyA9IE5PUl9NRU1PUllfQURSRVNTMzsKLSAgfQotICBlbHNlIC8qIEZNQ19OT1JTUkFNX0JBTks0ICovCi0gIHsKLSAgICBkZXZpY2VhZGRyZXNzID0gTk9SX01FTU9SWV9BRFJFU1M0OwotICB9ICAKLSAgCi0gIE5PUl9XUklURShkZXZpY2VhZGRyZXNzLCBOT1JfQ01EX0RBVEFfUkVBRF9SRVNFVCk7CisgIHVpbnQzMl90IGRldmljZWFkZHJlc3M7CisgIEhBTF9OT1JfU3RhdGVUeXBlRGVmIHN0YXRlOworICBIQUxfU3RhdHVzVHlwZURlZiBzdGF0dXMgPSBIQUxfT0s7CiAKICAgLyogQ2hlY2sgdGhlIE5PUiBjb250cm9sbGVyIHN0YXRlICovCi0gIGhub3ItPlN0YXRlID0gSEFMX05PUl9TVEFURV9SRUFEWTsKLSAgCi0gIC8qIFByb2Nlc3MgdW5sb2NrZWQgKi8KLSAgX19IQUxfVU5MT0NLKGhub3IpOyAgIAotICAKLSAgcmV0dXJuIEhBTF9PSzsKKyAgc3RhdGUgPSBobm9yLT5TdGF0ZTsKKyAgaWYgKHN0YXRlID09IEhBTF9OT1JfU1RBVEVfQlVTWSkKKyAgeworICAgIHJldHVybiBIQUxfQlVTWTsKKyAgfQorICBlbHNlIGlmICgoc3RhdGUgPT0gSEFMX05PUl9TVEFURV9SRUFEWSkgfHwgKHN0YXRlID09IEhBTF9OT1JfU1RBVEVfUFJPVEVDVEVEKSkKKyAgeworICAgIC8qIFByb2Nlc3MgTG9ja2VkICovCisgICAgX19IQUxfTE9DSyhobm9yKTsKKworICAgIC8qIFVwZGF0ZSB0aGUgTk9SIGNvbnRyb2xsZXIgc3RhdGUgKi8KKyAgICBobm9yLT5TdGF0ZSA9IEhBTF9OT1JfU1RBVEVfQlVTWTsKKworICAgIC8qIFNlbGVjdCB0aGUgTk9SIGRldmljZSBhZGRyZXNzICovCisgICAgaWYgKGhub3ItPkluaXQuTlNCYW5rID09IEZNQ19OT1JTUkFNX0JBTksxKQorICAgIHsKKyAgICAgIGRldmljZWFkZHJlc3MgPSBOT1JfTUVNT1JZX0FEUkVTUzE7CisgICAgfQorICAgIGVsc2UgaWYgKGhub3ItPkluaXQuTlNCYW5rID09IEZNQ19OT1JTUkFNX0JBTksyKQorICAgIHsKKyAgICAgIGRldmljZWFkZHJlc3MgPSBOT1JfTUVNT1JZX0FEUkVTUzI7CisgICAgfQorICAgIGVsc2UgaWYgKGhub3ItPkluaXQuTlNCYW5rID09IEZNQ19OT1JTUkFNX0JBTkszKQorICAgIHsKKyAgICAgIGRldmljZWFkZHJlc3MgPSBOT1JfTUVNT1JZX0FEUkVTUzM7CisgICAgfQorICAgIGVsc2UgLyogRk1DX05PUlNSQU1fQkFOSzQgKi8KKyAgICB7CisgICAgICBkZXZpY2VhZGRyZXNzID0gTk9SX01FTU9SWV9BRFJFU1M0OworICAgIH0KKworICAgIGlmIChobm9yLT5Db21tYW5kU2V0ID09IE5PUl9BTURfRlVKSVRTVV9DT01NQU5EX1NFVCkKKyAgICB7CisgICAgICBOT1JfV1JJVEUoZGV2aWNlYWRkcmVzcywgTk9SX0NNRF9EQVRBX1JFQURfUkVTRVQpOworICAgIH0KKyAgICBlbHNlIGlmIChobm9yLT5Db21tYW5kU2V0ID09IE5PUl9JTlRFTF9TSEFSUF9FWFRfQ09NTUFORF9TRVQpCisgICAgeworICAgICAgTk9SX1dSSVRFKGRldmljZWFkZHJlc3MsIE5PUl9DTURfUkVBRF9BUlJBWSk7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAvKiBQcmltYXJ5IGNvbW1hbmQgc2V0IG5vdCBzdXBwb3J0ZWQgYnkgdGhlIGRyaXZlciAqLworICAgICAgc3RhdHVzID0gSEFMX0VSUk9SOworICAgIH0KKworICAgIC8qIENoZWNrIHRoZSBOT1IgY29udHJvbGxlciBzdGF0ZSAqLworICAgIGhub3ItPlN0YXRlID0gc3RhdGU7CisKKyAgICAvKiBQcm9jZXNzIHVubG9ja2VkICovCisgICAgX19IQUxfVU5MT0NLKGhub3IpOworICB9CisgIGVsc2UKKyAgeworICAgIHJldHVybiBIQUxfRVJST1I7CisgIH0KKworICByZXR1cm4gc3RhdHVzOwogfQogCiAvKioKLSAgKiBAYnJpZWYgIFJlYWQgZGF0YSBmcm9tIE5PUiBtZW1vcnkgCisgICogQGJyaWVmICBSZWFkIGRhdGEgZnJvbSBOT1IgbWVtb3J5CiAgICogQHBhcmFtICBobm9yIHBvaW50ZXIgdG8gYSBOT1JfSGFuZGxlVHlwZURlZiBzdHJ1Y3R1cmUgdGhhdCBjb250YWlucwogICAqICAgICAgICAgICAgICAgIHRoZSBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uIGZvciBOT1IgbW9kdWxlLgogICAqIEBwYXJhbSAgcEFkZHJlc3MgcG9pbnRlciB0byBEZXZpY2UgYWRkcmVzcwotICAqIEBwYXJhbSAgcERhdGEgIHBvaW50ZXIgdG8gcmVhZCBkYXRhICAKKyAgKiBAcGFyYW0gIHBEYXRhICBwb2ludGVyIHRvIHJlYWQgZGF0YQogICAqIEByZXR2YWwgSEFMIHN0YXR1cwogICAqLwogSEFMX1N0YXR1c1R5cGVEZWYgSEFMX05PUl9SZWFkKE5PUl9IYW5kbGVUeXBlRGVmICpobm9yLCB1aW50MzJfdCAqcEFkZHJlc3MsIHVpbnQxNl90ICpwRGF0YSkKIHsKLSAgdWludDMyX3QgZGV2aWNlYWRkcmVzcyA9IDA7Ci0gIAotICAvKiBQcm9jZXNzIExvY2tlZCAqLwotICBfX0hBTF9MT0NLKGhub3IpOwotICAKLSAgLyogQ2hlY2sgdGhlIE5PUiBjb250cm9sbGVyIHN0YXRlICovCi0gIGlmKGhub3ItPlN0YXRlID09IEhBTF9OT1JfU1RBVEVfQlVTWSkKLSAgewotICAgICByZXR1cm4gSEFMX0JVU1k7Ci0gIH0KLSAgCi0gIC8qIFNlbGVjdCB0aGUgTk9SIGRldmljZSBhZGRyZXNzICovCi0gIGlmIChobm9yLT5Jbml0Lk5TQmFuayA9PSBGTUNfTk9SU1JBTV9CQU5LMSkKLSAgewotICAgIGRldmljZWFkZHJlc3MgPSBOT1JfTUVNT1JZX0FEUkVTUzE7Ci0gIH0KLSAgZWxzZSBpZiAoaG5vci0+SW5pdC5OU0JhbmsgPT0gRk1DX05PUlNSQU1fQkFOSzIpCi0gIHsKLSAgICBkZXZpY2VhZGRyZXNzID0gTk9SX01FTU9SWV9BRFJFU1MyOwotICB9Ci0gIGVsc2UgaWYgKGhub3ItPkluaXQuTlNCYW5rID09IEZNQ19OT1JTUkFNX0JBTkszKQotICB7Ci0gICAgZGV2aWNlYWRkcmVzcyA9IE5PUl9NRU1PUllfQURSRVNTMzsKLSAgfQotICBlbHNlIC8qIEZNQ19OT1JTUkFNX0JBTks0ICovCi0gIHsKLSAgICBkZXZpY2VhZGRyZXNzID0gTk9SX01FTU9SWV9BRFJFU1M0OwotICB9IAotICAgIAotICAvKiBVcGRhdGUgdGhlIE5PUiBjb250cm9sbGVyIHN0YXRlICovCi0gIGhub3ItPlN0YXRlID0gSEFMX05PUl9TVEFURV9CVVNZOwotICAKLSAgLyogU2VuZCByZWFkIGRhdGEgY29tbWFuZCAqLwotICBOT1JfV1JJVEUoTk9SX0FERFJfU0hJRlQoZGV2aWNlYWRkcmVzcywgdXdOT1JNZW1vcnlEYXRhV2lkdGgsIE5PUl9DTURfQUREUkVTU19GSVJTVCksIE5PUl9DTURfREFUQV9GSVJTVCk7IAotICBOT1JfV1JJVEUoTk9SX0FERFJfU0hJRlQoZGV2aWNlYWRkcmVzcywgdXdOT1JNZW1vcnlEYXRhV2lkdGgsIE5PUl9DTURfQUREUkVTU19TRUNPTkQpLCBOT1JfQ01EX0RBVEFfU0VDT05EKTsgIAotICBOT1JfV1JJVEUoTk9SX0FERFJfU0hJRlQoZGV2aWNlYWRkcmVzcywgdXdOT1JNZW1vcnlEYXRhV2lkdGgsIE5PUl9DTURfQUREUkVTU19USElSRCksIE5PUl9DTURfREFUQV9SRUFEX1JFU0VUKTsKKyAgdWludDMyX3QgZGV2aWNlYWRkcmVzczsKKyAgSEFMX05PUl9TdGF0ZVR5cGVEZWYgc3RhdGU7CisgIEhBTF9TdGF0dXNUeXBlRGVmIHN0YXR1cyA9IEhBTF9PSzsKIAotICAvKiBSZWFkIHRoZSBkYXRhICovCi0gICpwRGF0YSA9ICooX19JTyB1aW50MzJfdCAqKSh1aW50MzJfdClwQWRkcmVzczsKLSAgCiAgIC8qIENoZWNrIHRoZSBOT1IgY29udHJvbGxlciBzdGF0ZSAqLwotICBobm9yLT5TdGF0ZSA9IEhBTF9OT1JfU1RBVEVfUkVBRFk7Ci0gIAotICAvKiBQcm9jZXNzIHVubG9ja2VkICovCi0gIF9fSEFMX1VOTE9DSyhobm9yKTsKLSAgCi0gIHJldHVybiBIQUxfT0s7ICAKKyAgc3RhdGUgPSBobm9yLT5TdGF0ZTsKKyAgaWYgKHN0YXRlID09IEhBTF9OT1JfU1RBVEVfQlVTWSkKKyAgeworICAgIHJldHVybiBIQUxfQlVTWTsKKyAgfQorICBlbHNlIGlmICgoc3RhdGUgPT0gSEFMX05PUl9TVEFURV9SRUFEWSkgfHwgKHN0YXRlID09IEhBTF9OT1JfU1RBVEVfUFJPVEVDVEVEKSkKKyAgeworICAgIC8qIFByb2Nlc3MgTG9ja2VkICovCisgICAgX19IQUxfTE9DSyhobm9yKTsKKworICAgIC8qIFVwZGF0ZSB0aGUgTk9SIGNvbnRyb2xsZXIgc3RhdGUgKi8KKyAgICBobm9yLT5TdGF0ZSA9IEhBTF9OT1JfU1RBVEVfQlVTWTsKKworICAgIC8qIFNlbGVjdCB0aGUgTk9SIGRldmljZSBhZGRyZXNzICovCisgICAgaWYgKGhub3ItPkluaXQuTlNCYW5rID09IEZNQ19OT1JTUkFNX0JBTksxKQorICAgIHsKKyAgICAgIGRldmljZWFkZHJlc3MgPSBOT1JfTUVNT1JZX0FEUkVTUzE7CisgICAgfQorICAgIGVsc2UgaWYgKGhub3ItPkluaXQuTlNCYW5rID09IEZNQ19OT1JTUkFNX0JBTksyKQorICAgIHsKKyAgICAgIGRldmljZWFkZHJlc3MgPSBOT1JfTUVNT1JZX0FEUkVTUzI7CisgICAgfQorICAgIGVsc2UgaWYgKGhub3ItPkluaXQuTlNCYW5rID09IEZNQ19OT1JTUkFNX0JBTkszKQorICAgIHsKKyAgICAgIGRldmljZWFkZHJlc3MgPSBOT1JfTUVNT1JZX0FEUkVTUzM7CisgICAgfQorICAgIGVsc2UgLyogRk1DX05PUlNSQU1fQkFOSzQgKi8KKyAgICB7CisgICAgICBkZXZpY2VhZGRyZXNzID0gTk9SX01FTU9SWV9BRFJFU1M0OworICAgIH0KKworICAgIC8qIFNlbmQgcmVhZCBkYXRhIGNvbW1hbmQgKi8KKyAgICBpZiAoaG5vci0+Q29tbWFuZFNldCA9PSBOT1JfQU1EX0ZVSklUU1VfQ09NTUFORF9TRVQpCisgICAgeworICAgICAgTk9SX1dSSVRFKE5PUl9BRERSX1NISUZUKGRldmljZWFkZHJlc3MsIHV3Tk9STWVtb3J5RGF0YVdpZHRoLCBOT1JfQ01EX0FERFJFU1NfRklSU1QpLCBOT1JfQ01EX0RBVEFfRklSU1QpOworICAgICAgTk9SX1dSSVRFKE5PUl9BRERSX1NISUZUKGRldmljZWFkZHJlc3MsIHV3Tk9STWVtb3J5RGF0YVdpZHRoLCBOT1JfQ01EX0FERFJFU1NfU0VDT05EKSwgTk9SX0NNRF9EQVRBX1NFQ09ORCk7CisgICAgICBOT1JfV1JJVEUoTk9SX0FERFJfU0hJRlQoZGV2aWNlYWRkcmVzcywgdXdOT1JNZW1vcnlEYXRhV2lkdGgsIE5PUl9DTURfQUREUkVTU19USElSRCksIE5PUl9DTURfREFUQV9SRUFEX1JFU0VUKTsKKyAgICB9CisgICAgZWxzZSBpZiAoaG5vci0+Q29tbWFuZFNldCA9PSBOT1JfSU5URUxfU0hBUlBfRVhUX0NPTU1BTkRfU0VUKQorICAgIHsKKyAgICAgIE5PUl9XUklURShwQWRkcmVzcywgTk9SX0NNRF9SRUFEX0FSUkFZKTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgIC8qIFByaW1hcnkgY29tbWFuZCBzZXQgbm90IHN1cHBvcnRlZCBieSB0aGUgZHJpdmVyICovCisgICAgICBzdGF0dXMgPSBIQUxfRVJST1I7CisgICAgfQorCisgICAgaWYgKHN0YXR1cyAhPSBIQUxfRVJST1IpCisgICAgeworICAgICAgLyogUmVhZCB0aGUgZGF0YSAqLworICAgICAgKnBEYXRhID0gKHVpbnQxNl90KSgqKF9fSU8gdWludDMyX3QgKilwQWRkcmVzcyk7CisgICAgfQorCisgICAgLyogQ2hlY2sgdGhlIE5PUiBjb250cm9sbGVyIHN0YXRlICovCisgICAgaG5vci0+U3RhdGUgPSBzdGF0ZTsKKworICAgIC8qIFByb2Nlc3MgdW5sb2NrZWQgKi8KKyAgICBfX0hBTF9VTkxPQ0soaG5vcik7CisgIH0KKyAgZWxzZQorICB7CisgICAgcmV0dXJuIEhBTF9FUlJPUjsKKyAgfQorCisgIHJldHVybiBzdGF0dXM7CiB9CiAKIC8qKgotICAqIEBicmllZiAgUHJvZ3JhbSBkYXRhIHRvIE5PUiBtZW1vcnkgCisgICogQGJyaWVmICBQcm9ncmFtIGRhdGEgdG8gTk9SIG1lbW9yeQogICAqIEBwYXJhbSAgaG5vciBwb2ludGVyIHRvIGEgTk9SX0hhbmRsZVR5cGVEZWYgc3RydWN0dXJlIHRoYXQgY29udGFpbnMKICAgKiAgICAgICAgICAgICAgICB0aGUgY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbiBmb3IgTk9SIG1vZHVsZS4KICAgKiBAcGFyYW0gIHBBZGRyZXNzIERldmljZSBhZGRyZXNzCi0gICogQHBhcmFtICBwRGF0YSAgcG9pbnRlciB0byB0aGUgZGF0YSB0byB3cml0ZSAgIAorICAqIEBwYXJhbSAgcERhdGEgIHBvaW50ZXIgdG8gdGhlIGRhdGEgdG8gd3JpdGUKICAgKiBAcmV0dmFsIEhBTCBzdGF0dXMKICAgKi8KIEhBTF9TdGF0dXNUeXBlRGVmIEhBTF9OT1JfUHJvZ3JhbShOT1JfSGFuZGxlVHlwZURlZiAqaG5vciwgdWludDMyX3QgKnBBZGRyZXNzLCB1aW50MTZfdCAqcERhdGEpCiB7Ci0gIHVpbnQzMl90IGRldmljZWFkZHJlc3MgPSAwOwotICAKLSAgLyogUHJvY2VzcyBMb2NrZWQgKi8KLSAgX19IQUxfTE9DSyhobm9yKTsKLSAgCi0gIC8qIENoZWNrIHRoZSBOT1IgY29udHJvbGxlciBzdGF0ZSAqLwotICBpZihobm9yLT5TdGF0ZSA9PSBIQUxfTk9SX1NUQVRFX0JVU1kpCi0gIHsKLSAgICAgcmV0dXJuIEhBTF9CVVNZOwotICB9Ci0gIAotICAvKiBTZWxlY3QgdGhlIE5PUiBkZXZpY2UgYWRkcmVzcyAqLwotICBpZiAoaG5vci0+SW5pdC5OU0JhbmsgPT0gRk1DX05PUlNSQU1fQkFOSzEpCi0gIHsKLSAgICBkZXZpY2VhZGRyZXNzID0gTk9SX01FTU9SWV9BRFJFU1MxOwotICB9Ci0gIGVsc2UgaWYgKGhub3ItPkluaXQuTlNCYW5rID09IEZNQ19OT1JTUkFNX0JBTksyKQotICB7Ci0gICAgZGV2aWNlYWRkcmVzcyA9IE5PUl9NRU1PUllfQURSRVNTMjsKLSAgfQotICBlbHNlIGlmIChobm9yLT5Jbml0Lk5TQmFuayA9PSBGTUNfTk9SU1JBTV9CQU5LMykKLSAgewotICAgIGRldmljZWFkZHJlc3MgPSBOT1JfTUVNT1JZX0FEUkVTUzM7Ci0gIH0KLSAgZWxzZSAvKiBGTUNfTk9SU1JBTV9CQU5LNCAqLwotICB7Ci0gICAgZGV2aWNlYWRkcmVzcyA9IE5PUl9NRU1PUllfQURSRVNTNDsKLSAgfSAKLSAgICAKLSAgLyogVXBkYXRlIHRoZSBOT1IgY29udHJvbGxlciBzdGF0ZSAqLwotICBobm9yLT5TdGF0ZSA9IEhBTF9OT1JfU1RBVEVfQlVTWTsKLSAgCi0gIC8qIFNlbmQgcHJvZ3JhbSBkYXRhIGNvbW1hbmQgKi8KLSAgTk9SX1dSSVRFKE5PUl9BRERSX1NISUZUKGRldmljZWFkZHJlc3MsIHV3Tk9STWVtb3J5RGF0YVdpZHRoLCBOT1JfQ01EX0FERFJFU1NfRklSU1QpLCBOT1JfQ01EX0RBVEFfRklSU1QpOwotICBOT1JfV1JJVEUoTk9SX0FERFJfU0hJRlQoZGV2aWNlYWRkcmVzcywgdXdOT1JNZW1vcnlEYXRhV2lkdGgsIE5PUl9DTURfQUREUkVTU19TRUNPTkQpLCBOT1JfQ01EX0RBVEFfU0VDT05EKTsKLSAgTk9SX1dSSVRFKE5PUl9BRERSX1NISUZUKGRldmljZWFkZHJlc3MsIHV3Tk9STWVtb3J5RGF0YVdpZHRoLCBOT1JfQ01EX0FERFJFU1NfVEhJUkQpLCBOT1JfQ01EX0RBVEFfUFJPR1JBTSk7CisgIHVpbnQzMl90IGRldmljZWFkZHJlc3M7CisgIEhBTF9TdGF0dXNUeXBlRGVmIHN0YXR1cyA9IEhBTF9PSzsKIAotICAvKiBXcml0ZSB0aGUgZGF0YSAqLwotICBOT1JfV1JJVEUocEFkZHJlc3MsICpwRGF0YSk7Ci0gIAogICAvKiBDaGVjayB0aGUgTk9SIGNvbnRyb2xsZXIgc3RhdGUgKi8KLSAgaG5vci0+U3RhdGUgPSBIQUxfTk9SX1NUQVRFX1JFQURZOwotICAKLSAgLyogUHJvY2VzcyB1bmxvY2tlZCAqLwotICBfX0hBTF9VTkxPQ0soaG5vcik7Ci0gIAotICByZXR1cm4gSEFMX09LOyAgCisgIGlmIChobm9yLT5TdGF0ZSA9PSBIQUxfTk9SX1NUQVRFX0JVU1kpCisgIHsKKyAgICByZXR1cm4gSEFMX0JVU1k7CisgIH0KKyAgZWxzZSBpZiAoaG5vci0+U3RhdGUgPT0gSEFMX05PUl9TVEFURV9SRUFEWSkKKyAgeworICAgIC8qIFByb2Nlc3MgTG9ja2VkICovCisgICAgX19IQUxfTE9DSyhobm9yKTsKKworICAgIC8qIFVwZGF0ZSB0aGUgTk9SIGNvbnRyb2xsZXIgc3RhdGUgKi8KKyAgICBobm9yLT5TdGF0ZSA9IEhBTF9OT1JfU1RBVEVfQlVTWTsKKworICAgIC8qIFNlbGVjdCB0aGUgTk9SIGRldmljZSBhZGRyZXNzICovCisgICAgaWYgKGhub3ItPkluaXQuTlNCYW5rID09IEZNQ19OT1JTUkFNX0JBTksxKQorICAgIHsKKyAgICAgIGRldmljZWFkZHJlc3MgPSBOT1JfTUVNT1JZX0FEUkVTUzE7CisgICAgfQorICAgIGVsc2UgaWYgKGhub3ItPkluaXQuTlNCYW5rID09IEZNQ19OT1JTUkFNX0JBTksyKQorICAgIHsKKyAgICAgIGRldmljZWFkZHJlc3MgPSBOT1JfTUVNT1JZX0FEUkVTUzI7CisgICAgfQorICAgIGVsc2UgaWYgKGhub3ItPkluaXQuTlNCYW5rID09IEZNQ19OT1JTUkFNX0JBTkszKQorICAgIHsKKyAgICAgIGRldmljZWFkZHJlc3MgPSBOT1JfTUVNT1JZX0FEUkVTUzM7CisgICAgfQorICAgIGVsc2UgLyogRk1DX05PUlNSQU1fQkFOSzQgKi8KKyAgICB7CisgICAgICBkZXZpY2VhZGRyZXNzID0gTk9SX01FTU9SWV9BRFJFU1M0OworICAgIH0KKworICAgIC8qIFNlbmQgcHJvZ3JhbSBkYXRhIGNvbW1hbmQgKi8KKyAgICBpZiAoaG5vci0+Q29tbWFuZFNldCA9PSBOT1JfQU1EX0ZVSklUU1VfQ09NTUFORF9TRVQpCisgICAgeworICAgICAgTk9SX1dSSVRFKE5PUl9BRERSX1NISUZUKGRldmljZWFkZHJlc3MsIHV3Tk9STWVtb3J5RGF0YVdpZHRoLCBOT1JfQ01EX0FERFJFU1NfRklSU1QpLCBOT1JfQ01EX0RBVEFfRklSU1QpOworICAgICAgTk9SX1dSSVRFKE5PUl9BRERSX1NISUZUKGRldmljZWFkZHJlc3MsIHV3Tk9STWVtb3J5RGF0YVdpZHRoLCBOT1JfQ01EX0FERFJFU1NfU0VDT05EKSwgTk9SX0NNRF9EQVRBX1NFQ09ORCk7CisgICAgICBOT1JfV1JJVEUoTk9SX0FERFJfU0hJRlQoZGV2aWNlYWRkcmVzcywgdXdOT1JNZW1vcnlEYXRhV2lkdGgsIE5PUl9DTURfQUREUkVTU19USElSRCksIE5PUl9DTURfREFUQV9QUk9HUkFNKTsKKyAgICB9CisgICAgZWxzZSBpZiAoaG5vci0+Q29tbWFuZFNldCA9PSBOT1JfSU5URUxfU0hBUlBfRVhUX0NPTU1BTkRfU0VUKQorICAgIHsKKyAgICAgIE5PUl9XUklURShwQWRkcmVzcywgTk9SX0NNRF9XT1JEX1BST0dSQU0pOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgLyogUHJpbWFyeSBjb21tYW5kIHNldCBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBkcml2ZXIgKi8KKyAgICAgIHN0YXR1cyA9IEhBTF9FUlJPUjsKKyAgICB9CisKKyAgICBpZiAoc3RhdHVzICE9IEhBTF9FUlJPUikKKyAgICB7CisgICAgICAvKiBXcml0ZSB0aGUgZGF0YSAqLworICAgICAgTk9SX1dSSVRFKHBBZGRyZXNzLCAqcERhdGEpOworICAgIH0KKworICAgIC8qIENoZWNrIHRoZSBOT1IgY29udHJvbGxlciBzdGF0ZSAqLworICAgIGhub3ItPlN0YXRlID0gSEFMX05PUl9TVEFURV9SRUFEWTsKKworICAgIC8qIFByb2Nlc3MgdW5sb2NrZWQgKi8KKyAgICBfX0hBTF9VTkxPQ0soaG5vcik7CisgIH0KKyAgZWxzZQorICB7CisgICAgcmV0dXJuIEhBTF9FUlJPUjsKKyAgfQorCisgIHJldHVybiBzdGF0dXM7CiB9CiAKIC8qKgogICAqIEBicmllZiAgUmVhZHMgYSBoYWxmLXdvcmQgYnVmZmVyIGZyb20gdGhlIE5PUiBtZW1vcnkuCiAgICogQHBhcmFtICBobm9yIHBvaW50ZXIgdG8gdGhlIE5PUiBoYW5kbGUKICAgKiBAcGFyYW0gIHV3QWRkcmVzcyBOT1IgbWVtb3J5IGludGVybmFsIGFkZHJlc3MgdG8gcmVhZCBmcm9tLgotICAqIEBwYXJhbSAgcERhdGEgcG9pbnRlciB0byB0aGUgYnVmZmVyIHRoYXQgcmVjZWl2ZXMgdGhlIGRhdGEgcmVhZCBmcm9tIHRoZSAKKyAgKiBAcGFyYW0gIHBEYXRhIHBvaW50ZXIgdG8gdGhlIGJ1ZmZlciB0aGF0IHJlY2VpdmVzIHRoZSBkYXRhIHJlYWQgZnJvbSB0aGUKICAgKiAgICAgICAgIE5PUiBtZW1vcnkuCiAgICogQHBhcmFtICB1d0J1ZmZlclNpemUgIG51bWJlciBvZiBIYWxmIHdvcmQgdG8gcmVhZC4KICAgKiBAcmV0dmFsIEhBTCBzdGF0dXMKICAgKi8KLUhBTF9TdGF0dXNUeXBlRGVmIEhBTF9OT1JfUmVhZEJ1ZmZlcihOT1JfSGFuZGxlVHlwZURlZiAqaG5vciwgdWludDMyX3QgdXdBZGRyZXNzLCB1aW50MTZfdCAqcERhdGEsIHVpbnQzMl90IHV3QnVmZmVyU2l6ZSkKK0hBTF9TdGF0dXNUeXBlRGVmIEhBTF9OT1JfUmVhZEJ1ZmZlcihOT1JfSGFuZGxlVHlwZURlZiAqaG5vciwgdWludDMyX3QgdXdBZGRyZXNzLCB1aW50MTZfdCAqcERhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgdXdCdWZmZXJTaXplKQogewotICB1aW50MzJfdCBkZXZpY2VhZGRyZXNzID0gMDsKLSAgCi0gIC8qIFByb2Nlc3MgTG9ja2VkICovCi0gIF9fSEFMX0xPQ0soaG5vcik7Ci0gIAorICB1aW50MzJfdCBkZXZpY2VhZGRyZXNzOworICB1aW50MzJfdCBzaXplID0gdXdCdWZmZXJTaXplOworICB1aW50MzJfdCBhZGRyZXNzID0gdXdBZGRyZXNzOworICB1aW50MTZfdCAqZGF0YSA9IHBEYXRhOworICBIQUxfTk9SX1N0YXRlVHlwZURlZiBzdGF0ZTsKKyAgSEFMX1N0YXR1c1R5cGVEZWYgc3RhdHVzID0gSEFMX09LOworCiAgIC8qIENoZWNrIHRoZSBOT1IgY29udHJvbGxlciBzdGF0ZSAqLwotICBpZihobm9yLT5TdGF0ZSA9PSBIQUxfTk9SX1NUQVRFX0JVU1kpCisgIHN0YXRlID0gaG5vci0+U3RhdGU7CisgIGlmIChzdGF0ZSA9PSBIQUxfTk9SX1NUQVRFX0JVU1kpCiAgIHsKLSAgICAgcmV0dXJuIEhBTF9CVVNZOworICAgIHJldHVybiBIQUxfQlVTWTsKICAgfQotICAKLSAgLyogU2VsZWN0IHRoZSBOT1IgZGV2aWNlIGFkZHJlc3MgKi8KLSAgaWYgKGhub3ItPkluaXQuTlNCYW5rID09IEZNQ19OT1JTUkFNX0JBTksxKQorICBlbHNlIGlmICgoc3RhdGUgPT0gSEFMX05PUl9TVEFURV9SRUFEWSkgfHwgKHN0YXRlID09IEhBTF9OT1JfU1RBVEVfUFJPVEVDVEVEKSkKICAgewotICAgIGRldmljZWFkZHJlc3MgPSBOT1JfTUVNT1JZX0FEUkVTUzE7CisgICAgLyogUHJvY2VzcyBMb2NrZWQgKi8KKyAgICBfX0hBTF9MT0NLKGhub3IpOworCisgICAgLyogVXBkYXRlIHRoZSBOT1IgY29udHJvbGxlciBzdGF0ZSAqLworICAgIGhub3ItPlN0YXRlID0gSEFMX05PUl9TVEFURV9CVVNZOworCisgICAgLyogU2VsZWN0IHRoZSBOT1IgZGV2aWNlIGFkZHJlc3MgKi8KKyAgICBpZiAoaG5vci0+SW5pdC5OU0JhbmsgPT0gRk1DX05PUlNSQU1fQkFOSzEpCisgICAgeworICAgICAgZGV2aWNlYWRkcmVzcyA9IE5PUl9NRU1PUllfQURSRVNTMTsKKyAgICB9CisgICAgZWxzZSBpZiAoaG5vci0+SW5pdC5OU0JhbmsgPT0gRk1DX05PUlNSQU1fQkFOSzIpCisgICAgeworICAgICAgZGV2aWNlYWRkcmVzcyA9IE5PUl9NRU1PUllfQURSRVNTMjsKKyAgICB9CisgICAgZWxzZSBpZiAoaG5vci0+SW5pdC5OU0JhbmsgPT0gRk1DX05PUlNSQU1fQkFOSzMpCisgICAgeworICAgICAgZGV2aWNlYWRkcmVzcyA9IE5PUl9NRU1PUllfQURSRVNTMzsKKyAgICB9CisgICAgZWxzZSAvKiBGTUNfTk9SU1JBTV9CQU5LNCAqLworICAgIHsKKyAgICAgIGRldmljZWFkZHJlc3MgPSBOT1JfTUVNT1JZX0FEUkVTUzQ7CisgICAgfQorCisgICAgLyogU2VuZCByZWFkIGRhdGEgY29tbWFuZCAqLworICAgIGlmIChobm9yLT5Db21tYW5kU2V0ID09IE5PUl9BTURfRlVKSVRTVV9DT01NQU5EX1NFVCkKKyAgICB7CisgICAgICBOT1JfV1JJVEUoTk9SX0FERFJfU0hJRlQoZGV2aWNlYWRkcmVzcywgdXdOT1JNZW1vcnlEYXRhV2lkdGgsIE5PUl9DTURfQUREUkVTU19GSVJTVCksIE5PUl9DTURfREFUQV9GSVJTVCk7CisgICAgICBOT1JfV1JJVEUoTk9SX0FERFJfU0hJRlQoZGV2aWNlYWRkcmVzcywgdXdOT1JNZW1vcnlEYXRhV2lkdGgsIE5PUl9DTURfQUREUkVTU19TRUNPTkQpLCBOT1JfQ01EX0RBVEFfU0VDT05EKTsKKyAgICAgIE5PUl9XUklURShOT1JfQUREUl9TSElGVChkZXZpY2VhZGRyZXNzLCB1d05PUk1lbW9yeURhdGFXaWR0aCwgTk9SX0NNRF9BRERSRVNTX1RISVJEKSwgTk9SX0NNRF9EQVRBX1JFQURfUkVTRVQpOworICAgIH0KKyAgICBlbHNlIGlmIChobm9yLT5Db21tYW5kU2V0ID09IE5PUl9JTlRFTF9TSEFSUF9FWFRfQ09NTUFORF9TRVQpCisgICAgeworICAgICAgTk9SX1dSSVRFKGRldmljZWFkZHJlc3MsIE5PUl9DTURfUkVBRF9BUlJBWSk7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAvKiBQcmltYXJ5IGNvbW1hbmQgc2V0IG5vdCBzdXBwb3J0ZWQgYnkgdGhlIGRyaXZlciAqLworICAgICAgc3RhdHVzID0gSEFMX0VSUk9SOworICAgIH0KKworICAgIGlmIChzdGF0dXMgIT0gSEFMX0VSUk9SKQorICAgIHsKKyAgICAgIC8qIFJlYWQgYnVmZmVyICovCisgICAgICB3aGlsZSAoc2l6ZSA+IDBVKQorICAgICAgeworICAgICAgICAqZGF0YSA9ICooX19JTyB1aW50MTZfdCAqKWFkZHJlc3M7CisgICAgICAgIGRhdGErKzsKKyAgICAgICAgYWRkcmVzcyArPSAyVTsKKyAgICAgICAgc2l6ZS0tOworICAgICAgfQorICAgIH0KKworICAgIC8qIENoZWNrIHRoZSBOT1IgY29udHJvbGxlciBzdGF0ZSAqLworICAgIGhub3ItPlN0YXRlID0gc3RhdGU7CisKKyAgICAvKiBQcm9jZXNzIHVubG9ja2VkICovCisgICAgX19IQUxfVU5MT0NLKGhub3IpOwogICB9Ci0gIGVsc2UgaWYgKGhub3ItPkluaXQuTlNCYW5rID09IEZNQ19OT1JTUkFNX0JBTksyKQorICBlbHNlCiAgIHsKLSAgICBkZXZpY2VhZGRyZXNzID0gTk9SX01FTU9SWV9BRFJFU1MyOworICAgIHJldHVybiBIQUxfRVJST1I7CiAgIH0KLSAgZWxzZSBpZiAoaG5vci0+SW5pdC5OU0JhbmsgPT0gRk1DX05PUlNSQU1fQkFOSzMpCi0gIHsKLSAgICBkZXZpY2VhZGRyZXNzID0gTk9SX01FTU9SWV9BRFJFU1MzOwotICB9Ci0gIGVsc2UgLyogRk1DX05PUlNSQU1fQkFOSzQgKi8KLSAgewotICAgIGRldmljZWFkZHJlc3MgPSBOT1JfTUVNT1JZX0FEUkVTUzQ7Ci0gIH0gIAotICAgIAotICAvKiBVcGRhdGUgdGhlIE5PUiBjb250cm9sbGVyIHN0YXRlICovCi0gIGhub3ItPlN0YXRlID0gSEFMX05PUl9TVEFURV9CVVNZOwotICAKLSAgLyogU2VuZCByZWFkIGRhdGEgY29tbWFuZCAqLwotICBOT1JfV1JJVEUoTk9SX0FERFJfU0hJRlQoZGV2aWNlYWRkcmVzcywgdXdOT1JNZW1vcnlEYXRhV2lkdGgsIE5PUl9DTURfQUREUkVTU19GSVJTVCksIE5PUl9DTURfREFUQV9GSVJTVCk7IAotICBOT1JfV1JJVEUoTk9SX0FERFJfU0hJRlQoZGV2aWNlYWRkcmVzcywgdXdOT1JNZW1vcnlEYXRhV2lkdGgsIE5PUl9DTURfQUREUkVTU19TRUNPTkQpLCBOT1JfQ01EX0RBVEFfU0VDT05EKTsgIAotICBOT1JfV1JJVEUoTk9SX0FERFJfU0hJRlQoZGV2aWNlYWRkcmVzcywgdXdOT1JNZW1vcnlEYXRhV2lkdGgsIE5PUl9DTURfQUREUkVTU19USElSRCksIE5PUl9DTURfREFUQV9SRUFEX1JFU0VUKTsKLSAgCi0gIC8qIFJlYWQgYnVmZmVyICovCi0gIHdoaWxlKCB1d0J1ZmZlclNpemUgPiAwKSAKLSAgewotICAgICpwRGF0YSsrID0gKihfX0lPIHVpbnQxNl90ICopdXdBZGRyZXNzOwotICAgIHV3QWRkcmVzcyArPSAyOwotICAgIHV3QnVmZmVyU2l6ZS0tOwotICB9IAotICAKLSAgLyogQ2hlY2sgdGhlIE5PUiBjb250cm9sbGVyIHN0YXRlICovCi0gIGhub3ItPlN0YXRlID0gSEFMX05PUl9TVEFURV9SRUFEWTsKLSAgCi0gIC8qIFByb2Nlc3MgdW5sb2NrZWQgKi8KLSAgX19IQUxfVU5MT0NLKGhub3IpOwotICAKLSAgcmV0dXJuIEhBTF9PSzsgIAorCisgIHJldHVybiBzdGF0dXM7CiB9CiAKIC8qKgotICAqIEBicmllZiAgV3JpdGVzIGEgaGFsZi13b3JkIGJ1ZmZlciB0byB0aGUgTk9SIG1lbW9yeS4gVGhpcyBmdW5jdGlvbiBtdXN0IGJlIHVzZWQgCi0gICAgICAgICAgICBvbmx5IHdpdGggUzI5R0wxMjhQIE5PUiBtZW1vcnkuIAorICAqIEBicmllZiAgV3JpdGVzIGEgaGFsZi13b3JkIGJ1ZmZlciB0byB0aGUgTk9SIG1lbW9yeS4gVGhpcyBmdW5jdGlvbiBtdXN0IGJlIHVzZWQKKyAgICAgICAgICAgIG9ubHkgd2l0aCBTMjlHTDEyOFAgTk9SIG1lbW9yeS4KICAgKiBAcGFyYW0gIGhub3IgcG9pbnRlciB0byB0aGUgTk9SIGhhbmRsZQotICAqIEBwYXJhbSAgdXdBZGRyZXNzIE5PUiBtZW1vcnkgaW50ZXJuYWwgc3RhcnQgd3JpdGUgYWRkcmVzcyAKLSAgKiBAcGFyYW0gIHBEYXRhIHBvaW50ZXIgdG8gc291cmNlIGRhdGEgYnVmZmVyLiAKKyAgKiBAcGFyYW0gIHV3QWRkcmVzcyBOT1IgbWVtb3J5IGludGVybmFsIHN0YXJ0IHdyaXRlIGFkZHJlc3MKKyAgKiBAcGFyYW0gIHBEYXRhIHBvaW50ZXIgdG8gc291cmNlIGRhdGEgYnVmZmVyLgogICAqIEBwYXJhbSAgdXdCdWZmZXJTaXplIFNpemUgb2YgdGhlIGJ1ZmZlciB0byB3cml0ZQogICAqIEByZXR2YWwgSEFMIHN0YXR1cwotICAqLyAKLUhBTF9TdGF0dXNUeXBlRGVmIEhBTF9OT1JfUHJvZ3JhbUJ1ZmZlcihOT1JfSGFuZGxlVHlwZURlZiAqaG5vciwgdWludDMyX3QgdXdBZGRyZXNzLCB1aW50MTZfdCAqcERhdGEsIHVpbnQzMl90IHV3QnVmZmVyU2l6ZSkKKyAgKi8KK0hBTF9TdGF0dXNUeXBlRGVmIEhBTF9OT1JfUHJvZ3JhbUJ1ZmZlcihOT1JfSGFuZGxlVHlwZURlZiAqaG5vciwgdWludDMyX3QgdXdBZGRyZXNzLCB1aW50MTZfdCAqcERhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgdXdCdWZmZXJTaXplKQogewotICB1aW50MTZfdCAqIHBfY3VycmVudGFkZHJlc3MgPSAodWludDE2X3QgKilOVUxMOwotICB1aW50MTZfdCAqIHBfZW5kYWRkcmVzcyA9ICh1aW50MTZfdCAqKU5VTEw7Ci0gIHVpbnQzMl90IGxhc3Rsb2FkZWRhZGRyZXNzID0gMCwgZGV2aWNlYWRkcmVzcyA9IDA7Ci0gIAotICAvKiBQcm9jZXNzIExvY2tlZCAqLwotICBfX0hBTF9MT0NLKGhub3IpOwotICAKKyAgdWludDE2X3QgKnBfY3VycmVudGFkZHJlc3M7CisgIGNvbnN0IHVpbnQxNl90ICpwX2VuZGFkZHJlc3M7CisgIHVpbnQxNl90ICpkYXRhID0gcERhdGE7CisgIHVpbnQzMl90IGRldmljZWFkZHJlc3M7CisgIEhBTF9TdGF0dXNUeXBlRGVmIHN0YXR1cyA9IEhBTF9PSzsKKwogICAvKiBDaGVjayB0aGUgTk9SIGNvbnRyb2xsZXIgc3RhdGUgKi8KLSAgaWYoaG5vci0+U3RhdGUgPT0gSEFMX05PUl9TVEFURV9CVVNZKQorICBpZiAoaG5vci0+U3RhdGUgPT0gSEFMX05PUl9TVEFURV9CVVNZKQogICB7Ci0gICAgIHJldHVybiBIQUxfQlVTWTsKKyAgICByZXR1cm4gSEFMX0JVU1k7CiAgIH0KLSAgCi0gIC8qIFNlbGVjdCB0aGUgTk9SIGRldmljZSBhZGRyZXNzICovCi0gIGlmIChobm9yLT5Jbml0Lk5TQmFuayA9PSBGTUNfTk9SU1JBTV9CQU5LMSkKKyAgZWxzZSBpZiAoaG5vci0+U3RhdGUgPT0gSEFMX05PUl9TVEFURV9SRUFEWSkKICAgewotICAgIGRldmljZWFkZHJlc3MgPSBOT1JfTUVNT1JZX0FEUkVTUzE7Ci0gIH0KLSAgZWxzZSBpZiAoaG5vci0+SW5pdC5OU0JhbmsgPT0gRk1DX05PUlNSQU1fQkFOSzIpCi0gIHsKLSAgICBkZXZpY2VhZGRyZXNzID0gTk9SX01FTU9SWV9BRFJFU1MyOwotICB9Ci0gIGVsc2UgaWYgKGhub3ItPkluaXQuTlNCYW5rID09IEZNQ19OT1JTUkFNX0JBTkszKQotICB7Ci0gICAgZGV2aWNlYWRkcmVzcyA9IE5PUl9NRU1PUllfQURSRVNTMzsKLSAgfQotICBlbHNlIC8qIEZNQ19OT1JTUkFNX0JBTks0ICovCi0gIHsKLSAgICBkZXZpY2VhZGRyZXNzID0gTk9SX01FTU9SWV9BRFJFU1M0OwotICB9ICAKLSAgICAKLSAgLyogVXBkYXRlIHRoZSBOT1IgY29udHJvbGxlciBzdGF0ZSAqLwotICBobm9yLT5TdGF0ZSA9IEhBTF9OT1JfU1RBVEVfQlVTWTsKLSAgCi0gIC8qIEluaXRpYWxpemUgdmFyaWFibGVzICovCi0gIHBfY3VycmVudGFkZHJlc3MgID0gKHVpbnQxNl90KikoKHVpbnQzMl90KSh1d0FkZHJlc3MpKTsKLSAgcF9lbmRhZGRyZXNzICAgICAgPSBwX2N1cnJlbnRhZGRyZXNzICsgKHV3QnVmZmVyU2l6ZS0xKTsKLSAgbGFzdGxvYWRlZGFkZHJlc3MgPSAodWludDMyX3QpKHV3QWRkcmVzcyk7CisgICAgLyogUHJvY2VzcyBMb2NrZWQgKi8KKyAgICBfX0hBTF9MT0NLKGhub3IpOwogCi0gIC8qIElzc3VlIHVubG9jayBjb21tYW5kIHNlcXVlbmNlICovCi0gIE5PUl9XUklURShOT1JfQUREUl9TSElGVChkZXZpY2VhZGRyZXNzLCB1d05PUk1lbW9yeURhdGFXaWR0aCwgTk9SX0NNRF9BRERSRVNTX0ZJUlNUKSwgTk9SX0NNRF9EQVRBX0ZJUlNUKTsKLSAgTk9SX1dSSVRFKE5PUl9BRERSX1NISUZUKGRldmljZWFkZHJlc3MsIHV3Tk9STWVtb3J5RGF0YVdpZHRoLCBOT1JfQ01EX0FERFJFU1NfU0VDT05EKSwgTk9SX0NNRF9EQVRBX1NFQ09ORCk7IAorICAgIC8qIFVwZGF0ZSB0aGUgTk9SIGNvbnRyb2xsZXIgc3RhdGUgKi8KKyAgICBobm9yLT5TdGF0ZSA9IEhBTF9OT1JfU1RBVEVfQlVTWTsKIAotICAvKiBXcml0ZSBCdWZmZXIgTG9hZCBDb21tYW5kICovCi0gIE5PUl9XUklURShOT1JfQUREUl9TSElGVChkZXZpY2VhZGRyZXNzLCB1d05PUk1lbW9yeURhdGFXaWR0aCwgdXdBZGRyZXNzKSwgTk9SX0NNRF9EQVRBX0JVRkZFUl9BTkRfUFJPRyk7IAotICBOT1JfV1JJVEUoTk9SX0FERFJfU0hJRlQoZGV2aWNlYWRkcmVzcywgdXdOT1JNZW1vcnlEYXRhV2lkdGgsIHV3QWRkcmVzcyksICh1d0J1ZmZlclNpemUgLSAxKSk7IAorICAgIC8qIFNlbGVjdCB0aGUgTk9SIGRldmljZSBhZGRyZXNzICovCisgICAgaWYgKGhub3ItPkluaXQuTlNCYW5rID09IEZNQ19OT1JTUkFNX0JBTksxKQorICAgIHsKKyAgICAgIGRldmljZWFkZHJlc3MgPSBOT1JfTUVNT1JZX0FEUkVTUzE7CisgICAgfQorICAgIGVsc2UgaWYgKGhub3ItPkluaXQuTlNCYW5rID09IEZNQ19OT1JTUkFNX0JBTksyKQorICAgIHsKKyAgICAgIGRldmljZWFkZHJlc3MgPSBOT1JfTUVNT1JZX0FEUkVTUzI7CisgICAgfQorICAgIGVsc2UgaWYgKGhub3ItPkluaXQuTlNCYW5rID09IEZNQ19OT1JTUkFNX0JBTkszKQorICAgIHsKKyAgICAgIGRldmljZWFkZHJlc3MgPSBOT1JfTUVNT1JZX0FEUkVTUzM7CisgICAgfQorICAgIGVsc2UgLyogRk1DX05PUlNSQU1fQkFOSzQgKi8KKyAgICB7CisgICAgICBkZXZpY2VhZGRyZXNzID0gTk9SX01FTU9SWV9BRFJFU1M0OworICAgIH0KIAotICAvKiBMb2FkIERhdGEgaW50byBOT1IgQnVmZmVyICovCi0gIHdoaWxlKHBfY3VycmVudGFkZHJlc3MgPD0gcF9lbmRhZGRyZXNzKQorICAgIC8qIEluaXRpYWxpemUgdmFyaWFibGVzICovCisgICAgcF9jdXJyZW50YWRkcmVzcyAgPSAodWludDE2X3QgKikoZGV2aWNlYWRkcmVzcyArIHV3QWRkcmVzcyk7CisgICAgcF9lbmRhZGRyZXNzICAgICAgPSAodWludDE2X3QgKikoZGV2aWNlYWRkcmVzcyArIHV3QWRkcmVzcyArICgyVSAqICh1d0J1ZmZlclNpemUgLSAxVSkpKTsKKworICAgIGlmIChobm9yLT5Db21tYW5kU2V0ID09IE5PUl9BTURfRlVKSVRTVV9DT01NQU5EX1NFVCkKKyAgICB7CisgICAgICAvKiBJc3N1ZSB1bmxvY2sgY29tbWFuZCBzZXF1ZW5jZSAqLworICAgICAgTk9SX1dSSVRFKE5PUl9BRERSX1NISUZUKGRldmljZWFkZHJlc3MsIHV3Tk9STWVtb3J5RGF0YVdpZHRoLCBOT1JfQ01EX0FERFJFU1NfRklSU1QpLCBOT1JfQ01EX0RBVEFfRklSU1QpOworICAgICAgTk9SX1dSSVRFKE5PUl9BRERSX1NISUZUKGRldmljZWFkZHJlc3MsIHV3Tk9STWVtb3J5RGF0YVdpZHRoLCBOT1JfQ01EX0FERFJFU1NfU0VDT05EKSwgTk9SX0NNRF9EQVRBX1NFQ09ORCk7CisKKyAgICAgIC8qIFdyaXRlIEJ1ZmZlciBMb2FkIENvbW1hbmQgKi8KKyAgICAgIE5PUl9XUklURSgoZGV2aWNlYWRkcmVzcyArIHV3QWRkcmVzcyksIE5PUl9DTURfREFUQV9CVUZGRVJfQU5EX1BST0cpOworICAgICAgTk9SX1dSSVRFKChkZXZpY2VhZGRyZXNzICsgdXdBZGRyZXNzKSwgKHVpbnQxNl90KSh1d0J1ZmZlclNpemUgLSAxVSkpOworICAgIH0KKyAgICBlbHNlIGlmIChobm9yLT5Db21tYW5kU2V0ID09IE5PUl9JTlRFTF9TSEFSUF9FWFRfQ09NTUFORF9TRVQpCisgICAgeworICAgICAgLyogV3JpdGUgQnVmZmVyIExvYWQgQ29tbWFuZCAqLworICAgICAgTk9SX1dSSVRFKChkZXZpY2VhZGRyZXNzICsgdXdBZGRyZXNzKSwgTk9SX0NNRF9CVUZGRVJFRF9QUk9HUkFNKTsKKyAgICAgIE5PUl9XUklURSgoZGV2aWNlYWRkcmVzcyArIHV3QWRkcmVzcyksICh1aW50MTZfdCkodXdCdWZmZXJTaXplIC0gMVUpKTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgIC8qIFByaW1hcnkgY29tbWFuZCBzZXQgbm90IHN1cHBvcnRlZCBieSB0aGUgZHJpdmVyICovCisgICAgICBzdGF0dXMgPSBIQUxfRVJST1I7CisgICAgfQorCisgICAgaWYgKHN0YXR1cyAhPSBIQUxfRVJST1IpCisgICAgeworICAgICAgLyogTG9hZCBEYXRhIGludG8gTk9SIEJ1ZmZlciAqLworICAgICAgd2hpbGUgKHBfY3VycmVudGFkZHJlc3MgPD0gcF9lbmRhZGRyZXNzKQorICAgICAgeworICAgICAgICBOT1JfV1JJVEUocF9jdXJyZW50YWRkcmVzcywgKmRhdGEpOworCisgICAgICAgIGRhdGErKzsKKyAgICAgICAgcF9jdXJyZW50YWRkcmVzcyArKzsKKyAgICAgIH0KKworICAgICAgaWYgKGhub3ItPkNvbW1hbmRTZXQgPT0gTk9SX0FNRF9GVUpJVFNVX0NPTU1BTkRfU0VUKQorICAgICAgeworICAgICAgICBOT1JfV1JJVEUoKGRldmljZWFkZHJlc3MgKyB1d0FkZHJlc3MpLCBOT1JfQ01EX0RBVEFfQlVGRkVSX0FORF9QUk9HX0NPTkZJUk0pOworICAgICAgfQorICAgICAgZWxzZSAvKiA9PiBobm9yLT5Db21tYW5kU2V0ID09IE5PUl9JTlRFTF9TSEFSUF9FWFRfQ09NTUFORF9TRVQgKi8KKyAgICAgIHsKKyAgICAgICAgTk9SX1dSSVRFKChkZXZpY2VhZGRyZXNzICsgdXdBZGRyZXNzKSwgTk9SX0NNRF9DT05GSVJNKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICAvKiBDaGVjayB0aGUgTk9SIGNvbnRyb2xsZXIgc3RhdGUgKi8KKyAgICBobm9yLT5TdGF0ZSA9IEhBTF9OT1JfU1RBVEVfUkVBRFk7CisKKyAgICAvKiBQcm9jZXNzIHVubG9ja2VkICovCisgICAgX19IQUxfVU5MT0NLKGhub3IpOworICB9CisgIGVsc2UKICAgewotICAgIC8qIFN0b3JlIGxhc3QgbG9hZGVkIGFkZHJlc3MgJiBkYXRhIHZhbHVlIChmb3IgcG9sbGluZykgKi8KLSAgICAgbGFzdGxvYWRlZGFkZHJlc3MgPSAodWludDMyX3QpcF9jdXJyZW50YWRkcmVzczsKLSAKLSAgICBOT1JfV1JJVEUocF9jdXJyZW50YWRkcmVzcywgKnBEYXRhKyspOwotICAgIAotICAgIHBfY3VycmVudGFkZHJlc3MgKys7IAorICAgIHJldHVybiBIQUxfRVJST1I7CiAgIH0KIAotICBOT1JfV1JJVEUoKHVpbnQzMl90KShsYXN0bG9hZGVkYWRkcmVzcyksIE5PUl9DTURfREFUQV9CVUZGRVJfQU5EX1BST0dfQ09ORklSTSk7Ci0gIAotICAvKiBDaGVjayB0aGUgTk9SIGNvbnRyb2xsZXIgc3RhdGUgKi8KLSAgaG5vci0+U3RhdGUgPSBIQUxfTk9SX1NUQVRFX1JFQURZOwotICAKLSAgLyogUHJvY2VzcyB1bmxvY2tlZCAqLwotICBfX0hBTF9VTkxPQ0soaG5vcik7Ci0gIAotICByZXR1cm4gSEFMX09LOyAKLSAgCisgIHJldHVybiBzdGF0dXM7CisKIH0KIAogLyoqCi0gICogQGJyaWVmICBFcmFzZSB0aGUgc3BlY2lmaWVkIGJsb2NrIG9mIHRoZSBOT1IgbWVtb3J5IAorICAqIEBicmllZiAgRXJhc2UgdGhlIHNwZWNpZmllZCBibG9jayBvZiB0aGUgTk9SIG1lbW9yeQogICAqIEBwYXJhbSAgaG5vciBwb2ludGVyIHRvIGEgTk9SX0hhbmRsZVR5cGVEZWYgc3RydWN0dXJlIHRoYXQgY29udGFpbnMKICAgKiAgICAgICAgICAgICAgICB0aGUgY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbiBmb3IgTk9SIG1vZHVsZS4KLSAgKiBAcGFyYW0gIEJsb2NrQWRkcmVzcyAgQmxvY2sgdG8gZXJhc2UgYWRkcmVzcyAKKyAgKiBAcGFyYW0gIEJsb2NrQWRkcmVzcyAgQmxvY2sgdG8gZXJhc2UgYWRkcmVzcwogICAqIEBwYXJhbSAgQWRkcmVzcyBEZXZpY2UgYWRkcmVzcwogICAqIEByZXR2YWwgSEFMIHN0YXR1cwogICAqLwogSEFMX1N0YXR1c1R5cGVEZWYgSEFMX05PUl9FcmFzZV9CbG9jayhOT1JfSGFuZGxlVHlwZURlZiAqaG5vciwgdWludDMyX3QgQmxvY2tBZGRyZXNzLCB1aW50MzJfdCBBZGRyZXNzKQogewotICB1aW50MzJfdCBkZXZpY2VhZGRyZXNzID0gMDsKKyAgdWludDMyX3QgZGV2aWNlYWRkcmVzczsKKyAgSEFMX1N0YXR1c1R5cGVEZWYgc3RhdHVzID0gSEFMX09LOwogCi0gIC8qIFByb2Nlc3MgTG9ja2VkICovCi0gIF9fSEFMX0xPQ0soaG5vcik7Ci0gIAogICAvKiBDaGVjayB0aGUgTk9SIGNvbnRyb2xsZXIgc3RhdGUgKi8KLSAgaWYoaG5vci0+U3RhdGUgPT0gSEFMX05PUl9TVEFURV9CVVNZKQorICBpZiAoaG5vci0+U3RhdGUgPT0gSEFMX05PUl9TVEFURV9CVVNZKQogICB7Ci0gICAgIHJldHVybiBIQUxfQlVTWTsKKyAgICByZXR1cm4gSEFMX0JVU1k7CiAgIH0KLSAgCi0gIC8qIFNlbGVjdCB0aGUgTk9SIGRldmljZSBhZGRyZXNzICovCi0gIGlmIChobm9yLT5Jbml0Lk5TQmFuayA9PSBGTUNfTk9SU1JBTV9CQU5LMSkKKyAgZWxzZSBpZiAoaG5vci0+U3RhdGUgPT0gSEFMX05PUl9TVEFURV9SRUFEWSkKICAgewotICAgIGRldmljZWFkZHJlc3MgPSBOT1JfTUVNT1JZX0FEUkVTUzE7Ci0gIH0KLSAgZWxzZSBpZiAoaG5vci0+SW5pdC5OU0JhbmsgPT0gRk1DX05PUlNSQU1fQkFOSzIpCi0gIHsKLSAgICBkZXZpY2VhZGRyZXNzID0gTk9SX01FTU9SWV9BRFJFU1MyOwotICB9Ci0gIGVsc2UgaWYgKGhub3ItPkluaXQuTlNCYW5rID09IEZNQ19OT1JTUkFNX0JBTkszKQotICB7Ci0gICAgZGV2aWNlYWRkcmVzcyA9IE5PUl9NRU1PUllfQURSRVNTMzsKLSAgfQotICBlbHNlIC8qIEZNQ19OT1JTUkFNX0JBTks0ICovCi0gIHsKLSAgICBkZXZpY2VhZGRyZXNzID0gTk9SX01FTU9SWV9BRFJFU1M0OwotICB9Ci0gICAgCi0gIC8qIFVwZGF0ZSB0aGUgTk9SIGNvbnRyb2xsZXIgc3RhdGUgKi8KLSAgaG5vci0+U3RhdGUgPSBIQUxfTk9SX1NUQVRFX0JVU1k7Ci0gIAotICAvKiBTZW5kIGJsb2NrIGVyYXNlIGNvbW1hbmQgc2VxdWVuY2UgKi8KLSAgTk9SX1dSSVRFKE5PUl9BRERSX1NISUZUKGRldmljZWFkZHJlc3MsIHV3Tk9STWVtb3J5RGF0YVdpZHRoLCBOT1JfQ01EX0FERFJFU1NfRklSU1QpLCBOT1JfQ01EX0RBVEFfRklSU1QpOwotICBOT1JfV1JJVEUoTk9SX0FERFJfU0hJRlQoZGV2aWNlYWRkcmVzcywgdXdOT1JNZW1vcnlEYXRhV2lkdGgsIE5PUl9DTURfQUREUkVTU19TRUNPTkQpLCBOT1JfQ01EX0RBVEFfU0VDT05EKTsKLSAgTk9SX1dSSVRFKE5PUl9BRERSX1NISUZUKGRldmljZWFkZHJlc3MsIHV3Tk9STWVtb3J5RGF0YVdpZHRoLCBOT1JfQ01EX0FERFJFU1NfVEhJUkQpLCBOT1JfQ01EX0RBVEFfQ0hJUF9CTE9DS19FUkFTRV9USElSRCk7Ci0gIE5PUl9XUklURShOT1JfQUREUl9TSElGVChkZXZpY2VhZGRyZXNzLCB1d05PUk1lbW9yeURhdGFXaWR0aCwgTk9SX0NNRF9BRERSRVNTX0ZPVVJUSCksIE5PUl9DTURfREFUQV9DSElQX0JMT0NLX0VSQVNFX0ZPVVJUSCk7Ci0gIE5PUl9XUklURShOT1JfQUREUl9TSElGVChkZXZpY2VhZGRyZXNzLCB1d05PUk1lbW9yeURhdGFXaWR0aCwgTk9SX0NNRF9BRERSRVNTX0ZJRlRIKSwgTk9SX0NNRF9EQVRBX0NISVBfQkxPQ0tfRVJBU0VfRklGVEgpOwotICBOT1JfV1JJVEUoKHVpbnQzMl90KShCbG9ja0FkZHJlc3MgKyBBZGRyZXNzKSwgTk9SX0NNRF9EQVRBX0JMT0NLX0VSQVNFKTsKKyAgICAvKiBQcm9jZXNzIExvY2tlZCAqLworICAgIF9fSEFMX0xPQ0soaG5vcik7CiAKLSAgLyogQ2hlY2sgdGhlIE5PUiBtZW1vcnkgc3RhdHVzIGFuZCB1cGRhdGUgdGhlIGNvbnRyb2xsZXIgc3RhdGUgKi8KLSAgaG5vci0+U3RhdGUgPSBIQUxfTk9SX1NUQVRFX1JFQURZOwotICAgIAotICAvKiBQcm9jZXNzIHVubG9ja2VkICovCi0gIF9fSEFMX1VOTE9DSyhobm9yKTsKLSAgCi0gIHJldHVybiBIQUxfT0s7Ci0gCisgICAgLyogVXBkYXRlIHRoZSBOT1IgY29udHJvbGxlciBzdGF0ZSAqLworICAgIGhub3ItPlN0YXRlID0gSEFMX05PUl9TVEFURV9CVVNZOworCisgICAgLyogU2VsZWN0IHRoZSBOT1IgZGV2aWNlIGFkZHJlc3MgKi8KKyAgICBpZiAoaG5vci0+SW5pdC5OU0JhbmsgPT0gRk1DX05PUlNSQU1fQkFOSzEpCisgICAgeworICAgICAgZGV2aWNlYWRkcmVzcyA9IE5PUl9NRU1PUllfQURSRVNTMTsKKyAgICB9CisgICAgZWxzZSBpZiAoaG5vci0+SW5pdC5OU0JhbmsgPT0gRk1DX05PUlNSQU1fQkFOSzIpCisgICAgeworICAgICAgZGV2aWNlYWRkcmVzcyA9IE5PUl9NRU1PUllfQURSRVNTMjsKKyAgICB9CisgICAgZWxzZSBpZiAoaG5vci0+SW5pdC5OU0JhbmsgPT0gRk1DX05PUlNSQU1fQkFOSzMpCisgICAgeworICAgICAgZGV2aWNlYWRkcmVzcyA9IE5PUl9NRU1PUllfQURSRVNTMzsKKyAgICB9CisgICAgZWxzZSAvKiBGTUNfTk9SU1JBTV9CQU5LNCAqLworICAgIHsKKyAgICAgIGRldmljZWFkZHJlc3MgPSBOT1JfTUVNT1JZX0FEUkVTUzQ7CisgICAgfQorCisgICAgLyogU2VuZCBibG9jayBlcmFzZSBjb21tYW5kIHNlcXVlbmNlICovCisgICAgaWYgKGhub3ItPkNvbW1hbmRTZXQgPT0gTk9SX0FNRF9GVUpJVFNVX0NPTU1BTkRfU0VUKQorICAgIHsKKyAgICAgIE5PUl9XUklURShOT1JfQUREUl9TSElGVChkZXZpY2VhZGRyZXNzLCB1d05PUk1lbW9yeURhdGFXaWR0aCwgTk9SX0NNRF9BRERSRVNTX0ZJUlNUKSwgTk9SX0NNRF9EQVRBX0ZJUlNUKTsKKyAgICAgIE5PUl9XUklURShOT1JfQUREUl9TSElGVChkZXZpY2VhZGRyZXNzLCB1d05PUk1lbW9yeURhdGFXaWR0aCwgTk9SX0NNRF9BRERSRVNTX1NFQ09ORCksIE5PUl9DTURfREFUQV9TRUNPTkQpOworICAgICAgTk9SX1dSSVRFKE5PUl9BRERSX1NISUZUKGRldmljZWFkZHJlc3MsIHV3Tk9STWVtb3J5RGF0YVdpZHRoLCBOT1JfQ01EX0FERFJFU1NfVEhJUkQpLAorICAgICAgICAgICAgICAgIE5PUl9DTURfREFUQV9DSElQX0JMT0NLX0VSQVNFX1RISVJEKTsKKyAgICAgIE5PUl9XUklURShOT1JfQUREUl9TSElGVChkZXZpY2VhZGRyZXNzLCB1d05PUk1lbW9yeURhdGFXaWR0aCwgTk9SX0NNRF9BRERSRVNTX0ZPVVJUSCksCisgICAgICAgICAgICAgICAgTk9SX0NNRF9EQVRBX0NISVBfQkxPQ0tfRVJBU0VfRk9VUlRIKTsKKyAgICAgIE5PUl9XUklURShOT1JfQUREUl9TSElGVChkZXZpY2VhZGRyZXNzLCB1d05PUk1lbW9yeURhdGFXaWR0aCwgTk9SX0NNRF9BRERSRVNTX0ZJRlRIKSwKKyAgICAgICAgICAgICAgICBOT1JfQ01EX0RBVEFfQ0hJUF9CTE9DS19FUkFTRV9GSUZUSCk7CisgICAgICBOT1JfV1JJVEUoKHVpbnQzMl90KShCbG9ja0FkZHJlc3MgKyBBZGRyZXNzKSwgTk9SX0NNRF9EQVRBX0JMT0NLX0VSQVNFKTsKKyAgICB9CisgICAgZWxzZSBpZiAoaG5vci0+Q29tbWFuZFNldCA9PSBOT1JfSU5URUxfU0hBUlBfRVhUX0NPTU1BTkRfU0VUKQorICAgIHsKKyAgICAgIE5PUl9XUklURSgoQmxvY2tBZGRyZXNzICsgQWRkcmVzcyksIE5PUl9DTURfQkxPQ0tfVU5MT0NLKTsKKyAgICAgIE5PUl9XUklURSgoQmxvY2tBZGRyZXNzICsgQWRkcmVzcyksIE5PUl9DTURfQ09ORklSTSk7CisgICAgICBOT1JfV1JJVEUoKEJsb2NrQWRkcmVzcyArIEFkZHJlc3MpLCBOT1JfQ01EX0JMT0NLX0VSQVNFKTsKKyAgICAgIE5PUl9XUklURSgoQmxvY2tBZGRyZXNzICsgQWRkcmVzcyksIE5PUl9DTURfQ09ORklSTSk7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAvKiBQcmltYXJ5IGNvbW1hbmQgc2V0IG5vdCBzdXBwb3J0ZWQgYnkgdGhlIGRyaXZlciAqLworICAgICAgc3RhdHVzID0gSEFMX0VSUk9SOworICAgIH0KKworICAgIC8qIENoZWNrIHRoZSBOT1IgbWVtb3J5IHN0YXR1cyBhbmQgdXBkYXRlIHRoZSBjb250cm9sbGVyIHN0YXRlICovCisgICAgaG5vci0+U3RhdGUgPSBIQUxfTk9SX1NUQVRFX1JFQURZOworCisgICAgLyogUHJvY2VzcyB1bmxvY2tlZCAqLworICAgIF9fSEFMX1VOTE9DSyhobm9yKTsKKyAgfQorICBlbHNlCisgIHsKKyAgICByZXR1cm4gSEFMX0VSUk9SOworICB9CisKKyAgcmV0dXJuIHN0YXR1czsKKwogfQogCiAvKioKICAgKiBAYnJpZWYgIEVyYXNlIHRoZSBlbnRpcmUgTk9SIGNoaXAuCiAgICogQHBhcmFtICBobm9yIHBvaW50ZXIgdG8gYSBOT1JfSGFuZGxlVHlwZURlZiBzdHJ1Y3R1cmUgdGhhdCBjb250YWlucwogICAqICAgICAgICAgICAgICAgIHRoZSBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uIGZvciBOT1IgbW9kdWxlLgotICAqIEBwYXJhbSAgQWRkcmVzcyAgRGV2aWNlIGFkZHJlc3MgIAorICAqIEBwYXJhbSAgQWRkcmVzcyAgRGV2aWNlIGFkZHJlc3MKICAgKiBAcmV0dmFsIEhBTCBzdGF0dXMKICAgKi8KIEhBTF9TdGF0dXNUeXBlRGVmIEhBTF9OT1JfRXJhc2VfQ2hpcChOT1JfSGFuZGxlVHlwZURlZiAqaG5vciwgdWludDMyX3QgQWRkcmVzcykKIHsKLSAgdWludDMyX3QgZGV2aWNlYWRkcmVzcyA9IDA7Ci0gIAotICAvKiBQcm9jZXNzIExvY2tlZCAqLwotICBfX0hBTF9MT0NLKGhub3IpOwotICAKKyAgdWludDMyX3QgZGV2aWNlYWRkcmVzczsKKyAgSEFMX1N0YXR1c1R5cGVEZWYgc3RhdHVzID0gSEFMX09LOworICBVTlVTRUQoQWRkcmVzcyk7CisKICAgLyogQ2hlY2sgdGhlIE5PUiBjb250cm9sbGVyIHN0YXRlICovCi0gIGlmKGhub3ItPlN0YXRlID09IEhBTF9OT1JfU1RBVEVfQlVTWSkKKyAgaWYgKGhub3ItPlN0YXRlID09IEhBTF9OT1JfU1RBVEVfQlVTWSkKICAgewotICAgICByZXR1cm4gSEFMX0JVU1k7CisgICAgcmV0dXJuIEhBTF9CVVNZOwogICB9Ci0gIAotICAvKiBTZWxlY3QgdGhlIE5PUiBkZXZpY2UgYWRkcmVzcyAqLwotICBpZiAoaG5vci0+SW5pdC5OU0JhbmsgPT0gRk1DX05PUlNSQU1fQkFOSzEpCisgIGVsc2UgaWYgKGhub3ItPlN0YXRlID09IEhBTF9OT1JfU1RBVEVfUkVBRFkpCiAgIHsKLSAgICBkZXZpY2VhZGRyZXNzID0gTk9SX01FTU9SWV9BRFJFU1MxOworICAgIC8qIFByb2Nlc3MgTG9ja2VkICovCisgICAgX19IQUxfTE9DSyhobm9yKTsKKworICAgIC8qIFVwZGF0ZSB0aGUgTk9SIGNvbnRyb2xsZXIgc3RhdGUgKi8KKyAgICBobm9yLT5TdGF0ZSA9IEhBTF9OT1JfU1RBVEVfQlVTWTsKKworICAgIC8qIFNlbGVjdCB0aGUgTk9SIGRldmljZSBhZGRyZXNzICovCisgICAgaWYgKGhub3ItPkluaXQuTlNCYW5rID09IEZNQ19OT1JTUkFNX0JBTksxKQorICAgIHsKKyAgICAgIGRldmljZWFkZHJlc3MgPSBOT1JfTUVNT1JZX0FEUkVTUzE7CisgICAgfQorICAgIGVsc2UgaWYgKGhub3ItPkluaXQuTlNCYW5rID09IEZNQ19OT1JTUkFNX0JBTksyKQorICAgIHsKKyAgICAgIGRldmljZWFkZHJlc3MgPSBOT1JfTUVNT1JZX0FEUkVTUzI7CisgICAgfQorICAgIGVsc2UgaWYgKGhub3ItPkluaXQuTlNCYW5rID09IEZNQ19OT1JTUkFNX0JBTkszKQorICAgIHsKKyAgICAgIGRldmljZWFkZHJlc3MgPSBOT1JfTUVNT1JZX0FEUkVTUzM7CisgICAgfQorICAgIGVsc2UgLyogRk1DX05PUlNSQU1fQkFOSzQgKi8KKyAgICB7CisgICAgICBkZXZpY2VhZGRyZXNzID0gTk9SX01FTU9SWV9BRFJFU1M0OworICAgIH0KKworICAgIC8qIFNlbmQgTk9SIGNoaXAgZXJhc2UgY29tbWFuZCBzZXF1ZW5jZSAqLworICAgIGlmIChobm9yLT5Db21tYW5kU2V0ID09IE5PUl9BTURfRlVKSVRTVV9DT01NQU5EX1NFVCkKKyAgICB7CisgICAgICBOT1JfV1JJVEUoTk9SX0FERFJfU0hJRlQoZGV2aWNlYWRkcmVzcywgdXdOT1JNZW1vcnlEYXRhV2lkdGgsIE5PUl9DTURfQUREUkVTU19GSVJTVCksIE5PUl9DTURfREFUQV9GSVJTVCk7CisgICAgICBOT1JfV1JJVEUoTk9SX0FERFJfU0hJRlQoZGV2aWNlYWRkcmVzcywgdXdOT1JNZW1vcnlEYXRhV2lkdGgsIE5PUl9DTURfQUREUkVTU19TRUNPTkQpLCBOT1JfQ01EX0RBVEFfU0VDT05EKTsKKyAgICAgIE5PUl9XUklURShOT1JfQUREUl9TSElGVChkZXZpY2VhZGRyZXNzLCB1d05PUk1lbW9yeURhdGFXaWR0aCwgTk9SX0NNRF9BRERSRVNTX1RISVJEKSwKKyAgICAgICAgICAgICAgICBOT1JfQ01EX0RBVEFfQ0hJUF9CTE9DS19FUkFTRV9USElSRCk7CisgICAgICBOT1JfV1JJVEUoTk9SX0FERFJfU0hJRlQoZGV2aWNlYWRkcmVzcywgdXdOT1JNZW1vcnlEYXRhV2lkdGgsIE5PUl9DTURfQUREUkVTU19GT1VSVEgpLAorICAgICAgICAgICAgICAgIE5PUl9DTURfREFUQV9DSElQX0JMT0NLX0VSQVNFX0ZPVVJUSCk7CisgICAgICBOT1JfV1JJVEUoTk9SX0FERFJfU0hJRlQoZGV2aWNlYWRkcmVzcywgdXdOT1JNZW1vcnlEYXRhV2lkdGgsIE5PUl9DTURfQUREUkVTU19GSUZUSCksCisgICAgICAgICAgICAgICAgTk9SX0NNRF9EQVRBX0NISVBfQkxPQ0tfRVJBU0VfRklGVEgpOworICAgICAgTk9SX1dSSVRFKE5PUl9BRERSX1NISUZUKGRldmljZWFkZHJlc3MsIHV3Tk9STWVtb3J5RGF0YVdpZHRoLCBOT1JfQ01EX0FERFJFU1NfU0lYVEgpLCBOT1JfQ01EX0RBVEFfQ0hJUF9FUkFTRSk7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAvKiBQcmltYXJ5IGNvbW1hbmQgc2V0IG5vdCBzdXBwb3J0ZWQgYnkgdGhlIGRyaXZlciAqLworICAgICAgc3RhdHVzID0gSEFMX0VSUk9SOworICAgIH0KKworICAgIC8qIENoZWNrIHRoZSBOT1IgbWVtb3J5IHN0YXR1cyBhbmQgdXBkYXRlIHRoZSBjb250cm9sbGVyIHN0YXRlICovCisgICAgaG5vci0+U3RhdGUgPSBIQUxfTk9SX1NUQVRFX1JFQURZOworCisgICAgLyogUHJvY2VzcyB1bmxvY2tlZCAqLworICAgIF9fSEFMX1VOTE9DSyhobm9yKTsKICAgfQotICBlbHNlIGlmIChobm9yLT5Jbml0Lk5TQmFuayA9PSBGTUNfTk9SU1JBTV9CQU5LMikKKyAgZWxzZQogICB7Ci0gICAgZGV2aWNlYWRkcmVzcyA9IE5PUl9NRU1PUllfQURSRVNTMjsKKyAgICByZXR1cm4gSEFMX0VSUk9SOwogICB9Ci0gIGVsc2UgaWYgKGhub3ItPkluaXQuTlNCYW5rID09IEZNQ19OT1JTUkFNX0JBTkszKQotICB7Ci0gICAgZGV2aWNlYWRkcmVzcyA9IE5PUl9NRU1PUllfQURSRVNTMzsKLSAgfQotICBlbHNlIC8qIEZNQ19OT1JTUkFNX0JBTks0ICovCi0gIHsKLSAgICBkZXZpY2VhZGRyZXNzID0gTk9SX01FTU9SWV9BRFJFU1M0OwotICB9Ci0gICAgCi0gIC8qIFVwZGF0ZSB0aGUgTk9SIGNvbnRyb2xsZXIgc3RhdGUgKi8KLSAgaG5vci0+U3RhdGUgPSBIQUxfTk9SX1NUQVRFX0JVU1k7ICAKLSAgICAKLSAgLyogU2VuZCBOT1IgY2hpcCBlcmFzZSBjb21tYW5kIHNlcXVlbmNlICovCi0gIE5PUl9XUklURShOT1JfQUREUl9TSElGVChkZXZpY2VhZGRyZXNzLCB1d05PUk1lbW9yeURhdGFXaWR0aCwgTk9SX0NNRF9BRERSRVNTX0ZJUlNUKSwgTk9SX0NNRF9EQVRBX0ZJUlNUKTsKLSAgTk9SX1dSSVRFKE5PUl9BRERSX1NISUZUKGRldmljZWFkZHJlc3MsIHV3Tk9STWVtb3J5RGF0YVdpZHRoLCBOT1JfQ01EX0FERFJFU1NfU0VDT05EKSwgTk9SX0NNRF9EQVRBX1NFQ09ORCk7Ci0gIE5PUl9XUklURShOT1JfQUREUl9TSElGVChkZXZpY2VhZGRyZXNzLCB1d05PUk1lbW9yeURhdGFXaWR0aCwgTk9SX0NNRF9BRERSRVNTX1RISVJEKSwgTk9SX0NNRF9EQVRBX0NISVBfQkxPQ0tfRVJBU0VfVEhJUkQpOwotICBOT1JfV1JJVEUoTk9SX0FERFJfU0hJRlQoZGV2aWNlYWRkcmVzcywgdXdOT1JNZW1vcnlEYXRhV2lkdGgsIE5PUl9DTURfQUREUkVTU19GT1VSVEgpLCBOT1JfQ01EX0RBVEFfQ0hJUF9CTE9DS19FUkFTRV9GT1VSVEgpOwotICBOT1JfV1JJVEUoTk9SX0FERFJfU0hJRlQoZGV2aWNlYWRkcmVzcywgdXdOT1JNZW1vcnlEYXRhV2lkdGgsIE5PUl9DTURfQUREUkVTU19GSUZUSCksIE5PUl9DTURfREFUQV9DSElQX0JMT0NLX0VSQVNFX0ZJRlRIKTsgIAotICBOT1JfV1JJVEUoTk9SX0FERFJfU0hJRlQoZGV2aWNlYWRkcmVzcywgdXdOT1JNZW1vcnlEYXRhV2lkdGgsIE5PUl9DTURfQUREUkVTU19TSVhUSCksIE5PUl9DTURfREFUQV9DSElQX0VSQVNFKTsKLSAgCi0gIC8qIENoZWNrIHRoZSBOT1IgbWVtb3J5IHN0YXR1cyBhbmQgdXBkYXRlIHRoZSBjb250cm9sbGVyIHN0YXRlICovCi0gIGhub3ItPlN0YXRlID0gSEFMX05PUl9TVEFURV9SRUFEWTsKLSAgICAKLSAgLyogUHJvY2VzcyB1bmxvY2tlZCAqLwotICBfX0hBTF9VTkxPQ0soaG5vcik7Ci0gIAotICByZXR1cm4gSEFMX09LOyAgCisKKyAgcmV0dXJuIHN0YXR1czsKIH0KIAogLyoqCiAgICogQGJyaWVmICBSZWFkIE5PUiBmbGFzaCBDRkkgSURzCiAgICogQHBhcmFtICBobm9yIHBvaW50ZXIgdG8gYSBOT1JfSGFuZGxlVHlwZURlZiBzdHJ1Y3R1cmUgdGhhdCBjb250YWlucwogICAqICAgICAgICAgICAgICAgIHRoZSBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uIGZvciBOT1IgbW9kdWxlLgotICAqIEBwYXJhbSAgcE5PUl9DRkkgIHBvaW50ZXIgdG8gTk9SIENGSSBJRHMgc3RydWN0dXJlICAKKyAgKiBAcGFyYW0gIHBOT1JfQ0ZJICBwb2ludGVyIHRvIE5PUiBDRkkgSURzIHN0cnVjdHVyZQogICAqIEByZXR2YWwgSEFMIHN0YXR1cwogICAqLwogSEFMX1N0YXR1c1R5cGVEZWYgSEFMX05PUl9SZWFkX0NGSShOT1JfSGFuZGxlVHlwZURlZiAqaG5vciwgTk9SX0NGSVR5cGVEZWYgKnBOT1JfQ0ZJKQogewotICB1aW50MzJfdCBkZXZpY2VhZGRyZXNzID0gMDsKLSAgCi0gIC8qIFByb2Nlc3MgTG9ja2VkICovCi0gIF9fSEFMX0xPQ0soaG5vcik7Ci0gIAotICAvKiBDaGVjayB0aGUgTk9SIGNvbnRyb2xsZXIgc3RhdGUgKi8KLSAgaWYoaG5vci0+U3RhdGUgPT0gSEFMX05PUl9TVEFURV9CVVNZKQotICB7Ci0gICAgIHJldHVybiBIQUxfQlVTWTsKLSAgfQotICAKLSAgLyogU2VsZWN0IHRoZSBOT1IgZGV2aWNlIGFkZHJlc3MgKi8KLSAgaWYgKGhub3ItPkluaXQuTlNCYW5rID09IEZNQ19OT1JTUkFNX0JBTksxKQotICB7Ci0gICAgZGV2aWNlYWRkcmVzcyA9IE5PUl9NRU1PUllfQURSRVNTMTsKLSAgfQotICBlbHNlIGlmIChobm9yLT5Jbml0Lk5TQmFuayA9PSBGTUNfTk9SU1JBTV9CQU5LMikKLSAgewotICAgIGRldmljZWFkZHJlc3MgPSBOT1JfTUVNT1JZX0FEUkVTUzI7Ci0gIH0KLSAgZWxzZSBpZiAoaG5vci0+SW5pdC5OU0JhbmsgPT0gRk1DX05PUlNSQU1fQkFOSzMpCi0gIHsKLSAgICBkZXZpY2VhZGRyZXNzID0gTk9SX01FTU9SWV9BRFJFU1MzOwotICB9Ci0gIGVsc2UgLyogRk1DX05PUlNSQU1fQkFOSzQgKi8KLSAgewotICAgIGRldmljZWFkZHJlc3MgPSBOT1JfTUVNT1JZX0FEUkVTUzQ7Ci0gIH0gIAotICAgIAotICAvKiBVcGRhdGUgdGhlIE5PUiBjb250cm9sbGVyIHN0YXRlICovCi0gIGhub3ItPlN0YXRlID0gSEFMX05PUl9TVEFURV9CVVNZOwotICAKLSAgLyogU2VuZCByZWFkIENGSSBxdWVyeSBjb21tYW5kICovCi0gIE5PUl9XUklURShOT1JfQUREUl9TSElGVChkZXZpY2VhZGRyZXNzLCB1d05PUk1lbW9yeURhdGFXaWR0aCwgTk9SX0NNRF9BRERSRVNTX0ZJUlNUX0NGSSksIE5PUl9DTURfREFUQV9DRkkpOwotCi0gIC8qIHJlYWQgdGhlIE5PUiBDRkkgaW5mb3JtYXRpb24gKi8KLSAgcE5PUl9DRkktPkNGSV8xID0gKihfX0lPIHVpbnQxNl90ICopIE5PUl9BRERSX1NISUZUKGRldmljZWFkZHJlc3MsIHV3Tk9STWVtb3J5RGF0YVdpZHRoLCBDRkkxX0FERFJFU1MpOwotICBwTk9SX0NGSS0+Q0ZJXzIgPSAqKF9fSU8gdWludDE2X3QgKikgTk9SX0FERFJfU0hJRlQoZGV2aWNlYWRkcmVzcywgdXdOT1JNZW1vcnlEYXRhV2lkdGgsIENGSTJfQUREUkVTUyk7Ci0gIHBOT1JfQ0ZJLT5DRklfMyA9ICooX19JTyB1aW50MTZfdCAqKSBOT1JfQUREUl9TSElGVChkZXZpY2VhZGRyZXNzLCB1d05PUk1lbW9yeURhdGFXaWR0aCwgQ0ZJM19BRERSRVNTKTsKLSAgcE5PUl9DRkktPkNGSV80ID0gKihfX0lPIHVpbnQxNl90ICopIE5PUl9BRERSX1NISUZUKGRldmljZWFkZHJlc3MsIHV3Tk9STWVtb3J5RGF0YVdpZHRoLCBDRkk0X0FERFJFU1MpOworICB1aW50MzJfdCBkZXZpY2VhZGRyZXNzOworICBIQUxfTk9SX1N0YXRlVHlwZURlZiBzdGF0ZTsKIAogICAvKiBDaGVjayB0aGUgTk9SIGNvbnRyb2xsZXIgc3RhdGUgKi8KLSAgaG5vci0+U3RhdGUgPSBIQUxfTk9SX1NUQVRFX1JFQURZOwotICAKLSAgLyogUHJvY2VzcyB1bmxvY2tlZCAqLwotICBfX0hBTF9VTkxPQ0soaG5vcik7Ci0gIAorICBzdGF0ZSA9IGhub3ItPlN0YXRlOworICBpZiAoc3RhdGUgPT0gSEFMX05PUl9TVEFURV9CVVNZKQorICB7CisgICAgcmV0dXJuIEhBTF9CVVNZOworICB9CisgIGVsc2UgaWYgKChzdGF0ZSA9PSBIQUxfTk9SX1NUQVRFX1JFQURZKSB8fCAoc3RhdGUgPT0gSEFMX05PUl9TVEFURV9QUk9URUNURUQpKQorICB7CisgICAgLyogUHJvY2VzcyBMb2NrZWQgKi8KKyAgICBfX0hBTF9MT0NLKGhub3IpOworCisgICAgLyogVXBkYXRlIHRoZSBOT1IgY29udHJvbGxlciBzdGF0ZSAqLworICAgIGhub3ItPlN0YXRlID0gSEFMX05PUl9TVEFURV9CVVNZOworCisgICAgLyogU2VsZWN0IHRoZSBOT1IgZGV2aWNlIGFkZHJlc3MgKi8KKyAgICBpZiAoaG5vci0+SW5pdC5OU0JhbmsgPT0gRk1DX05PUlNSQU1fQkFOSzEpCisgICAgeworICAgICAgZGV2aWNlYWRkcmVzcyA9IE5PUl9NRU1PUllfQURSRVNTMTsKKyAgICB9CisgICAgZWxzZSBpZiAoaG5vci0+SW5pdC5OU0JhbmsgPT0gRk1DX05PUlNSQU1fQkFOSzIpCisgICAgeworICAgICAgZGV2aWNlYWRkcmVzcyA9IE5PUl9NRU1PUllfQURSRVNTMjsKKyAgICB9CisgICAgZWxzZSBpZiAoaG5vci0+SW5pdC5OU0JhbmsgPT0gRk1DX05PUlNSQU1fQkFOSzMpCisgICAgeworICAgICAgZGV2aWNlYWRkcmVzcyA9IE5PUl9NRU1PUllfQURSRVNTMzsKKyAgICB9CisgICAgZWxzZSAvKiBGTUNfTk9SU1JBTV9CQU5LNCAqLworICAgIHsKKyAgICAgIGRldmljZWFkZHJlc3MgPSBOT1JfTUVNT1JZX0FEUkVTUzQ7CisgICAgfQorCisgICAgLyogU2VuZCByZWFkIENGSSBxdWVyeSBjb21tYW5kICovCisgICAgTk9SX1dSSVRFKE5PUl9BRERSX1NISUZUKGRldmljZWFkZHJlc3MsIHV3Tk9STWVtb3J5RGF0YVdpZHRoLCBOT1JfQ01EX0FERFJFU1NfRklSU1RfQ0ZJKSwgTk9SX0NNRF9EQVRBX0NGSSk7CisKKyAgICAvKiByZWFkIHRoZSBOT1IgQ0ZJIGluZm9ybWF0aW9uICovCisgICAgcE5PUl9DRkktPkNGSV8xID0gKihfX0lPIHVpbnQxNl90ICopIE5PUl9BRERSX1NISUZUKGRldmljZWFkZHJlc3MsIHV3Tk9STWVtb3J5RGF0YVdpZHRoLCBDRkkxX0FERFJFU1MpOworICAgIHBOT1JfQ0ZJLT5DRklfMiA9ICooX19JTyB1aW50MTZfdCAqKSBOT1JfQUREUl9TSElGVChkZXZpY2VhZGRyZXNzLCB1d05PUk1lbW9yeURhdGFXaWR0aCwgQ0ZJMl9BRERSRVNTKTsKKyAgICBwTk9SX0NGSS0+Q0ZJXzMgPSAqKF9fSU8gdWludDE2X3QgKikgTk9SX0FERFJfU0hJRlQoZGV2aWNlYWRkcmVzcywgdXdOT1JNZW1vcnlEYXRhV2lkdGgsIENGSTNfQUREUkVTUyk7CisgICAgcE5PUl9DRkktPkNGSV80ID0gKihfX0lPIHVpbnQxNl90ICopIE5PUl9BRERSX1NISUZUKGRldmljZWFkZHJlc3MsIHV3Tk9STWVtb3J5RGF0YVdpZHRoLCBDRkk0X0FERFJFU1MpOworCisgICAgLyogQ2hlY2sgdGhlIE5PUiBjb250cm9sbGVyIHN0YXRlICovCisgICAgaG5vci0+U3RhdGUgPSBzdGF0ZTsKKworICAgIC8qIFByb2Nlc3MgdW5sb2NrZWQgKi8KKyAgICBfX0hBTF9VTkxPQ0soaG5vcik7CisgIH0KKyAgZWxzZQorICB7CisgICAgcmV0dXJuIEhBTF9FUlJPUjsKKyAgfQorCiAgIHJldHVybiBIQUxfT0s7CiB9CiAKQEAgLTkxNSwxMiArMTE3NiwxMyBAQAogICAqIEBwYXJhbSBwQ2FsbGJhY2sgOiBwb2ludGVyIHRvIHRoZSBDYWxsYmFjayBmdW5jdGlvbgogICAqIEByZXR2YWwgc3RhdHVzCiAgICovCi1IQUxfU3RhdHVzVHlwZURlZiBIQUxfTk9SX1JlZ2lzdGVyQ2FsbGJhY2sgKE5PUl9IYW5kbGVUeXBlRGVmICpobm9yLCBIQUxfTk9SX0NhbGxiYWNrSURUeXBlRGVmIENhbGxiYWNrSWQsIHBOT1JfQ2FsbGJhY2tUeXBlRGVmIHBDYWxsYmFjaykKK0hBTF9TdGF0dXNUeXBlRGVmIEhBTF9OT1JfUmVnaXN0ZXJDYWxsYmFjayhOT1JfSGFuZGxlVHlwZURlZiAqaG5vciwgSEFMX05PUl9DYWxsYmFja0lEVHlwZURlZiBDYWxsYmFja0lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBOT1JfQ2FsbGJhY2tUeXBlRGVmIHBDYWxsYmFjaykKIHsKICAgSEFMX1N0YXR1c1R5cGVEZWYgc3RhdHVzID0gSEFMX09LOwogICBIQUxfTk9SX1N0YXRlVHlwZURlZiBzdGF0ZTsKIAotICBpZihwQ2FsbGJhY2sgPT0gTlVMTCkKKyAgaWYgKHBDYWxsYmFjayA9PSBOVUxMKQogICB7CiAgICAgcmV0dXJuIEhBTF9FUlJPUjsKICAgfQpAQCAtOTI5LDIwICsxMTkxLDIwIEBACiAgIF9fSEFMX0xPQ0soaG5vcik7CiAKICAgc3RhdGUgPSBobm9yLT5TdGF0ZTsKLSAgaWYoKHN0YXRlID09IEhBTF9OT1JfU1RBVEVfUkVBRFkpIHx8IChzdGF0ZSA9PSBIQUxfTk9SX1NUQVRFX1JFU0VUKSB8fCAoc3RhdGUgPT0gSEFMX05PUl9TVEFURV9QUk9URUNURUQpKQorICBpZiAoKHN0YXRlID09IEhBTF9OT1JfU1RBVEVfUkVBRFkpIHx8IChzdGF0ZSA9PSBIQUxfTk9SX1NUQVRFX1JFU0VUKSB8fCAoc3RhdGUgPT0gSEFMX05PUl9TVEFURV9QUk9URUNURUQpKQogICB7CiAgICAgc3dpdGNoIChDYWxsYmFja0lkKQogICAgIHsKLSAgICBjYXNlIEhBTF9OT1JfTVNQX0lOSVRfQ0JfSUQgOgotICAgICAgaG5vci0+TXNwSW5pdENhbGxiYWNrID0gcENhbGxiYWNrOwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSBIQUxfTk9SX01TUF9ERUlOSVRfQ0JfSUQgOgotICAgICAgaG5vci0+TXNwRGVJbml0Q2FsbGJhY2sgPSBwQ2FsbGJhY2s7Ci0gICAgICBicmVhazsKLSAgICBkZWZhdWx0IDoKLSAgICAgIC8qIHVwZGF0ZSByZXR1cm4gc3RhdHVzICovCi0gICAgICBzdGF0dXMgPSAgSEFMX0VSUk9SOwotICAgICAgYnJlYWs7CisgICAgICBjYXNlIEhBTF9OT1JfTVNQX0lOSVRfQ0JfSUQgOgorICAgICAgICBobm9yLT5Nc3BJbml0Q2FsbGJhY2sgPSBwQ2FsbGJhY2s7CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBIQUxfTk9SX01TUF9ERUlOSVRfQ0JfSUQgOgorICAgICAgICBobm9yLT5Nc3BEZUluaXRDYWxsYmFjayA9IHBDYWxsYmFjazsKKyAgICAgICAgYnJlYWs7CisgICAgICBkZWZhdWx0IDoKKyAgICAgICAgLyogdXBkYXRlIHJldHVybiBzdGF0dXMgKi8KKyAgICAgICAgc3RhdHVzID0gIEhBTF9FUlJPUjsKKyAgICAgICAgYnJlYWs7CiAgICAgfQogICB9CiAgIGVsc2UKQEAgLTk2Niw3ICsxMjI4LDcgQEAKICAgKiAgICAgICAgICBAYXJnIEByZWYgSEFMX05PUl9NU1BfREVJTklUX0NCX0lEICAgICBOT1IgTXNwRGVJbml0IGNhbGxiYWNrIElECiAgICogQHJldHZhbCBzdGF0dXMKICAgKi8KLUhBTF9TdGF0dXNUeXBlRGVmIEhBTF9OT1JfVW5SZWdpc3RlckNhbGxiYWNrIChOT1JfSGFuZGxlVHlwZURlZiAqaG5vciwgSEFMX05PUl9DYWxsYmFja0lEVHlwZURlZiBDYWxsYmFja0lkKQorSEFMX1N0YXR1c1R5cGVEZWYgSEFMX05PUl9VblJlZ2lzdGVyQ2FsbGJhY2soTk9SX0hhbmRsZVR5cGVEZWYgKmhub3IsIEhBTF9OT1JfQ2FsbGJhY2tJRFR5cGVEZWYgQ2FsbGJhY2tJZCkKIHsKICAgSEFMX1N0YXR1c1R5cGVEZWYgc3RhdHVzID0gSEFMX09LOwogICBIQUxfTk9SX1N0YXRlVHlwZURlZiBzdGF0ZTsKQEAgLTk3NSwyMCArMTIzNywyMCBAQAogICBfX0hBTF9MT0NLKGhub3IpOwogCiAgIHN0YXRlID0gaG5vci0+U3RhdGU7Ci0gIGlmKChzdGF0ZSA9PSBIQUxfTk9SX1NUQVRFX1JFQURZKSB8fCAoc3RhdGUgPT0gSEFMX05PUl9TVEFURV9SRVNFVCkgfHwgKHN0YXRlID09IEhBTF9OT1JfU1RBVEVfUFJPVEVDVEVEKSkKKyAgaWYgKChzdGF0ZSA9PSBIQUxfTk9SX1NUQVRFX1JFQURZKSB8fCAoc3RhdGUgPT0gSEFMX05PUl9TVEFURV9SRVNFVCkgfHwgKHN0YXRlID09IEhBTF9OT1JfU1RBVEVfUFJPVEVDVEVEKSkKICAgewogICAgIHN3aXRjaCAoQ2FsbGJhY2tJZCkKICAgICB7Ci0gICAgY2FzZSBIQUxfTk9SX01TUF9JTklUX0NCX0lEIDoKLSAgICAgIGhub3ItPk1zcEluaXRDYWxsYmFjayA9IEhBTF9OT1JfTXNwSW5pdDsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgSEFMX05PUl9NU1BfREVJTklUX0NCX0lEIDoKLSAgICAgIGhub3ItPk1zcERlSW5pdENhbGxiYWNrID0gSEFMX05PUl9Nc3BEZUluaXQ7Ci0gICAgICBicmVhazsKLSAgICBkZWZhdWx0IDoKLSAgICAgIC8qIHVwZGF0ZSByZXR1cm4gc3RhdHVzICovCi0gICAgICBzdGF0dXMgPSAgSEFMX0VSUk9SOwotICAgICAgYnJlYWs7CisgICAgICBjYXNlIEhBTF9OT1JfTVNQX0lOSVRfQ0JfSUQgOgorICAgICAgICBobm9yLT5Nc3BJbml0Q2FsbGJhY2sgPSBIQUxfTk9SX01zcEluaXQ7CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBIQUxfTk9SX01TUF9ERUlOSVRfQ0JfSUQgOgorICAgICAgICBobm9yLT5Nc3BEZUluaXRDYWxsYmFjayA9IEhBTF9OT1JfTXNwRGVJbml0OworICAgICAgICBicmVhazsKKyAgICAgIGRlZmF1bHQgOgorICAgICAgICAvKiB1cGRhdGUgcmV0dXJuIHN0YXR1cyAqLworICAgICAgICBzdGF0dXMgPSAgSEFMX0VSUk9SOworICAgICAgICBicmVhazsKICAgICB9CiAgIH0KICAgZWxzZQpAQCAtMTAwMiwxNCArMTI2NCwxNSBAQAogICByZXR1cm4gc3RhdHVzOwogfQogI2VuZGlmIC8qIChVU0VfSEFMX05PUl9SRUdJU1RFUl9DQUxMQkFDS1MpICovCisKIC8qKgogICAqIEB9CiAgICovCi0gIAorCiAvKiogQGRlZmdyb3VwIE5PUl9FeHBvcnRlZF9GdW5jdGlvbnNfR3JvdXAzIE5PUiBDb250cm9sIGZ1bmN0aW9ucwotICogIEBicmllZiAgIG1hbmFnZW1lbnQgZnVuY3Rpb25zIAotICoKLUB2ZXJiYXRpbSAgIAorICAqICBAYnJpZWYgICBtYW5hZ2VtZW50IGZ1bmN0aW9ucworICAqCitAdmVyYmF0aW0KICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgICAgICAgICAgICAgICAgICAgICAgICAjIyMjIyBOT1IgQ29udHJvbCBmdW5jdGlvbnMgIyMjIyMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkBAIC0xMDIwLDcgKzEyODMsNyBAQAogQGVuZHZlcmJhdGltCiAgICogQHsKICAgKi8KLSAgICAKKwogLyoqCiAgICogQGJyaWVmICBFbmFibGVzIGR5bmFtaWNhbGx5IE5PUiB3cml0ZSBvcGVyYXRpb24uCiAgICogQHBhcmFtICBobm9yIHBvaW50ZXIgdG8gYSBOT1JfSGFuZGxlVHlwZURlZiBzdHJ1Y3R1cmUgdGhhdCBjb250YWlucwpAQCAtMTAyOSwxOSArMTI5MiwzMCBAQAogICAqLwogSEFMX1N0YXR1c1R5cGVEZWYgSEFMX05PUl9Xcml0ZU9wZXJhdGlvbl9FbmFibGUoTk9SX0hhbmRsZVR5cGVEZWYgKmhub3IpCiB7Ci0gIC8qIFByb2Nlc3MgTG9ja2VkICovCi0gIF9fSEFMX0xPQ0soaG5vcik7CisgIC8qIENoZWNrIHRoZSBOT1IgY29udHJvbGxlciBzdGF0ZSAqLworICBpZiAoaG5vci0+U3RhdGUgPT0gSEFMX05PUl9TVEFURV9QUk9URUNURUQpCisgIHsKKyAgICAvKiBQcm9jZXNzIExvY2tlZCAqLworICAgIF9fSEFMX0xPQ0soaG5vcik7CiAKLSAgLyogRW5hYmxlIHdyaXRlIG9wZXJhdGlvbiAqLwotICBGTUNfTk9SU1JBTV9Xcml0ZU9wZXJhdGlvbl9FbmFibGUoaG5vci0+SW5zdGFuY2UsIGhub3ItPkluaXQuTlNCYW5rKTsgCi0gIAotICAvKiBVcGRhdGUgdGhlIE5PUiBjb250cm9sbGVyIHN0YXRlICovCi0gIGhub3ItPlN0YXRlID0gSEFMX05PUl9TVEFURV9SRUFEWTsKLSAgCi0gIC8qIFByb2Nlc3MgdW5sb2NrZWQgKi8KLSAgX19IQUxfVU5MT0NLKGhub3IpOyAKLSAgCi0gIHJldHVybiBIQUxfT0s7ICAKKyAgICAvKiBVcGRhdGUgdGhlIE5PUiBjb250cm9sbGVyIHN0YXRlICovCisgICAgaG5vci0+U3RhdGUgPSBIQUxfTk9SX1NUQVRFX0JVU1k7CisKKyAgICAvKiBFbmFibGUgd3JpdGUgb3BlcmF0aW9uICovCisgICAgKHZvaWQpRk1DX05PUlNSQU1fV3JpdGVPcGVyYXRpb25fRW5hYmxlKGhub3ItPkluc3RhbmNlLCBobm9yLT5Jbml0Lk5TQmFuayk7CisKKyAgICAvKiBVcGRhdGUgdGhlIE5PUiBjb250cm9sbGVyIHN0YXRlICovCisgICAgaG5vci0+U3RhdGUgPSBIQUxfTk9SX1NUQVRFX1JFQURZOworCisgICAgLyogUHJvY2VzcyB1bmxvY2tlZCAqLworICAgIF9fSEFMX1VOTE9DSyhobm9yKTsKKyAgfQorICBlbHNlCisgIHsKKyAgICByZXR1cm4gSEFMX0VSUk9SOworICB9CisKKyAgcmV0dXJuIEhBTF9PSzsKIH0KIAogLyoqCkBAIC0xMDUyLDQzICsxMzI2LDUxIEBACiAgICovCiBIQUxfU3RhdHVzVHlwZURlZiBIQUxfTk9SX1dyaXRlT3BlcmF0aW9uX0Rpc2FibGUoTk9SX0hhbmRsZVR5cGVEZWYgKmhub3IpCiB7Ci0gIC8qIFByb2Nlc3MgTG9ja2VkICovCi0gIF9fSEFMX0xPQ0soaG5vcik7CisgIC8qIENoZWNrIHRoZSBOT1IgY29udHJvbGxlciBzdGF0ZSAqLworICBpZiAoaG5vci0+U3RhdGUgPT0gSEFMX05PUl9TVEFURV9SRUFEWSkKKyAgeworICAgIC8qIFByb2Nlc3MgTG9ja2VkICovCisgICAgX19IQUxfTE9DSyhobm9yKTsKIAotICAvKiBVcGRhdGUgdGhlIFNSQU0gY29udHJvbGxlciBzdGF0ZSAqLwotICBobm9yLT5TdGF0ZSA9IEhBTF9OT1JfU1RBVEVfQlVTWTsKLSAgICAKLSAgLyogRGlzYWJsZSB3cml0ZSBvcGVyYXRpb24gKi8KLSAgRk1DX05PUlNSQU1fV3JpdGVPcGVyYXRpb25fRGlzYWJsZShobm9yLT5JbnN0YW5jZSwgaG5vci0+SW5pdC5OU0JhbmspOyAKLSAgCi0gIC8qIFVwZGF0ZSB0aGUgTk9SIGNvbnRyb2xsZXIgc3RhdGUgKi8KLSAgaG5vci0+U3RhdGUgPSBIQUxfTk9SX1NUQVRFX1BST1RFQ1RFRDsKLSAgCi0gIC8qIFByb2Nlc3MgdW5sb2NrZWQgKi8KLSAgX19IQUxfVU5MT0NLKGhub3IpOyAKLSAgCi0gIHJldHVybiBIQUxfT0s7ICAKKyAgICAvKiBVcGRhdGUgdGhlIE5PUiBjb250cm9sbGVyIHN0YXRlICovCisgICAgaG5vci0+U3RhdGUgPSBIQUxfTk9SX1NUQVRFX0JVU1k7CisKKyAgICAvKiBEaXNhYmxlIHdyaXRlIG9wZXJhdGlvbiAqLworICAgICh2b2lkKUZNQ19OT1JTUkFNX1dyaXRlT3BlcmF0aW9uX0Rpc2FibGUoaG5vci0+SW5zdGFuY2UsIGhub3ItPkluaXQuTlNCYW5rKTsKKworICAgIC8qIFVwZGF0ZSB0aGUgTk9SIGNvbnRyb2xsZXIgc3RhdGUgKi8KKyAgICBobm9yLT5TdGF0ZSA9IEhBTF9OT1JfU1RBVEVfUFJPVEVDVEVEOworCisgICAgLyogUHJvY2VzcyB1bmxvY2tlZCAqLworICAgIF9fSEFMX1VOTE9DSyhobm9yKTsKKyAgfQorICBlbHNlCisgIHsKKyAgICByZXR1cm4gSEFMX0VSUk9SOworICB9CisKKyAgcmV0dXJuIEhBTF9PSzsKIH0KIAogLyoqCiAgICogQH0KLSAgKi8gIAotICAKLS8qKiBAZGVmZ3JvdXAgTk9SX0V4cG9ydGVkX0Z1bmN0aW9uc19Hcm91cDQgTk9SIFN0YXRlIGZ1bmN0aW9ucyAKLSAqICBAYnJpZWYgICBQZXJpcGhlcmFsIFN0YXRlIGZ1bmN0aW9ucyAKLSAqCi1AdmVyYmF0aW0gICAKKyAgKi8KKworLyoqIEBkZWZncm91cCBOT1JfRXhwb3J0ZWRfRnVuY3Rpb25zX0dyb3VwNCBOT1IgU3RhdGUgZnVuY3Rpb25zCisgICogIEBicmllZiAgIFBlcmlwaGVyYWwgU3RhdGUgZnVuY3Rpb25zCisgICoKK0B2ZXJiYXRpbQogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgICAgICAgICAgICAgICAgICAgICAjIyMjIyBOT1IgU3RhdGUgZnVuY3Rpb25zICMjIyMjCi0gID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAgCisgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBbLi5dCi0gICAgVGhpcyBzdWJzZWN0aW9uIHBlcm1pdHMgdG8gZ2V0IGluIHJ1bi10aW1lIHRoZSBzdGF0dXMgb2YgdGhlIE5PUiBjb250cm9sbGVyIAorICAgIFRoaXMgc3Vic2VjdGlvbiBwZXJtaXRzIHRvIGdldCBpbiBydW4tdGltZSB0aGUgc3RhdHVzIG9mIHRoZSBOT1IgY29udHJvbGxlcgogICAgIGFuZCB0aGUgZGF0YSBmbG93LgogCiBAZW5kdmVyYmF0aW0KICAgKiBAewogICAqLwotICAKKwogLyoqCiAgICogQGJyaWVmICByZXR1cm4gdGhlIE5PUiBjb250cm9sbGVyIHN0YXRlCiAgICogQHBhcmFtICBobm9yIHBvaW50ZXIgdG8gYSBOT1JfSGFuZGxlVHlwZURlZiBzdHJ1Y3R1cmUgdGhhdCBjb250YWlucwpAQCAtMTEwMyw2MyArMTM4NSwxMDMgQEAKIC8qKgogICAqIEBicmllZiAgUmV0dXJucyB0aGUgTk9SIG9wZXJhdGlvbiBzdGF0dXMuCiAgICogQHBhcmFtICBobm9yIHBvaW50ZXIgdG8gYSBOT1JfSGFuZGxlVHlwZURlZiBzdHJ1Y3R1cmUgdGhhdCBjb250YWlucwotICAqICAgICAgICAgICAgICAgIHRoZSBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uIGZvciBOT1IgbW9kdWxlLiAgIAorICAqICAgICAgICAgICAgICAgIHRoZSBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uIGZvciBOT1IgbW9kdWxlLgogICAqIEBwYXJhbSAgQWRkcmVzcyBEZXZpY2UgYWRkcmVzcwogICAqIEBwYXJhbSAgVGltZW91dCBOT1IgcHJvZ3JhbW1pbmcgVGltZW91dAotICAqIEByZXR2YWwgTk9SX1N0YXR1czogVGhlIHJldHVybmVkIHZhbHVlIGNhbiBiZTogSEFMX05PUl9TVEFUVVNfU1VDQ0VTUywgSEFMX05PUl9TVEFUVVNfRVJST1IKKyAgKiBAcmV0dmFsIE5PUl9TdGF0dXMgVGhlIHJldHVybmVkIHZhbHVlIGNhbiBiZTogSEFMX05PUl9TVEFUVVNfU1VDQ0VTUywgSEFMX05PUl9TVEFUVVNfRVJST1IKICAgKiAgICAgICAgIG9yIEhBTF9OT1JfU1RBVFVTX1RJTUVPVVQKICAgKi8KIEhBTF9OT1JfU3RhdHVzVHlwZURlZiBIQUxfTk9SX0dldFN0YXR1cyhOT1JfSGFuZGxlVHlwZURlZiAqaG5vciwgdWludDMyX3QgQWRkcmVzcywgdWludDMyX3QgVGltZW91dCkKLXsgCit7CiAgIEhBTF9OT1JfU3RhdHVzVHlwZURlZiBzdGF0dXMgPSBIQUxfTk9SX1NUQVRVU19PTkdPSU5HOwotICB1aW50MTZfdCB0bXBTUjEgPSAwLCB0bXBTUjIgPSAwOwotICB1aW50MzJfdCB0aWNrc3RhcnQgPSAwOworICB1aW50MTZfdCB0bXBzcjE7CisgIHVpbnQxNl90IHRtcHNyMjsKKyAgdWludDMyX3QgdGlja3N0YXJ0OwogCiAgIC8qIFBvbGwgb24gTk9SIG1lbW9yeSBSZWFkeS9CdXN5IHNpZ25hbCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogICBIQUxfTk9SX01zcFdhaXQoaG5vciwgVGltZW91dCk7Ci0gIAorCiAgIC8qIEdldCB0aGUgTk9SIG1lbW9yeSBvcGVyYXRpb24gc3RhdHVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwotICAKKwogICAvKiBHZXQgdGljayAqLwogICB0aWNrc3RhcnQgPSBIQUxfR2V0VGljaygpOwotICB3aGlsZSgoc3RhdHVzICE9IEhBTF9OT1JfU1RBVFVTX1NVQ0NFU1MgKSAmJiAoc3RhdHVzICE9IEhBTF9OT1JfU1RBVFVTX1RJTUVPVVQpKQorCisgIGlmIChobm9yLT5Db21tYW5kU2V0ID09IE5PUl9BTURfRlVKSVRTVV9DT01NQU5EX1NFVCkKICAgewotICAgIC8qIENoZWNrIGZvciB0aGUgVGltZW91dCAqLwotICAgIGlmKFRpbWVvdXQgIT0gSEFMX01BWF9ERUxBWSkKKyAgICB3aGlsZSAoKHN0YXR1cyAhPSBIQUxfTk9SX1NUQVRVU19TVUNDRVNTKSAmJiAoc3RhdHVzICE9IEhBTF9OT1JfU1RBVFVTX1RJTUVPVVQpKQogICAgIHsKLSAgICAgIGlmKChUaW1lb3V0ID09IDApfHwoKEhBTF9HZXRUaWNrKCkgLSB0aWNrc3RhcnQgKSA+IFRpbWVvdXQpKQorICAgICAgLyogQ2hlY2sgZm9yIHRoZSBUaW1lb3V0ICovCisgICAgICBpZiAoVGltZW91dCAhPSBIQUxfTUFYX0RFTEFZKQogICAgICAgewotICAgICAgICBzdGF0dXMgPSBIQUxfTk9SX1NUQVRVU19USU1FT1VUOyAKLSAgICAgIH0gCi0gICAgfSAKKyAgICAgICAgaWYgKCgoSEFMX0dldFRpY2soKSAtIHRpY2tzdGFydCkgPiBUaW1lb3V0KSB8fCAoVGltZW91dCA9PSAwVSkpCisgICAgICAgIHsKKyAgICAgICAgICBzdGF0dXMgPSBIQUxfTk9SX1NUQVRVU19USU1FT1VUOworICAgICAgICB9CisgICAgICB9CiAKLSAgICAvKiBSZWFkIE5PUiBzdGF0dXMgcmVnaXN0ZXIgKERRNiBhbmQgRFE1KSAqLwotICAgIHRtcFNSMSA9ICooX19JTyB1aW50MTZfdCAqKUFkZHJlc3M7Ci0gICAgdG1wU1IyID0gKihfX0lPIHVpbnQxNl90ICopQWRkcmVzczsKKyAgICAgIC8qIFJlYWQgTk9SIHN0YXR1cyByZWdpc3RlciAoRFE2IGFuZCBEUTUpICovCisgICAgICB0bXBzcjEgPSAqKF9fSU8gdWludDE2X3QgKilBZGRyZXNzOworICAgICAgdG1wc3IyID0gKihfX0lPIHVpbnQxNl90ICopQWRkcmVzczsKIAotICAgIC8qIElmIERRNiBkaWQgbm90IHRvZ2dsZSBiZXR3ZWVuIHRoZSB0d28gcmVhZHMgdGhlbiByZXR1cm4gSEFMX05PUl9TVEFUVVNfU1VDQ0VTUyAgKi8KLSAgICBpZigodG1wU1IxICYgTk9SX01BU0tfU1RBVFVTX0RRNikgPT0gKHRtcFNSMiAmIE5PUl9NQVNLX1NUQVRVU19EUTYpKSAKLSAgICB7Ci0gICAgICByZXR1cm4gSEFMX05PUl9TVEFUVVNfU1VDQ0VTUyA7Ci0gICAgfQotICAgIAotICAgIGlmKCh0bXBTUjEgJiBOT1JfTUFTS19TVEFUVVNfRFE1KSA9PSBOT1JfTUFTS19TVEFUVVNfRFE1KQotICAgIHsKLSAgICAgIHN0YXR1cyA9IEhBTF9OT1JfU1RBVFVTX09OR09JTkc7Ci0gICAgfQotICAgIAotICAgIHRtcFNSMSA9ICooX19JTyB1aW50MTZfdCAqKUFkZHJlc3M7Ci0gICAgdG1wU1IyID0gKihfX0lPIHVpbnQxNl90ICopQWRkcmVzczsKKyAgICAgIC8qIElmIERRNiBkaWQgbm90IHRvZ2dsZSBiZXR3ZWVuIHRoZSB0d28gcmVhZHMgdGhlbiByZXR1cm4gSEFMX05PUl9TVEFUVVNfU1VDQ0VTUyAgKi8KKyAgICAgIGlmICgodG1wc3IxICYgTk9SX01BU0tfU1RBVFVTX0RRNikgPT0gKHRtcHNyMiAmIE5PUl9NQVNLX1NUQVRVU19EUTYpKQorICAgICAgeworICAgICAgICByZXR1cm4gSEFMX05PUl9TVEFUVVNfU1VDQ0VTUyA7CisgICAgICB9CiAKLSAgICAvKiBJZiBEUTYgZGlkIG5vdCB0b2dnbGUgYmV0d2VlbiB0aGUgdHdvIHJlYWRzIHRoZW4gcmV0dXJuIEhBTF9OT1JfU1RBVFVTX1NVQ0NFU1MgICovCi0gICAgaWYoKHRtcFNSMSAmIE5PUl9NQVNLX1NUQVRVU19EUTYpID09ICh0bXBTUjIgJiBOT1JfTUFTS19TVEFUVVNfRFE2KSkgCi0gICAgewotICAgICAgcmV0dXJuIEhBTF9OT1JfU1RBVFVTX1NVQ0NFU1M7CisgICAgICBpZiAoKHRtcHNyMSAmIE5PUl9NQVNLX1NUQVRVU19EUTUpID09IE5PUl9NQVNLX1NUQVRVU19EUTUpCisgICAgICB7CisgICAgICAgIHN0YXR1cyA9IEhBTF9OT1JfU1RBVFVTX09OR09JTkc7CisgICAgICB9CisKKyAgICAgIHRtcHNyMSA9ICooX19JTyB1aW50MTZfdCAqKUFkZHJlc3M7CisgICAgICB0bXBzcjIgPSAqKF9fSU8gdWludDE2X3QgKilBZGRyZXNzOworCisgICAgICAvKiBJZiBEUTYgZGlkIG5vdCB0b2dnbGUgYmV0d2VlbiB0aGUgdHdvIHJlYWRzIHRoZW4gcmV0dXJuIEhBTF9OT1JfU1RBVFVTX1NVQ0NFU1MgICovCisgICAgICBpZiAoKHRtcHNyMSAmIE5PUl9NQVNLX1NUQVRVU19EUTYpID09ICh0bXBzcjIgJiBOT1JfTUFTS19TVEFUVVNfRFE2KSkKKyAgICAgIHsKKyAgICAgICAgcmV0dXJuIEhBTF9OT1JfU1RBVFVTX1NVQ0NFU1M7CisgICAgICB9CisgICAgICBpZiAoKHRtcHNyMSAmIE5PUl9NQVNLX1NUQVRVU19EUTUpID09IE5PUl9NQVNLX1NUQVRVU19EUTUpCisgICAgICB7CisgICAgICAgIHJldHVybiBIQUxfTk9SX1NUQVRVU19FUlJPUjsKKyAgICAgIH0KICAgICB9Ci0gICAgaWYoKHRtcFNSMSAmIE5PUl9NQVNLX1NUQVRVU19EUTUpID09IE5PUl9NQVNLX1NUQVRVU19EUTUpCisgIH0KKyAgZWxzZSBpZiAoaG5vci0+Q29tbWFuZFNldCA9PSBOT1JfSU5URUxfU0hBUlBfRVhUX0NPTU1BTkRfU0VUKQorICB7CisgICAgZG8KICAgICB7Ci0gICAgICByZXR1cm4gSEFMX05PUl9TVEFUVVNfRVJST1I7Ci0gICAgfSAKKyAgICAgIE5PUl9XUklURShBZGRyZXNzLCBOT1JfQ01EX1JFQURfU1RBVFVTX1JFRyk7CisgICAgICB0bXBzcjIgPSAqKF9fSU8gdWludDE2X3QgKikoQWRkcmVzcyk7CisKKyAgICAgIC8qIENoZWNrIGZvciB0aGUgVGltZW91dCAqLworICAgICAgaWYgKFRpbWVvdXQgIT0gSEFMX01BWF9ERUxBWSkKKyAgICAgIHsKKyAgICAgICAgaWYgKCgoSEFMX0dldFRpY2soKSAtIHRpY2tzdGFydCkgPiBUaW1lb3V0KSB8fCAoVGltZW91dCA9PSAwVSkpCisgICAgICAgIHsKKyAgICAgICAgICByZXR1cm4gSEFMX05PUl9TVEFUVVNfVElNRU9VVDsKKyAgICAgICAgfQorICAgICAgfQorICAgIH0gd2hpbGUgKCh0bXBzcjIgJiBOT1JfTUFTS19TVEFUVVNfRFE3KSA9PSAwVSk7CisKKyAgICBOT1JfV1JJVEUoQWRkcmVzcywgTk9SX0NNRF9SRUFEX1NUQVRVU19SRUcpOworICAgIHRtcHNyMSA9ICooX19JTyB1aW50MTZfdCAqKShBZGRyZXNzKTsKKyAgICBpZiAoKHRtcHNyMSAgJiAoTk9SX01BU0tfU1RBVFVTX0RRNSB8IE5PUl9NQVNLX1NUQVRVU19EUTQpKSAhPSAwVSkKKyAgICB7CisgICAgICAvKiBDbGVhciB0aGUgU3RhdHVzIFJlZ2lzdGVyICAqLworICAgICAgTk9SX1dSSVRFKEFkZHJlc3MsIE5PUl9DTURfUkVBRF9TVEFUVVNfUkVHKTsKKyAgICAgIHN0YXR1cyA9IEhBTF9OT1JfU1RBVFVTX0VSUk9SOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgc3RhdHVzID0gSEFMX05PUl9TVEFUVVNfU1VDQ0VTUzsKKyAgICB9CisgIH0KKyAgZWxzZQorICB7CisgICAgLyogUHJpbWFyeSBjb21tYW5kIHNldCBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBkcml2ZXIgKi8KKyAgICBzdGF0dXMgPSBIQUxfTk9SX1NUQVRVU19FUlJPUjsKICAgfQogCiAgIC8qIFJldHVybiB0aGUgb3BlcmF0aW9uIHN0YXR1cyAqLwpAQCAtMTE3MywxMyArMTQ5NSwxNCBAQAogLyoqCiAgICogQH0KICAgKi8KKworLyoqCisgICogQH0KKyAgKi8KKwogI2VuZGlmIC8qIEhBTF9OT1JfTU9EVUxFX0VOQUJMRUQgKi8KLS8qKgotICAqIEB9Ci0gICovCiAKIC8qKgogICAqIEB9CiAgICovCiAKLS8qKioqKioqKioqKioqKioqKioqKioqKiogKEMpIENPUFlSSUdIVCBTVE1pY3JvZWxlY3Ryb25pY3MgKioqKipFTkQgT0YgRklMRSoqKiovCmRpZmYgLS1naXQgYS9TcmMvc3RtMzJmN3h4X2hhbF9wY2QuYyBiL1NyYy9zdG0zMmY3eHhfaGFsX3BjZC5jCmluZGV4IGM3MWZkNGMuLjE1ZmUxMTMgMTAwNjQ0Ci0tLSBhL1NyYy9zdG0zMmY3eHhfaGFsX3BjZC5jCisrKyBiL1NyYy9zdG0zMmY3eHhfaGFsX3BjZC5jCkBAIC0xMCw2ICsxMCwxNyBAQAogICAqICAgICAgICAgICArIFBlcmlwaGVyYWwgQ29udHJvbCBmdW5jdGlvbnMKICAgKiAgICAgICAgICAgKyBQZXJpcGhlcmFsIFN0YXRlIGZ1bmN0aW9ucwogICAqCisgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAqIEBhdHRlbnRpb24KKyAgKgorICAqIENvcHlyaWdodCAoYykgMjAxNyBTVE1pY3JvZWxlY3Ryb25pY3MuCisgICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAgKgorICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgdW5kZXIgdGVybXMgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZQorICAqIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvZnR3YXJlIGNvbXBvbmVudC4KKyAgKiBJZiBubyBMSUNFTlNFIGZpbGUgY29tZXMgd2l0aCB0aGlzIHNvZnR3YXJlLCBpdCBpcyBwcm92aWRlZCBBUy1JUy4KKyAgKgorICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgQHZlcmJhdGltCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICAgICAgICAgICAgICAgICAgICAjIyMjIyBIb3cgdG8gdXNlIHRoaXMgZHJpdmVyICMjIyMjCkBAIC00MSwxNyArNTIsNiBAQAogCiAgIEBlbmR2ZXJiYXRpbQogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAgKiBAYXR0ZW50aW9uCi0gICoKLSAgKiA8aDI+PGNlbnRlcj4mY29weTsgQ29weXJpZ2h0IChjKSAyMDE3IFNUTWljcm9lbGVjdHJvbmljcy4KLSAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLjwvY2VudGVyPjwvaDI+Ci0gICoKLSAgKiBUaGlzIHNvZnR3YXJlIGNvbXBvbmVudCBpcyBsaWNlbnNlZCBieSBTVCB1bmRlciBCU0QgMy1DbGF1c2UgbGljZW5zZSwKLSAgKiB0aGUgIkxpY2Vuc2UiOyBZb3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlCi0gICogTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0OgotICAqICAgICAgICAgICAgICAgICAgICAgICAgb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvQlNELTMtQ2xhdXNlCi0gICoKLSAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgICovCiAKIC8qIEluY2x1ZGVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCkBAIC0yMjIsNyArMjIyLDcgQEAKIAogICBocGNkLT5VU0JfQWRkcmVzcyA9IDBVOwogICBocGNkLT5TdGF0ZSA9IEhBTF9QQ0RfU1RBVEVfUkVBRFk7Ci0gIAorCiAgIC8qIEFjdGl2YXRlIExQTSAqLwogICBpZiAoaHBjZC0+SW5pdC5scG1fZW5hYmxlID09IDFVKQogICB7CkBAIC03MTksNyArNzE5LDggQEAKIAogLyoqCiAgICogQGJyaWVmICBVbnJlZ2lzdGVyIHRoZSBVU0IgUENEIElzbyBPVVQgaW5jb21wbGV0ZSBDYWxsYmFjawotICAqICAgICAgICAgVVNCIFBDRCBJc28gT1VUIGluY29tcGxldGUgQ2FsbGJhY2sgaXMgcmVkaXJlY3RlZCB0byB0aGUgd2VhayBIQUxfUENEX0lTT09VVEluY29tcGxldGVDYWxsYmFjaygpIHByZWRlZmluZWQgY2FsbGJhY2sKKyAgKiAgICAgICAgIFVTQiBQQ0QgSXNvIE9VVCBpbmNvbXBsZXRlIENhbGxiYWNrIGlzIHJlZGlyZWN0ZWQKKyAgKiAgICAgICAgIHRvIHRoZSB3ZWFrIEhBTF9QQ0RfSVNPT1VUSW5jb21wbGV0ZUNhbGxiYWNrKCkgcHJlZGVmaW5lZCBjYWxsYmFjawogICAqIEBwYXJhbSAgaHBjZCBQQ0QgaGFuZGxlCiAgICogQHJldHZhbCBIQUwgc3RhdHVzCiAgICovCkBAIC03OTMsNyArNzk0LDggQEAKIAogLyoqCiAgICogQGJyaWVmICBVbnJlZ2lzdGVyIHRoZSBVU0IgUENEIElzbyBJTiBpbmNvbXBsZXRlIENhbGxiYWNrCi0gICogICAgICAgICBVU0IgUENEIElzbyBJTiBpbmNvbXBsZXRlIENhbGxiYWNrIGlzIHJlZGlyZWN0ZWQgdG8gdGhlIHdlYWsgSEFMX1BDRF9JU09JTkluY29tcGxldGVDYWxsYmFjaygpIHByZWRlZmluZWQgY2FsbGJhY2sKKyAgKiAgICAgICAgIFVTQiBQQ0QgSXNvIElOIGluY29tcGxldGUgQ2FsbGJhY2sgaXMgcmVkaXJlY3RlZAorICAqICAgICAgICAgdG8gdGhlIHdlYWsgSEFMX1BDRF9JU09JTkluY29tcGxldGVDYWxsYmFjaygpIHByZWRlZmluZWQgY2FsbGJhY2sKICAgKiBAcGFyYW0gIGhwY2QgUENEIGhhbmRsZQogICAqIEByZXR2YWwgSEFMIHN0YXR1cwogICAqLwpAQCAtOTU5LDkgKzk2MSwxMyBAQAogewogICBVU0JfT1RHX0dsb2JhbFR5cGVEZWYgKlVTQnggPSBocGNkLT5JbnN0YW5jZTsKICAgdWludDMyX3QgVVNCeF9CQVNFID0gKHVpbnQzMl90KVVTQng7Ci0gIHVpbnQzMl90IGksIGVwX2ludHIsIGVwaW50LCBlcG51bTsKLSAgdWludDMyX3QgZmlmb2VtcHR5bXNrLCB0ZW1wOwogICBVU0JfT1RHX0VQVHlwZURlZiAqZXA7CisgIHVpbnQzMl90IGk7CisgIHVpbnQzMl90IGVwX2ludHI7CisgIHVpbnQzMl90IGVwaW50OworICB1aW50MzJfdCBlcG51bTsKKyAgdWludDMyX3QgZmlmb2VtcHR5bXNrOworICB1aW50MzJfdCB0ZW1wOwogCiAgIC8qIGVuc3VyZSB0aGF0IHdlIGFyZSBpbiBkZXZpY2UgbW9kZSAqLwogICBpZiAoVVNCX0dldE1vZGUoaHBjZC0+SW5zdGFuY2UpID09IFVTQl9PVEdfTU9ERV9ERVZJQ0UpCkBAIC0xMDA3LDYgKzEwMTMsNyBAQAogICAgICAgewogICAgICAgICAvKiAuLi4gKi8KICAgICAgIH0KKwogICAgICAgVVNCX1VOTUFTS19JTlRFUlJVUFQoaHBjZC0+SW5zdGFuY2UsIFVTQl9PVEdfR0lOVFNUU19SWEZMVkwpOwogICAgIH0KIApAQCAtMTIwMCw3ICsxMjA3LDYgQEAKICAgICAgIHsKICAgICAgICAgVVNCeF9JTkVQKGkpLT5ESUVQSU5UID0gMHhGQjdGVTsKICAgICAgICAgVVNCeF9JTkVQKGkpLT5ESUVQQ1RMICY9IH5VU0JfT1RHX0RJRVBDVExfU1RBTEw7Ci0gICAgICAgIFVTQnhfSU5FUChpKS0+RElFUENUTCB8PSBVU0JfT1RHX0RJRVBDVExfU05BSzsKICAgICAgICAgVVNCeF9PVVRFUChpKS0+RE9FUElOVCA9IDB4RkI3RlU7CiAgICAgICAgIFVTQnhfT1VURVAoaSktPkRPRVBDVEwgJj0gflVTQl9PVEdfRE9FUENUTF9TVEFMTDsKICAgICAgICAgVVNCeF9PVVRFUChpKS0+RE9FUENUTCB8PSBVU0JfT1RHX0RPRVBDVExfU05BSzsKQEAgLTE5MDksNiArMTkxNSwzMyBAQAogfQogCiAvKioKKyAgKiBAYnJpZWYgIFNldCB0aGUgVVNCIERldmljZSBoaWdoIHNwZWVkIHRlc3QgbW9kZS4KKyAgKiBAcGFyYW0gIGhwY2QgUENEIGhhbmRsZQorICAqIEBwYXJhbSAgYWRkcmVzcyB0ZXN0IG1vZGUKKyAgKiBAcmV0dmFsIEhBTCBzdGF0dXMKKyAgKi8KK0hBTF9TdGF0dXNUeXBlRGVmIEhBTF9QQ0RfU2V0VGVzdE1vZGUoUENEX0hhbmRsZVR5cGVEZWYgKmhwY2QsIHVpbnQ4X3QgdGVzdG1vZGUpCit7CisgIFVTQl9PVEdfR2xvYmFsVHlwZURlZiAqVVNCeCA9IGhwY2QtPkluc3RhbmNlOworICB1aW50MzJfdCBVU0J4X0JBU0UgPSAodWludDMyX3QpVVNCeDsKKworICBzd2l0Y2ggKHRlc3Rtb2RlKQorICB7CisgICAgY2FzZSBURVNUX0o6CisgICAgY2FzZSBURVNUX0s6CisgICAgY2FzZSBURVNUX1NFMF9OQUs6CisgICAgY2FzZSBURVNUX1BBQ0tFVDoKKyAgICBjYXNlIFRFU1RfRk9SQ0VfRU46CisgICAgICBVU0J4X0RFVklDRS0+RENUTCB8PSB0ZXN0bW9kZSA8PCA0OworICAgICAgYnJlYWs7CisKKyAgICBkZWZhdWx0OgorICAgICAgYnJlYWs7CisgIH0KKworICByZXR1cm4gSEFMX09LOworfQorLyoqCiAgICogQH0KICAgKi8KIApAQCAtMjEzNSw1ICsyMTY4LDMgQEAKIC8qKgogICAqIEB9CiAgICovCi0KLS8qKioqKioqKioqKioqKioqKioqKioqKiogKEMpIENPUFlSSUdIVCBTVE1pY3JvZWxlY3Ryb25pY3MgKioqKipFTkQgT0YgRklMRSoqKiovCmRpZmYgLS1naXQgYS9TcmMvc3RtMzJmN3h4X2hhbF9wY2RfZXguYyBiL1NyYy9zdG0zMmY3eHhfaGFsX3BjZF9leC5jCmluZGV4IGY1ZWQ0NjEuLjJhYTlkOTYgMTAwNjQ0Ci0tLSBhL1NyYy9zdG0zMmY3eHhfaGFsX3BjZF9leC5jCisrKyBiL1NyYy9zdG0zMmY3eHhfaGFsX3BjZF9leC5jCkBAIC0xMCwxMyArMTAsMTIgQEAKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgICogQGF0dGVudGlvbgogICAqCi0gICogPGgyPjxjZW50ZXI+JmNvcHk7IENvcHlyaWdodCAoYykgMjAxNyBTVE1pY3JvZWxlY3Ryb25pY3MuCi0gICogQWxsIHJpZ2h0cyByZXNlcnZlZC48L2NlbnRlcj48L2gyPgorICAqIENvcHlyaWdodCAoYykgMjAxNyBTVE1pY3JvZWxlY3Ryb25pY3MuCisgICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgKgotICAqIFRoaXMgc29mdHdhcmUgY29tcG9uZW50IGlzIGxpY2Vuc2VkIGJ5IFNUIHVuZGVyIEJTRCAzLUNsYXVzZSBsaWNlbnNlLAotICAqIHRoZSAiTGljZW5zZSI7IFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUKLSAgKiBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQ6Ci0gICogICAgICAgICAgICAgICAgICAgICAgICBvcGVuc291cmNlLm9yZy9saWNlbnNlcy9CU0QtMy1DbGF1c2UKKyAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIHVuZGVyIHRlcm1zIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUKKyAgKiBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb2Z0d2FyZSBjb21wb25lbnQuCisgICogSWYgbm8gTElDRU5TRSBmaWxlIGNvbWVzIHdpdGggdGhpcyBzb2Z0d2FyZSwgaXQgaXMgcHJvdmlkZWQgQVMtSVMuCiAgICoKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgICovCkBAIC0yMDMsNSArMjAyLDMgQEAKIC8qKgogICAqIEB9CiAgICovCi0KLS8qKioqKioqKioqKioqKioqKioqKioqKiogKEMpIENPUFlSSUdIVCBTVE1pY3JvZWxlY3Ryb25pY3MgKioqKipFTkQgT0YgRklMRSoqKiovCmRpZmYgLS1naXQgYS9TcmMvc3RtMzJmN3h4X2hhbF9wd3IuYyBiL1NyYy9zdG0zMmY3eHhfaGFsX3B3ci5jCmluZGV4IDRlZDgxYjUuLjhlMTMxM2EgMTAwNjQ0Ci0tLSBhL1NyYy9zdG0zMmY3eHhfaGFsX3B3ci5jCisrKyBiL1NyYy9zdG0zMmY3eHhfaGFsX3B3ci5jCkBAIC0xMSwxNiArMTEsMTUgQEAKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgICogQGF0dGVudGlvbgogICAqCi0gICogPGgyPjxjZW50ZXI+JmNvcHk7IENvcHlyaWdodCAoYykgMjAxNyBTVE1pY3JvZWxlY3Ryb25pY3MuCi0gICogQWxsIHJpZ2h0cyByZXNlcnZlZC48L2NlbnRlcj48L2gyPgorICAqIENvcHlyaWdodCAoYykgMjAxNyBTVE1pY3JvZWxlY3Ryb25pY3MuCisgICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgKgotICAqIFRoaXMgc29mdHdhcmUgY29tcG9uZW50IGlzIGxpY2Vuc2VkIGJ5IFNUIHVuZGVyIEJTRCAzLUNsYXVzZSBsaWNlbnNlLAotICAqIHRoZSAiTGljZW5zZSI7IFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUKLSAgKiBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQ6Ci0gICogICAgICAgICAgICAgICAgICAgICAgICBvcGVuc291cmNlLm9yZy9saWNlbnNlcy9CU0QtMy1DbGF1c2UKKyAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIHVuZGVyIHRlcm1zIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUKKyAgKiBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb2Z0d2FyZSBjb21wb25lbnQuCisgICogSWYgbm8gTElDRU5TRSBmaWxlIGNvbWVzIHdpdGggdGhpcyBzb2Z0d2FyZSwgaXQgaXMgcHJvdmlkZWQgQVMtSVMuCiAgICoKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gICovIAorICAqLwogCiAvKiBJbmNsdWRlcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogI2luY2x1ZGUgInN0bTMyZjd4eF9oYWwuaCIKQEAgLTU5Niw0ICs1OTUsMyBAQAogICAqIEB9CiAgICovCiAKLS8qKioqKioqKioqKioqKioqKioqKioqKiogKEMpIENPUFlSSUdIVCBTVE1pY3JvZWxlY3Ryb25pY3MgKioqKipFTkQgT0YgRklMRSoqKiovCmRpZmYgLS1naXQgYS9TcmMvc3RtMzJmN3h4X2hhbF9wd3JfZXguYyBiL1NyYy9zdG0zMmY3eHhfaGFsX3B3cl9leC5jCmluZGV4IGFmOGY4NzAuLjNlM2EwMTYgMTAwNjQ0Ci0tLSBhL1NyYy9zdG0zMmY3eHhfaGFsX3B3cl9leC5jCisrKyBiL1NyYy9zdG0zMmY3eHhfaGFsX3B3cl9leC5jCkBAIC0xMCwxNiArMTAsMTUgQEAKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgICogQGF0dGVudGlvbgogICAqCi0gICogPGgyPjxjZW50ZXI+JmNvcHk7IENvcHlyaWdodCAoYykgMjAxNyBTVE1pY3JvZWxlY3Ryb25pY3MuCi0gICogQWxsIHJpZ2h0cyByZXNlcnZlZC48L2NlbnRlcj48L2gyPgorICAqIENvcHlyaWdodCAoYykgMjAxNyBTVE1pY3JvZWxlY3Ryb25pY3MuCisgICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgKgotICAqIFRoaXMgc29mdHdhcmUgY29tcG9uZW50IGlzIGxpY2Vuc2VkIGJ5IFNUIHVuZGVyIEJTRCAzLUNsYXVzZSBsaWNlbnNlLAotICAqIHRoZSAiTGljZW5zZSI7IFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUKLSAgKiBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQ6Ci0gICogICAgICAgICAgICAgICAgICAgICAgICBvcGVuc291cmNlLm9yZy9saWNlbnNlcy9CU0QtMy1DbGF1c2UKKyAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIHVuZGVyIHRlcm1zIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUKKyAgKiBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb2Z0d2FyZSBjb21wb25lbnQuCisgICogSWYgbm8gTElDRU5TRSBmaWxlIGNvbWVzIHdpdGggdGhpcyBzb2Z0d2FyZSwgaXQgaXMgcHJvdmlkZWQgQVMtSVMuCiAgICoKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gICovIAorICAqLwogCiAvKiBJbmNsdWRlcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogI2luY2x1ZGUgInN0bTMyZjd4eF9oYWwuaCIKQEAgLTU1MSw0ICs1NTAsMyBAQAogICAqIEB9CiAgICovCiAKLS8qKioqKioqKioqKioqKioqKioqKioqKiogKEMpIENPUFlSSUdIVCBTVE1pY3JvZWxlY3Ryb25pY3MgKioqKipFTkQgT0YgRklMRSoqKiovCmRpZmYgLS1naXQgYS9TcmMvc3RtMzJmN3h4X2hhbF9xc3BpLmMgYi9TcmMvc3RtMzJmN3h4X2hhbF9xc3BpLmMKaW5kZXggYmUxNDMzNC4uZmE5YTU1YSAxMDA2NDQKLS0tIGEvU3JjL3N0bTMyZjd4eF9oYWxfcXNwaS5jCisrKyBiL1NyYy9zdG0zMmY3eHhfaGFsX3FzcGkuYwpAQCAtMTQsNiArMTQsMTcgQEAKICAgKiAgICAgICAgICAgKyBFcnJvcnMgbWFuYWdlbWVudCBhbmQgYWJvcnQgZnVuY3Rpb25hbGl0eQogICAqCiAgICoKKyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICogQGF0dGVudGlvbgorICAqCisgICogQ29weXJpZ2h0IChjKSAyMDE3IFNUTWljcm9lbGVjdHJvbmljcy4KKyAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICAqCisgICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCB1bmRlciB0ZXJtcyB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlCisgICogaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc29mdHdhcmUgY29tcG9uZW50LgorICAqIElmIG5vIExJQ0VOU0UgZmlsZSBjb21lcyB3aXRoIHRoaXMgc29mdHdhcmUsIGl0IGlzIHByb3ZpZGVkIEFTLUlTLgorICAqCisgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICBAdmVyYmF0aW0KICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgICAgICAgICAgICAgICAgICAgICAgICAjIyMjIyBIb3cgdG8gdXNlIHRoaXMgZHJpdmVyICMjIyMjCkBAIC0xMzMsNyArMTQ0LDcgQEAKICAgICAgIFRoZSBjb21waWxhdGlvbiBkZWZpbmUgIFVTRV9IQUxfUVNQSV9SRUdJU1RFUl9DQUxMQkFDS1Mgd2hlbiBzZXQgdG8gMQogICAgICAgYWxsb3dzIHRoZSB1c2VyIHRvIGNvbmZpZ3VyZSBkeW5hbWljYWxseSB0aGUgZHJpdmVyIGNhbGxiYWNrcy4KIAotICAgICAgVXNlIEZ1bmN0aW9ucyBAcmVmIEhBTF9RU1BJX1JlZ2lzdGVyQ2FsbGJhY2soKSB0byByZWdpc3RlciBhIHVzZXIgY2FsbGJhY2ssCisgICAgICBVc2UgRnVuY3Rpb25zIEhBTF9RU1BJX1JlZ2lzdGVyQ2FsbGJhY2soKSB0byByZWdpc3RlciBhIHVzZXIgY2FsbGJhY2ssCiAgICAgICBpdCBhbGxvd3MgdG8gcmVnaXN0ZXIgZm9sbG93aW5nIGNhbGxiYWNrczoKICAgICAgICAgKCspIEVycm9yQ2FsbGJhY2sgOiBjYWxsYmFjayB3aGVuIGVycm9yIG9jY3Vycy4KICAgICAgICAgKCspIEFib3J0Q3BsdENhbGxiYWNrIDogY2FsbGJhY2sgd2hlbiBhYm9ydCBpcyBjb21wbGV0ZWQuCkBAIC0xNTAsNyArMTYxLDcgQEAKICAgICAgIFRoaXMgZnVuY3Rpb24gdGFrZXMgYXMgcGFyYW1ldGVycyB0aGUgSEFMIHBlcmlwaGVyYWwgaGFuZGxlLCB0aGUgQ2FsbGJhY2sgSUQKICAgICAgIGFuZCBhIHBvaW50ZXIgdG8gdGhlIHVzZXIgY2FsbGJhY2sgZnVuY3Rpb24uCiAKLSAgICAgIFVzZSBmdW5jdGlvbiBAcmVmIEhBTF9RU1BJX1VuUmVnaXN0ZXJDYWxsYmFjaygpIHRvIHJlc2V0IGEgY2FsbGJhY2sgdG8gdGhlIGRlZmF1bHQKKyAgICAgIFVzZSBmdW5jdGlvbiBIQUxfUVNQSV9VblJlZ2lzdGVyQ2FsbGJhY2soKSB0byByZXNldCBhIGNhbGxiYWNrIHRvIHRoZSBkZWZhdWx0CiAgICAgICB3ZWFrIChzdXJjaGFyZ2VkKSBmdW5jdGlvbi4gSXQgYWxsb3dzIHRvIHJlc2V0IGZvbGxvd2luZyBjYWxsYmFja3M6CiAgICAgICAgICgrKSBFcnJvckNhbGxiYWNrIDogY2FsbGJhY2sgd2hlbiBlcnJvciBvY2N1cnMuCiAgICAgICAgICgrKSBBYm9ydENwbHRDYWxsYmFjayA6IGNhbGxiYWNrIHdoZW4gYWJvcnQgaXMgY29tcGxldGVkLgpAQCAtMTY2LDEyICsxNzcsMTIgQEAKICAgICAgICAgKCspIE1zcERlSW5pdENhbGxiYWNrICA6IFFTUEkgTXNwRGVJbml0LgogICAgICAgVGhpcyBmdW5jdGlvbikgdGFrZXMgYXMgcGFyYW1ldGVycyB0aGUgSEFMIHBlcmlwaGVyYWwgaGFuZGxlIGFuZCB0aGUgQ2FsbGJhY2sgSUQuCiAKLSAgICAgIEJ5IGRlZmF1bHQsIGFmdGVyIHRoZSBAcmVmIEhBTF9RU1BJX0luaXQgYW5kIGlmIHRoZSBzdGF0ZSBpcyBIQUxfUVNQSV9TVEFURV9SRVNFVAorICAgICAgQnkgZGVmYXVsdCwgYWZ0ZXIgdGhlIEhBTF9RU1BJX0luaXQgYW5kIGlmIHRoZSBzdGF0ZSBpcyBIQUxfUVNQSV9TVEFURV9SRVNFVAogICAgICAgYWxsIGNhbGxiYWNrcyBhcmUgcmVzZXQgdG8gdGhlIGNvcnJlc3BvbmRpbmcgbGVnYWN5IHdlYWsgKHN1cmNoYXJnZWQpIGZ1bmN0aW9ucy4KICAgICAgIEV4Y2VwdGlvbiBkb25lIGZvciBNc3BJbml0IGFuZCBNc3BEZUluaXQgY2FsbGJhY2tzIHRoYXQgYXJlIHJlc3BlY3RpdmVseQotICAgICAgcmVzZXQgdG8gdGhlIGxlZ2FjeSB3ZWFrIChzdXJjaGFyZ2VkKSBmdW5jdGlvbnMgaW4gdGhlIEByZWYgSEFMX1FTUElfSW5pdAotICAgICAgYW5kIEByZWYgIEhBTF9RU1BJX0RlSW5pdCBvbmx5IHdoZW4gdGhlc2UgY2FsbGJhY2tzIGFyZSBudWxsIChub3QgcmVnaXN0ZXJlZCBiZWZvcmVoYW5kKS4KLSAgICAgIElmIG5vdCwgTXNwSW5pdCBvciBNc3BEZUluaXQgYXJlIG5vdCBudWxsLCB0aGUgQHJlZiBIQUxfUVNQSV9Jbml0IGFuZCBAcmVmIEhBTF9RU1BJX0RlSW5pdAorICAgICAgcmVzZXQgdG8gdGhlIGxlZ2FjeSB3ZWFrIChzdXJjaGFyZ2VkKSBmdW5jdGlvbnMgaW4gdGhlIEhBTF9RU1BJX0luaXQKKyAgICAgIGFuZCAgSEFMX1FTUElfRGVJbml0IG9ubHkgd2hlbiB0aGVzZSBjYWxsYmFja3MgYXJlIG51bGwgKG5vdCByZWdpc3RlcmVkIGJlZm9yZWhhbmQpLgorICAgICAgSWYgbm90LCBNc3BJbml0IG9yIE1zcERlSW5pdCBhcmUgbm90IG51bGwsIHRoZSBIQUxfUVNQSV9Jbml0IGFuZCBIQUxfUVNQSV9EZUluaXQKICAgICAgIGtlZXAgYW5kIHVzZSB0aGUgdXNlciBNc3BJbml0L01zcERlSW5pdCBjYWxsYmFja3MgKHJlZ2lzdGVyZWQgYmVmb3JlaGFuZCkKIAogICAgICAgQ2FsbGJhY2tzIGNhbiBiZSByZWdpc3RlcmVkL3VucmVnaXN0ZXJlZCBpbiBSRUFEWSBzdGF0ZSBvbmx5LgpAQCAtMTc5LDggKzE5MCw4IEBACiAgICAgICBpbiBSRUFEWSBvciBSRVNFVCBzdGF0ZSwgdGh1cyByZWdpc3RlcmVkICh1c2VyKSBNc3BJbml0L0RlSW5pdCBjYWxsYmFja3MgY2FuIGJlIHVzZWQKICAgICAgIGR1cmluZyB0aGUgSW5pdC9EZUluaXQuCiAgICAgICBJbiB0aGF0IGNhc2UgZmlyc3QgcmVnaXN0ZXIgdGhlIE1zcEluaXQvTXNwRGVJbml0IHVzZXIgY2FsbGJhY2tzCi0gICAgICB1c2luZyBAcmVmIEhBTF9RU1BJX1JlZ2lzdGVyQ2FsbGJhY2sgYmVmb3JlIGNhbGxpbmcgQHJlZiBIQUxfUVNQSV9EZUluaXQKLSAgICAgIG9yIEByZWYgSEFMX1FTUElfSW5pdCBmdW5jdGlvbi4KKyAgICAgIHVzaW5nIEhBTF9RU1BJX1JlZ2lzdGVyQ2FsbGJhY2sgYmVmb3JlIGNhbGxpbmcgSEFMX1FTUElfRGVJbml0CisgICAgICBvciBIQUxfUVNQSV9Jbml0IGZ1bmN0aW9uLgogCiAgICAgICBXaGVuIFRoZSBjb21waWxhdGlvbiBkZWZpbmUgVVNFX0hBTF9RU1BJX1JFR0lTVEVSX0NBTExCQUNLUyBpcyBzZXQgdG8gMCBvcgogICAgICAgbm90IGRlZmluZWQsIHRoZSBjYWxsYmFjayByZWdpc3RlcmluZyBmZWF0dXJlIGlzIG5vdCBhdmFpbGFibGUKQEAgLTE5NCwxNyArMjA1LDYgQEAKIAogICBAZW5kdmVyYmF0aW0KICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gICogQGF0dGVudGlvbgotICAqCi0gICogPGgyPjxjZW50ZXI+JmNvcHk7IENvcHlyaWdodCAoYykgMjAxNyBTVE1pY3JvZWxlY3Ryb25pY3MuCi0gICogQWxsIHJpZ2h0cyByZXNlcnZlZC48L2NlbnRlcj48L2gyPgotICAqCi0gICogVGhpcyBzb2Z0d2FyZSBjb21wb25lbnQgaXMgbGljZW5zZWQgYnkgU1QgdW5kZXIgQlNEIDMtQ2xhdXNlIGxpY2Vuc2UsCi0gICogdGhlICJMaWNlbnNlIjsgWW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZQotICAqIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdDoKLSAgKiAgICAgICAgICAgICAgICAgICAgICAgb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvQlNELTMtQ2xhdXNlCi0gICoKLSAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgICovCiAKIC8qIEluY2x1ZGVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCkBAIC0yNTgsNiArMjU4LDcgQEAKIHN0YXRpYyB2b2lkIFFTUElfRE1BRXJyb3IoRE1BX0hhbmRsZVR5cGVEZWYgKmhkbWEpOwogc3RhdGljIHZvaWQgUVNQSV9ETUFBYm9ydENwbHQoRE1BX0hhbmRsZVR5cGVEZWYgKmhkbWEpOwogc3RhdGljIEhBTF9TdGF0dXNUeXBlRGVmIFFTUElfV2FpdEZsYWdTdGF0ZVVudGlsVGltZW91dChRU1BJX0hhbmRsZVR5cGVEZWYgKmhxc3BpLCB1aW50MzJfdCBGbGFnLCBGbGFnU3RhdHVzIFN0YXRlLCB1aW50MzJfdCBUaWNrc3RhcnQsIHVpbnQzMl90IFRpbWVvdXQpOworc3RhdGljIEhBTF9TdGF0dXNUeXBlRGVmIFFTUElfV2FpdEZsYWdTdGF0ZVVudGlsVGltZW91dF9DUFVDeWNsZShRU1BJX0hhbmRsZVR5cGVEZWYgKmhxc3BpLCB1aW50MzJfdCBGbGFnLCBGbGFnU3RhdHVzIFN0YXRlLCB1aW50MzJfdCBUaW1lb3V0KTsKIHN0YXRpYyB2b2lkIFFTUElfQ29uZmlnKFFTUElfSGFuZGxlVHlwZURlZiAqaHFzcGksIFFTUElfQ29tbWFuZFR5cGVEZWYgKmNtZCwgdWludDMyX3QgRnVuY3Rpb25hbE1vZGUpOwogCiAvKiBFeHBvcnRlZCBmdW5jdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwpAQCAtNzMwLDcgKzczMSw3IEBACiAKICAgICAgICAgLyogQ2hhbmdlIHN0YXRlIG9mIFFTUEkgKi8KICAgICAgICAgaHFzcGktPlN0YXRlID0gSEFMX1FTUElfU1RBVEVfUkVBRFk7Ci0gICAgICAgIAorCiAgICAgICAgIC8qIEVycm9yIGNhbGxiYWNrICovCiAjaWYgKFVTRV9IQUxfUVNQSV9SRUdJU1RFUl9DQUxMQkFDS1MgPT0gMSkKICAgICAgICAgaHFzcGktPkVycm9yQ2FsbGJhY2soaHFzcGkpOwpAQCAtODczLDcgKzg3NCw2IEBACiBIQUxfU3RhdHVzVHlwZURlZiBIQUxfUVNQSV9Db21tYW5kX0lUKFFTUElfSGFuZGxlVHlwZURlZiAqaHFzcGksIFFTUElfQ29tbWFuZFR5cGVEZWYgKmNtZCkKIHsKICAgSEFMX1N0YXR1c1R5cGVEZWYgc3RhdHVzOwotICB1aW50MzJfdCB0aWNrc3RhcnQgPSBIQUxfR2V0VGljaygpOwogCiAgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCiAgIGFzc2VydF9wYXJhbShJU19RU1BJX0lOU1RSVUNUSU9OX01PREUoY21kLT5JbnN0cnVjdGlvbk1vZGUpKTsKQEAgLTkxMiw3ICs5MTIsNyBAQAogICAgIGhxc3BpLT5TdGF0ZSA9IEhBTF9RU1BJX1NUQVRFX0JVU1k7CiAKICAgICAvKiBXYWl0IHRpbGwgQlVTWSBmbGFnIHJlc2V0ICovCi0gICAgc3RhdHVzID0gUVNQSV9XYWl0RmxhZ1N0YXRlVW50aWxUaW1lb3V0KGhxc3BpLCBRU1BJX0ZMQUdfQlVTWSwgUkVTRVQsIHRpY2tzdGFydCwgaHFzcGktPlRpbWVvdXQpOworICAgIHN0YXR1cyA9IFFTUElfV2FpdEZsYWdTdGF0ZVVudGlsVGltZW91dF9DUFVDeWNsZShocXNwaSwgUVNQSV9GTEFHX0JVU1ksIFJFU0VULCBocXNwaS0+VGltZW91dCk7CQogCiAgICAgaWYgKHN0YXR1cyA9PSBIQUxfT0spCiAgICAgewpAQCAtMTM2OSwxMCArMTM2OSwxMCBAQAogICAgICAgICB7CiAgICAgICAgICAgLyogUHJvY2VzcyB1bmxvY2tlZCAqLwogICAgICAgICAgIF9fSEFMX1VOTE9DSyhocXNwaSk7Ci0gICAgICAgICAgCisKICAgICAgICAgICAvKiBFbmFibGUgdGhlIFFTUEkgdHJhbnNmZXIgZXJyb3IgSW50ZXJydXB0ICovCiAgICAgICAgICAgX19IQUxfUVNQSV9FTkFCTEVfSVQoaHFzcGksIFFTUElfSVRfVEUpOwotICAgICAgICAgIAorCiAgICAgICAgICAgLyogRW5hYmxlIHRoZSBETUEgdHJhbnNmZXIgYnkgc2V0dGluZyB0aGUgRE1BRU4gYml0IGluIHRoZSBRU1BJIENSIHJlZ2lzdGVyICovCiAgICAgICAgICAgU0VUX0JJVChocXNwaS0+SW5zdGFuY2UtPkNSLCBRVUFEU1BJX0NSX0RNQUVOKTsKICAgICAgICAgfQpAQCAtMTUxNywxMCArMTUxNywxMCBAQAogCiAgICAgICAgICAgLyogUHJvY2VzcyB1bmxvY2tlZCAqLwogICAgICAgICAgIF9fSEFMX1VOTE9DSyhocXNwaSk7Ci0gICAgICAgICAgCisKICAgICAgICAgICAvKiBFbmFibGUgdGhlIFFTUEkgdHJhbnNmZXIgZXJyb3IgSW50ZXJydXB0ICovCiAgICAgICAgICAgX19IQUxfUVNQSV9FTkFCTEVfSVQoaHFzcGksIFFTUElfSVRfVEUpOwotICAgICAgICAgIAorCiAgICAgICAgICAgLyogRW5hYmxlIHRoZSBETUEgdHJhbnNmZXIgYnkgc2V0dGluZyB0aGUgRE1BRU4gYml0IGluIHRoZSBRU1BJIENSIHJlZ2lzdGVyICovCiAgICAgICAgICAgU0VUX0JJVChocXNwaS0+SW5zdGFuY2UtPkNSLCBRVUFEU1BJX0NSX0RNQUVOKTsKICAgICAgICAgfQpAQCAtMTY2Nyw3ICsxNjY3LDYgQEAKIEhBTF9TdGF0dXNUeXBlRGVmIEhBTF9RU1BJX0F1dG9Qb2xsaW5nX0lUKFFTUElfSGFuZGxlVHlwZURlZiAqaHFzcGksIFFTUElfQ29tbWFuZFR5cGVEZWYgKmNtZCwgUVNQSV9BdXRvUG9sbGluZ1R5cGVEZWYgKmNmZykKIHsKICAgSEFMX1N0YXR1c1R5cGVEZWYgc3RhdHVzOwotICB1aW50MzJfdCB0aWNrc3RhcnQgPSBIQUxfR2V0VGljaygpOwogCiAgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCiAgIGFzc2VydF9wYXJhbShJU19RU1BJX0lOU1RSVUNUSU9OX01PREUoY21kLT5JbnN0cnVjdGlvbk1vZGUpKTsKQEAgLTE3MTEsNyArMTcxMCw3IEBACiAgICAgaHFzcGktPlN0YXRlID0gSEFMX1FTUElfU1RBVEVfQlVTWV9BVVRPX1BPTExJTkc7CiAKICAgICAvKiBXYWl0IHRpbGwgQlVTWSBmbGFnIHJlc2V0ICovCi0gICAgc3RhdHVzID0gUVNQSV9XYWl0RmxhZ1N0YXRlVW50aWxUaW1lb3V0KGhxc3BpLCBRU1BJX0ZMQUdfQlVTWSwgUkVTRVQsIHRpY2tzdGFydCwgaHFzcGktPlRpbWVvdXQpOworICAgIHN0YXR1cyA9IFFTUElfV2FpdEZsYWdTdGF0ZVVudGlsVGltZW91dF9DUFVDeWNsZShocXNwaSwgUVNQSV9GTEFHX0JVU1ksIFJFU0VULCBocXNwaS0+VGltZW91dCk7CQogCiAgICAgaWYgKHN0YXR1cyA9PSBIQUxfT0spCiAgICAgewpAQCAtMjM1MSw3ICsyMzUwLDcgQEAKICAgICAgIHsKICAgICAgICAgLyogQ2hhbmdlIHN0YXRlIG9mIFFTUEkgKi8KICAgICAgICAgaHFzcGktPlN0YXRlID0gSEFMX1FTUElfU1RBVEVfUkVBRFk7Ci0gICAgICAgIAorCiAgICAgICAgIC8qIEFib3J0IENvbXBsZXRlIGNhbGxiYWNrICovCiAjaWYgKFVTRV9IQUxfUVNQSV9SRUdJU1RFUl9DQUxMQkFDS1MgPT0gMSkKICAgICAgICAgaHFzcGktPkFib3J0Q3BsdENhbGxiYWNrKGhxc3BpKTsKQEAgLTI2MzEsNiArMjYzMCwzMSBAQAogfQogCiAvKioKKyAgKiBAYnJpZWYgIFdhaXQgZm9yIGEgZmxhZyBzdGF0ZSB1bnRpbCB0aW1lb3V0IHVzaW5nIENQVSBjeWNsZS4KKyAgKiBAcGFyYW0gIGhxc3BpIDogUVNQSSBoYW5kbGUKKyAgKiBAcGFyYW0gIEZsYWcgOiBGbGFnIGNoZWNrZWQKKyAgKiBAcGFyYW0gIFN0YXRlIDogVmFsdWUgb2YgdGhlIGZsYWcgZXhwZWN0ZWQKKyAgKiBAcGFyYW0gIFRpbWVvdXQgOiBEdXJhdGlvbiBvZiB0aGUgdGltZW91dAorICAqIEByZXR2YWwgSEFMIHN0YXR1cworICAqLworc3RhdGljIEhBTF9TdGF0dXNUeXBlRGVmIFFTUElfV2FpdEZsYWdTdGF0ZVVudGlsVGltZW91dF9DUFVDeWNsZShRU1BJX0hhbmRsZVR5cGVEZWYgKmhxc3BpLCB1aW50MzJfdCBGbGFnLCBGbGFnU3RhdHVzIFN0YXRlLCB1aW50MzJfdCBUaW1lb3V0KQoreyAKKyAgX19JTyB1aW50MzJfdCBjb3VudCA9IFRpbWVvdXQgKiAoU3lzdGVtQ29yZUNsb2NrIC8gMTZVIC8gMTAwMFUpOworICAgZG8KKyAgIHsKKyAgICAgaWYgKGNvdW50LS0gPT0gMFUpCisgICAgIHsKKyAgICAgICBocXNwaS0+U3RhdGUgICAgID0gSEFMX1FTUElfU1RBVEVfRVJST1I7CisgICAgICAgaHFzcGktPkVycm9yQ29kZSB8PSBIQUxfUVNQSV9FUlJPUl9USU1FT1VUOworICAgICAgIHJldHVybiBIQUxfVElNRU9VVDsKKyAgICAgfQorICAgfQorICAgd2hpbGUgKChfX0hBTF9RU1BJX0dFVF9GTEFHKGhxc3BpLCBGbGFnKSkgIT0gU3RhdGUpOworICAgCisgICByZXR1cm4gSEFMX09LOyAgIAorfQorCisvKioKICAgKiBAYnJpZWYgIENvbmZpZ3VyZSB0aGUgY29tbXVuaWNhdGlvbiByZWdpc3RlcnMuCiAgICogQHBhcmFtICBocXNwaSA6IFFTUEkgaGFuZGxlCiAgICogQHBhcmFtICBjbWQgOiBzdHJ1Y3R1cmUgdGhhdCBjb250YWlucyB0aGUgY29tbWFuZCBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uCkBAIC0yNzk3LDYgKzI4MjEsNCBAQAogICAqIEB9CiAgICovCiAKLSNlbmRpZiAvKiBkZWZpbmVkKFFVQURTUEkpIHx8IGRlZmluZWQoUVVBRFNQSTEpIHx8IGRlZmluZWQoUVVBRFNQSTIpICovCi0KLS8qKioqKioqKioqKioqKioqKioqKioqKiogKEMpIENPUFlSSUdIVCBTVE1pY3JvZWxlY3Ryb25pY3MgKioqKipFTkQgT0YgRklMRSoqKiovCisjZW5kaWYgLyogZGVmaW5lZChRVUFEU1BJKSAqLwpkaWZmIC0tZ2l0IGEvU3JjL3N0bTMyZjd4eF9oYWxfcmNjLmMgYi9TcmMvc3RtMzJmN3h4X2hhbF9yY2MuYwppbmRleCBhYjhiYjI5Li4xYTZkZThkIDEwMDY0NAotLS0gYS9TcmMvc3RtMzJmN3h4X2hhbF9yY2MuYworKysgYi9TcmMvc3RtMzJmN3h4X2hhbF9yY2MuYwpAQCAtNTQsMTQgKzU0LDEyIEBACiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAqIEBhdHRlbnRpb24KICAgKgotICAqIDxoMj48Y2VudGVyPiZjb3B5OyBDb3B5cmlnaHQgKGMpIDIwMTcgU1RNaWNyb2VsZWN0cm9uaWNzLgotICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuPC9jZW50ZXI+PC9oMj4KKyAgKiBDb3B5cmlnaHQgKGMpIDIwMTcgU1RNaWNyb2VsZWN0cm9uaWNzLgorICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICoKLSAgKiBUaGlzIHNvZnR3YXJlIGNvbXBvbmVudCBpcyBsaWNlbnNlZCBieSBTVCB1bmRlciBCU0QgMy1DbGF1c2UgbGljZW5zZSwKLSAgKiB0aGUgIkxpY2Vuc2UiOyBZb3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlCi0gICogTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0OgotICAqICAgICAgICAgICAgICAgICAgICAgICAgb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvQlNELTMtQ2xhdXNlCi0gICoKKyAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIHVuZGVyIHRlcm1zIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4KKyAgKiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb2Z0d2FyZSBjb21wb25lbnQuCisgICogSWYgbm8gTElDRU5TRSBmaWxlIGNvbWVzIHdpdGggdGhpcyBzb2Z0d2FyZSwgaXQgaXMgcHJvdmlkZWQgQVMtSVMuCiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAqLwogCkBAIC0xMjM5LDQgKzEyMzcsMyBAQAogICAqIEB9CiAgICovCiAKLS8qKioqKioqKioqKioqKioqKioqKioqKiogKEMpIENPUFlSSUdIVCBTVE1pY3JvZWxlY3Ryb25pY3MgKioqKipFTkQgT0YgRklMRSoqKiovCmRpZmYgLS1naXQgYS9TcmMvc3RtMzJmN3h4X2hhbF9yY2NfZXguYyBiL1NyYy9zdG0zMmY3eHhfaGFsX3JjY19leC5jCmluZGV4IDg3YWU3MDEuLmIwOWZiNDMgMTAwNjQ0Ci0tLSBhL1NyYy9zdG0zMmY3eHhfaGFsX3JjY19leC5jCisrKyBiL1NyYy9zdG0zMmY3eHhfaGFsX3JjY19leC5jCkBAIC0xMCwxNCArMTAsMTIgQEAKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgICogQGF0dGVudGlvbgogICAqCi0gICogPGgyPjxjZW50ZXI+JmNvcHk7IENvcHlyaWdodCAoYykgMjAxNyBTVE1pY3JvZWxlY3Ryb25pY3MuCi0gICogQWxsIHJpZ2h0cyByZXNlcnZlZC48L2NlbnRlcj48L2gyPgorICAqIENvcHlyaWdodCAoYykgMjAxNyBTVE1pY3JvZWxlY3Ryb25pY3MuCisgICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgKgotICAqIFRoaXMgc29mdHdhcmUgY29tcG9uZW50IGlzIGxpY2Vuc2VkIGJ5IFNUIHVuZGVyIEJTRCAzLUNsYXVzZSBsaWNlbnNlLAotICAqIHRoZSAiTGljZW5zZSI7IFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUKLSAgKiBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQ6Ci0gICogICAgICAgICAgICAgICAgICAgICAgICBvcGVuc291cmNlLm9yZy9saWNlbnNlcy9CU0QtMy1DbGF1c2UKLSAgKgorICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgdW5kZXIgdGVybXMgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbgorICAqIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvZnR3YXJlIGNvbXBvbmVudC4KKyAgKiBJZiBubyBMSUNFTlNFIGZpbGUgY29tZXMgd2l0aCB0aGlzIHNvZnR3YXJlLCBpdCBpcyBwcm92aWRlZCBBUy1JUy4KICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgICovCiAKQEAgLTE3NzMsNCArMTc3MSwzIEBACiAgICogQH0KICAgKi8KIAotLyoqKioqKioqKioqKioqKioqKioqKioqKiAoQykgQ09QWVJJR0hUIFNUTWljcm9lbGVjdHJvbmljcyAqKioqKkVORCBPRiBGSUxFKioqKi8KZGlmZiAtLWdpdCBhL1NyYy9zdG0zMmY3eHhfaGFsX3JuZy5jIGIvU3JjL3N0bTMyZjd4eF9oYWxfcm5nLmMKaW5kZXggNzA5NDA4OC4uODA5NWY3MiAxMDA2NDQKLS0tIGEvU3JjL3N0bTMyZjd4eF9oYWxfcm5nLmMKKysrIGIvU3JjL3N0bTMyZjd4eF9oYWxfcm5nLmMKQEAgLTksNiArOSwxNyBAQAogICAqICAgICAgICAgICArIFBlcmlwaGVyYWwgQ29udHJvbCBmdW5jdGlvbnMKICAgKiAgICAgICAgICAgKyBQZXJpcGhlcmFsIFN0YXRlIGZ1bmN0aW9ucwogICAqCisgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAqIEBhdHRlbnRpb24KKyAgKgorICAqIENvcHlyaWdodCAoYykgMjAxNyBTVE1pY3JvZWxlY3Ryb25pY3MuCisgICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAgKgorICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgdW5kZXIgdGVybXMgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZQorICAqIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvZnR3YXJlIGNvbXBvbmVudC4KKyAgKiBJZiBubyBMSUNFTlNFIGZpbGUgY29tZXMgd2l0aCB0aGlzIHNvZnR3YXJlLCBpdCBpcyBwcm92aWRlZCBBUy1JUy4KKyAgKgorICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgQHZlcmJhdGltCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICAgICAgICAgICAgICAgICAgICAgIyMjIyMgSG93IHRvIHVzZSB0aGlzIGRyaXZlciAjIyMjIwpAQCAtMzEsOCArNDIsOCBAQAogICAgIGFsbG93cyB0aGUgdXNlciB0byBjb25maWd1cmUgZHluYW1pY2FsbHkgdGhlIGRyaXZlciBjYWxsYmFja3MuCiAKICAgICBbLi5dCi0gICAgVXNlIEZ1bmN0aW9uIEByZWYgSEFMX1JOR19SZWdpc3RlckNhbGxiYWNrKCkgdG8gcmVnaXN0ZXIgYSB1c2VyIGNhbGxiYWNrLgotICAgIEZ1bmN0aW9uIEByZWYgSEFMX1JOR19SZWdpc3RlckNhbGxiYWNrKCkgYWxsb3dzIHRvIHJlZ2lzdGVyIGZvbGxvd2luZyBjYWxsYmFja3M6CisgICAgVXNlIEZ1bmN0aW9uIEhBTF9STkdfUmVnaXN0ZXJDYWxsYmFjaygpIHRvIHJlZ2lzdGVyIGEgdXNlciBjYWxsYmFjay4KKyAgICBGdW5jdGlvbiBIQUxfUk5HX1JlZ2lzdGVyQ2FsbGJhY2soKSBhbGxvd3MgdG8gcmVnaXN0ZXIgZm9sbG93aW5nIGNhbGxiYWNrczoKICAgICAoKykgRXJyb3JDYWxsYmFjayAgICAgICAgICAgICA6IFJORyBFcnJvciBDYWxsYmFjay4KICAgICAoKykgTXNwSW5pdENhbGxiYWNrICAgICAgICAgICA6IFJORyBNc3BJbml0LgogICAgICgrKSBNc3BEZUluaXRDYWxsYmFjayAgICAgICAgIDogUk5HIE1zcERlSW5pdC4KQEAgLTQwLDkgKzUxLDkgQEAKICAgICBhbmQgYSBwb2ludGVyIHRvIHRoZSB1c2VyIGNhbGxiYWNrIGZ1bmN0aW9uLgogCiAgICAgWy4uXQotICAgIFVzZSBmdW5jdGlvbiBAcmVmIEhBTF9STkdfVW5SZWdpc3RlckNhbGxiYWNrKCkgdG8gcmVzZXQgYSBjYWxsYmFjayB0byB0aGUgZGVmYXVsdAorICAgIFVzZSBmdW5jdGlvbiBIQUxfUk5HX1VuUmVnaXN0ZXJDYWxsYmFjaygpIHRvIHJlc2V0IGEgY2FsbGJhY2sgdG8gdGhlIGRlZmF1bHQKICAgICB3ZWFrIChzdXJjaGFyZ2VkKSBmdW5jdGlvbi4KLSAgICBAcmVmIEhBTF9STkdfVW5SZWdpc3RlckNhbGxiYWNrKCkgdGFrZXMgYXMgcGFyYW1ldGVycyB0aGUgSEFMIHBlcmlwaGVyYWwgaGFuZGxlLAorICAgIEhBTF9STkdfVW5SZWdpc3RlckNhbGxiYWNrKCkgdGFrZXMgYXMgcGFyYW1ldGVycyB0aGUgSEFMIHBlcmlwaGVyYWwgaGFuZGxlLAogICAgIGFuZCB0aGUgQ2FsbGJhY2sgSUQuCiAgICAgVGhpcyBmdW5jdGlvbiBhbGxvd3MgdG8gcmVzZXQgZm9sbG93aW5nIGNhbGxiYWNrczoKICAgICAoKykgRXJyb3JDYWxsYmFjayAgICAgICAgICAgICA6IFJORyBFcnJvciBDYWxsYmFjay4KQEAgLTUxLDE2ICs2MiwxNiBAQAogCiAgICAgWy4uXQogICAgIEZvciBzcGVjaWZpYyBjYWxsYmFjayBSZWFkeURhdGFDYWxsYmFjaywgdXNlIGRlZGljYXRlZCByZWdpc3RlciBjYWxsYmFja3M6Ci0gICAgcmVzcGVjdGl2ZWx5IEByZWYgSEFMX1JOR19SZWdpc3RlclJlYWR5RGF0YUNhbGxiYWNrKCkgLCBAcmVmIEhBTF9STkdfVW5SZWdpc3RlclJlYWR5RGF0YUNhbGxiYWNrKCkuCisgICAgcmVzcGVjdGl2ZWx5IEhBTF9STkdfUmVnaXN0ZXJSZWFkeURhdGFDYWxsYmFjaygpICwgSEFMX1JOR19VblJlZ2lzdGVyUmVhZHlEYXRhQ2FsbGJhY2soKS4KIAogICAgIFsuLl0KLSAgICBCeSBkZWZhdWx0LCBhZnRlciB0aGUgQHJlZiBIQUxfUk5HX0luaXQoKSBhbmQgd2hlbiB0aGUgc3RhdGUgaXMgSEFMX1JOR19TVEFURV9SRVNFVAorICAgIEJ5IGRlZmF1bHQsIGFmdGVyIHRoZSBIQUxfUk5HX0luaXQoKSBhbmQgd2hlbiB0aGUgc3RhdGUgaXMgSEFMX1JOR19TVEFURV9SRVNFVAogICAgIGFsbCBjYWxsYmFja3MgYXJlIHNldCB0byB0aGUgY29ycmVzcG9uZGluZyB3ZWFrIChzdXJjaGFyZ2VkKSBmdW5jdGlvbnM6Ci0gICAgZXhhbXBsZSBAcmVmIEhBTF9STkdfRXJyb3JDYWxsYmFjaygpLgorICAgIGV4YW1wbGUgSEFMX1JOR19FcnJvckNhbGxiYWNrKCkuCiAgICAgRXhjZXB0aW9uIGRvbmUgZm9yIE1zcEluaXQgYW5kIE1zcERlSW5pdCBmdW5jdGlvbnMgdGhhdCBhcmUgcmVzcGVjdGl2ZWx5Ci0gICAgcmVzZXQgdG8gdGhlIGxlZ2FjeSB3ZWFrIChzdXJjaGFyZ2VkKSBmdW5jdGlvbnMgaW4gdGhlIEByZWYgSEFMX1JOR19Jbml0KCkKLSAgICBhbmQgQHJlZiBIQUxfUk5HX0RlSW5pdCgpIG9ubHkgd2hlbiB0aGVzZSBjYWxsYmFja3MgYXJlIG51bGwgKG5vdCByZWdpc3RlcmVkIGJlZm9yZWhhbmQpLgotICAgIElmIG5vdCwgTXNwSW5pdCBvciBNc3BEZUluaXQgYXJlIG5vdCBudWxsLCB0aGUgQHJlZiBIQUxfUk5HX0luaXQoKSBhbmQgQHJlZiBIQUxfUk5HX0RlSW5pdCgpCisgICAgcmVzZXQgdG8gdGhlIGxlZ2FjeSB3ZWFrIChzdXJjaGFyZ2VkKSBmdW5jdGlvbnMgaW4gdGhlIEhBTF9STkdfSW5pdCgpCisgICAgYW5kIEhBTF9STkdfRGVJbml0KCkgb25seSB3aGVuIHRoZXNlIGNhbGxiYWNrcyBhcmUgbnVsbCAobm90IHJlZ2lzdGVyZWQgYmVmb3JlaGFuZCkuCisgICAgSWYgbm90LCBNc3BJbml0IG9yIE1zcERlSW5pdCBhcmUgbm90IG51bGwsIHRoZSBIQUxfUk5HX0luaXQoKSBhbmQgSEFMX1JOR19EZUluaXQoKQogICAgIGtlZXAgYW5kIHVzZSB0aGUgdXNlciBNc3BJbml0L01zcERlSW5pdCBjYWxsYmFja3MgKHJlZ2lzdGVyZWQgYmVmb3JlaGFuZCkuCiAKICAgICBbLi5dCkBAIC02OSw4ICs4MCw4IEBACiAgICAgaW4gSEFMX1JOR19TVEFURV9SRUFEWSBvciBIQUxfUk5HX1NUQVRFX1JFU0VUIHN0YXRlLCB0aHVzIHJlZ2lzdGVyZWQgKHVzZXIpCiAgICAgTXNwSW5pdC9EZUluaXQgY2FsbGJhY2tzIGNhbiBiZSB1c2VkIGR1cmluZyB0aGUgSW5pdC9EZUluaXQuCiAgICAgSW4gdGhhdCBjYXNlIGZpcnN0IHJlZ2lzdGVyIHRoZSBNc3BJbml0L01zcERlSW5pdCB1c2VyIGNhbGxiYWNrcwotICAgIHVzaW5nIEByZWYgSEFMX1JOR19SZWdpc3RlckNhbGxiYWNrKCkgYmVmb3JlIGNhbGxpbmcgQHJlZiBIQUxfUk5HX0RlSW5pdCgpCi0gICAgb3IgQHJlZiBIQUxfUk5HX0luaXQoKSBmdW5jdGlvbi4KKyAgICB1c2luZyBIQUxfUk5HX1JlZ2lzdGVyQ2FsbGJhY2soKSBiZWZvcmUgY2FsbGluZyBIQUxfUk5HX0RlSW5pdCgpCisgICAgb3IgSEFMX1JOR19Jbml0KCkgZnVuY3Rpb24uCiAKICAgICBbLi5dCiAgICAgV2hlbiBUaGUgY29tcGlsYXRpb24gZGVmaW5lIFVTRV9IQUxfUk5HX1JFR0lTVEVSX0NBTExCQUNLUyBpcyBzZXQgdG8gMCBvcgpAQCAtNzksMTcgKzkwLDYgQEAKIAogICBAZW5kdmVyYmF0aW0KICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gICogQGF0dGVudGlvbgotICAqCi0gICogPGgyPjxjZW50ZXI+JmNvcHk7IENvcHlyaWdodCAoYykgMjAxNyBTVE1pY3JvZWxlY3Ryb25pY3MuCi0gICogQWxsIHJpZ2h0cyByZXNlcnZlZC48L2NlbnRlcj48L2gyPgotICAqCi0gICogVGhpcyBzb2Z0d2FyZSBjb21wb25lbnQgaXMgbGljZW5zZWQgYnkgU1QgdW5kZXIgQlNEIDMtQ2xhdXNlIGxpY2Vuc2UsCi0gICogdGhlICJMaWNlbnNlIjsgWW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZQotICAqIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdDoKLSAgKiAgICAgICAgICAgICAgICAgICAgICAgIG9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0JTRC0zLUNsYXVzZQotICAqCi0gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAqLwogCiAvKiBJbmNsdWRlcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwpAQCAtMTI5LDggKzEyOSw4IEBACiAgICovCiAKIC8qKiBAYWRkdG9ncm91cCBSTkdfRXhwb3J0ZWRfRnVuY3Rpb25zX0dyb3VwMQotICogIEBicmllZiAgIEluaXRpYWxpemF0aW9uIGFuZCBjb25maWd1cmF0aW9uIGZ1bmN0aW9ucwotICoKKyAgKiAgQGJyaWVmICAgSW5pdGlhbGl6YXRpb24gYW5kIGNvbmZpZ3VyYXRpb24gZnVuY3Rpb25zCisgICoKIEB2ZXJiYXRpbQogID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgICAgICAgICAjIyMjIyBJbml0aWFsaXphdGlvbiBhbmQgY29uZmlndXJhdGlvbiBmdW5jdGlvbnMgIyMjIyMKQEAgLTI5Niw3ICsyOTYsOCBAQAogICAqIEBwYXJhbSAgcENhbGxiYWNrIHBvaW50ZXIgdG8gdGhlIENhbGxiYWNrIGZ1bmN0aW9uCiAgICogQHJldHZhbCBIQUwgc3RhdHVzCiAgICovCi1IQUxfU3RhdHVzVHlwZURlZiBIQUxfUk5HX1JlZ2lzdGVyQ2FsbGJhY2soUk5HX0hhbmRsZVR5cGVEZWYgKmhybmcsIEhBTF9STkdfQ2FsbGJhY2tJRFR5cGVEZWYgQ2FsbGJhY2tJRCwgcFJOR19DYWxsYmFja1R5cGVEZWYgcENhbGxiYWNrKQorSEFMX1N0YXR1c1R5cGVEZWYgSEFMX1JOR19SZWdpc3RlckNhbGxiYWNrKFJOR19IYW5kbGVUeXBlRGVmICpocm5nLCBIQUxfUk5HX0NhbGxiYWNrSURUeXBlRGVmIENhbGxiYWNrSUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcFJOR19DYWxsYmFja1R5cGVEZWYgcENhbGxiYWNrKQogewogICBIQUxfU3RhdHVzVHlwZURlZiBzdGF0dXMgPSBIQUxfT0s7CiAKQEAgLTMxMyw0NCArMzE0LDQ0IEBACiAgIHsKICAgICBzd2l0Y2ggKENhbGxiYWNrSUQpCiAgICAgewotICAgIGNhc2UgSEFMX1JOR19FUlJPUl9DQl9JRCA6Ci0gICAgICBocm5nLT5FcnJvckNhbGxiYWNrID0gcENhbGxiYWNrOwotICAgICAgYnJlYWs7CisgICAgICBjYXNlIEhBTF9STkdfRVJST1JfQ0JfSUQgOgorICAgICAgICBocm5nLT5FcnJvckNhbGxiYWNrID0gcENhbGxiYWNrOworICAgICAgICBicmVhazsKIAotICAgIGNhc2UgSEFMX1JOR19NU1BJTklUX0NCX0lEIDoKLSAgICAgIGhybmctPk1zcEluaXRDYWxsYmFjayA9IHBDYWxsYmFjazsKLSAgICAgIGJyZWFrOworICAgICAgY2FzZSBIQUxfUk5HX01TUElOSVRfQ0JfSUQgOgorICAgICAgICBocm5nLT5Nc3BJbml0Q2FsbGJhY2sgPSBwQ2FsbGJhY2s7CisgICAgICAgIGJyZWFrOwogCi0gICAgY2FzZSBIQUxfUk5HX01TUERFSU5JVF9DQl9JRCA6Ci0gICAgICBocm5nLT5Nc3BEZUluaXRDYWxsYmFjayA9IHBDYWxsYmFjazsKLSAgICAgIGJyZWFrOworICAgICAgY2FzZSBIQUxfUk5HX01TUERFSU5JVF9DQl9JRCA6CisgICAgICAgIGhybmctPk1zcERlSW5pdENhbGxiYWNrID0gcENhbGxiYWNrOworICAgICAgICBicmVhazsKIAotICAgIGRlZmF1bHQgOgotICAgICAgLyogVXBkYXRlIHRoZSBlcnJvciBjb2RlICovCi0gICAgICBocm5nLT5FcnJvckNvZGUgPSBIQUxfUk5HX0VSUk9SX0lOVkFMSURfQ0FMTEJBQ0s7Ci0gICAgIC8qIFJldHVybiBlcnJvciBzdGF0dXMgKi8KLSAgICAgIHN0YXR1cyA9ICBIQUxfRVJST1I7Ci0gICAgICBicmVhazsKKyAgICAgIGRlZmF1bHQgOgorICAgICAgICAvKiBVcGRhdGUgdGhlIGVycm9yIGNvZGUgKi8KKyAgICAgICAgaHJuZy0+RXJyb3JDb2RlID0gSEFMX1JOR19FUlJPUl9JTlZBTElEX0NBTExCQUNLOworICAgICAgICAvKiBSZXR1cm4gZXJyb3Igc3RhdHVzICovCisgICAgICAgIHN0YXR1cyA9ICBIQUxfRVJST1I7CisgICAgICAgIGJyZWFrOwogICAgIH0KICAgfQogICBlbHNlIGlmIChIQUxfUk5HX1NUQVRFX1JFU0VUID09IGhybmctPlN0YXRlKQogICB7CiAgICAgc3dpdGNoIChDYWxsYmFja0lEKQogICAgIHsKLSAgICBjYXNlIEhBTF9STkdfTVNQSU5JVF9DQl9JRCA6Ci0gICAgICBocm5nLT5Nc3BJbml0Q2FsbGJhY2sgPSBwQ2FsbGJhY2s7Ci0gICAgICBicmVhazsKKyAgICAgIGNhc2UgSEFMX1JOR19NU1BJTklUX0NCX0lEIDoKKyAgICAgICAgaHJuZy0+TXNwSW5pdENhbGxiYWNrID0gcENhbGxiYWNrOworICAgICAgICBicmVhazsKIAotICAgIGNhc2UgSEFMX1JOR19NU1BERUlOSVRfQ0JfSUQgOgotICAgICAgaHJuZy0+TXNwRGVJbml0Q2FsbGJhY2sgPSBwQ2FsbGJhY2s7Ci0gICAgICBicmVhazsKKyAgICAgIGNhc2UgSEFMX1JOR19NU1BERUlOSVRfQ0JfSUQgOgorICAgICAgICBocm5nLT5Nc3BEZUluaXRDYWxsYmFjayA9IHBDYWxsYmFjazsKKyAgICAgICAgYnJlYWs7CiAKLSAgICBkZWZhdWx0IDoKLSAgICAgIC8qIFVwZGF0ZSB0aGUgZXJyb3IgY29kZSAqLwotICAgICAgaHJuZy0+RXJyb3JDb2RlID0gSEFMX1JOR19FUlJPUl9JTlZBTElEX0NBTExCQUNLOwotICAgICAvKiBSZXR1cm4gZXJyb3Igc3RhdHVzICovCi0gICAgICBzdGF0dXMgPSAgSEFMX0VSUk9SOwotICAgICAgYnJlYWs7CisgICAgICBkZWZhdWx0IDoKKyAgICAgICAgLyogVXBkYXRlIHRoZSBlcnJvciBjb2RlICovCisgICAgICAgIGhybmctPkVycm9yQ29kZSA9IEhBTF9STkdfRVJST1JfSU5WQUxJRF9DQUxMQkFDSzsKKyAgICAgICAgLyogUmV0dXJuIGVycm9yIHN0YXR1cyAqLworICAgICAgICBzdGF0dXMgPSAgSEFMX0VSUk9SOworICAgICAgICBicmVhazsKICAgICB9CiAgIH0KICAgZWxzZQpAQCAtMzg4LDQ0ICszODksNDQgQEAKICAgewogICAgIHN3aXRjaCAoQ2FsbGJhY2tJRCkKICAgICB7Ci0gICAgY2FzZSBIQUxfUk5HX0VSUk9SX0NCX0lEIDoKLSAgICAgIGhybmctPkVycm9yQ2FsbGJhY2sgPSBIQUxfUk5HX0Vycm9yQ2FsbGJhY2s7ICAgICAgICAgIC8qIExlZ2FjeSB3ZWFrIEVycm9yQ2FsbGJhY2sgICovCi0gICAgICBicmVhazsKKyAgICAgIGNhc2UgSEFMX1JOR19FUlJPUl9DQl9JRCA6CisgICAgICAgIGhybmctPkVycm9yQ2FsbGJhY2sgPSBIQUxfUk5HX0Vycm9yQ2FsbGJhY2s7ICAgICAgICAgIC8qIExlZ2FjeSB3ZWFrIEVycm9yQ2FsbGJhY2sgICovCisgICAgICAgIGJyZWFrOwogCi0gICAgY2FzZSBIQUxfUk5HX01TUElOSVRfQ0JfSUQgOgotICAgICAgaHJuZy0+TXNwSW5pdENhbGxiYWNrID0gSEFMX1JOR19Nc3BJbml0OyAgICAgICAgICAgICAgLyogTGVnYWN5IHdlYWsgTXNwSW5pdCAgKi8KLSAgICAgIGJyZWFrOworICAgICAgY2FzZSBIQUxfUk5HX01TUElOSVRfQ0JfSUQgOgorICAgICAgICBocm5nLT5Nc3BJbml0Q2FsbGJhY2sgPSBIQUxfUk5HX01zcEluaXQ7ICAgICAgICAgICAgICAvKiBMZWdhY3kgd2VhayBNc3BJbml0ICAqLworICAgICAgICBicmVhazsKIAotICAgIGNhc2UgSEFMX1JOR19NU1BERUlOSVRfQ0JfSUQgOgotICAgICAgaHJuZy0+TXNwRGVJbml0Q2FsbGJhY2sgPSBIQUxfUk5HX01zcERlSW5pdDsgICAgICAgICAgLyogTGVnYWN5IHdlYWsgTXNwRGVJbml0ICAqLwotICAgICAgYnJlYWs7CisgICAgICBjYXNlIEhBTF9STkdfTVNQREVJTklUX0NCX0lEIDoKKyAgICAgICAgaHJuZy0+TXNwRGVJbml0Q2FsbGJhY2sgPSBIQUxfUk5HX01zcERlSW5pdDsgICAgICAgICAgLyogTGVnYWN5IHdlYWsgTXNwRGVJbml0ICAqLworICAgICAgICBicmVhazsKIAotICAgIGRlZmF1bHQgOgotICAgICAgLyogVXBkYXRlIHRoZSBlcnJvciBjb2RlICovCi0gICAgICBocm5nLT5FcnJvckNvZGUgPSBIQUxfUk5HX0VSUk9SX0lOVkFMSURfQ0FMTEJBQ0s7Ci0gICAgIC8qIFJldHVybiBlcnJvciBzdGF0dXMgKi8KLSAgICAgIHN0YXR1cyA9ICBIQUxfRVJST1I7Ci0gICAgICBicmVhazsKKyAgICAgIGRlZmF1bHQgOgorICAgICAgICAvKiBVcGRhdGUgdGhlIGVycm9yIGNvZGUgKi8KKyAgICAgICAgaHJuZy0+RXJyb3JDb2RlID0gSEFMX1JOR19FUlJPUl9JTlZBTElEX0NBTExCQUNLOworICAgICAgICAvKiBSZXR1cm4gZXJyb3Igc3RhdHVzICovCisgICAgICAgIHN0YXR1cyA9ICBIQUxfRVJST1I7CisgICAgICAgIGJyZWFrOwogICAgIH0KICAgfQogICBlbHNlIGlmIChIQUxfUk5HX1NUQVRFX1JFU0VUID09IGhybmctPlN0YXRlKQogICB7CiAgICAgc3dpdGNoIChDYWxsYmFja0lEKQogICAgIHsKLSAgICBjYXNlIEhBTF9STkdfTVNQSU5JVF9DQl9JRCA6Ci0gICAgICBocm5nLT5Nc3BJbml0Q2FsbGJhY2sgPSBIQUxfUk5HX01zcEluaXQ7ICAgICAgICAgICAgICAvKiBMZWdhY3kgd2VhayBNc3BJbml0ICAqLwotICAgICAgYnJlYWs7CisgICAgICBjYXNlIEhBTF9STkdfTVNQSU5JVF9DQl9JRCA6CisgICAgICAgIGhybmctPk1zcEluaXRDYWxsYmFjayA9IEhBTF9STkdfTXNwSW5pdDsgICAgICAgICAgICAgIC8qIExlZ2FjeSB3ZWFrIE1zcEluaXQgICovCisgICAgICAgIGJyZWFrOwogCi0gICAgY2FzZSBIQUxfUk5HX01TUERFSU5JVF9DQl9JRCA6Ci0gICAgICBocm5nLT5Nc3BEZUluaXRDYWxsYmFjayA9IEhBTF9STkdfTXNwRGVJbml0OyAgICAgICAgICAvKiBMZWdhY3kgd2VhayBNc3BJbml0ICAqLwotICAgICAgYnJlYWs7CisgICAgICBjYXNlIEhBTF9STkdfTVNQREVJTklUX0NCX0lEIDoKKyAgICAgICAgaHJuZy0+TXNwRGVJbml0Q2FsbGJhY2sgPSBIQUxfUk5HX01zcERlSW5pdDsgICAgICAgICAgLyogTGVnYWN5IHdlYWsgTXNwSW5pdCAgKi8KKyAgICAgICAgYnJlYWs7CiAKLSAgICBkZWZhdWx0IDoKLSAgICAgIC8qIFVwZGF0ZSB0aGUgZXJyb3IgY29kZSAqLwotICAgICAgaHJuZy0+RXJyb3JDb2RlID0gSEFMX1JOR19FUlJPUl9JTlZBTElEX0NBTExCQUNLOwotICAgICAvKiBSZXR1cm4gZXJyb3Igc3RhdHVzICovCi0gICAgICBzdGF0dXMgPSAgSEFMX0VSUk9SOwotICAgICAgYnJlYWs7CisgICAgICBkZWZhdWx0IDoKKyAgICAgICAgLyogVXBkYXRlIHRoZSBlcnJvciBjb2RlICovCisgICAgICAgIGhybmctPkVycm9yQ29kZSA9IEhBTF9STkdfRVJST1JfSU5WQUxJRF9DQUxMQkFDSzsKKyAgICAgICAgLyogUmV0dXJuIGVycm9yIHN0YXR1cyAqLworICAgICAgICBzdGF0dXMgPSAgSEFMX0VSUk9SOworICAgICAgICBicmVhazsKICAgICB9CiAgIH0KICAgZWxzZQpAQCAtNTE1LDggKzUxNiw4IEBACiAgICovCiAKIC8qKiBAYWRkdG9ncm91cCBSTkdfRXhwb3J0ZWRfRnVuY3Rpb25zX0dyb3VwMgotICogIEBicmllZiAgIFBlcmlwaGVyYWwgQ29udHJvbCBmdW5jdGlvbnMKLSAqCisgICogIEBicmllZiAgIFBlcmlwaGVyYWwgQ29udHJvbCBmdW5jdGlvbnMKKyAgKgogQHZlcmJhdGltCiAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICAgICAgICAgICAgICAgICAgICAgICMjIyMjIFBlcmlwaGVyYWwgQ29udHJvbCBmdW5jdGlvbnMgIyMjIyMKQEAgLTUzMywxMSArNTM0LDExIEBACiAvKioKICAgKiBAYnJpZWYgIEdlbmVyYXRlcyBhIDMyLWJpdCByYW5kb20gbnVtYmVyLgogICAqIEBub3RlICAgVGhpcyBmdW5jdGlvbiBjaGVja3MgdmFsdWUgb2YgUk5HX0ZMQUdfRFJEWSBmbGFnIHRvIGtub3cgaWYgdmFsaWQKLSAgKiAgICAgICAgIHJhbmRvbSBudW1iZXIgaXMgYXZhaWxhYmxlIGluIHRoZSBEUiByZWdpc3RlciAoUk5HX0ZMQUdfRFJEWSBmbGFnIHNldCAKKyAgKiAgICAgICAgIHJhbmRvbSBudW1iZXIgaXMgYXZhaWxhYmxlIGluIHRoZSBEUiByZWdpc3RlciAoUk5HX0ZMQUdfRFJEWSBmbGFnIHNldAogICAqICAgICAgICAgd2hlbmV2ZXIgYSByYW5kb20gbnVtYmVyIGlzIGF2YWlsYWJsZSB0aHJvdWdoIHRoZSBSTkdfRFIgcmVnaXN0ZXIpLgotICAqICAgICAgICAgQWZ0ZXIgdHJhbnNpdGlvbmluZyBmcm9tIDAgdG8gMSAocmFuZG9tIG51bWJlciBhdmFpbGFibGUpLCAKLSAgKiAgICAgICAgIFJOR19GTEFHX0RSRFkgZmxhZyByZW1haW5zIGhpZ2ggdW50aWwgb3V0cHV0IGJ1ZmZlciBiZWNvbWVzIGVtcHR5IGFmdGVyIHJlYWRpbmcgCi0gICogICAgICAgICBmb3VyIHdvcmRzIGZyb20gdGhlIFJOR19EUiByZWdpc3RlciwgaS5lLiBmdXJ0aGVyIGZ1bmN0aW9uIGNhbGxzIAorICAqICAgICAgICAgQWZ0ZXIgdHJhbnNpdGlvbmluZyBmcm9tIDAgdG8gMSAocmFuZG9tIG51bWJlciBhdmFpbGFibGUpLAorICAqICAgICAgICAgUk5HX0ZMQUdfRFJEWSBmbGFnIHJlbWFpbnMgaGlnaCB1bnRpbCBvdXRwdXQgYnVmZmVyIGJlY29tZXMgZW1wdHkgYWZ0ZXIgcmVhZGluZworICAqICAgICAgICAgZm91ciB3b3JkcyBmcm9tIHRoZSBSTkdfRFIgcmVnaXN0ZXIsIGkuZS4gZnVydGhlciBmdW5jdGlvbiBjYWxscwogICAqICAgICAgICAgd2lsbCBpbW1lZGlhdGVseSByZXR1cm4gYSBuZXcgdTMyIHJhbmRvbSBudW1iZXIgKGFkZGl0aW9uYWwgd29yZHMgYXJlCiAgICogICAgICAgICBhdmFpbGFibGUgYW5kIGNhbiBiZSByZWFkIGJ5IHRoZSBhcHBsaWNhdGlvbiwgdGlsbCBSTkdfRkxBR19EUkRZIGZsYWcgcmVtYWlucyBoaWdoKS4KICAgKiBAbm90ZSAgIFdoZW4gbm8gbW9yZSByYW5kb20gbnVtYmVyIGRhdGEgaXMgYXZhaWxhYmxlIGluIERSIHJlZ2lzdGVyLCBSTkdfRkxBR19EUkRZCkBAIC01NzAsMTEgKzU3MSwxNSBAQAogICAgIHsKICAgICAgIGlmICgoSEFMX0dldFRpY2soKSAtIHRpY2tzdGFydCkgPiBSTkdfVElNRU9VVF9WQUxVRSkKICAgICAgIHsKLSAgICAgICAgaHJuZy0+U3RhdGUgPSBIQUxfUk5HX1NUQVRFX1JFQURZOwotICAgICAgICBocm5nLT5FcnJvckNvZGUgPSBIQUxfUk5HX0VSUk9SX1RJTUVPVVQ7Ci0gICAgICAgIC8qIFByb2Nlc3MgVW5sb2NrZWQgKi8KLSAgICAgICAgX19IQUxfVU5MT0NLKGhybmcpOwotICAgICAgICByZXR1cm4gSEFMX0VSUk9SOworICAgICAgICAvKiBOZXcgY2hlY2sgdG8gYXZvaWQgZmFsc2UgdGltZW91dCBkZXRlY3Rpb24gaW4gY2FzZSBvZiBwcmVlbXB0aW9uICovCisgICAgICAgIGlmIChfX0hBTF9STkdfR0VUX0ZMQUcoaHJuZywgUk5HX0ZMQUdfRFJEWSkgPT0gUkVTRVQpCisgICAgICAgIHsKKyAgICAgICAgICBocm5nLT5TdGF0ZSA9IEhBTF9STkdfU1RBVEVfUkVBRFk7CisgICAgICAgICAgaHJuZy0+RXJyb3JDb2RlID0gSEFMX1JOR19FUlJPUl9USU1FT1VUOworICAgICAgICAgIC8qIFByb2Nlc3MgVW5sb2NrZWQgKi8KKyAgICAgICAgICBfX0hBTF9VTkxPQ0soaHJuZyk7CisgICAgICAgICAgcmV0dXJuIEhBTF9FUlJPUjsKKyAgICAgICAgfQogICAgICAgfQogICAgIH0KIApAQCAtNjM5LDcgKzY0NCw3IEBACiAgICovCiB1aW50MzJfdCBIQUxfUk5HX0dldFJhbmRvbU51bWJlcihSTkdfSGFuZGxlVHlwZURlZiAqaHJuZykKIHsKLSAgaWYoSEFMX1JOR19HZW5lcmF0ZVJhbmRvbU51bWJlcihocm5nLCAmKGhybmctPlJhbmRvbU51bWJlcikpID09IEhBTF9PSykKKyAgaWYgKEhBTF9STkdfR2VuZXJhdGVSYW5kb21OdW1iZXIoaHJuZywgJihocm5nLT5SYW5kb21OdW1iZXIpKSA9PSBIQUxfT0spCiAgIHsKICAgICByZXR1cm4gaHJuZy0+UmFuZG9tTnVtYmVyOwogICB9CkBAIC03MzQsNiArNzM5LDggQEAKIAogICAgIC8qIENsZWFyIHRoZSBjbG9jayBlcnJvciBmbGFnICovCiAgICAgX19IQUxfUk5HX0NMRUFSX0lUKGhybmcsIFJOR19JVF9DRUkgfCBSTkdfSVRfU0VJKTsKKworICAgIHJldHVybjsKICAgfQogCiAgIC8qIENoZWNrIFJORyBkYXRhIHJlYWR5IGludGVycnVwdCBvY2N1cnJlZCAqLwpAQCAtNzc5LDcgKzc4Niw3IEBACiAgICogQG5vdGUgICBXaGVuIFJOR19GTEFHX0RSRFkgZmxhZyB2YWx1ZSBpcyBzZXQsIGZpcnN0IHJhbmRvbSBudW1iZXIgaGFzIGJlZW4gcmVhZAogICAqICAgICAgICAgZnJvbSBEUiByZWdpc3RlciBpbiBJUlEgSGFuZGxlciBhbmQgaXMgcHJvdmlkZWQgYXMgY2FsbGJhY2sgcGFyYW1ldGVyLgogICAqICAgICAgICAgRGVwZW5kaW5nIG9uIHZhbGlkIGRhdGEgYXZhaWxhYmxlIGluIHRoZSBjb25kaXRpb25pbmcgb3V0cHV0IGJ1ZmZlciwKLSAgKiAgICAgICAgIGFkZGl0aW9uYWwgd29yZHMgY2FuIGJlIHJlYWQgYnkgdGhlIGFwcGxpY2F0aW9uIGZyb20gRFIgcmVnaXN0ZXIgdGlsbCAKKyAgKiAgICAgICAgIGFkZGl0aW9uYWwgd29yZHMgY2FuIGJlIHJlYWQgYnkgdGhlIGFwcGxpY2F0aW9uIGZyb20gRFIgcmVnaXN0ZXIgdGlsbAogICAqICAgICAgICAgRFJEWSBiaXQgcmVtYWlucyBoaWdoLgogICAqIEBwYXJhbSAgaHJuZyBwb2ludGVyIHRvIGEgUk5HX0hhbmRsZVR5cGVEZWYgc3RydWN0dXJlIHRoYXQgY29udGFpbnMKICAgKiAgICAgICAgICAgICAgICB0aGUgY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbiBmb3IgUk5HLgpAQCAtODE2LDggKzgyMyw4IEBACiAKIAogLyoqIEBhZGR0b2dyb3VwIFJOR19FeHBvcnRlZF9GdW5jdGlvbnNfR3JvdXAzCi0gKiAgQGJyaWVmICAgUGVyaXBoZXJhbCBTdGF0ZSBmdW5jdGlvbnMKLSAqCisgICogIEBicmllZiAgIFBlcmlwaGVyYWwgU3RhdGUgZnVuY3Rpb25zCisgICoKIEB2ZXJiYXRpbQogID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgICAgICAgICAgICAgICAgICAgICAjIyMjIyBQZXJpcGhlcmFsIFN0YXRlIGZ1bmN0aW9ucyAjIyMjIwpAQCAtODQ1LDcgKzg1Miw3IEBACiAgICogQGJyaWVmICBSZXR1cm4gdGhlIFJORyBoYW5kbGUgZXJyb3IgY29kZS4KICAgKiBAcGFyYW0gIGhybmc6IHBvaW50ZXIgdG8gYSBSTkdfSGFuZGxlVHlwZURlZiBzdHJ1Y3R1cmUuCiAgICogQHJldHZhbCBSTkcgRXJyb3IgQ29kZQotKi8KKyAgKi8KIHVpbnQzMl90IEhBTF9STkdfR2V0RXJyb3IoUk5HX0hhbmRsZVR5cGVEZWYgKmhybmcpCiB7CiAgIC8qIFJldHVybiBSTkcgRXJyb3IgQ29kZSAqLwpAQCAtODcxLDQgKzg3OCwzIEBACiAgICogQH0KICAgKi8KIAotLyoqKioqKioqKioqKioqKioqKioqKioqKiAoQykgQ09QWVJJR0hUIFNUTWljcm9lbGVjdHJvbmljcyAqKioqKkVORCBPRiBGSUxFKioqKi8KZGlmZiAtLWdpdCBhL1NyYy9zdG0zMmY3eHhfaGFsX3J0Yy5jIGIvU3JjL3N0bTMyZjd4eF9oYWxfcnRjLmMKaW5kZXggZjRjZTllMC4uMTRkYmRkYyAxMDA2NDQKLS0tIGEvU3JjL3N0bTMyZjd4eF9oYWxfcnRjLmMKKysrIGIvU3JjL3N0bTMyZjd4eF9oYWxfcnRjLmMKQEAgLTExLDYgKzExLDE3IEBACiAgICogICAgICAgICAgICsgUGVyaXBoZXJhbCBDb250cm9sIGZ1bmN0aW9ucwogICAqICAgICAgICAgICArIFBlcmlwaGVyYWwgU3RhdGUgZnVuY3Rpb25zCiAgICoKKyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICogQGF0dGVudGlvbgorICAqCisgICogQ29weXJpZ2h0IChjKSAyMDE3IFNUTWljcm9lbGVjdHJvbmljcy4KKyAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICAqCisgICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCB1bmRlciB0ZXJtcyB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlCisgICogaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc29mdHdhcmUgY29tcG9uZW50LgorICAqIElmIG5vIExJQ0VOU0UgZmlsZSBjb21lcyB3aXRoIHRoaXMgc29mdHdhcmUsIGl0IGlzIHByb3ZpZGVkIEFTLUlTLgorICAqCisgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICBAdmVyYmF0aW0KICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgICAgICAgICAgICAgICMjIyMjIEJhY2t1cCBEb21haW4gT3BlcmF0aW5nIENvbmRpdGlvbiAjIyMjIwpAQCAtMTA4LDkgKzExOSw5IEBACiAKICAgVGhlIGNvbXBpbGF0aW9uIGRlZmluZSAgVVNFX0hBTF9SVENfUkVHSVNURVJfQ0FMTEJBQ0tTIHdoZW4gc2V0IHRvIDEKICAgYWxsb3dzIHRoZSB1c2VyIHRvIGNvbmZpZ3VyZSBkeW5hbWljYWxseSB0aGUgZHJpdmVyIGNhbGxiYWNrcy4KLSAgVXNlIEZ1bmN0aW9uIEByZWYgSEFMX1JUQ19SZWdpc3RlckNhbGxiYWNrKCkgdG8gcmVnaXN0ZXIgYW4gaW50ZXJydXB0IGNhbGxiYWNrLgorICBVc2UgRnVuY3Rpb24gSEFMX1JUQ19SZWdpc3RlckNhbGxiYWNrKCkgdG8gcmVnaXN0ZXIgYW4gaW50ZXJydXB0IGNhbGxiYWNrLgogCi0gIEZ1bmN0aW9uIEByZWYgSEFMX1JUQ19SZWdpc3RlckNhbGxiYWNrKCkgYWxsb3dzIHRvIHJlZ2lzdGVyIGZvbGxvd2luZyBjYWxsYmFja3M6CisgIEZ1bmN0aW9uIEhBTF9SVENfUmVnaXN0ZXJDYWxsYmFjaygpIGFsbG93cyB0byByZWdpc3RlciBmb2xsb3dpbmcgY2FsbGJhY2tzOgogICAgICgrKSBBbGFybUFFdmVudENhbGxiYWNrICAgICAgICAgIDogUlRDIEFsYXJtIEEgRXZlbnQgY2FsbGJhY2suCiAgICAgKCspIEFsYXJtQkV2ZW50Q2FsbGJhY2sgICAgICAgICAgOiBSVEMgQWxhcm0gQiBFdmVudCBjYWxsYmFjay4KICAgICAoKykgVGltZVN0YW1wRXZlbnRDYWxsYmFjayAgICAgICA6IFJUQyBUaW1lU3RhbXAgRXZlbnQgY2FsbGJhY2suCkBAIC0xMjMsOSArMTM0LDkgQEAKICAgVGhpcyBmdW5jdGlvbiB0YWtlcyBhcyBwYXJhbWV0ZXJzIHRoZSBIQUwgcGVyaXBoZXJhbCBoYW5kbGUsIHRoZSBDYWxsYmFjayBJRAogICBhbmQgYSBwb2ludGVyIHRvIHRoZSB1c2VyIGNhbGxiYWNrIGZ1bmN0aW9uLgogCi0gIFVzZSBmdW5jdGlvbiBAcmVmIEhBTF9SVENfVW5SZWdpc3RlckNhbGxiYWNrKCkgdG8gcmVzZXQgYSBjYWxsYmFjayB0byB0aGUgZGVmYXVsdAorICBVc2UgZnVuY3Rpb24gSEFMX1JUQ19VblJlZ2lzdGVyQ2FsbGJhY2soKSB0byByZXNldCBhIGNhbGxiYWNrIHRvIHRoZSBkZWZhdWx0CiAgIHdlYWsgZnVuY3Rpb24uCi0gIEByZWYgSEFMX1JUQ19VblJlZ2lzdGVyQ2FsbGJhY2soKSB0YWtlcyBhcyBwYXJhbWV0ZXJzIHRoZSBIQUwgcGVyaXBoZXJhbCBoYW5kbGUsCisgIEhBTF9SVENfVW5SZWdpc3RlckNhbGxiYWNrKCkgdGFrZXMgYXMgcGFyYW1ldGVycyB0aGUgSEFMIHBlcmlwaGVyYWwgaGFuZGxlLAogICBhbmQgdGhlIENhbGxiYWNrIElELgogICBUaGlzIGZ1bmN0aW9uIGFsbG93cyB0byByZXNldCBmb2xsb3dpbmcgY2FsbGJhY2tzOgogICAgICgrKSBBbGFybUFFdmVudENhbGxiYWNrICAgICAgICAgIDogUlRDIEFsYXJtIEEgRXZlbnQgY2FsbGJhY2suCkBAIC0xMzgsMTMgKzE0OSwxMyBAQAogICAgICgrKSBNc3BJbml0Q2FsbGJhY2sgICAgICAgICAgICAgIDogUlRDIE1zcEluaXQgY2FsbGJhY2suCiAgICAgKCspIE1zcERlSW5pdENhbGxiYWNrICAgICAgICAgICAgOiBSVEMgTXNwRGVJbml0IGNhbGxiYWNrLgogCi0gIEJ5IGRlZmF1bHQsIGFmdGVyIHRoZSBAcmVmIEhBTF9SVENfSW5pdCgpIGFuZCB3aGVuIHRoZSBzdGF0ZSBpcyBIQUxfUlRDX1NUQVRFX1JFU0VULAorICBCeSBkZWZhdWx0LCBhZnRlciB0aGUgSEFMX1JUQ19Jbml0KCkgYW5kIHdoZW4gdGhlIHN0YXRlIGlzIEhBTF9SVENfU1RBVEVfUkVTRVQsCiAgIGFsbCBjYWxsYmFja3MgYXJlIHNldCB0byB0aGUgY29ycmVzcG9uZGluZyB3ZWFrIGZ1bmN0aW9ucyA6Ci0gIGV4YW1wbGVzIEByZWYgQWxhcm1BRXZlbnRDYWxsYmFjaygpLCBAcmVmIFdha2VVcFRpbWVyRXZlbnRDYWxsYmFjaygpLgorICBleGFtcGxlcyBBbGFybUFFdmVudENhbGxiYWNrKCksIFdha2VVcFRpbWVyRXZlbnRDYWxsYmFjaygpLgogICBFeGNlcHRpb24gZG9uZSBmb3IgTXNwSW5pdCBhbmQgTXNwRGVJbml0IGNhbGxiYWNrcyB0aGF0IGFyZSByZXNldCB0byB0aGUgbGVnYWN5IHdlYWsgZnVuY3Rpb24KLSAgaW4gdGhlIEByZWYgSEFMX1JUQ19Jbml0KCkvQHJlZiBIQUxfUlRDX0RlSW5pdCgpIG9ubHkgd2hlbiB0aGVzZSBjYWxsYmFja3MgYXJlIG51bGwKKyAgaW4gdGhlIEhBTF9SVENfSW5pdCgpL0hBTF9SVENfRGVJbml0KCkgb25seSB3aGVuIHRoZXNlIGNhbGxiYWNrcyBhcmUgbnVsbAogICAobm90IHJlZ2lzdGVyZWQgYmVmb3JlaGFuZCkuCi0gIElmIG5vdCwgTXNwSW5pdCBvciBNc3BEZUluaXQgYXJlIG5vdCBudWxsLCBAcmVmIEhBTF9SVENfSW5pdCgpL0ByZWYgSEFMX1JUQ19EZUluaXQoKQorICBJZiBub3QsIE1zcEluaXQgb3IgTXNwRGVJbml0IGFyZSBub3QgbnVsbCwgSEFMX1JUQ19Jbml0KCkvSEFMX1JUQ19EZUluaXQoKQogICBrZWVwIGFuZCB1c2UgdGhlIHVzZXIgTXNwSW5pdC9Nc3BEZUluaXQgY2FsbGJhY2tzIChyZWdpc3RlcmVkIGJlZm9yZWhhbmQpCiAKICAgQ2FsbGJhY2tzIGNhbiBiZSByZWdpc3RlcmVkL3VucmVnaXN0ZXJlZCBpbiBIQUxfUlRDX1NUQVRFX1JFQURZIHN0YXRlIG9ubHkuCkBAIC0xNTIsMjUgKzE2MywxMyBAQAogICBpbiBIQUxfUlRDX1NUQVRFX1JFQURZIG9yIEhBTF9SVENfU1RBVEVfUkVTRVQgc3RhdGUsCiAgIHRodXMgcmVnaXN0ZXJlZCAodXNlcikgTXNwSW5pdC9EZUluaXQgY2FsbGJhY2tzIGNhbiBiZSB1c2VkIGR1cmluZyB0aGUgSW5pdC9EZUluaXQuCiAgIEluIHRoYXQgY2FzZSBmaXJzdCByZWdpc3RlciB0aGUgTXNwSW5pdC9Nc3BEZUluaXQgdXNlciBjYWxsYmFja3MKLSAgdXNpbmcgQHJlZiBIQUxfUlRDX1JlZ2lzdGVyQ2FsbGJhY2soKSBiZWZvcmUgY2FsbGluZyBAcmVmIEhBTF9SVENfRGVJbml0KCkKLSAgb3IgQHJlZiBIQUxfUlRDX0luaXQoKSBmdW5jdGlvbi4KKyAgdXNpbmcgSEFMX1JUQ19SZWdpc3RlckNhbGxiYWNrKCkgYmVmb3JlIGNhbGxpbmcgSEFMX1JUQ19EZUluaXQoKQorICBvciBIQUxfUlRDX0luaXQoKSBmdW5jdGlvbi4KIAogICBXaGVuIFRoZSBjb21waWxhdGlvbiBkZWZpbmUgVVNFX0hBTF9SVENfUkVHSVNURVJfQ0FMTEJBQ0tTIGlzIHNldCB0byAwIG9yCiAgIG5vdCBkZWZpbmVkLCB0aGUgY2FsbGJhY2sgcmVnaXN0cmF0aW9uIGZlYXR1cmUgaXMgbm90IGF2YWlsYWJsZSBhbmQgYWxsIGNhbGxiYWNrcwogICBhcmUgc2V0IHRvIHRoZSBjb3JyZXNwb25kaW5nIHdlYWsgZnVuY3Rpb25zLgogICAgQGVuZHZlcmJhdGltCi0KLSAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gICogQGF0dGVudGlvbgotICAqCi0gICogPGgyPjxjZW50ZXI+JmNvcHk7IENvcHlyaWdodCAoYykgMjAxNyBTVE1pY3JvZWxlY3Ryb25pY3MuCi0gICogQWxsIHJpZ2h0cyByZXNlcnZlZC48L2NlbnRlcj48L2gyPgotICAqCi0gICogVGhpcyBzb2Z0d2FyZSBjb21wb25lbnQgaXMgbGljZW5zZWQgYnkgU1QgdW5kZXIgQlNEIDMtQ2xhdXNlIGxpY2Vuc2UsCi0gICogdGhlICJMaWNlbnNlIjsgWW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZQotICAqIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdDoKLSAgKiAgICAgICAgICAgICAgICAgICAgICAgIG9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0JTRC0zLUNsYXVzZQotICAqCiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAqLwogCkBAIC0xNzg1LDkgKzE3ODQsOCBAQAogICAqLwogdm9pZCBIQUxfUlRDX0RTVF9BZGQxSG91cihSVENfSGFuZGxlVHlwZURlZiAqaHJ0YykKIHsKLSAgVU5VU0VEKGhydGMpOwogICBfX0hBTF9SVENfV1JJVEVQUk9URUNUSU9OX0RJU0FCTEUoaHJ0Yyk7Ci0gIFNFVF9CSVQoUlRDLT5DUiwgUlRDX0NSX0FERDFIKTsKKyAgU0VUX0JJVChocnRjLT5JbnN0YW5jZS0+Q1IsIFJUQ19DUl9BREQxSCk7CiAgIF9fSEFMX1JUQ19XUklURVBST1RFQ1RJT05fRU5BQkxFKGhydGMpOwogfQogCkBAIC0xNzk5LDkgKzE3OTcsOCBAQAogICAqLwogdm9pZCBIQUxfUlRDX0RTVF9TdWIxSG91cihSVENfSGFuZGxlVHlwZURlZiAqaHJ0YykKIHsKLSAgVU5VU0VEKGhydGMpOwogICBfX0hBTF9SVENfV1JJVEVQUk9URUNUSU9OX0RJU0FCTEUoaHJ0Yyk7Ci0gIFNFVF9CSVQoUlRDLT5DUiwgUlRDX0NSX1NVQjFIKTsKKyAgU0VUX0JJVChocnRjLT5JbnN0YW5jZS0+Q1IsIFJUQ19DUl9TVUIxSCk7CiAgIF9fSEFMX1JUQ19XUklURVBST1RFQ1RJT05fRU5BQkxFKGhydGMpOwogfQogCkBAIC0xODEzLDkgKzE4MTAsOCBAQAogICAqLwogdm9pZCBIQUxfUlRDX0RTVF9TZXRTdG9yZU9wZXJhdGlvbihSVENfSGFuZGxlVHlwZURlZiAqaHJ0YykKIHsKLSAgVU5VU0VEKGhydGMpOwogICBfX0hBTF9SVENfV1JJVEVQUk9URUNUSU9OX0RJU0FCTEUoaHJ0Yyk7Ci0gIFNFVF9CSVQoUlRDLT5DUiwgUlRDX0NSX0JLUCk7CisgIFNFVF9CSVQoaHJ0Yy0+SW5zdGFuY2UtPkNSLCBSVENfQ1JfQktQKTsKICAgX19IQUxfUlRDX1dSSVRFUFJPVEVDVElPTl9FTkFCTEUoaHJ0Yyk7CiB9CiAKQEAgLTE4MjYsOSArMTgyMiw4IEBACiAgICovCiB2b2lkIEhBTF9SVENfRFNUX0NsZWFyU3RvcmVPcGVyYXRpb24oUlRDX0hhbmRsZVR5cGVEZWYgKmhydGMpCiB7Ci0gIFVOVVNFRChocnRjKTsKICAgX19IQUxfUlRDX1dSSVRFUFJPVEVDVElPTl9ESVNBQkxFKGhydGMpOwotICBDTEVBUl9CSVQoUlRDLT5DUiwgUlRDX0NSX0JLUCk7CisgIENMRUFSX0JJVChocnRjLT5JbnN0YW5jZS0+Q1IsIFJUQ19DUl9CS1ApOwogICBfX0hBTF9SVENfV1JJVEVQUk9URUNUSU9OX0VOQUJMRShocnRjKTsKIH0KIApAQCAtMTgzOSw4ICsxODM0LDcgQEAKICAgKi8KIHVpbnQzMl90IEhBTF9SVENfRFNUX1JlYWRTdG9yZU9wZXJhdGlvbihSVENfSGFuZGxlVHlwZURlZiAqaHJ0YykKIHsKLSAgVU5VU0VEKGhydGMpOwotICByZXR1cm4gUkVBRF9CSVQoUlRDLT5DUiwgUlRDX0NSX0JLUCk7CisgIHJldHVybiBSRUFEX0JJVChocnRjLT5JbnN0YW5jZS0+Q1IsIFJUQ19DUl9CS1ApOwogfQogCiAvKioKQEAgLTE5MjUsNCArMTkxOSwzIEBACiAgICogQH0KICAgKi8KIAotLyoqKioqKioqKioqKioqKioqKioqKioqKiAoQykgQ09QWVJJR0hUIFNUTWljcm9lbGVjdHJvbmljcyAqKioqKkVORCBPRiBGSUxFKioqKi8KZGlmZiAtLWdpdCBhL1NyYy9zdG0zMmY3eHhfaGFsX3J0Y19leC5jIGIvU3JjL3N0bTMyZjd4eF9oYWxfcnRjX2V4LmMKaW5kZXggOTM1OTI4MC4uOTIxM2ZhYiAxMDA2NDQKLS0tIGEvU3JjL3N0bTMyZjd4eF9oYWxfcnRjX2V4LmMKKysrIGIvU3JjL3N0bTMyZjd4eF9oYWxfcnRjX2V4LmMKQEAgLTExLDYgKzExLDE3IEBACiAgICogICAgICAgICAgICsgRXh0ZW5zaW9uIENvbnRyb2wgZnVuY3Rpb25zCiAgICogICAgICAgICAgICsgRXh0ZW5zaW9uIFJUQyBmZWF0dXJlcyBmdW5jdGlvbnMKICAgKgorICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgKiBAYXR0ZW50aW9uCisgICoKKyAgKiBDb3B5cmlnaHQgKGMpIDIwMTcgU1RNaWNyb2VsZWN0cm9uaWNzLgorICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgICoKKyAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIHVuZGVyIHRlcm1zIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUKKyAgKiBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb2Z0d2FyZSBjb21wb25lbnQuCisgICogSWYgbm8gTElDRU5TRSBmaWxlIGNvbWVzIHdpdGggdGhpcyBzb2Z0d2FyZSwgaXQgaXMgcHJvdmlkZWQgQVMtSVMuCisgICoKKyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgIEB2ZXJiYXRpbQogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgICAgICAgICAgICAgICAgICMjIyMjIEhvdyB0byB1c2UgdGhpcyBkcml2ZXIgIyMjIyMKQEAgLTY2LDE3ICs3Nyw2IEBACiAKICAgIEBlbmR2ZXJiYXRpbQogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAgKiBAYXR0ZW50aW9uCi0gICoKLSAgKiA8aDI+PGNlbnRlcj4mY29weTsgQ29weXJpZ2h0IChjKSAyMDE3IFNUTWljcm9lbGVjdHJvbmljcy4KLSAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLjwvY2VudGVyPjwvaDI+Ci0gICoKLSAgKiBUaGlzIHNvZnR3YXJlIGNvbXBvbmVudCBpcyBsaWNlbnNlZCBieSBTVCB1bmRlciBCU0QgMy1DbGF1c2UgbGljZW5zZSwKLSAgKiB0aGUgIkxpY2Vuc2UiOyBZb3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlCi0gICogTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0OgotICAqICAgICAgICAgICAgICAgICAgICAgICAgb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvQlNELTMtQ2xhdXNlCi0gICoKLSAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgICovCiAKIC8qIEluY2x1ZGVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCkBAIC0xODcyLDQgKzE4NzIsMyBAQAogICAqIEB9CiAgICovCiAKLS8qKioqKioqKioqKioqKioqKioqKioqKiogKEMpIENPUFlSSUdIVCBTVE1pY3JvZWxlY3Ryb25pY3MgKioqKipFTkQgT0YgRklMRSoqKiovCmRpZmYgLS1naXQgYS9TcmMvc3RtMzJmN3h4X2hhbF9zYWkuYyBiL1NyYy9zdG0zMmY3eHhfaGFsX3NhaS5jCmluZGV4IGEwZWM5YTUuLjI2Mzg1NmEgMTAwNjQ0Ci0tLSBhL1NyYy9zdG0zMmY3eHhfaGFsX3NhaS5jCisrKyBiL1NyYy9zdG0zMmY3eHhfaGFsX3NhaS5jCkBAIC0xMCw2ICsxMCwxNyBAQAogICAqICAgICAgICAgICArIFBlcmlwaGVyYWwgQ29udHJvbCBmdW5jdGlvbnMKICAgKiAgICAgICAgICAgKyBQZXJpcGhlcmFsIFN0YXRlIGZ1bmN0aW9ucwogICAqCisgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAqIEBhdHRlbnRpb24KKyAgKgorICAqIENvcHlyaWdodCAoYykgMjAxNyBTVE1pY3JvZWxlY3Ryb25pY3MuCisgICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAgKgorICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgdW5kZXIgdGVybXMgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZQorICAqIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvZnR3YXJlIGNvbXBvbmVudC4KKyAgKiBJZiBubyBMSUNFTlNFIGZpbGUgY29tZXMgd2l0aCB0aGlzIHNvZnR3YXJlLCBpdCBpcyBwcm92aWRlZCBBUy1JUy4KKyAgKgorICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgQHZlcmJhdGltCiAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgICAgICAgICAgICAgICAgICAjIyMjIyBIb3cgdG8gdXNlIHRoaXMgZHJpdmVyICMjIyMjCkBAIC0xOTAsMTggKzIwMSw2IEBACiAgICAgYW5kIHdlYWsgKHN1cmNoYXJnZWQpIGNhbGxiYWNrcyBhcmUgdXNlZC4KIAogICBAZW5kdmVyYmF0aW0KLSAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gICogQGF0dGVudGlvbgotICAqCi0gICogPGgyPjxjZW50ZXI+JmNvcHk7IENvcHlyaWdodCAoYykgMjAxNyBTVE1pY3JvZWxlY3Ryb25pY3MuCi0gICogQWxsIHJpZ2h0cyByZXNlcnZlZC48L2NlbnRlcj48L2gyPgotICAqCi0gICogVGhpcyBzb2Z0d2FyZSBjb21wb25lbnQgaXMgbGljZW5zZWQgYnkgU1QgdW5kZXIgQlNEIDMtQ2xhdXNlIGxpY2Vuc2UsCi0gICogdGhlICJMaWNlbnNlIjsgWW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZQotICAqIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdDoKLSAgKiAgICAgICAgICAgICAgICAgICAgICAgIG9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0JTRC0zLUNsYXVzZQotICAqCi0gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAqLwogCiAvKiBJbmNsdWRlcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwpAQCAtMjU1Nyw0ICsyNTU2LDMgQEAKICAgKiBAfQogICAqLwogCi0vKioqKioqKioqKioqKioqKioqKioqKioqIChDKSBDT1BZUklHSFQgU1RNaWNyb2VsZWN0cm9uaWNzICoqKioqRU5EIE9GIEZJTEUqKioqLwpkaWZmIC0tZ2l0IGEvU3JjL3N0bTMyZjd4eF9oYWxfc2FpX2V4LmMgYi9TcmMvc3RtMzJmN3h4X2hhbF9zYWlfZXguYwppbmRleCBmOWViODYyLi4xOWY3NWI0IDEwMDY0NAotLS0gYS9TcmMvc3RtMzJmN3h4X2hhbF9zYWlfZXguYworKysgYi9TcmMvc3RtMzJmN3h4X2hhbF9zYWlfZXguYwpAQCAtMTAsMTMgKzEwLDEyIEBACiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAqIEBhdHRlbnRpb24KICAgKgotICAqIDxoMj48Y2VudGVyPiZjb3B5OyBDb3B5cmlnaHQgKGMpIDIwMTcgU1RNaWNyb2VsZWN0cm9uaWNzLgotICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuPC9jZW50ZXI+PC9oMj4KKyAgKiBDb3B5cmlnaHQgKGMpIDIwMTcgU1RNaWNyb2VsZWN0cm9uaWNzLgorICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICoKLSAgKiBUaGlzIHNvZnR3YXJlIGNvbXBvbmVudCBpcyBsaWNlbnNlZCBieSBTVCB1bmRlciBCU0QgMy1DbGF1c2UgbGljZW5zZSwKLSAgKiB0aGUgIkxpY2Vuc2UiOyBZb3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlCi0gICogTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0OgotICAqICAgICAgICAgICAgICAgICAgICAgICAgb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvQlNELTMtQ2xhdXNlCisgICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCB1bmRlciB0ZXJtcyB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlCisgICogaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc29mdHdhcmUgY29tcG9uZW50LgorICAqIElmIG5vIExJQ0VOU0UgZmlsZSBjb21lcyB3aXRoIHRoaXMgc29mdHdhcmUsIGl0IGlzIHByb3ZpZGVkIEFTLUlTLgogICAqCiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAqLwpAQCAtMzEsNCArMzAsMyBAQAogLyogUHJpdmF0ZSBmdW5jdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KIAogCi0vKioqKioqKioqKioqKioqKioqKioqKioqIChDKSBDT1BZUklHSFQgU1RNaWNyb2VsZWN0cm9uaWNzICoqKioqRU5EIE9GIEZJTEUqKioqLwpkaWZmIC0tZ2l0IGEvU3JjL3N0bTMyZjd4eF9oYWxfc2QuYyBiL1NyYy9zdG0zMmY3eHhfaGFsX3NkLmMKaW5kZXggNGEzNzQ0Zi4uMDQ3MjM2NyAxMDA2NDQKLS0tIGEvU3JjL3N0bTMyZjd4eF9oYWxfc2QuYworKysgYi9TcmMvc3RtMzJmN3h4X2hhbF9zZC5jCkBAIC0xMCw2ICsxMCwxNyBAQAogICAqICAgICAgICAgICArIFBlcmlwaGVyYWwgQ29udHJvbCBmdW5jdGlvbnMKICAgKiAgICAgICAgICAgKyBQZXJpcGhlcmFsIFN0YXRlIGZ1bmN0aW9ucwogICAqCisgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAqIEBhdHRlbnRpb24KKyAgKgorICAqIENvcHlyaWdodCAoYykgMjAxNyBTVE1pY3JvZWxlY3Ryb25pY3MuCisgICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAgKgorICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgdW5kZXIgdGVybXMgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZQorICAqIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvZnR3YXJlIGNvbXBvbmVudC4KKyAgKiBJZiBubyBMSUNFTlNFIGZpbGUgY29tZXMgd2l0aCB0aGlzIHNvZnR3YXJlLCBpdCBpcyBwcm92aWRlZCBBUy1JUy4KKyAgKgorICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgQHZlcmJhdGltCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICAgICAgICAgICAgICAgICAgICAgICAgIyMjIyMgSG93IHRvIHVzZSB0aGlzIGRyaXZlciAjIyMjIwpAQCAtMTk5LDcgKzIxMCw3IEBACiAgICAgVGhlIGNvbXBpbGF0aW9uIGRlZmluZSBVU0VfSEFMX1NEX1JFR0lTVEVSX0NBTExCQUNLUyB3aGVuIHNldCB0byAxCiAgICAgYWxsb3dzIHRoZSB1c2VyIHRvIGNvbmZpZ3VyZSBkeW5hbWljYWxseSB0aGUgZHJpdmVyIGNhbGxiYWNrcy4KIAotICAgIFVzZSBGdW5jdGlvbnMgQHJlZiBIQUxfU0RfUmVnaXN0ZXJDYWxsYmFjaygpIHRvIHJlZ2lzdGVyIGEgdXNlciBjYWxsYmFjaywKKyAgICBVc2UgRnVuY3Rpb25zIEhBTF9TRF9SZWdpc3RlckNhbGxiYWNrKCkgdG8gcmVnaXN0ZXIgYSB1c2VyIGNhbGxiYWNrLAogICAgIGl0IGFsbG93cyB0byByZWdpc3RlciBmb2xsb3dpbmcgY2FsbGJhY2tzOgogICAgICAgKCspIFR4Q3BsdENhbGxiYWNrIDogY2FsbGJhY2sgd2hlbiBhIHRyYW5zbWlzc2lvbiB0cmFuc2ZlciBpcyBjb21wbGV0ZWQuCiAgICAgICAoKykgUnhDcGx0Q2FsbGJhY2sgOiBjYWxsYmFjayB3aGVuIGEgcmVjZXB0aW9uIHRyYW5zZmVyIGlzIGNvbXBsZXRlZC4KQEAgLTIxMCw3ICsyMjEsNyBAQAogICAgIFRoaXMgZnVuY3Rpb24gdGFrZXMgYXMgcGFyYW1ldGVycyB0aGUgSEFMIHBlcmlwaGVyYWwgaGFuZGxlLCB0aGUgQ2FsbGJhY2sgSUQKICAgICBhbmQgYSBwb2ludGVyIHRvIHRoZSB1c2VyIGNhbGxiYWNrIGZ1bmN0aW9uLgogCi0gICAgVXNlIGZ1bmN0aW9uIEByZWYgSEFMX1NEX1VuUmVnaXN0ZXJDYWxsYmFjaygpIHRvIHJlc2V0IGEgY2FsbGJhY2sgdG8gdGhlIGRlZmF1bHQKKyAgICBVc2UgZnVuY3Rpb24gSEFMX1NEX1VuUmVnaXN0ZXJDYWxsYmFjaygpIHRvIHJlc2V0IGEgY2FsbGJhY2sgdG8gdGhlIGRlZmF1bHQKICAgICB3ZWFrIChzdXJjaGFyZ2VkKSBmdW5jdGlvbi4gSXQgYWxsb3dzIHRvIHJlc2V0IGZvbGxvd2luZyBjYWxsYmFja3M6CiAgICAgICAoKykgVHhDcGx0Q2FsbGJhY2sgOiBjYWxsYmFjayB3aGVuIGEgdHJhbnNtaXNzaW9uIHRyYW5zZmVyIGlzIGNvbXBsZXRlZC4KICAgICAgICgrKSBSeENwbHRDYWxsYmFjayA6IGNhbGxiYWNrIHdoZW4gYSByZWNlcHRpb24gdHJhbnNmZXIgaXMgY29tcGxldGVkLgpAQCAtMjIwLDEyICsyMzEsMTIgQEAKICAgICAgICgrKSBNc3BEZUluaXRDYWxsYmFjayAgOiBTRCBNc3BEZUluaXQuCiAgICAgVGhpcyBmdW5jdGlvbikgdGFrZXMgYXMgcGFyYW1ldGVycyB0aGUgSEFMIHBlcmlwaGVyYWwgaGFuZGxlIGFuZCB0aGUgQ2FsbGJhY2sgSUQuCiAKLSAgICBCeSBkZWZhdWx0LCBhZnRlciB0aGUgQHJlZiBIQUxfU0RfSW5pdCBhbmQgaWYgdGhlIHN0YXRlIGlzIEhBTF9TRF9TVEFURV9SRVNFVAorICAgIEJ5IGRlZmF1bHQsIGFmdGVyIHRoZSBIQUxfU0RfSW5pdCBhbmQgaWYgdGhlIHN0YXRlIGlzIEhBTF9TRF9TVEFURV9SRVNFVAogICAgIGFsbCBjYWxsYmFja3MgYXJlIHJlc2V0IHRvIHRoZSBjb3JyZXNwb25kaW5nIGxlZ2FjeSB3ZWFrIChzdXJjaGFyZ2VkKSBmdW5jdGlvbnMuCiAgICAgRXhjZXB0aW9uIGRvbmUgZm9yIE1zcEluaXQgYW5kIE1zcERlSW5pdCBjYWxsYmFja3MgdGhhdCBhcmUgcmVzcGVjdGl2ZWx5Ci0gICAgcmVzZXQgdG8gdGhlIGxlZ2FjeSB3ZWFrIChzdXJjaGFyZ2VkKSBmdW5jdGlvbnMgaW4gdGhlIEByZWYgSEFMX1NEX0luaXQKLSAgICBhbmQgQHJlZiAgSEFMX1NEX0RlSW5pdCBvbmx5IHdoZW4gdGhlc2UgY2FsbGJhY2tzIGFyZSBudWxsIChub3QgcmVnaXN0ZXJlZCBiZWZvcmVoYW5kKS4KLSAgICBJZiBub3QsIE1zcEluaXQgb3IgTXNwRGVJbml0IGFyZSBub3QgbnVsbCwgdGhlIEByZWYgSEFMX1NEX0luaXQgYW5kIEByZWYgSEFMX1NEX0RlSW5pdAorICAgIHJlc2V0IHRvIHRoZSBsZWdhY3kgd2VhayAoc3VyY2hhcmdlZCkgZnVuY3Rpb25zIGluIHRoZSBIQUxfU0RfSW5pdAorICAgIGFuZCAgSEFMX1NEX0RlSW5pdCBvbmx5IHdoZW4gdGhlc2UgY2FsbGJhY2tzIGFyZSBudWxsIChub3QgcmVnaXN0ZXJlZCBiZWZvcmVoYW5kKS4KKyAgICBJZiBub3QsIE1zcEluaXQgb3IgTXNwRGVJbml0IGFyZSBub3QgbnVsbCwgdGhlIEhBTF9TRF9Jbml0IGFuZCBIQUxfU0RfRGVJbml0CiAgICAga2VlcCBhbmQgdXNlIHRoZSB1c2VyIE1zcEluaXQvTXNwRGVJbml0IGNhbGxiYWNrcyAocmVnaXN0ZXJlZCBiZWZvcmVoYW5kKQogCiAgICAgQ2FsbGJhY2tzIGNhbiBiZSByZWdpc3RlcmVkL3VucmVnaXN0ZXJlZCBpbiBSRUFEWSBzdGF0ZSBvbmx5LgpAQCAtMjMzLDggKzI0NCw4IEBACiAgICAgaW4gUkVBRFkgb3IgUkVTRVQgc3RhdGUsIHRodXMgcmVnaXN0ZXJlZCAodXNlcikgTXNwSW5pdC9EZUluaXQgY2FsbGJhY2tzIGNhbiBiZSB1c2VkCiAgICAgZHVyaW5nIHRoZSBJbml0L0RlSW5pdC4KICAgICBJbiB0aGF0IGNhc2UgZmlyc3QgcmVnaXN0ZXIgdGhlIE1zcEluaXQvTXNwRGVJbml0IHVzZXIgY2FsbGJhY2tzCi0gICAgdXNpbmcgQHJlZiBIQUxfU0RfUmVnaXN0ZXJDYWxsYmFjayBiZWZvcmUgY2FsbGluZyBAcmVmIEhBTF9TRF9EZUluaXQKLSAgICBvciBAcmVmIEhBTF9TRF9Jbml0IGZ1bmN0aW9uLgorICAgIHVzaW5nIEhBTF9TRF9SZWdpc3RlckNhbGxiYWNrIGJlZm9yZSBjYWxsaW5nIEhBTF9TRF9EZUluaXQKKyAgICBvciBIQUxfU0RfSW5pdCBmdW5jdGlvbi4KIAogICAgIFdoZW4gVGhlIGNvbXBpbGF0aW9uIGRlZmluZSBVU0VfSEFMX1NEX1JFR0lTVEVSX0NBTExCQUNLUyBpcyBzZXQgdG8gMCBvcgogICAgIG5vdCBkZWZpbmVkLCB0aGUgY2FsbGJhY2sgcmVnaXN0ZXJpbmcgZmVhdHVyZSBpcyBub3QgYXZhaWxhYmxlCkBAIC0yNDIsMTcgKzI1Myw2IEBACiAKICAgQGVuZHZlcmJhdGltCiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICAqIEBhdHRlbnRpb24KLSAgKgotICAqIDxoMj48Y2VudGVyPiZjb3B5OyBDb3B5cmlnaHQgKGMpIDIwMTcgU1RNaWNyb2VsZWN0cm9uaWNzLgotICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuPC9jZW50ZXI+PC9oMj4KLSAgKgotICAqIFRoaXMgc29mdHdhcmUgY29tcG9uZW50IGlzIGxpY2Vuc2VkIGJ5IFNUIHVuZGVyIEJTRCAzLUNsYXVzZSBsaWNlbnNlLAotICAqIHRoZSAiTGljZW5zZSI7IFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUKLSAgKiBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQ6Ci0gICogICAgICAgICAgICAgICAgICAgICAgIG9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0JTRC0zLUNsYXVzZQotICAqCi0gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAqLwogCiAvKiBJbmNsdWRlcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwpAQCAtNDMwLDYgKzQzMCw5IEBACiAgIC8qIEVuYWJsZSBTRE1NQyBDbG9jayAqLwogICBfX0hBTF9TRF9FTkFCTEUoaHNkKTsKIAorICAvKiBSZXF1aXJlZCBwb3dlciB1cCB3YWl0aW5nIHRpbWUgYmVmb3JlIHN0YXJ0aW5nIHRoZSBTRCBpbml0aWFsaXphdGlvbiAgc2VxdWVuY2UgKi8KKyAgSEFMX0RlbGF5KDIpOworCiAgIC8qIElkZW50aWZ5IGNhcmQgb3BlcmF0aW5nIHZvbHRhZ2UgKi8KICAgZXJyb3JzdGF0ZSA9IFNEX1Bvd2VyT04oaHNkKTsKICAgaWYoZXJyb3JzdGF0ZSAhPSBIQUxfU0RfRVJST1JfTk9ORSkKQEAgLTMyMTksNSArMzIyMiwzIEBACiAgICovCiAKICNlbmRpZiAvKiBTRE1NQzEgKi8KLQotLyoqKioqKioqKioqKioqKioqKioqKioqKiAoQykgQ09QWVJJR0hUIFNUTWljcm9lbGVjdHJvbmljcyAqKioqKkVORCBPRiBGSUxFKioqKi8KZGlmZiAtLWdpdCBhL1NyYy9zdG0zMmY3eHhfaGFsX3NkcmFtLmMgYi9TcmMvc3RtMzJmN3h4X2hhbF9zZHJhbS5jCmluZGV4IGQyYTg0MDguLjg4MzYzODEgMTAwNjQ0Ci0tLSBhL1NyYy9zdG0zMmY3eHhfaGFsX3NkcmFtLmMKKysrIGIvU3JjL3N0bTMyZjd4eF9oYWxfc2RyYW0uYwpAQCAtMyw1NyArMyw2OCBAQAogICAqIEBmaWxlICAgIHN0bTMyZjd4eF9oYWxfc2RyYW0uYwogICAqIEBhdXRob3IgIE1DRCBBcHBsaWNhdGlvbiBUZWFtCiAgICogQGJyaWVmICAgU0RSQU0gSEFMIG1vZHVsZSBkcml2ZXIuCi0gICogICAgICAgICAgVGhpcyBmaWxlIHByb3ZpZGVzIGEgZ2VuZXJpYyBmaXJtd2FyZSB0byBkcml2ZSBTRFJBTSBtZW1vcmllcyBtb3VudGVkIAorICAqICAgICAgICAgIFRoaXMgZmlsZSBwcm92aWRlcyBhIGdlbmVyaWMgZmlybXdhcmUgdG8gZHJpdmUgU0RSQU0gbWVtb3JpZXMgbW91bnRlZAogICAqICAgICAgICAgIGFzIGV4dGVybmFsIGRldmljZS4KLSAgKiAgICAgICAgIAorICAqCisgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAqIEBhdHRlbnRpb24KKyAgKgorICAqIENvcHlyaWdodCAoYykgMjAxNyBTVE1pY3JvZWxlY3Ryb25pY3MuCisgICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAgKgorICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgdW5kZXIgdGVybXMgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZQorICAqIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvZnR3YXJlIGNvbXBvbmVudC4KKyAgKiBJZiBubyBMSUNFTlNFIGZpbGUgY29tZXMgd2l0aCB0aGlzIHNvZnR3YXJlLCBpdCBpcyBwcm92aWRlZCBBUy1JUy4KKyAgKgorICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgQHZlcmJhdGltCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICAgICAgICAgICAgICAgICAgICAgICAjIyMjIyBIb3cgdG8gdXNlIHRoaXMgZHJpdmVyICMjIyMjCi0gID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAKKyAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIFsuLl0KLSAgICBUaGlzIGRyaXZlciBpcyBhIGdlbmVyaWMgbGF5ZXJlZCBkcml2ZXIgd2hpY2ggY29udGFpbnMgYSBzZXQgb2YgQVBJcyB1c2VkIHRvIAotICAgIGNvbnRyb2wgU0RSQU0gbWVtb3JpZXMuIEl0IHVzZXMgdGhlIEZNQyBsYXllciBmdW5jdGlvbnMgdG8gaW50ZXJmYWNlIAotICAgIHdpdGggU0RSQU0gZGV2aWNlcy4gIAorICAgIFRoaXMgZHJpdmVyIGlzIGEgZ2VuZXJpYyBsYXllcmVkIGRyaXZlciB3aGljaCBjb250YWlucyBhIHNldCBvZiBBUElzIHVzZWQgdG8KKyAgICBjb250cm9sIFNEUkFNIG1lbW9yaWVzLiBJdCB1c2VzIHRoZSBGTUMgbGF5ZXIgZnVuY3Rpb25zIHRvIGludGVyZmFjZQorICAgIHdpdGggU0RSQU0gZGV2aWNlcy4KICAgICBUaGUgZm9sbG93aW5nIHNlcXVlbmNlIHNob3VsZCBiZSBmb2xsb3dlZCB0byBjb25maWd1cmUgdGhlIEZNQyB0byBpbnRlcmZhY2UKLSAgICB3aXRoIFNEUkFNIG1lbW9yaWVzOiAKLSAgICAgIAorICAgIHdpdGggU0RSQU0gbWVtb3JpZXM6CisKICAgICgjKSBEZWNsYXJlIGEgU0RSQU1fSGFuZGxlVHlwZURlZiBoYW5kbGUgc3RydWN0dXJlLCBmb3IgZXhhbXBsZToKLSAgICAgICAgICBTRFJBTV9IYW5kbGVUeXBlRGVmICBoZHNyYW0gCi0gICAgICAgICAgCi0gICAgICAgKCsrKSBGaWxsIHRoZSBTRFJBTV9IYW5kbGVUeXBlRGVmIGhhbmRsZSAiSW5pdCIgZmllbGQgd2l0aCB0aGUgYWxsb3dlZCAKKyAgICAgICAgICBTRFJBTV9IYW5kbGVUeXBlRGVmICBoc2RyYW0KKworICAgICAgICgrKykgRmlsbCB0aGUgU0RSQU1fSGFuZGxlVHlwZURlZiBoYW5kbGUgIkluaXQiIGZpZWxkIHdpdGggdGhlIGFsbG93ZWQKICAgICAgICAgICAgIHZhbHVlcyBvZiB0aGUgc3RydWN0dXJlIG1lbWJlci4KLSAgICAgICAgICAgIAotICAgICAgICgrKykgRmlsbCB0aGUgU0RSQU1fSGFuZGxlVHlwZURlZiBoYW5kbGUgIkluc3RhbmNlIiBmaWVsZCB3aXRoIGEgcHJlZGVmaW5lZCAKLSAgICAgICAgICAgIGJhc2UgcmVnaXN0ZXIgaW5zdGFuY2UgZm9yIE5PUiBvciBTRFJBTSBkZXZpY2UgCi0gICAgICAgICAgICAgCisKKyAgICAgICAoKyspIEZpbGwgdGhlIFNEUkFNX0hhbmRsZVR5cGVEZWYgaGFuZGxlICJJbnN0YW5jZSIgZmllbGQgd2l0aCBhIHByZWRlZmluZWQKKyAgICAgICAgICAgIGJhc2UgcmVnaXN0ZXIgaW5zdGFuY2UgZm9yIE5PUiBvciBTRFJBTSBkZXZpY2UKKwogICAgKCMpIERlY2xhcmUgYSBGTUNfU0RSQU1fVGltaW5nVHlwZURlZiBzdHJ1Y3R1cmU7IGZvciBleGFtcGxlOgogICAgICAgICAgIEZNQ19TRFJBTV9UaW1pbmdUeXBlRGVmICBUaW1pbmc7CiAgICAgICBhbmQgZmlsbCBpdHMgZmllbGRzIHdpdGggdGhlIGFsbG93ZWQgdmFsdWVzIG9mIHRoZSBzdHJ1Y3R1cmUgbWVtYmVyLgotICAgICAgCisKICAgICgjKSBJbml0aWFsaXplIHRoZSBTRFJBTSBDb250cm9sbGVyIGJ5IGNhbGxpbmcgdGhlIGZ1bmN0aW9uIEhBTF9TRFJBTV9Jbml0KCkuIFRoaXMgZnVuY3Rpb24KICAgICAgICBwZXJmb3JtcyB0aGUgZm9sbG93aW5nIHNlcXVlbmNlOgotICAgICAgICAgIAorCiAgICAgICAgKCMjKSBNU1AgaGFyZHdhcmUgbGF5ZXIgY29uZmlndXJhdGlvbiB1c2luZyB0aGUgZnVuY3Rpb24gSEFMX1NEUkFNX01zcEluaXQoKQotICAgICAgICgjIykgQ29udHJvbCByZWdpc3RlciBjb25maWd1cmF0aW9uIHVzaW5nIHRoZSBGTUMgU0RSQU0gaW50ZXJmYWNlIGZ1bmN0aW9uIAorICAgICAgICgjIykgQ29udHJvbCByZWdpc3RlciBjb25maWd1cmF0aW9uIHVzaW5nIHRoZSBGTUMgU0RSQU0gaW50ZXJmYWNlIGZ1bmN0aW9uCiAgICAgICAgICAgICBGTUNfU0RSQU1fSW5pdCgpCi0gICAgICAgKCMjKSBUaW1pbmcgcmVnaXN0ZXIgY29uZmlndXJhdGlvbiB1c2luZyB0aGUgRk1DIFNEUkFNIGludGVyZmFjZSBmdW5jdGlvbiAKKyAgICAgICAoIyMpIFRpbWluZyByZWdpc3RlciBjb25maWd1cmF0aW9uIHVzaW5nIHRoZSBGTUMgU0RSQU0gaW50ZXJmYWNlIGZ1bmN0aW9uCiAgICAgICAgICAgICBGTUNfU0RSQU1fVGltaW5nX0luaXQoKQogICAgICAgICgjIykgUHJvZ3JhbSB0aGUgU0RSQU0gZXh0ZXJuYWwgZGV2aWNlIGJ5IGFwcGx5aW5nIGl0cyBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZQogICAgICAgICAgICAgYWNjb3JkaW5nIHRvIHRoZSBkZXZpY2UgcGx1Z2dlZCBpbiB5b3VyIGhhcmR3YXJlLiBUaGlzIHN0ZXAgaXMgbWFuZGF0b3J5Ci0gICAgICAgICAgICBmb3IgYWNjZXNzaW5nIHRoZSBTRFJBTSBkZXZpY2UuICAgCisgICAgICAgICAgICBmb3IgYWNjZXNzaW5nIHRoZSBTRFJBTSBkZXZpY2UuCiAKLSAgICgjKSBBdCB0aGlzIHN0YWdlIHlvdSBjYW4gcGVyZm9ybSByZWFkL3dyaXRlIGFjY2Vzc2VzIGZyb20vdG8gdGhlIG1lbW9yeSBjb25uZWN0ZWQgCisgICAoIykgQXQgdGhpcyBzdGFnZSB5b3UgY2FuIHBlcmZvcm0gcmVhZC93cml0ZSBhY2Nlc3NlcyBmcm9tL3RvIHRoZSBtZW1vcnkgY29ubmVjdGVkCiAgICAgICAgdG8gdGhlIFNEUkFNIEJhbmsuIFlvdSBjYW4gcGVyZm9ybSBlaXRoZXIgcG9sbGluZyBvciBETUEgdHJhbnNmZXIgdXNpbmcgdGhlCiAgICAgICAgZm9sbG93aW5nIEFQSXM6CiAgICAgICAgKCsrKSBIQUxfU0RSQU1fUmVhZCgpL0hBTF9TRFJBTV9Xcml0ZSgpIGZvciBwb2xsaW5nIHJlYWQvd3JpdGUgYWNjZXNzCiAgICAgICAgKCsrKSBIQUxfU0RSQU1fUmVhZF9ETUEoKS9IQUxfU0RSQU1fV3JpdGVfRE1BKCkgZm9yIERNQSByZWFkL3dyaXRlIHRyYW5zZmVyCi0gICAgICAgCisKICAgICgjKSBZb3UgY2FuIGFsc28gY29udHJvbCB0aGUgU0RSQU0gZGV2aWNlIGJ5IGNhbGxpbmcgdGhlIGNvbnRyb2wgQVBJcyBIQUxfU0RSQU1fV3JpdGVPcGVyYXRpb25fRW5hYmxlKCkvCi0gICAgICAgSEFMX1NEUkFNX1dyaXRlT3BlcmF0aW9uX0Rpc2FibGUoKSB0byByZXNwZWN0aXZlbHkgZW5hYmxlL2Rpc2FibGUgdGhlIFNEUkFNIHdyaXRlIG9wZXJhdGlvbiBvciAKKyAgICAgICBIQUxfU0RSQU1fV3JpdGVPcGVyYXRpb25fRGlzYWJsZSgpIHRvIHJlc3BlY3RpdmVseSBlbmFibGUvZGlzYWJsZSB0aGUgU0RSQU0gd3JpdGUgb3BlcmF0aW9uIG9yCiAgICAgICAgdGhlIGZ1bmN0aW9uIEhBTF9TRFJBTV9TZW5kQ29tbWFuZCgpIHRvIHNlbmQgYSBzcGVjaWZpZWQgY29tbWFuZCB0byB0aGUgU0RSQU0KLSAgICAgICBkZXZpY2UuIFRoZSBjb21tYW5kIHRvIGJlIHNlbnQgbXVzdCBiZSBjb25maWd1cmVkIHdpdGggdGhlIEZNQ19TRFJBTV9Db21tYW5kVHlwZURlZiAKLSAgICAgICBzdHJ1Y3R1cmUuICAgCi0gICAgICAgCisgICAgICAgZGV2aWNlLiBUaGUgY29tbWFuZCB0byBiZSBzZW50IG11c3QgYmUgY29uZmlndXJlZCB3aXRoIHRoZSBGTUNfU0RSQU1fQ29tbWFuZFR5cGVEZWYKKyAgICAgICBzdHJ1Y3R1cmUuCisKICAgICgjKSBZb3UgY2FuIGNvbnRpbnVvdXNseSBtb25pdG9yIHRoZSBTRFJBTSBkZXZpY2UgSEFMIHN0YXRlIGJ5IGNhbGxpbmcgdGhlIGZ1bmN0aW9uCiAgICAgICAgSEFMX1NEUkFNX0dldFN0YXRlKCkKIApAQCAtNjMsMjUgKzc0LDI1IEBACiAgICAgICBUaGUgY29tcGlsYXRpb24gZGVmaW5lICBVU0VfSEFMX1NEUkFNX1JFR0lTVEVSX0NBTExCQUNLUyB3aGVuIHNldCB0byAxCiAgICAgICBhbGxvd3MgdGhlIHVzZXIgdG8gY29uZmlndXJlIGR5bmFtaWNhbGx5IHRoZSBkcml2ZXIgY2FsbGJhY2tzLgogCi0gICAgICBVc2UgRnVuY3Rpb25zIEByZWYgSEFMX1NEUkFNX1JlZ2lzdGVyQ2FsbGJhY2soKSB0byByZWdpc3RlciBhIHVzZXIgY2FsbGJhY2ssCisgICAgICBVc2UgRnVuY3Rpb25zIEhBTF9TRFJBTV9SZWdpc3RlckNhbGxiYWNrKCkgdG8gcmVnaXN0ZXIgYSB1c2VyIGNhbGxiYWNrLAogICAgICAgaXQgYWxsb3dzIHRvIHJlZ2lzdGVyIGZvbGxvd2luZyBjYWxsYmFja3M6CiAgICAgICAgICgrKSBNc3BJbml0Q2FsbGJhY2sgICAgOiBTRFJBTSBNc3BJbml0LgogICAgICAgICAoKykgTXNwRGVJbml0Q2FsbGJhY2sgIDogU0RSQU0gTXNwRGVJbml0LgogICAgICAgVGhpcyBmdW5jdGlvbiB0YWtlcyBhcyBwYXJhbWV0ZXJzIHRoZSBIQUwgcGVyaXBoZXJhbCBoYW5kbGUsIHRoZSBDYWxsYmFjayBJRAogICAgICAgYW5kIGEgcG9pbnRlciB0byB0aGUgdXNlciBjYWxsYmFjayBmdW5jdGlvbi4KIAotICAgICAgVXNlIGZ1bmN0aW9uIEByZWYgSEFMX1NEUkFNX1VuUmVnaXN0ZXJDYWxsYmFjaygpIHRvIHJlc2V0IGEgY2FsbGJhY2sgdG8gdGhlIGRlZmF1bHQKKyAgICAgIFVzZSBmdW5jdGlvbiBIQUxfU0RSQU1fVW5SZWdpc3RlckNhbGxiYWNrKCkgdG8gcmVzZXQgYSBjYWxsYmFjayB0byB0aGUgZGVmYXVsdAogICAgICAgd2VhayAoc3VyY2hhcmdlZCkgZnVuY3Rpb24uIEl0IGFsbG93cyB0byByZXNldCBmb2xsb3dpbmcgY2FsbGJhY2tzOgogICAgICAgICAoKykgTXNwSW5pdENhbGxiYWNrICAgIDogU0RSQU0gTXNwSW5pdC4KICAgICAgICAgKCspIE1zcERlSW5pdENhbGxiYWNrICA6IFNEUkFNIE1zcERlSW5pdC4KICAgICAgIFRoaXMgZnVuY3Rpb24pIHRha2VzIGFzIHBhcmFtZXRlcnMgdGhlIEhBTCBwZXJpcGhlcmFsIGhhbmRsZSBhbmQgdGhlIENhbGxiYWNrIElELgogCi0gICAgICBCeSBkZWZhdWx0LCBhZnRlciB0aGUgQHJlZiBIQUxfU0RSQU1fSW5pdCBhbmQgaWYgdGhlIHN0YXRlIGlzIEhBTF9TRFJBTV9TVEFURV9SRVNFVAorICAgICAgQnkgZGVmYXVsdCwgYWZ0ZXIgdGhlIEhBTF9TRFJBTV9Jbml0IGFuZCBpZiB0aGUgc3RhdGUgaXMgSEFMX1NEUkFNX1NUQVRFX1JFU0VUCiAgICAgICBhbGwgY2FsbGJhY2tzIGFyZSByZXNldCB0byB0aGUgY29ycmVzcG9uZGluZyBsZWdhY3kgd2VhayAoc3VyY2hhcmdlZCkgZnVuY3Rpb25zLgogICAgICAgRXhjZXB0aW9uIGRvbmUgZm9yIE1zcEluaXQgYW5kIE1zcERlSW5pdCBjYWxsYmFja3MgdGhhdCBhcmUgcmVzcGVjdGl2ZWx5Ci0gICAgICByZXNldCB0byB0aGUgbGVnYWN5IHdlYWsgKHN1cmNoYXJnZWQpIGZ1bmN0aW9ucyBpbiB0aGUgQHJlZiBIQUxfU0RSQU1fSW5pdAotICAgICAgYW5kIEByZWYgIEhBTF9TRFJBTV9EZUluaXQgb25seSB3aGVuIHRoZXNlIGNhbGxiYWNrcyBhcmUgbnVsbCAobm90IHJlZ2lzdGVyZWQgYmVmb3JlaGFuZCkuCi0gICAgICBJZiBub3QsIE1zcEluaXQgb3IgTXNwRGVJbml0IGFyZSBub3QgbnVsbCwgdGhlIEByZWYgSEFMX1NEUkFNX0luaXQgYW5kIEByZWYgSEFMX1NEUkFNX0RlSW5pdAorICAgICAgcmVzZXQgdG8gdGhlIGxlZ2FjeSB3ZWFrIChzdXJjaGFyZ2VkKSBmdW5jdGlvbnMgaW4gdGhlIEhBTF9TRFJBTV9Jbml0CisgICAgICBhbmQgIEhBTF9TRFJBTV9EZUluaXQgb25seSB3aGVuIHRoZXNlIGNhbGxiYWNrcyBhcmUgbnVsbCAobm90IHJlZ2lzdGVyZWQgYmVmb3JlaGFuZCkuCisgICAgICBJZiBub3QsIE1zcEluaXQgb3IgTXNwRGVJbml0IGFyZSBub3QgbnVsbCwgdGhlIEhBTF9TRFJBTV9Jbml0IGFuZCBIQUxfU0RSQU1fRGVJbml0CiAgICAgICBrZWVwIGFuZCB1c2UgdGhlIHVzZXIgTXNwSW5pdC9Nc3BEZUluaXQgY2FsbGJhY2tzIChyZWdpc3RlcmVkIGJlZm9yZWhhbmQpCiAKICAgICAgIENhbGxiYWNrcyBjYW4gYmUgcmVnaXN0ZXJlZC91bnJlZ2lzdGVyZWQgaW4gUkVBRFkgc3RhdGUgb25seS4KQEAgLTg5LDggKzEwMCw4IEBACiAgICAgICBpbiBSRUFEWSBvciBSRVNFVCBzdGF0ZSwgdGh1cyByZWdpc3RlcmVkICh1c2VyKSBNc3BJbml0L0RlSW5pdCBjYWxsYmFja3MgY2FuIGJlIHVzZWQKICAgICAgIGR1cmluZyB0aGUgSW5pdC9EZUluaXQuCiAgICAgICBJbiB0aGF0IGNhc2UgZmlyc3QgcmVnaXN0ZXIgdGhlIE1zcEluaXQvTXNwRGVJbml0IHVzZXIgY2FsbGJhY2tzCi0gICAgICB1c2luZyBAcmVmIEhBTF9TRFJBTV9SZWdpc3RlckNhbGxiYWNrIGJlZm9yZSBjYWxsaW5nIEByZWYgSEFMX1NEUkFNX0RlSW5pdAotICAgICAgb3IgQHJlZiBIQUxfU0RSQU1fSW5pdCBmdW5jdGlvbi4KKyAgICAgIHVzaW5nIEhBTF9TRFJBTV9SZWdpc3RlckNhbGxiYWNrIGJlZm9yZSBjYWxsaW5nIEhBTF9TRFJBTV9EZUluaXQKKyAgICAgIG9yIEhBTF9TRFJBTV9Jbml0IGZ1bmN0aW9uLgogCiAgICAgICBXaGVuIFRoZSBjb21waWxhdGlvbiBkZWZpbmUgVVNFX0hBTF9TRFJBTV9SRUdJU1RFUl9DQUxMQkFDS1MgaXMgc2V0IHRvIDAgb3IKICAgICAgIG5vdCBkZWZpbmVkLCB0aGUgY2FsbGJhY2sgcmVnaXN0ZXJpbmcgZmVhdHVyZSBpcyBub3QgYXZhaWxhYmxlCkBAIC05OCw3OCArMTA5LDczIEBACiAKICAgQGVuZHZlcmJhdGltCiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICAqIEBhdHRlbnRpb24KLSAgKgotICAqIDxoMj48Y2VudGVyPiZjb3B5OyBDb3B5cmlnaHQgKGMpIDIwMTcgU1RNaWNyb2VsZWN0cm9uaWNzLgotICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuPC9jZW50ZXI+PC9oMj4KLSAgKgotICAqIFRoaXMgc29mdHdhcmUgY29tcG9uZW50IGlzIGxpY2Vuc2VkIGJ5IFNUIHVuZGVyIEJTRCAzLUNsYXVzZSBsaWNlbnNlLAotICAqIHRoZSAiTGljZW5zZSI7IFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUKLSAgKiBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQ6Ci0gICogICAgICAgICAgICAgICAgICAgICAgICBvcGVuc291cmNlLm9yZy9saWNlbnNlcy9CU0QtMy1DbGF1c2UKLSAgKgotICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAgKi8gCisgICovCiAKIC8qIEluY2x1ZGVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAjaW5jbHVkZSAic3RtMzJmN3h4X2hhbC5oIgogCisKIC8qKiBAYWRkdG9ncm91cCBTVE0zMkY3eHhfSEFMX0RyaXZlcgogICAqIEB7CiAgICovCiAKKyNpZmRlZiBIQUxfU0RSQU1fTU9EVUxFX0VOQUJMRUQKKwogLyoqIEBkZWZncm91cCBTRFJBTSBTRFJBTQogICAqIEBicmllZiBTRFJBTSBkcml2ZXIgbW9kdWxlcwogICAqIEB7CiAgICovCi0jaWZkZWYgSEFMX1NEUkFNX01PRFVMRV9FTkFCTEVECiAKIC8qIFByaXZhdGUgdHlwZWRlZiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAvKiBQcml2YXRlIGRlZmluZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwotLyogUHJpdmF0ZSBtYWNybyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gICAgCisvKiBQcml2YXRlIG1hY3JvIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogLyogUHJpdmF0ZSB2YXJpYWJsZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLS8qIFByaXZhdGUgZnVuY3Rpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisvKiBQcml2YXRlIGZ1bmN0aW9uIHByb3RvdHlwZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworc3RhdGljIHZvaWQgU0RSQU1fRE1BQ3BsdChETUFfSGFuZGxlVHlwZURlZiAqaGRtYSk7CitzdGF0aWMgdm9pZCBTRFJBTV9ETUFDcGx0UHJvdChETUFfSGFuZGxlVHlwZURlZiAqaGRtYSk7CitzdGF0aWMgdm9pZCBTRFJBTV9ETUFFcnJvcihETUFfSGFuZGxlVHlwZURlZiAqaGRtYSk7CisKIC8qIEV4cG9ydGVkIGZ1bmN0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAvKiogQGRlZmdyb3VwIFNEUkFNX0V4cG9ydGVkX0Z1bmN0aW9ucyBTRFJBTSBFeHBvcnRlZCBGdW5jdGlvbnMKICAgKiBAewogICAqLwogCi0vKiogQGRlZmdyb3VwIFNEUkFNX0V4cG9ydGVkX0Z1bmN0aW9uc19Hcm91cDEgSW5pdGlhbGl6YXRpb24gYW5kIGRlLWluaXRpYWxpemF0aW9uIGZ1bmN0aW9ucyAKLSAgKiBAYnJpZWYgICAgSW5pdGlhbGl6YXRpb24gYW5kIENvbmZpZ3VyYXRpb24gZnVuY3Rpb25zIAorLyoqIEBkZWZncm91cCBTRFJBTV9FeHBvcnRlZF9GdW5jdGlvbnNfR3JvdXAxIEluaXRpYWxpemF0aW9uIGFuZCBkZS1pbml0aWFsaXphdGlvbiBmdW5jdGlvbnMKKyAgKiBAYnJpZWYgICAgSW5pdGlhbGl6YXRpb24gYW5kIENvbmZpZ3VyYXRpb24gZnVuY3Rpb25zCiAgICoKLSAgQHZlcmJhdGltICAgIAorICBAdmVyYmF0aW0KICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgICAgICAgICAgICMjIyMjIFNEUkFNIEluaXRpYWxpemF0aW9uIGFuZCBkZV9pbml0aWFsaXphdGlvbiBmdW5jdGlvbnMgIyMjIyMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0gIFsuLl0gIAorICBbLi5dCiAgICAgVGhpcyBzZWN0aW9uIHByb3ZpZGVzIGZ1bmN0aW9ucyBhbGxvd2luZyB0byBpbml0aWFsaXplL2RlLWluaXRpYWxpemUKICAgICB0aGUgU0RSQU0gbWVtb3J5Ci0gIAorCiBAZW5kdmVyYmF0aW0KICAgKiBAewogICAqLwotICAgIAorCiAvKioKICAgKiBAYnJpZWYgIFBlcmZvcm1zIHRoZSBTRFJBTSBkZXZpY2UgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UuCiAgICogQHBhcmFtICBoc2RyYW0gcG9pbnRlciB0byBhIFNEUkFNX0hhbmRsZVR5cGVEZWYgc3RydWN0dXJlIHRoYXQgY29udGFpbnMKICAgKiAgICAgICAgICAgICAgICB0aGUgY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbiBmb3IgU0RSQU0gbW9kdWxlLgotICAqIEBwYXJhbSAgVGltaW5nIFBvaW50ZXIgdG8gU0RSQU0gY29udHJvbCB0aW1pbmcgc3RydWN0dXJlIAorICAqIEBwYXJhbSAgVGltaW5nIFBvaW50ZXIgdG8gU0RSQU0gY29udHJvbCB0aW1pbmcgc3RydWN0dXJlCiAgICogQHJldHZhbCBIQUwgc3RhdHVzCiAgICovCiBIQUxfU3RhdHVzVHlwZURlZiBIQUxfU0RSQU1fSW5pdChTRFJBTV9IYW5kbGVUeXBlRGVmICpoc2RyYW0sIEZNQ19TRFJBTV9UaW1pbmdUeXBlRGVmICpUaW1pbmcpCi17ICAgCit7CiAgIC8qIENoZWNrIHRoZSBTRFJBTSBoYW5kbGUgcGFyYW1ldGVyICovCi0gIGlmKGhzZHJhbSA9PSBOVUxMKQorICBpZiAoaHNkcmFtID09IE5VTEwpCiAgIHsKICAgICByZXR1cm4gSEFMX0VSUk9SOwogICB9Ci0gIAotICBpZihoc2RyYW0tPlN0YXRlID09IEhBTF9TRFJBTV9TVEFURV9SRVNFVCkKLSAgeyAgCisKKyAgaWYgKGhzZHJhbS0+U3RhdGUgPT0gSEFMX1NEUkFNX1NUQVRFX1JFU0VUKQorICB7CiAgICAgLyogQWxsb2NhdGUgbG9jayByZXNvdXJjZSBhbmQgaW5pdGlhbGl6ZSBpdCAqLwogICAgIGhzZHJhbS0+TG9jayA9IEhBTF9VTkxPQ0tFRDsKICNpZiAoVVNFX0hBTF9TRFJBTV9SRUdJU1RFUl9DQUxMQkFDS1MgPT0gMSkKLSAgICBpZihoc2RyYW0tPk1zcEluaXRDYWxsYmFjayA9PSBOVUxMKQorICAgIGlmIChoc2RyYW0tPk1zcEluaXRDYWxsYmFjayA9PSBOVUxMKQogICAgIHsKICAgICAgIGhzZHJhbS0+TXNwSW5pdENhbGxiYWNrID0gSEFMX1NEUkFNX01zcEluaXQ7CiAgICAgfQpAQCAtMTgyLDIxICsxODgsMjAgQEAKICNlbHNlCiAgICAgLyogSW5pdGlhbGl6ZSB0aGUgbG93IGxldmVsIGhhcmR3YXJlIChNU1ApICovCiAgICAgSEFMX1NEUkFNX01zcEluaXQoaHNkcmFtKTsKLSNlbmRpZgorI2VuZGlmIC8qIFVTRV9IQUxfU0RSQU1fUkVHSVNURVJfQ0FMTEJBQ0tTICovCiAgIH0KLSAgCisKICAgLyogSW5pdGlhbGl6ZSB0aGUgU0RSQU0gY29udHJvbGxlciBzdGF0ZSAqLwogICBoc2RyYW0tPlN0YXRlID0gSEFMX1NEUkFNX1NUQVRFX0JVU1k7Ci0gIAorCiAgIC8qIEluaXRpYWxpemUgU0RSQU0gY29udHJvbCBJbnRlcmZhY2UgKi8KLSAgRk1DX1NEUkFNX0luaXQoaHNkcmFtLT5JbnN0YW5jZSwgJihoc2RyYW0tPkluaXQpKTsKLSAgCisgICh2b2lkKUZNQ19TRFJBTV9Jbml0KGhzZHJhbS0+SW5zdGFuY2UsICYoaHNkcmFtLT5Jbml0KSk7CisKICAgLyogSW5pdGlhbGl6ZSBTRFJBTSB0aW1pbmcgSW50ZXJmYWNlICovCi0gIEZNQ19TRFJBTV9UaW1pbmdfSW5pdChoc2RyYW0tPkluc3RhbmNlLCBUaW1pbmcsIGhzZHJhbS0+SW5pdC5TREJhbmspOyAKLSAgCisgICh2b2lkKUZNQ19TRFJBTV9UaW1pbmdfSW5pdChoc2RyYW0tPkluc3RhbmNlLCBUaW1pbmcsIGhzZHJhbS0+SW5pdC5TREJhbmspOwogICAvKiBVcGRhdGUgdGhlIFNEUkFNIGNvbnRyb2xsZXIgc3RhdGUgKi8KICAgaHNkcmFtLT5TdGF0ZSA9IEhBTF9TRFJBTV9TVEFURV9SRUFEWTsKLSAgCisKICAgcmV0dXJuIEhBTF9PSzsKIH0KIApAQCAtMjA5LDcgKzIxNCw3IEBACiBIQUxfU3RhdHVzVHlwZURlZiBIQUxfU0RSQU1fRGVJbml0KFNEUkFNX0hhbmRsZVR5cGVEZWYgKmhzZHJhbSkKIHsKICNpZiAoVVNFX0hBTF9TRFJBTV9SRUdJU1RFUl9DQUxMQkFDS1MgPT0gMSkKLSAgaWYoaHNkcmFtLT5Nc3BEZUluaXRDYWxsYmFjayA9PSBOVUxMKQorICBpZiAoaHNkcmFtLT5Nc3BEZUluaXRDYWxsYmFjayA9PSBOVUxMKQogICB7CiAgICAgaHNkcmFtLT5Nc3BEZUluaXRDYWxsYmFjayA9IEhBTF9TRFJBTV9Nc3BEZUluaXQ7CiAgIH0KQEAgLTIxOSwxMCArMjI0LDEwIEBACiAjZWxzZQogICAvKiBJbml0aWFsaXplIHRoZSBsb3cgbGV2ZWwgaGFyZHdhcmUgKE1TUCkgKi8KICAgSEFMX1NEUkFNX01zcERlSW5pdChoc2RyYW0pOwotI2VuZGlmCisjZW5kaWYgLyogVVNFX0hBTF9TRFJBTV9SRUdJU1RFUl9DQUxMQkFDS1MgKi8KIAogICAvKiBDb25maWd1cmUgdGhlIFNEUkFNIHJlZ2lzdGVycyB3aXRoIHRoZWlyIHJlc2V0IHZhbHVlcyAqLwotICBGTUNfU0RSQU1fRGVJbml0KGhzZHJhbS0+SW5zdGFuY2UsIGhzZHJhbS0+SW5pdC5TREJhbmspOworICAodm9pZClGTUNfU0RSQU1fRGVJbml0KGhzZHJhbS0+SW5zdGFuY2UsIGhzZHJhbS0+SW5pdC5TREJhbmspOwogCiAgIC8qIFJlc2V0IHRoZSBTRFJBTSBjb250cm9sbGVyIHN0YXRlICovCiAgIGhzZHJhbS0+U3RhdGUgPSBIQUxfU0RSQU1fU1RBVEVfUkVTRVQ7CkBAIC0yNDMsMTAgKzI0OCwxMCBAQAogewogICAvKiBQcmV2ZW50IHVudXNlZCBhcmd1bWVudChzKSBjb21waWxhdGlvbiB3YXJuaW5nICovCiAgIFVOVVNFRChoc2RyYW0pOwotIAorCiAgIC8qIE5PVEU6IFRoaXMgZnVuY3Rpb24gU2hvdWxkIG5vdCBiZSBtb2RpZmllZCwgd2hlbiB0aGUgY2FsbGJhY2sgaXMgbmVlZGVkLAogICAgICAgICAgICAgdGhlIEhBTF9TRFJBTV9Nc3BJbml0IGNvdWxkIGJlIGltcGxlbWVudGVkIGluIHRoZSB1c2VyIGZpbGUKLSAgICovIAorICAgKi8KIH0KIAogLyoqCkBAIC0yNTksMTAgKzI2NCwxMCBAQAogewogICAvKiBQcmV2ZW50IHVudXNlZCBhcmd1bWVudChzKSBjb21waWxhdGlvbiB3YXJuaW5nICovCiAgIFVOVVNFRChoc2RyYW0pOwotIAorCiAgIC8qIE5PVEU6IFRoaXMgZnVuY3Rpb24gU2hvdWxkIG5vdCBiZSBtb2RpZmllZCwgd2hlbiB0aGUgY2FsbGJhY2sgaXMgbmVlZGVkLAogICAgICAgICAgICAgdGhlIEhBTF9TRFJBTV9Nc3BEZUluaXQgY291bGQgYmUgaW1wbGVtZW50ZWQgaW4gdGhlIHVzZXIgZmlsZQotICAgKi8gCisgICAqLwogfQogCiAvKioKQEAgLTI3MCwxOCArMjc1LDE4IEBACiAgICogQHBhcmFtICBoc2RyYW0gcG9pbnRlciB0byBhIFNEUkFNX0hhbmRsZVR5cGVEZWYgc3RydWN0dXJlIHRoYXQgY29udGFpbnMKICAgKiAgICAgICAgICAgICAgICB0aGUgY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbiBmb3IgU0RSQU0gbW9kdWxlLgogICAqIEByZXR2YWwgSEFMIHN0YXR1cwotKi8KKyAgKi8KIHZvaWQgSEFMX1NEUkFNX0lSUUhhbmRsZXIoU0RSQU1fSGFuZGxlVHlwZURlZiAqaHNkcmFtKQogewogICAvKiBDaGVjayBTRFJBTSBpbnRlcnJ1cHQgUmlzaW5nIGVkZ2UgZmxhZyAqLwotICBpZihfX0ZNQ19TRFJBTV9HRVRfRkxBRyhoc2RyYW0tPkluc3RhbmNlLCBGTUNfU0RSQU1fRkxBR19SRUZSRVNIX0lUKSkKKyAgaWYgKF9fRk1DX1NEUkFNX0dFVF9GTEFHKGhzZHJhbS0+SW5zdGFuY2UsIEZNQ19TRFJBTV9GTEFHX1JFRlJFU0hfSVQpKQogICB7CiAgICAgLyogU0RSQU0gcmVmcmVzaCBlcnJvciBpbnRlcnJ1cHQgY2FsbGJhY2sgKi8KICNpZiAoVVNFX0hBTF9TRFJBTV9SRUdJU1RFUl9DQUxMQkFDS1MgPT0gMSkKICAgICBoc2RyYW0tPlJlZnJlc2hFcnJvckNhbGxiYWNrKGhzZHJhbSk7CiAjZWxzZQogICAgIEhBTF9TRFJBTV9SZWZyZXNoRXJyb3JDYWxsYmFjayhoc2RyYW0pOwotI2VuZGlmCisjZW5kaWYgLyogVVNFX0hBTF9TRFJBTV9SRUdJU1RFUl9DQUxMQkFDS1MgKi8KIAogICAgIC8qIENsZWFyIFNEUkFNIHJlZnJlc2ggZXJyb3IgaW50ZXJydXB0IHBlbmRpbmcgYml0ICovCiAgICAgX19GTUNfU0RSQU1fQ0xFQVJfRkxBRyhoc2RyYW0tPkluc3RhbmNlLCBGTUNfU0RSQU1fRkxBR19SRUZSRVNIX0VSUk9SKTsKQEAgLTI5MSwxNyArMjk2LDE3IEBACiAvKioKICAgKiBAYnJpZWYgIFNEUkFNIFJlZnJlc2ggZXJyb3IgY2FsbGJhY2suCiAgICogQHBhcmFtICBoc2RyYW0gcG9pbnRlciB0byBhIFNEUkFNX0hhbmRsZVR5cGVEZWYgc3RydWN0dXJlIHRoYXQgY29udGFpbnMKLSAgKiAgICAgICAgICAgICAgICB0aGUgY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbiBmb3IgU0RSQU0gbW9kdWxlLiAKKyAgKiAgICAgICAgICAgICAgICB0aGUgY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbiBmb3IgU0RSQU0gbW9kdWxlLgogICAqIEByZXR2YWwgTm9uZQogICAqLwogX193ZWFrIHZvaWQgSEFMX1NEUkFNX1JlZnJlc2hFcnJvckNhbGxiYWNrKFNEUkFNX0hhbmRsZVR5cGVEZWYgKmhzZHJhbSkKIHsKICAgLyogUHJldmVudCB1bnVzZWQgYXJndW1lbnQocykgY29tcGlsYXRpb24gd2FybmluZyAqLwogICBVTlVTRUQoaHNkcmFtKTsKLSAKKwogICAvKiBOT1RFOiBUaGlzIGZ1bmN0aW9uIFNob3VsZCBub3QgYmUgbW9kaWZpZWQsIHdoZW4gdGhlIGNhbGxiYWNrIGlzIG5lZWRlZCwKICAgICAgICAgICAgIHRoZSBIQUxfU0RSQU1fUmVmcmVzaEVycm9yQ2FsbGJhY2sgY291bGQgYmUgaW1wbGVtZW50ZWQgaW4gdGhlIHVzZXIgZmlsZQotICAgKi8gCisgICAqLwogfQogCiAvKioKQEAgLTMxNCwxMCArMzE5LDEwIEBACiB7CiAgIC8qIFByZXZlbnQgdW51c2VkIGFyZ3VtZW50KHMpIGNvbXBpbGF0aW9uIHdhcm5pbmcgKi8KICAgVU5VU0VEKGhkbWEpOwotIAorCiAgIC8qIE5PVEU6IFRoaXMgZnVuY3Rpb24gU2hvdWxkIG5vdCBiZSBtb2RpZmllZCwgd2hlbiB0aGUgY2FsbGJhY2sgaXMgbmVlZGVkLAogICAgICAgICAgICAgdGhlIEhBTF9TRFJBTV9ETUFfWGZlckNwbHRDYWxsYmFjayBjb3VsZCBiZSBpbXBsZW1lbnRlZCBpbiB0aGUgdXNlciBmaWxlCi0gICAqLyAKKyAgICovCiB9CiAKIC8qKgpAQCAtMzI5LDI2ICszMzQsMjYgQEAKIHsKICAgLyogUHJldmVudCB1bnVzZWQgYXJndW1lbnQocykgY29tcGlsYXRpb24gd2FybmluZyAqLwogICBVTlVTRUQoaGRtYSk7Ci0gCisKICAgLyogTk9URTogVGhpcyBmdW5jdGlvbiBTaG91bGQgbm90IGJlIG1vZGlmaWVkLCB3aGVuIHRoZSBjYWxsYmFjayBpcyBuZWVkZWQsCiAgICAgICAgICAgICB0aGUgSEFMX1NEUkFNX0RNQV9YZmVyRXJyb3JDYWxsYmFjayBjb3VsZCBiZSBpbXBsZW1lbnRlZCBpbiB0aGUgdXNlciBmaWxlCi0gICAqLyAKKyAgICovCiB9CiAKIC8qKgogICAqIEB9CiAgICovCiAKLS8qKiBAZGVmZ3JvdXAgU0RSQU1fRXhwb3J0ZWRfRnVuY3Rpb25zX0dyb3VwMiBJbnB1dCBhbmQgT3V0cHV0IGZ1bmN0aW9ucyAKLSAgKiBAYnJpZWYgICAgSW5wdXQgT3V0cHV0IGFuZCBtZW1vcnkgY29udHJvbCBmdW5jdGlvbnMgCisvKiogQGRlZmdyb3VwIFNEUkFNX0V4cG9ydGVkX0Z1bmN0aW9uc19Hcm91cDIgSW5wdXQgYW5kIE91dHB1dCBmdW5jdGlvbnMKKyAgKiBAYnJpZWYgICAgSW5wdXQgT3V0cHV0IGFuZCBtZW1vcnkgY29udHJvbCBmdW5jdGlvbnMKICAgKgotICBAdmVyYmF0aW0gICAgCisgIEB2ZXJiYXRpbQogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgICAgICAgICAgICAgICAgICAgIyMjIyMgU0RSQU0gSW5wdXQgYW5kIE91dHB1dCBmdW5jdGlvbnMgIyMjIyMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0gIFsuLl0gIAorICBbLi5dCiAgICAgVGhpcyBzZWN0aW9uIHByb3ZpZGVzIGZ1bmN0aW9ucyBhbGxvd2luZyB0byB1c2UgYW5kIGNvbnRyb2wgdGhlIFNEUkFNIG1lbW9yeQotICAKKwogQGVuZHZlcmJhdGltCiAgICogQHsKICAgKi8KQEAgLTM1OCwyOTEgKzM2MywzNzcgQEAKICAgKiBAcGFyYW0gIGhzZHJhbSBwb2ludGVyIHRvIGEgU0RSQU1fSGFuZGxlVHlwZURlZiBzdHJ1Y3R1cmUgdGhhdCBjb250YWlucwogICAqICAgICAgICAgICAgICAgIHRoZSBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uIGZvciBTRFJBTSBtb2R1bGUuCiAgICogQHBhcmFtICBwQWRkcmVzcyBQb2ludGVyIHRvIHJlYWQgc3RhcnQgYWRkcmVzcwotICAqIEBwYXJhbSAgcERzdEJ1ZmZlciBQb2ludGVyIHRvIGRlc3RpbmF0aW9uIGJ1ZmZlciAgCisgICogQHBhcmFtICBwRHN0QnVmZmVyIFBvaW50ZXIgdG8gZGVzdGluYXRpb24gYnVmZmVyCiAgICogQHBhcmFtICBCdWZmZXJTaXplIFNpemUgb2YgdGhlIGJ1ZmZlciB0byByZWFkIGZyb20gbWVtb3J5CiAgICogQHJldHZhbCBIQUwgc3RhdHVzCiAgICovCi1IQUxfU3RhdHVzVHlwZURlZiBIQUxfU0RSQU1fUmVhZF84YihTRFJBTV9IYW5kbGVUeXBlRGVmICpoc2RyYW0sIHVpbnQzMl90ICpwQWRkcmVzcywgdWludDhfdCAqcERzdEJ1ZmZlciwgdWludDMyX3QgQnVmZmVyU2l6ZSkKK0hBTF9TdGF0dXNUeXBlRGVmIEhBTF9TRFJBTV9SZWFkXzhiKFNEUkFNX0hhbmRsZVR5cGVEZWYgKmhzZHJhbSwgdWludDMyX3QgKnBBZGRyZXNzLCB1aW50OF90ICpwRHN0QnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgQnVmZmVyU2l6ZSkKIHsKKyAgdWludDMyX3Qgc2l6ZTsKICAgX19JTyB1aW50OF90ICpwU2RyYW1BZGRyZXNzID0gKHVpbnQ4X3QgKilwQWRkcmVzczsKLSAgCi0gIC8qIFByb2Nlc3MgTG9ja2VkICovCi0gIF9fSEFMX0xPQ0soaHNkcmFtKTsKLSAgCisgIHVpbnQ4X3QgKnBkZXN0YnVmZiA9IHBEc3RCdWZmZXI7CisgIEhBTF9TRFJBTV9TdGF0ZVR5cGVEZWYgc3RhdGUgPSBoc2RyYW0tPlN0YXRlOworCiAgIC8qIENoZWNrIHRoZSBTRFJBTSBjb250cm9sbGVyIHN0YXRlICovCi0gIGlmKGhzZHJhbS0+U3RhdGUgPT0gSEFMX1NEUkFNX1NUQVRFX0JVU1kpCisgIGlmIChzdGF0ZSA9PSBIQUxfU0RSQU1fU1RBVEVfQlVTWSkKICAgewogICAgIHJldHVybiBIQUxfQlVTWTsKICAgfQotICBlbHNlIGlmKGhzZHJhbS0+U3RhdGUgPT0gSEFMX1NEUkFNX1NUQVRFX1BSRUNIQVJHRUQpCisgIGVsc2UgaWYgKChzdGF0ZSA9PSBIQUxfU0RSQU1fU1RBVEVfUkVBRFkpIHx8IChzdGF0ZSA9PSBIQUxfU0RSQU1fU1RBVEVfV1JJVEVfUFJPVEVDVEVEKSkKICAgewotICAgIHJldHVybiAgSEFMX0VSUk9SOyAKLSAgfSAgCi0gIAotICAvKiBSZWFkIGRhdGEgZnJvbSBzb3VyY2UgKi8KLSAgZm9yKDsgQnVmZmVyU2l6ZSAhPSAwOyBCdWZmZXJTaXplLS0pCi0gIHsKLSAgICAqcERzdEJ1ZmZlciA9ICooX19JTyB1aW50OF90ICopcFNkcmFtQWRkcmVzczsgIAotICAgIHBEc3RCdWZmZXIrKzsKLSAgICBwU2RyYW1BZGRyZXNzKys7Ci0gIH0KLSAgCi0gIC8qIFByb2Nlc3MgVW5sb2NrZWQgKi8KLSAgX19IQUxfVU5MT0NLKGhzZHJhbSk7Ci0gIAotICByZXR1cm4gSEFMX09LOyAKLX0KKyAgICAvKiBQcm9jZXNzIExvY2tlZCAqLworICAgIF9fSEFMX0xPQ0soaHNkcmFtKTsKIAorICAgIC8qIFVwZGF0ZSB0aGUgU0RSQU0gY29udHJvbGxlciBzdGF0ZSAqLworICAgIGhzZHJhbS0+U3RhdGUgPSBIQUxfU0RSQU1fU1RBVEVfQlVTWTsKKworICAgIC8qIFJlYWQgZGF0YSBmcm9tIHNvdXJjZSAqLworICAgIGZvciAoc2l6ZSA9IEJ1ZmZlclNpemU7IHNpemUgIT0gMFU7IHNpemUtLSkKKyAgICB7CisgICAgICAqcGRlc3RidWZmID0gKihfX0lPIHVpbnQ4X3QgKilwU2RyYW1BZGRyZXNzOworICAgICAgcGRlc3RidWZmKys7CisgICAgICBwU2RyYW1BZGRyZXNzKys7CisgICAgfQorCisgICAgLyogVXBkYXRlIHRoZSBTRFJBTSBjb250cm9sbGVyIHN0YXRlICovCisgICAgaHNkcmFtLT5TdGF0ZSA9IHN0YXRlOworCisgICAgLyogUHJvY2VzcyBVbmxvY2tlZCAqLworICAgIF9fSEFMX1VOTE9DSyhoc2RyYW0pOworICB9CisgIGVsc2UKKyAgeworICAgIHJldHVybiAgSEFMX0VSUk9SOworICB9CisKKyAgcmV0dXJuIEhBTF9PSzsKK30KIAogLyoqCiAgICogQGJyaWVmICBXcml0ZXMgOC1iaXQgZGF0YSBidWZmZXIgdG8gU0RSQU0gbWVtb3J5LgogICAqIEBwYXJhbSAgaHNkcmFtIHBvaW50ZXIgdG8gYSBTRFJBTV9IYW5kbGVUeXBlRGVmIHN0cnVjdHVyZSB0aGF0IGNvbnRhaW5zCiAgICogICAgICAgICAgICAgICAgdGhlIGNvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb24gZm9yIFNEUkFNIG1vZHVsZS4KICAgKiBAcGFyYW0gIHBBZGRyZXNzIFBvaW50ZXIgdG8gd3JpdGUgc3RhcnQgYWRkcmVzcwotICAqIEBwYXJhbSAgcFNyY0J1ZmZlciBQb2ludGVyIHRvIHNvdXJjZSBidWZmZXIgdG8gd3JpdGUgIAorICAqIEBwYXJhbSAgcFNyY0J1ZmZlciBQb2ludGVyIHRvIHNvdXJjZSBidWZmZXIgdG8gd3JpdGUKICAgKiBAcGFyYW0gIEJ1ZmZlclNpemUgU2l6ZSBvZiB0aGUgYnVmZmVyIHRvIHdyaXRlIHRvIG1lbW9yeQogICAqIEByZXR2YWwgSEFMIHN0YXR1cwogICAqLwotSEFMX1N0YXR1c1R5cGVEZWYgSEFMX1NEUkFNX1dyaXRlXzhiKFNEUkFNX0hhbmRsZVR5cGVEZWYgKmhzZHJhbSwgdWludDMyX3QgKnBBZGRyZXNzLCB1aW50OF90ICpwU3JjQnVmZmVyLCB1aW50MzJfdCBCdWZmZXJTaXplKQorSEFMX1N0YXR1c1R5cGVEZWYgSEFMX1NEUkFNX1dyaXRlXzhiKFNEUkFNX0hhbmRsZVR5cGVEZWYgKmhzZHJhbSwgdWludDMyX3QgKnBBZGRyZXNzLCB1aW50OF90ICpwU3JjQnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IEJ1ZmZlclNpemUpCiB7CisgIHVpbnQzMl90IHNpemU7CiAgIF9fSU8gdWludDhfdCAqcFNkcmFtQWRkcmVzcyA9ICh1aW50OF90ICopcEFkZHJlc3M7Ci0gIHVpbnQzMl90IHRtcCA9IDA7Ci0gIAotICAvKiBQcm9jZXNzIExvY2tlZCAqLwotICBfX0hBTF9MT0NLKGhzZHJhbSk7Ci0gIAorICB1aW50OF90ICpwc3JjYnVmZiA9IHBTcmNCdWZmZXI7CisKICAgLyogQ2hlY2sgdGhlIFNEUkFNIGNvbnRyb2xsZXIgc3RhdGUgKi8KLSAgdG1wID0gaHNkcmFtLT5TdGF0ZTsKLSAgCi0gIGlmKHRtcCA9PSBIQUxfU0RSQU1fU1RBVEVfQlVTWSkKKyAgaWYgKGhzZHJhbS0+U3RhdGUgPT0gSEFMX1NEUkFNX1NUQVRFX0JVU1kpCiAgIHsKICAgICByZXR1cm4gSEFMX0JVU1k7CiAgIH0KLSAgZWxzZSBpZigodG1wID09IEhBTF9TRFJBTV9TVEFURV9QUkVDSEFSR0VEKSB8fCAodG1wID09IEhBTF9TRFJBTV9TVEFURV9XUklURV9QUk9URUNURUQpKQorICBlbHNlIGlmIChoc2RyYW0tPlN0YXRlID09IEhBTF9TRFJBTV9TVEFURV9SRUFEWSkKICAgewotICAgIHJldHVybiAgSEFMX0VSUk9SOyAKKyAgICAvKiBQcm9jZXNzIExvY2tlZCAqLworICAgIF9fSEFMX0xPQ0soaHNkcmFtKTsKKworICAgIC8qIFVwZGF0ZSB0aGUgU0RSQU0gY29udHJvbGxlciBzdGF0ZSAqLworICAgIGhzZHJhbS0+U3RhdGUgPSBIQUxfU0RSQU1fU1RBVEVfQlVTWTsKKworICAgIC8qIFdyaXRlIGRhdGEgdG8gbWVtb3J5ICovCisgICAgZm9yIChzaXplID0gQnVmZmVyU2l6ZTsgc2l6ZSAhPSAwVTsgc2l6ZS0tKQorICAgIHsKKyAgICAgICooX19JTyB1aW50OF90ICopcFNkcmFtQWRkcmVzcyA9ICpwc3JjYnVmZjsKKyAgICAgIHBzcmNidWZmKys7CisgICAgICBwU2RyYW1BZGRyZXNzKys7CisgICAgfQorCisgICAgLyogVXBkYXRlIHRoZSBTRFJBTSBjb250cm9sbGVyIHN0YXRlICovCisgICAgaHNkcmFtLT5TdGF0ZSA9IEhBTF9TRFJBTV9TVEFURV9SRUFEWTsKKworICAgIC8qIFByb2Nlc3MgVW5sb2NrZWQgKi8KKyAgICBfX0hBTF9VTkxPQ0soaHNkcmFtKTsKICAgfQotICAKLSAgLyogV3JpdGUgZGF0YSB0byBtZW1vcnkgKi8KLSAgZm9yKDsgQnVmZmVyU2l6ZSAhPSAwOyBCdWZmZXJTaXplLS0pCisgIGVsc2UKICAgewotICAgICooX19JTyB1aW50OF90ICopcFNkcmFtQWRkcmVzcyA9ICpwU3JjQnVmZmVyOwotICAgIHBTcmNCdWZmZXIrKzsKLSAgICBwU2RyYW1BZGRyZXNzKys7CisgICAgcmV0dXJuICBIQUxfRVJST1I7CiAgIH0KLSAgCi0gIC8qIFByb2Nlc3MgVW5sb2NrZWQgKi8KLSAgX19IQUxfVU5MT0NLKGhzZHJhbSk7ICAgIAotICAKLSAgcmV0dXJuIEhBTF9PSzsgICAKKworICByZXR1cm4gSEFMX09LOwogfQogCi0KIC8qKgotICAqIEBicmllZiAgUmVhZHMgMTYtYml0IGRhdGEgYnVmZmVyIGZyb20gdGhlIFNEUkFNIG1lbW9yeS4gCisgICogQGJyaWVmICBSZWFkcyAxNi1iaXQgZGF0YSBidWZmZXIgZnJvbSB0aGUgU0RSQU0gbWVtb3J5LgogICAqIEBwYXJhbSAgaHNkcmFtIHBvaW50ZXIgdG8gYSBTRFJBTV9IYW5kbGVUeXBlRGVmIHN0cnVjdHVyZSB0aGF0IGNvbnRhaW5zCiAgICogICAgICAgICAgICAgICAgdGhlIGNvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb24gZm9yIFNEUkFNIG1vZHVsZS4KICAgKiBAcGFyYW0gIHBBZGRyZXNzIFBvaW50ZXIgdG8gcmVhZCBzdGFydCBhZGRyZXNzCi0gICogQHBhcmFtICBwRHN0QnVmZmVyIFBvaW50ZXIgdG8gZGVzdGluYXRpb24gYnVmZmVyICAKKyAgKiBAcGFyYW0gIHBEc3RCdWZmZXIgUG9pbnRlciB0byBkZXN0aW5hdGlvbiBidWZmZXIKICAgKiBAcGFyYW0gIEJ1ZmZlclNpemUgU2l6ZSBvZiB0aGUgYnVmZmVyIHRvIHJlYWQgZnJvbSBtZW1vcnkKICAgKiBAcmV0dmFsIEhBTCBzdGF0dXMKICAgKi8KLUhBTF9TdGF0dXNUeXBlRGVmIEhBTF9TRFJBTV9SZWFkXzE2YihTRFJBTV9IYW5kbGVUeXBlRGVmICpoc2RyYW0sIHVpbnQzMl90ICpwQWRkcmVzcywgdWludDE2X3QgKnBEc3RCdWZmZXIsIHVpbnQzMl90IEJ1ZmZlclNpemUpCitIQUxfU3RhdHVzVHlwZURlZiBIQUxfU0RSQU1fUmVhZF8xNmIoU0RSQU1fSGFuZGxlVHlwZURlZiAqaHNkcmFtLCB1aW50MzJfdCAqcEFkZHJlc3MsIHVpbnQxNl90ICpwRHN0QnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IEJ1ZmZlclNpemUpCiB7Ci0gIF9fSU8gdWludDE2X3QgKnBTZHJhbUFkZHJlc3MgPSAodWludDE2X3QgKilwQWRkcmVzczsKLSAgCi0gIC8qIFByb2Nlc3MgTG9ja2VkICovCi0gIF9fSEFMX0xPQ0soaHNkcmFtKTsKLSAgCisgIHVpbnQzMl90IHNpemU7CisgIF9fSU8gdWludDMyX3QgKnBTZHJhbUFkZHJlc3MgPSBwQWRkcmVzczsKKyAgdWludDE2X3QgKnBkZXN0YnVmZiA9IHBEc3RCdWZmZXI7CisgIEhBTF9TRFJBTV9TdGF0ZVR5cGVEZWYgc3RhdGUgPSBoc2RyYW0tPlN0YXRlOworCiAgIC8qIENoZWNrIHRoZSBTRFJBTSBjb250cm9sbGVyIHN0YXRlICovCi0gIGlmKGhzZHJhbS0+U3RhdGUgPT0gSEFMX1NEUkFNX1NUQVRFX0JVU1kpCisgIGlmIChzdGF0ZSA9PSBIQUxfU0RSQU1fU1RBVEVfQlVTWSkKICAgewogICAgIHJldHVybiBIQUxfQlVTWTsKICAgfQotICBlbHNlIGlmKGhzZHJhbS0+U3RhdGUgPT0gSEFMX1NEUkFNX1NUQVRFX1BSRUNIQVJHRUQpCisgIGVsc2UgaWYgKChzdGF0ZSA9PSBIQUxfU0RSQU1fU1RBVEVfUkVBRFkpIHx8IChzdGF0ZSA9PSBIQUxfU0RSQU1fU1RBVEVfV1JJVEVfUFJPVEVDVEVEKSkKICAgewotICAgIHJldHVybiAgSEFMX0VSUk9SOyAKLSAgfSAgCi0gIAotICAvKiBSZWFkIGRhdGEgZnJvbSBzb3VyY2UgKi8KLSAgZm9yKDsgQnVmZmVyU2l6ZSAhPSAwOyBCdWZmZXJTaXplLS0pCi0gIHsKLSAgICAqcERzdEJ1ZmZlciA9ICooX19JTyB1aW50MTZfdCAqKXBTZHJhbUFkZHJlc3M7ICAKLSAgICBwRHN0QnVmZmVyKys7Ci0gICAgcFNkcmFtQWRkcmVzcysrOyAgICAgICAgICAgICAgIAorICAgIC8qIFByb2Nlc3MgTG9ja2VkICovCisgICAgX19IQUxfTE9DSyhoc2RyYW0pOworCisgICAgLyogVXBkYXRlIHRoZSBTRFJBTSBjb250cm9sbGVyIHN0YXRlICovCisgICAgaHNkcmFtLT5TdGF0ZSA9IEhBTF9TRFJBTV9TVEFURV9CVVNZOworCisgICAgLyogUmVhZCBkYXRhIGZyb20gbWVtb3J5ICovCisgICAgZm9yIChzaXplID0gQnVmZmVyU2l6ZTsgc2l6ZSA+PSAyVSA7IHNpemUgLT0gMlUpCisgICAgeworICAgICAgKnBkZXN0YnVmZiA9ICh1aW50MTZfdCkoKCpwU2RyYW1BZGRyZXNzKSAmIDB4MDAwMEZGRkZVKTsKKyAgICAgIHBkZXN0YnVmZisrOworICAgICAgKnBkZXN0YnVmZiA9ICh1aW50MTZfdCkoKCgqcFNkcmFtQWRkcmVzcykgJiAweEZGRkYwMDAwVSkgPj4gMTZVKTsKKyAgICAgIHBkZXN0YnVmZisrOworICAgICAgcFNkcmFtQWRkcmVzcysrOworICAgIH0KKworICAgIC8qIFJlYWQgbGFzdCAxNi1iaXRzIGlmIHNpemUgaXMgbm90IDMyLWJpdHMgbXVsdGlwbGUgKi8KKyAgICBpZiAoKEJ1ZmZlclNpemUgJSAyVSkgIT0gMFUpCisgICAgeworICAgICAgKnBkZXN0YnVmZiA9ICh1aW50MTZfdCkoKCpwU2RyYW1BZGRyZXNzKSAmIDB4MDAwMEZGRkZVKTsKKyAgICB9CisKKyAgICAvKiBVcGRhdGUgdGhlIFNEUkFNIGNvbnRyb2xsZXIgc3RhdGUgKi8KKyAgICBoc2RyYW0tPlN0YXRlID0gc3RhdGU7CisKKyAgICAvKiBQcm9jZXNzIFVubG9ja2VkICovCisgICAgX19IQUxfVU5MT0NLKGhzZHJhbSk7CiAgIH0KLSAgCi0gIC8qIFByb2Nlc3MgVW5sb2NrZWQgKi8KLSAgX19IQUxfVU5MT0NLKGhzZHJhbSk7ICAgICAgIAotICAKLSAgcmV0dXJuIEhBTF9PSzsgCisgIGVsc2UKKyAgeworICAgIHJldHVybiAgSEFMX0VSUk9SOworICB9CisKKyAgcmV0dXJuIEhBTF9PSzsKIH0KIAogLyoqCi0gICogQGJyaWVmICBXcml0ZXMgMTYtYml0IGRhdGEgYnVmZmVyIHRvIFNEUkFNIG1lbW9yeS4gCisgICogQGJyaWVmICBXcml0ZXMgMTYtYml0IGRhdGEgYnVmZmVyIHRvIFNEUkFNIG1lbW9yeS4KICAgKiBAcGFyYW0gIGhzZHJhbSBwb2ludGVyIHRvIGEgU0RSQU1fSGFuZGxlVHlwZURlZiBzdHJ1Y3R1cmUgdGhhdCBjb250YWlucwogICAqICAgICAgICAgICAgICAgIHRoZSBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uIGZvciBTRFJBTSBtb2R1bGUuCiAgICogQHBhcmFtICBwQWRkcmVzcyBQb2ludGVyIHRvIHdyaXRlIHN0YXJ0IGFkZHJlc3MKLSAgKiBAcGFyYW0gIHBTcmNCdWZmZXIgUG9pbnRlciB0byBzb3VyY2UgYnVmZmVyIHRvIHdyaXRlICAKKyAgKiBAcGFyYW0gIHBTcmNCdWZmZXIgUG9pbnRlciB0byBzb3VyY2UgYnVmZmVyIHRvIHdyaXRlCiAgICogQHBhcmFtICBCdWZmZXJTaXplIFNpemUgb2YgdGhlIGJ1ZmZlciB0byB3cml0ZSB0byBtZW1vcnkKICAgKiBAcmV0dmFsIEhBTCBzdGF0dXMKICAgKi8KLUhBTF9TdGF0dXNUeXBlRGVmIEhBTF9TRFJBTV9Xcml0ZV8xNmIoU0RSQU1fSGFuZGxlVHlwZURlZiAqaHNkcmFtLCB1aW50MzJfdCAqcEFkZHJlc3MsIHVpbnQxNl90ICpwU3JjQnVmZmVyLCB1aW50MzJfdCBCdWZmZXJTaXplKQorSEFMX1N0YXR1c1R5cGVEZWYgSEFMX1NEUkFNX1dyaXRlXzE2YihTRFJBTV9IYW5kbGVUeXBlRGVmICpoc2RyYW0sIHVpbnQzMl90ICpwQWRkcmVzcywgdWludDE2X3QgKnBTcmNCdWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IEJ1ZmZlclNpemUpCiB7Ci0gIF9fSU8gdWludDE2X3QgKnBTZHJhbUFkZHJlc3MgPSAodWludDE2X3QgKilwQWRkcmVzczsKLSAgdWludDMyX3QgdG1wID0gMDsKLSAgCi0gIC8qIFByb2Nlc3MgTG9ja2VkICovCi0gIF9fSEFMX0xPQ0soaHNkcmFtKTsKLSAgCisgIHVpbnQzMl90IHNpemU7CisgIF9fSU8gdWludDMyX3QgKnBzZHJhbWFkZHJlc3MgPSBwQWRkcmVzczsKKyAgdWludDE2X3QgKnBzcmNidWZmID0gcFNyY0J1ZmZlcjsKKwogICAvKiBDaGVjayB0aGUgU0RSQU0gY29udHJvbGxlciBzdGF0ZSAqLwotICB0bXAgPSBoc2RyYW0tPlN0YXRlOwotICAKLSAgaWYodG1wID09IEhBTF9TRFJBTV9TVEFURV9CVVNZKQorICBpZiAoaHNkcmFtLT5TdGF0ZSA9PSBIQUxfU0RSQU1fU1RBVEVfQlVTWSkKICAgewogICAgIHJldHVybiBIQUxfQlVTWTsKICAgfQotICBlbHNlIGlmKCh0bXAgPT0gSEFMX1NEUkFNX1NUQVRFX1BSRUNIQVJHRUQpIHx8ICh0bXAgPT0gSEFMX1NEUkFNX1NUQVRFX1dSSVRFX1BST1RFQ1RFRCkpCisgIGVsc2UgaWYgKGhzZHJhbS0+U3RhdGUgPT0gSEFMX1NEUkFNX1NUQVRFX1JFQURZKQogICB7Ci0gICAgcmV0dXJuICBIQUxfRVJST1I7IAorICAgIC8qIFByb2Nlc3MgTG9ja2VkICovCisgICAgX19IQUxfTE9DSyhoc2RyYW0pOworCisgICAgLyogVXBkYXRlIHRoZSBTRFJBTSBjb250cm9sbGVyIHN0YXRlICovCisgICAgaHNkcmFtLT5TdGF0ZSA9IEhBTF9TRFJBTV9TVEFURV9CVVNZOworCisgICAgLyogV3JpdGUgZGF0YSB0byBtZW1vcnkgKi8KKyAgICBmb3IgKHNpemUgPSBCdWZmZXJTaXplOyBzaXplID49IDJVIDsgc2l6ZSAtPSAyVSkKKyAgICB7CisgICAgICAqcHNkcmFtYWRkcmVzcyA9ICh1aW50MzJfdCkoKnBzcmNidWZmKTsKKyAgICAgIHBzcmNidWZmKys7CisgICAgICAqcHNkcmFtYWRkcmVzcyB8PSAoKHVpbnQzMl90KSgqcHNyY2J1ZmYpIDw8IDE2VSk7CisgICAgICBwc3JjYnVmZisrOworICAgICAgcHNkcmFtYWRkcmVzcysrOworICAgIH0KKworICAgIC8qIFdyaXRlIGxhc3QgMTYtYml0cyBpZiBzaXplIGlzIG5vdCAzMi1iaXRzIG11bHRpcGxlICovCisgICAgaWYgKChCdWZmZXJTaXplICUgMlUpICE9IDBVKQorICAgIHsKKyAgICAgICpwc2RyYW1hZGRyZXNzID0gKCh1aW50MzJfdCkoKnBzcmNidWZmKSAmIDB4MDAwMEZGRkZVKSB8ICgoKnBzZHJhbWFkZHJlc3MpICYgMHhGRkZGMDAwMFUpOworICAgIH0KKworICAgIC8qIFVwZGF0ZSB0aGUgU0RSQU0gY29udHJvbGxlciBzdGF0ZSAqLworICAgIGhzZHJhbS0+U3RhdGUgPSBIQUxfU0RSQU1fU1RBVEVfUkVBRFk7CisKKyAgICAvKiBQcm9jZXNzIFVubG9ja2VkICovCisgICAgX19IQUxfVU5MT0NLKGhzZHJhbSk7CiAgIH0KLSAgCi0gIC8qIFdyaXRlIGRhdGEgdG8gbWVtb3J5ICovCi0gIGZvcig7IEJ1ZmZlclNpemUgIT0gMDsgQnVmZmVyU2l6ZS0tKQorICBlbHNlCiAgIHsKLSAgICAqKF9fSU8gdWludDE2X3QgKilwU2RyYW1BZGRyZXNzID0gKnBTcmNCdWZmZXI7Ci0gICAgcFNyY0J1ZmZlcisrOwotICAgIHBTZHJhbUFkZHJlc3MrKzsgICAgICAgICAgICAKKyAgICByZXR1cm4gIEhBTF9FUlJPUjsKICAgfQotICAKLSAgLyogUHJvY2VzcyBVbmxvY2tlZCAqLwotICBfX0hBTF9VTkxPQ0soaHNkcmFtKTsgICAgCi0gIAotICByZXR1cm4gSEFMX09LOyAgIAorCisgIHJldHVybiBIQUxfT0s7CiB9CiAKIC8qKgotICAqIEBicmllZiAgUmVhZHMgMzItYml0IGRhdGEgYnVmZmVyIGZyb20gdGhlIFNEUkFNIG1lbW9yeS4gCisgICogQGJyaWVmICBSZWFkcyAzMi1iaXQgZGF0YSBidWZmZXIgZnJvbSB0aGUgU0RSQU0gbWVtb3J5LgogICAqIEBwYXJhbSAgaHNkcmFtIHBvaW50ZXIgdG8gYSBTRFJBTV9IYW5kbGVUeXBlRGVmIHN0cnVjdHVyZSB0aGF0IGNvbnRhaW5zCiAgICogICAgICAgICAgICAgICAgdGhlIGNvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb24gZm9yIFNEUkFNIG1vZHVsZS4KICAgKiBAcGFyYW0gIHBBZGRyZXNzIFBvaW50ZXIgdG8gcmVhZCBzdGFydCBhZGRyZXNzCi0gICogQHBhcmFtICBwRHN0QnVmZmVyIFBvaW50ZXIgdG8gZGVzdGluYXRpb24gYnVmZmVyICAKKyAgKiBAcGFyYW0gIHBEc3RCdWZmZXIgUG9pbnRlciB0byBkZXN0aW5hdGlvbiBidWZmZXIKICAgKiBAcGFyYW0gIEJ1ZmZlclNpemUgU2l6ZSBvZiB0aGUgYnVmZmVyIHRvIHJlYWQgZnJvbSBtZW1vcnkKICAgKiBAcmV0dmFsIEhBTCBzdGF0dXMKICAgKi8KLUhBTF9TdGF0dXNUeXBlRGVmIEhBTF9TRFJBTV9SZWFkXzMyYihTRFJBTV9IYW5kbGVUeXBlRGVmICpoc2RyYW0sIHVpbnQzMl90ICpwQWRkcmVzcywgdWludDMyX3QgKnBEc3RCdWZmZXIsIHVpbnQzMl90IEJ1ZmZlclNpemUpCitIQUxfU3RhdHVzVHlwZURlZiBIQUxfU0RSQU1fUmVhZF8zMmIoU0RSQU1fSGFuZGxlVHlwZURlZiAqaHNkcmFtLCB1aW50MzJfdCAqcEFkZHJlc3MsIHVpbnQzMl90ICpwRHN0QnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IEJ1ZmZlclNpemUpCiB7CisgIHVpbnQzMl90IHNpemU7CiAgIF9fSU8gdWludDMyX3QgKnBTZHJhbUFkZHJlc3MgPSAodWludDMyX3QgKilwQWRkcmVzczsKLSAgCi0gIC8qIFByb2Nlc3MgTG9ja2VkICovCi0gIF9fSEFMX0xPQ0soaHNkcmFtKTsKLSAgCisgIHVpbnQzMl90ICpwZGVzdGJ1ZmYgPSBwRHN0QnVmZmVyOworICBIQUxfU0RSQU1fU3RhdGVUeXBlRGVmIHN0YXRlID0gaHNkcmFtLT5TdGF0ZTsKKwogICAvKiBDaGVjayB0aGUgU0RSQU0gY29udHJvbGxlciBzdGF0ZSAqLwotICBpZihoc2RyYW0tPlN0YXRlID09IEhBTF9TRFJBTV9TVEFURV9CVVNZKQorICBpZiAoc3RhdGUgPT0gSEFMX1NEUkFNX1NUQVRFX0JVU1kpCiAgIHsKICAgICByZXR1cm4gSEFMX0JVU1k7CiAgIH0KLSAgZWxzZSBpZihoc2RyYW0tPlN0YXRlID09IEhBTF9TRFJBTV9TVEFURV9QUkVDSEFSR0VEKQorICBlbHNlIGlmICgoc3RhdGUgPT0gSEFMX1NEUkFNX1NUQVRFX1JFQURZKSB8fCAoc3RhdGUgPT0gSEFMX1NEUkFNX1NUQVRFX1dSSVRFX1BST1RFQ1RFRCkpCiAgIHsKLSAgICByZXR1cm4gIEhBTF9FUlJPUjsgCi0gIH0gIAotICAKLSAgLyogUmVhZCBkYXRhIGZyb20gc291cmNlICovCi0gIGZvcig7IEJ1ZmZlclNpemUgIT0gMDsgQnVmZmVyU2l6ZS0tKQotICB7Ci0gICAgKnBEc3RCdWZmZXIgPSAqKF9fSU8gdWludDMyX3QgKilwU2RyYW1BZGRyZXNzOyAgCi0gICAgcERzdEJ1ZmZlcisrOwotICAgIHBTZHJhbUFkZHJlc3MrKzsgICAgICAgICAgICAgICAKKyAgICAvKiBQcm9jZXNzIExvY2tlZCAqLworICAgIF9fSEFMX0xPQ0soaHNkcmFtKTsKKworICAgIC8qIFVwZGF0ZSB0aGUgU0RSQU0gY29udHJvbGxlciBzdGF0ZSAqLworICAgIGhzZHJhbS0+U3RhdGUgPSBIQUxfU0RSQU1fU1RBVEVfQlVTWTsKKworICAgIC8qIFJlYWQgZGF0YSBmcm9tIHNvdXJjZSAqLworICAgIGZvciAoc2l6ZSA9IEJ1ZmZlclNpemU7IHNpemUgIT0gMFU7IHNpemUtLSkKKyAgICB7CisgICAgICAqcGRlc3RidWZmID0gKihfX0lPIHVpbnQzMl90ICopcFNkcmFtQWRkcmVzczsKKyAgICAgIHBkZXN0YnVmZisrOworICAgICAgcFNkcmFtQWRkcmVzcysrOworICAgIH0KKworICAgIC8qIFVwZGF0ZSB0aGUgU0RSQU0gY29udHJvbGxlciBzdGF0ZSAqLworICAgIGhzZHJhbS0+U3RhdGUgPSBzdGF0ZTsKKworICAgIC8qIFByb2Nlc3MgVW5sb2NrZWQgKi8KKyAgICBfX0hBTF9VTkxPQ0soaHNkcmFtKTsKICAgfQotICAKLSAgLyogUHJvY2VzcyBVbmxvY2tlZCAqLwotICBfX0hBTF9VTkxPQ0soaHNkcmFtKTsgICAgICAgCi0gIAotICByZXR1cm4gSEFMX09LOyAKKyAgZWxzZQorICB7CisgICAgcmV0dXJuICBIQUxfRVJST1I7CisgIH0KKworICByZXR1cm4gSEFMX09LOwogfQogCiAvKioKLSAgKiBAYnJpZWYgIFdyaXRlcyAzMi1iaXQgZGF0YSBidWZmZXIgdG8gU0RSQU0gbWVtb3J5LiAKKyAgKiBAYnJpZWYgIFdyaXRlcyAzMi1iaXQgZGF0YSBidWZmZXIgdG8gU0RSQU0gbWVtb3J5LgogICAqIEBwYXJhbSAgaHNkcmFtIHBvaW50ZXIgdG8gYSBTRFJBTV9IYW5kbGVUeXBlRGVmIHN0cnVjdHVyZSB0aGF0IGNvbnRhaW5zCiAgICogICAgICAgICAgICAgICAgdGhlIGNvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb24gZm9yIFNEUkFNIG1vZHVsZS4KICAgKiBAcGFyYW0gIHBBZGRyZXNzIFBvaW50ZXIgdG8gd3JpdGUgc3RhcnQgYWRkcmVzcwotICAqIEBwYXJhbSAgcFNyY0J1ZmZlciBQb2ludGVyIHRvIHNvdXJjZSBidWZmZXIgdG8gd3JpdGUgIAorICAqIEBwYXJhbSAgcFNyY0J1ZmZlciBQb2ludGVyIHRvIHNvdXJjZSBidWZmZXIgdG8gd3JpdGUKICAgKiBAcGFyYW0gIEJ1ZmZlclNpemUgU2l6ZSBvZiB0aGUgYnVmZmVyIHRvIHdyaXRlIHRvIG1lbW9yeQogICAqIEByZXR2YWwgSEFMIHN0YXR1cwogICAqLwotSEFMX1N0YXR1c1R5cGVEZWYgSEFMX1NEUkFNX1dyaXRlXzMyYihTRFJBTV9IYW5kbGVUeXBlRGVmICpoc2RyYW0sIHVpbnQzMl90ICpwQWRkcmVzcywgdWludDMyX3QgKnBTcmNCdWZmZXIsIHVpbnQzMl90IEJ1ZmZlclNpemUpCitIQUxfU3RhdHVzVHlwZURlZiBIQUxfU0RSQU1fV3JpdGVfMzJiKFNEUkFNX0hhbmRsZVR5cGVEZWYgKmhzZHJhbSwgdWludDMyX3QgKnBBZGRyZXNzLCB1aW50MzJfdCAqcFNyY0J1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgQnVmZmVyU2l6ZSkKIHsKLSAgX19JTyB1aW50MzJfdCAqcFNkcmFtQWRkcmVzcyA9ICh1aW50MzJfdCAqKXBBZGRyZXNzOwotICB1aW50MzJfdCB0bXAgPSAwOwotICAKLSAgLyogUHJvY2VzcyBMb2NrZWQgKi8KLSAgX19IQUxfTE9DSyhoc2RyYW0pOwotICAKKyAgdWludDMyX3Qgc2l6ZTsKKyAgX19JTyB1aW50MzJfdCAqcFNkcmFtQWRkcmVzcyA9IHBBZGRyZXNzOworICB1aW50MzJfdCAqcHNyY2J1ZmYgPSBwU3JjQnVmZmVyOworCiAgIC8qIENoZWNrIHRoZSBTRFJBTSBjb250cm9sbGVyIHN0YXRlICovCi0gIHRtcCA9IGhzZHJhbS0+U3RhdGU7Ci0gIAotICBpZih0bXAgPT0gSEFMX1NEUkFNX1NUQVRFX0JVU1kpCisgIGlmIChoc2RyYW0tPlN0YXRlID09IEhBTF9TRFJBTV9TVEFURV9CVVNZKQogICB7CiAgICAgcmV0dXJuIEhBTF9CVVNZOwogICB9Ci0gIGVsc2UgaWYoKHRtcCA9PSBIQUxfU0RSQU1fU1RBVEVfUFJFQ0hBUkdFRCkgfHwgKHRtcCA9PSBIQUxfU0RSQU1fU1RBVEVfV1JJVEVfUFJPVEVDVEVEKSkKKyAgZWxzZSBpZiAoaHNkcmFtLT5TdGF0ZSA9PSBIQUxfU0RSQU1fU1RBVEVfUkVBRFkpCiAgIHsKLSAgICByZXR1cm4gIEhBTF9FUlJPUjsgCisgICAgLyogUHJvY2VzcyBMb2NrZWQgKi8KKyAgICBfX0hBTF9MT0NLKGhzZHJhbSk7CisKKyAgICAvKiBVcGRhdGUgdGhlIFNEUkFNIGNvbnRyb2xsZXIgc3RhdGUgKi8KKyAgICBoc2RyYW0tPlN0YXRlID0gSEFMX1NEUkFNX1NUQVRFX0JVU1k7CisKKyAgICAvKiBXcml0ZSBkYXRhIHRvIG1lbW9yeSAqLworICAgIGZvciAoc2l6ZSA9IEJ1ZmZlclNpemU7IHNpemUgIT0gMFU7IHNpemUtLSkKKyAgICB7CisgICAgICAqcFNkcmFtQWRkcmVzcyA9ICpwc3JjYnVmZjsKKyAgICAgIHBzcmNidWZmKys7CisgICAgICBwU2RyYW1BZGRyZXNzKys7CisgICAgfQorCisgICAgLyogVXBkYXRlIHRoZSBTRFJBTSBjb250cm9sbGVyIHN0YXRlICovCisgICAgaHNkcmFtLT5TdGF0ZSA9IEhBTF9TRFJBTV9TVEFURV9SRUFEWTsKKworICAgIC8qIFByb2Nlc3MgVW5sb2NrZWQgKi8KKyAgICBfX0hBTF9VTkxPQ0soaHNkcmFtKTsKICAgfQotICAKLSAgLyogV3JpdGUgZGF0YSB0byBtZW1vcnkgKi8KLSAgZm9yKDsgQnVmZmVyU2l6ZSAhPSAwOyBCdWZmZXJTaXplLS0pCisgIGVsc2UKICAgewotICAgICooX19JTyB1aW50MzJfdCAqKXBTZHJhbUFkZHJlc3MgPSAqcFNyY0J1ZmZlcjsKLSAgICBwU3JjQnVmZmVyKys7Ci0gICAgcFNkcmFtQWRkcmVzcysrOyAgICAgICAgICAKKyAgICByZXR1cm4gIEhBTF9FUlJPUjsKICAgfQotICAKLSAgLyogUHJvY2VzcyBVbmxvY2tlZCAqLwotICBfX0hBTF9VTkxPQ0soaHNkcmFtKTsgICAgCi0gIAotICByZXR1cm4gSEFMX09LOyAgCisKKyAgcmV0dXJuIEhBTF9PSzsKIH0KIAogLyoqCi0gICogQGJyaWVmICBSZWFkcyBhIFdvcmRzIGRhdGEgZnJvbSB0aGUgU0RSQU0gbWVtb3J5IHVzaW5nIERNQSB0cmFuc2Zlci4gCisgICogQGJyaWVmICBSZWFkcyBhIFdvcmRzIGRhdGEgZnJvbSB0aGUgU0RSQU0gbWVtb3J5IHVzaW5nIERNQSB0cmFuc2Zlci4KICAgKiBAcGFyYW0gIGhzZHJhbSBwb2ludGVyIHRvIGEgU0RSQU1fSGFuZGxlVHlwZURlZiBzdHJ1Y3R1cmUgdGhhdCBjb250YWlucwogICAqICAgICAgICAgICAgICAgIHRoZSBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uIGZvciBTRFJBTSBtb2R1bGUuCiAgICogQHBhcmFtICBwQWRkcmVzcyBQb2ludGVyIHRvIHJlYWQgc3RhcnQgYWRkcmVzcwotICAqIEBwYXJhbSAgcERzdEJ1ZmZlciBQb2ludGVyIHRvIGRlc3RpbmF0aW9uIGJ1ZmZlciAgCisgICogQHBhcmFtICBwRHN0QnVmZmVyIFBvaW50ZXIgdG8gZGVzdGluYXRpb24gYnVmZmVyCiAgICogQHBhcmFtICBCdWZmZXJTaXplIFNpemUgb2YgdGhlIGJ1ZmZlciB0byByZWFkIGZyb20gbWVtb3J5CiAgICogQHJldHZhbCBIQUwgc3RhdHVzCiAgICovCi1IQUxfU3RhdHVzVHlwZURlZiBIQUxfU0RSQU1fUmVhZF9ETUEoU0RSQU1fSGFuZGxlVHlwZURlZiAqaHNkcmFtLCB1aW50MzJfdCAqcEFkZHJlc3MsIHVpbnQzMl90ICpwRHN0QnVmZmVyLCB1aW50MzJfdCBCdWZmZXJTaXplKQorSEFMX1N0YXR1c1R5cGVEZWYgSEFMX1NEUkFNX1JlYWRfRE1BKFNEUkFNX0hhbmRsZVR5cGVEZWYgKmhzZHJhbSwgdWludDMyX3QgKnBBZGRyZXNzLCB1aW50MzJfdCAqcERzdEJ1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBCdWZmZXJTaXplKQogewotICB1aW50MzJfdCB0bXAgPSAwOwotICAgIAotICAvKiBQcm9jZXNzIExvY2tlZCAqLwotICBfX0hBTF9MT0NLKGhzZHJhbSk7Ci0gIAotICAvKiBDaGVjayB0aGUgU0RSQU0gY29udHJvbGxlciBzdGF0ZSAqLyAgCi0gIHRtcCA9IGhzZHJhbS0+U3RhdGU7Ci0gIAotICBpZih0bXAgPT0gSEFMX1NEUkFNX1NUQVRFX0JVU1kpCisgIEhBTF9TdGF0dXNUeXBlRGVmIHN0YXR1czsKKyAgSEFMX1NEUkFNX1N0YXRlVHlwZURlZiBzdGF0ZSA9IGhzZHJhbS0+U3RhdGU7CisKKyAgLyogQ2hlY2sgdGhlIFNEUkFNIGNvbnRyb2xsZXIgc3RhdGUgKi8KKyAgaWYgKHN0YXRlID09IEhBTF9TRFJBTV9TVEFURV9CVVNZKQogICB7Ci0gICAgcmV0dXJuIEhBTF9CVVNZOworICAgIHN0YXR1cyA9IEhBTF9CVVNZOwogICB9Ci0gIGVsc2UgaWYodG1wID09IEhBTF9TRFJBTV9TVEFURV9QUkVDSEFSR0VEKQorICBlbHNlIGlmICgoc3RhdGUgPT0gSEFMX1NEUkFNX1NUQVRFX1JFQURZKSB8fCAoc3RhdGUgPT0gSEFMX1NEUkFNX1NUQVRFX1dSSVRFX1BST1RFQ1RFRCkpCiAgIHsKLSAgICByZXR1cm4gIEhBTF9FUlJPUjsgCi0gIH0gIAotICAKLSAgLyogQ29uZmlndXJlIERNQSB1c2VyIGNhbGxiYWNrcyAqLwotICBoc2RyYW0tPmhkbWEtPlhmZXJDcGx0Q2FsbGJhY2sgID0gSEFMX1NEUkFNX0RNQV9YZmVyQ3BsdENhbGxiYWNrOwotICBoc2RyYW0tPmhkbWEtPlhmZXJFcnJvckNhbGxiYWNrID0gSEFMX1NEUkFNX0RNQV9YZmVyRXJyb3JDYWxsYmFjazsKLSAgCi0gIC8qIEVuYWJsZSB0aGUgRE1BIFN0cmVhbSAqLwotICBIQUxfRE1BX1N0YXJ0X0lUKGhzZHJhbS0+aGRtYSwgKHVpbnQzMl90KXBBZGRyZXNzLCAodWludDMyX3QpcERzdEJ1ZmZlciwgKHVpbnQzMl90KUJ1ZmZlclNpemUpOwotICAKLSAgLyogUHJvY2VzcyBVbmxvY2tlZCAqLwotICBfX0hBTF9VTkxPQ0soaHNkcmFtKTsgIAotICAKLSAgcmV0dXJuIEhBTF9PSzsgCisgICAgLyogUHJvY2VzcyBMb2NrZWQgKi8KKyAgICBfX0hBTF9MT0NLKGhzZHJhbSk7CisKKyAgICAvKiBVcGRhdGUgdGhlIFNEUkFNIGNvbnRyb2xsZXIgc3RhdGUgKi8KKyAgICBoc2RyYW0tPlN0YXRlID0gSEFMX1NEUkFNX1NUQVRFX0JVU1k7CisKKyAgICAvKiBDb25maWd1cmUgRE1BIHVzZXIgY2FsbGJhY2tzICovCisgICAgaWYgKHN0YXRlID09IEhBTF9TRFJBTV9TVEFURV9SRUFEWSkKKyAgICB7CisgICAgICBoc2RyYW0tPmhkbWEtPlhmZXJDcGx0Q2FsbGJhY2sgPSBTRFJBTV9ETUFDcGx0OworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgaHNkcmFtLT5oZG1hLT5YZmVyQ3BsdENhbGxiYWNrID0gU0RSQU1fRE1BQ3BsdFByb3Q7CisgICAgfQorICAgIGhzZHJhbS0+aGRtYS0+WGZlckVycm9yQ2FsbGJhY2sgPSBTRFJBTV9ETUFFcnJvcjsKKworICAgIC8qIEVuYWJsZSB0aGUgRE1BIFN0cmVhbSAqLworICAgIHN0YXR1cyA9IEhBTF9ETUFfU3RhcnRfSVQoaHNkcmFtLT5oZG1hLCAodWludDMyX3QpcEFkZHJlc3MsICh1aW50MzJfdClwRHN0QnVmZmVyLCAodWludDMyX3QpQnVmZmVyU2l6ZSk7CisKKyAgICAvKiBQcm9jZXNzIFVubG9ja2VkICovCisgICAgX19IQUxfVU5MT0NLKGhzZHJhbSk7CisgIH0KKyAgZWxzZQorICB7CisgICAgc3RhdHVzID0gSEFMX0VSUk9SOworICB9CisKKyAgcmV0dXJuIHN0YXR1czsKIH0KIAogLyoqCkBAIC02NTAsNDEgKzc0MSw0NiBAQAogICAqIEBwYXJhbSAgaHNkcmFtIHBvaW50ZXIgdG8gYSBTRFJBTV9IYW5kbGVUeXBlRGVmIHN0cnVjdHVyZSB0aGF0IGNvbnRhaW5zCiAgICogICAgICAgICAgICAgICAgdGhlIGNvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb24gZm9yIFNEUkFNIG1vZHVsZS4KICAgKiBAcGFyYW0gIHBBZGRyZXNzIFBvaW50ZXIgdG8gd3JpdGUgc3RhcnQgYWRkcmVzcwotICAqIEBwYXJhbSAgcFNyY0J1ZmZlciBQb2ludGVyIHRvIHNvdXJjZSBidWZmZXIgdG8gd3JpdGUgIAorICAqIEBwYXJhbSAgcFNyY0J1ZmZlciBQb2ludGVyIHRvIHNvdXJjZSBidWZmZXIgdG8gd3JpdGUKICAgKiBAcGFyYW0gIEJ1ZmZlclNpemUgU2l6ZSBvZiB0aGUgYnVmZmVyIHRvIHdyaXRlIHRvIG1lbW9yeQogICAqIEByZXR2YWwgSEFMIHN0YXR1cwogICAqLwotSEFMX1N0YXR1c1R5cGVEZWYgSEFMX1NEUkFNX1dyaXRlX0RNQShTRFJBTV9IYW5kbGVUeXBlRGVmICpoc2RyYW0sIHVpbnQzMl90ICpwQWRkcmVzcywgdWludDMyX3QgKnBTcmNCdWZmZXIsIHVpbnQzMl90IEJ1ZmZlclNpemUpCitIQUxfU3RhdHVzVHlwZURlZiBIQUxfU0RSQU1fV3JpdGVfRE1BKFNEUkFNX0hhbmRsZVR5cGVEZWYgKmhzZHJhbSwgdWludDMyX3QgKnBBZGRyZXNzLCB1aW50MzJfdCAqcFNyY0J1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgQnVmZmVyU2l6ZSkKIHsKLSAgdWludDMyX3QgdG1wID0gMDsKLSAgCi0gIC8qIFByb2Nlc3MgTG9ja2VkICovCi0gIF9fSEFMX0xPQ0soaHNkcmFtKTsKLSAgCi0gIC8qIENoZWNrIHRoZSBTRFJBTSBjb250cm9sbGVyIHN0YXRlICovICAKLSAgdG1wID0gaHNkcmFtLT5TdGF0ZTsKLSAgCi0gIGlmKHRtcCA9PSBIQUxfU0RSQU1fU1RBVEVfQlVTWSkKKyAgSEFMX1N0YXR1c1R5cGVEZWYgc3RhdHVzOworCisgIC8qIENoZWNrIHRoZSBTRFJBTSBjb250cm9sbGVyIHN0YXRlICovCisgIGlmIChoc2RyYW0tPlN0YXRlID09IEhBTF9TRFJBTV9TVEFURV9CVVNZKQogICB7Ci0gICAgcmV0dXJuIEhBTF9CVVNZOworICAgIHN0YXR1cyA9IEhBTF9CVVNZOwogICB9Ci0gIGVsc2UgaWYoKHRtcCA9PSBIQUxfU0RSQU1fU1RBVEVfUFJFQ0hBUkdFRCkgfHwgKHRtcCA9PSBIQUxfU0RSQU1fU1RBVEVfV1JJVEVfUFJPVEVDVEVEKSkKKyAgZWxzZSBpZiAoaHNkcmFtLT5TdGF0ZSA9PSBIQUxfU0RSQU1fU1RBVEVfUkVBRFkpCiAgIHsKLSAgICByZXR1cm4gIEhBTF9FUlJPUjsgCi0gIH0gIAotICAKLSAgLyogQ29uZmlndXJlIERNQSB1c2VyIGNhbGxiYWNrcyAqLwotICBoc2RyYW0tPmhkbWEtPlhmZXJDcGx0Q2FsbGJhY2sgID0gSEFMX1NEUkFNX0RNQV9YZmVyQ3BsdENhbGxiYWNrOwotICBoc2RyYW0tPmhkbWEtPlhmZXJFcnJvckNhbGxiYWNrID0gSEFMX1NEUkFNX0RNQV9YZmVyRXJyb3JDYWxsYmFjazsKLSAgCi0gIC8qIEVuYWJsZSB0aGUgRE1BIFN0cmVhbSAqLwotICBIQUxfRE1BX1N0YXJ0X0lUKGhzZHJhbS0+aGRtYSwgKHVpbnQzMl90KXBTcmNCdWZmZXIsICh1aW50MzJfdClwQWRkcmVzcywgKHVpbnQzMl90KUJ1ZmZlclNpemUpOwotICAKLSAgLyogUHJvY2VzcyBVbmxvY2tlZCAqLwotICBfX0hBTF9VTkxPQ0soaHNkcmFtKTsKLSAgCi0gIHJldHVybiBIQUxfT0s7CisgICAgLyogUHJvY2VzcyBMb2NrZWQgKi8KKyAgICBfX0hBTF9MT0NLKGhzZHJhbSk7CisKKyAgICAvKiBVcGRhdGUgdGhlIFNEUkFNIGNvbnRyb2xsZXIgc3RhdGUgKi8KKyAgICBoc2RyYW0tPlN0YXRlID0gSEFMX1NEUkFNX1NUQVRFX0JVU1k7CisKKyAgICAvKiBDb25maWd1cmUgRE1BIHVzZXIgY2FsbGJhY2tzICovCisgICAgaHNkcmFtLT5oZG1hLT5YZmVyQ3BsdENhbGxiYWNrID0gU0RSQU1fRE1BQ3BsdDsKKyAgICBoc2RyYW0tPmhkbWEtPlhmZXJFcnJvckNhbGxiYWNrID0gU0RSQU1fRE1BRXJyb3I7CisKKyAgICAvKiBFbmFibGUgdGhlIERNQSBTdHJlYW0gKi8KKyAgICBzdGF0dXMgPSBIQUxfRE1BX1N0YXJ0X0lUKGhzZHJhbS0+aGRtYSwgKHVpbnQzMl90KXBTcmNCdWZmZXIsICh1aW50MzJfdClwQWRkcmVzcywgKHVpbnQzMl90KUJ1ZmZlclNpemUpOworCisgICAgLyogUHJvY2VzcyBVbmxvY2tlZCAqLworICAgIF9fSEFMX1VOTE9DSyhoc2RyYW0pOworICB9CisgIGVsc2UKKyAgeworICAgIHN0YXR1cyA9IEhBTF9FUlJPUjsKKyAgfQorCisgIHJldHVybiBzdGF0dXM7CiB9CisKICNpZiAoVVNFX0hBTF9TRFJBTV9SRUdJU1RFUl9DQUxMQkFDS1MgPT0gMSkKIC8qKgogICAqIEBicmllZiAgUmVnaXN0ZXIgYSBVc2VyIFNEUkFNIENhbGxiYWNrCkBAIC02OTgsNTMgKzc5NCw1NCBAQAogICAqIEBwYXJhbSBwQ2FsbGJhY2sgOiBwb2ludGVyIHRvIHRoZSBDYWxsYmFjayBmdW5jdGlvbgogICAqIEByZXR2YWwgc3RhdHVzCiAgICovCi1IQUxfU3RhdHVzVHlwZURlZiBIQUxfU0RSQU1fUmVnaXN0ZXJDYWxsYmFjayAoU0RSQU1fSGFuZGxlVHlwZURlZiAqaHNkcmFtLCBIQUxfU0RSQU1fQ2FsbGJhY2tJRFR5cGVEZWYgQ2FsbGJhY2tJZCwgcFNEUkFNX0NhbGxiYWNrVHlwZURlZiBwQ2FsbGJhY2spCitIQUxfU3RhdHVzVHlwZURlZiBIQUxfU0RSQU1fUmVnaXN0ZXJDYWxsYmFjayhTRFJBTV9IYW5kbGVUeXBlRGVmICpoc2RyYW0sIEhBTF9TRFJBTV9DYWxsYmFja0lEVHlwZURlZiBDYWxsYmFja0lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcFNEUkFNX0NhbGxiYWNrVHlwZURlZiBwQ2FsbGJhY2spCiB7CiAgIEhBTF9TdGF0dXNUeXBlRGVmIHN0YXR1cyA9IEhBTF9PSzsKICAgSEFMX1NEUkFNX1N0YXRlVHlwZURlZiBzdGF0ZTsKLSAgCi0gIGlmKHBDYWxsYmFjayA9PSBOVUxMKQorCisgIGlmIChwQ2FsbGJhY2sgPT0gTlVMTCkKICAgewogICAgIHJldHVybiBIQUxfRVJST1I7CiAgIH0KIAogICAvKiBQcm9jZXNzIGxvY2tlZCAqLwogICBfX0hBTF9MT0NLKGhzZHJhbSk7Ci0gIAorCiAgIHN0YXRlID0gaHNkcmFtLT5TdGF0ZTsKLSAgaWYoKHN0YXRlID09IEhBTF9TRFJBTV9TVEFURV9SRUFEWSkgfHwgKHN0YXRlID09IEhBTF9TRFJBTV9TVEFURV9XUklURV9QUk9URUNURUQpKQorICBpZiAoKHN0YXRlID09IEhBTF9TRFJBTV9TVEFURV9SRUFEWSkgfHwgKHN0YXRlID09IEhBTF9TRFJBTV9TVEFURV9XUklURV9QUk9URUNURUQpKQogICB7CiAgICAgc3dpdGNoIChDYWxsYmFja0lkKQogICAgIHsKLSAgICBjYXNlIEhBTF9TRFJBTV9NU1BfSU5JVF9DQl9JRCA6Ci0gICAgICBoc2RyYW0tPk1zcEluaXRDYWxsYmFjayA9IHBDYWxsYmFjazsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgSEFMX1NEUkFNX01TUF9ERUlOSVRfQ0JfSUQgOgotICAgICAgaHNkcmFtLT5Nc3BEZUluaXRDYWxsYmFjayA9IHBDYWxsYmFjazsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgSEFMX1NEUkFNX1JFRlJFU0hfRVJSX0NCX0lEIDoKLSAgICAgIGhzZHJhbS0+UmVmcmVzaEVycm9yQ2FsbGJhY2sgPSBwQ2FsbGJhY2s7Ci0gICAgICBicmVhazsKLSAgICBkZWZhdWx0IDoKLSAgICAgIC8qIHVwZGF0ZSByZXR1cm4gc3RhdHVzICovCi0gICAgICBzdGF0dXMgPSAgSEFMX0VSUk9SOwotICAgICAgYnJlYWs7CisgICAgICBjYXNlIEhBTF9TRFJBTV9NU1BfSU5JVF9DQl9JRCA6CisgICAgICAgIGhzZHJhbS0+TXNwSW5pdENhbGxiYWNrID0gcENhbGxiYWNrOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgSEFMX1NEUkFNX01TUF9ERUlOSVRfQ0JfSUQgOgorICAgICAgICBoc2RyYW0tPk1zcERlSW5pdENhbGxiYWNrID0gcENhbGxiYWNrOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgSEFMX1NEUkFNX1JFRlJFU0hfRVJSX0NCX0lEIDoKKyAgICAgICAgaHNkcmFtLT5SZWZyZXNoRXJyb3JDYWxsYmFjayA9IHBDYWxsYmFjazsKKyAgICAgICAgYnJlYWs7CisgICAgICBkZWZhdWx0IDoKKyAgICAgICAgLyogdXBkYXRlIHJldHVybiBzdGF0dXMgKi8KKyAgICAgICAgc3RhdHVzID0gIEhBTF9FUlJPUjsKKyAgICAgICAgYnJlYWs7CiAgICAgfQogICB9Ci0gIGVsc2UgaWYoaHNkcmFtLT5TdGF0ZSA9PSBIQUxfU0RSQU1fU1RBVEVfUkVTRVQpCisgIGVsc2UgaWYgKGhzZHJhbS0+U3RhdGUgPT0gSEFMX1NEUkFNX1NUQVRFX1JFU0VUKQogICB7CiAgICAgc3dpdGNoIChDYWxsYmFja0lkKQogICAgIHsKLSAgICBjYXNlIEhBTF9TRFJBTV9NU1BfSU5JVF9DQl9JRCA6Ci0gICAgICBoc2RyYW0tPk1zcEluaXRDYWxsYmFjayA9IHBDYWxsYmFjazsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgSEFMX1NEUkFNX01TUF9ERUlOSVRfQ0JfSUQgOgotICAgICAgaHNkcmFtLT5Nc3BEZUluaXRDYWxsYmFjayA9IHBDYWxsYmFjazsKLSAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQgOgotICAgICAgLyogdXBkYXRlIHJldHVybiBzdGF0dXMgKi8KLSAgICAgIHN0YXR1cyA9ICBIQUxfRVJST1I7Ci0gICAgICBicmVhazsKKyAgICAgIGNhc2UgSEFMX1NEUkFNX01TUF9JTklUX0NCX0lEIDoKKyAgICAgICAgaHNkcmFtLT5Nc3BJbml0Q2FsbGJhY2sgPSBwQ2FsbGJhY2s7CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBIQUxfU0RSQU1fTVNQX0RFSU5JVF9DQl9JRCA6CisgICAgICAgIGhzZHJhbS0+TXNwRGVJbml0Q2FsbGJhY2sgPSBwQ2FsbGJhY2s7CisgICAgICAgIGJyZWFrOworICAgICAgZGVmYXVsdCA6CisgICAgICAgIC8qIHVwZGF0ZSByZXR1cm4gc3RhdHVzICovCisgICAgICAgIHN0YXR1cyA9ICBIQUxfRVJST1I7CisgICAgICAgIGJyZWFrOwogICAgIH0KICAgfQogICBlbHNlCkBAIC03NTcsNiArODU0LDcgQEAKICAgX19IQUxfVU5MT0NLKGhzZHJhbSk7CiAgIHJldHVybiBzdGF0dXM7CiB9CisKIC8qKgogICAqIEBicmllZiAgVW5yZWdpc3RlciBhIFVzZXIgU0RSQU0gQ2FsbGJhY2sKICAgKiAgICAgICAgIFNEUkFNIENhbGxiYWNrIGlzIHJlZGlyZWN0ZWQgdG8gdGhlIHdlYWsgKHN1cmNoYXJnZWQpIHByZWRlZmluZWQgY2FsbGJhY2sKQEAgLTc3MCw1NCArODY4LDU0IEBACiAgICogICAgICAgICAgQGFyZyBAcmVmIEhBTF9TRFJBTV9ETUFfWEZFUl9FUlJfQ0JfSUQgICBTRFJBTSBETUEgWGZlciBFcnJvciBjYWxsYmFjayBJRAogICAqIEByZXR2YWwgc3RhdHVzCiAgICovCi1IQUxfU3RhdHVzVHlwZURlZiBIQUxfU0RSQU1fVW5SZWdpc3RlckNhbGxiYWNrIChTRFJBTV9IYW5kbGVUeXBlRGVmICpoc2RyYW0sIEhBTF9TRFJBTV9DYWxsYmFja0lEVHlwZURlZiBDYWxsYmFja0lkKQorSEFMX1N0YXR1c1R5cGVEZWYgSEFMX1NEUkFNX1VuUmVnaXN0ZXJDYWxsYmFjayhTRFJBTV9IYW5kbGVUeXBlRGVmICpoc2RyYW0sIEhBTF9TRFJBTV9DYWxsYmFja0lEVHlwZURlZiBDYWxsYmFja0lkKQogewogICBIQUxfU3RhdHVzVHlwZURlZiBzdGF0dXMgPSBIQUxfT0s7CiAgIEhBTF9TRFJBTV9TdGF0ZVR5cGVEZWYgc3RhdGU7Ci0gIAorCiAgIC8qIFByb2Nlc3MgbG9ja2VkICovCiAgIF9fSEFMX0xPQ0soaHNkcmFtKTsKIAogICBzdGF0ZSA9IGhzZHJhbS0+U3RhdGU7Ci0gIGlmKChzdGF0ZSA9PSBIQUxfU0RSQU1fU1RBVEVfUkVBRFkpIHx8IChzdGF0ZSA9PSBIQUxfU0RSQU1fU1RBVEVfV1JJVEVfUFJPVEVDVEVEKSkKKyAgaWYgKChzdGF0ZSA9PSBIQUxfU0RSQU1fU1RBVEVfUkVBRFkpIHx8IChzdGF0ZSA9PSBIQUxfU0RSQU1fU1RBVEVfV1JJVEVfUFJPVEVDVEVEKSkKICAgewogICAgIHN3aXRjaCAoQ2FsbGJhY2tJZCkKICAgICB7Ci0gICAgY2FzZSBIQUxfU0RSQU1fTVNQX0lOSVRfQ0JfSUQgOgotICAgICAgaHNkcmFtLT5Nc3BJbml0Q2FsbGJhY2sgPSBIQUxfU0RSQU1fTXNwSW5pdDsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgSEFMX1NEUkFNX01TUF9ERUlOSVRfQ0JfSUQgOgotICAgICAgaHNkcmFtLT5Nc3BEZUluaXRDYWxsYmFjayA9IEhBTF9TRFJBTV9Nc3BEZUluaXQ7Ci0gICAgICBicmVhazsKLSAgICBjYXNlIEhBTF9TRFJBTV9SRUZSRVNIX0VSUl9DQl9JRCA6Ci0gICAgICBoc2RyYW0tPlJlZnJlc2hFcnJvckNhbGxiYWNrID0gSEFMX1NEUkFNX1JlZnJlc2hFcnJvckNhbGxiYWNrOwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSBIQUxfU0RSQU1fRE1BX1hGRVJfQ1BMVF9DQl9JRCA6Ci0gICAgICBoc2RyYW0tPkRtYVhmZXJDcGx0Q2FsbGJhY2sgPSBIQUxfU0RSQU1fRE1BX1hmZXJDcGx0Q2FsbGJhY2s7Ci0gICAgICBicmVhazsKLSAgICBjYXNlIEhBTF9TRFJBTV9ETUFfWEZFUl9FUlJfQ0JfSUQgOgotICAgICAgaHNkcmFtLT5EbWFYZmVyRXJyb3JDYWxsYmFjayA9IEhBTF9TRFJBTV9ETUFfWGZlckVycm9yQ2FsbGJhY2s7Ci0gICAgICBicmVhazsKLSAgICBkZWZhdWx0IDoKLSAgICAgIC8qIHVwZGF0ZSByZXR1cm4gc3RhdHVzICovCi0gICAgICBzdGF0dXMgPSAgSEFMX0VSUk9SOwotICAgICAgYnJlYWs7CisgICAgICBjYXNlIEhBTF9TRFJBTV9NU1BfSU5JVF9DQl9JRCA6CisgICAgICAgIGhzZHJhbS0+TXNwSW5pdENhbGxiYWNrID0gSEFMX1NEUkFNX01zcEluaXQ7CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBIQUxfU0RSQU1fTVNQX0RFSU5JVF9DQl9JRCA6CisgICAgICAgIGhzZHJhbS0+TXNwRGVJbml0Q2FsbGJhY2sgPSBIQUxfU0RSQU1fTXNwRGVJbml0OworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgSEFMX1NEUkFNX1JFRlJFU0hfRVJSX0NCX0lEIDoKKyAgICAgICAgaHNkcmFtLT5SZWZyZXNoRXJyb3JDYWxsYmFjayA9IEhBTF9TRFJBTV9SZWZyZXNoRXJyb3JDYWxsYmFjazsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEhBTF9TRFJBTV9ETUFfWEZFUl9DUExUX0NCX0lEIDoKKyAgICAgICAgaHNkcmFtLT5EbWFYZmVyQ3BsdENhbGxiYWNrID0gSEFMX1NEUkFNX0RNQV9YZmVyQ3BsdENhbGxiYWNrOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgSEFMX1NEUkFNX0RNQV9YRkVSX0VSUl9DQl9JRCA6CisgICAgICAgIGhzZHJhbS0+RG1hWGZlckVycm9yQ2FsbGJhY2sgPSBIQUxfU0RSQU1fRE1BX1hmZXJFcnJvckNhbGxiYWNrOworICAgICAgICBicmVhazsKKyAgICAgIGRlZmF1bHQgOgorICAgICAgICAvKiB1cGRhdGUgcmV0dXJuIHN0YXR1cyAqLworICAgICAgICBzdGF0dXMgPSAgSEFMX0VSUk9SOworICAgICAgICBicmVhazsKICAgICB9CiAgIH0KLSAgZWxzZSBpZihoc2RyYW0tPlN0YXRlID09IEhBTF9TRFJBTV9TVEFURV9SRVNFVCkKKyAgZWxzZSBpZiAoaHNkcmFtLT5TdGF0ZSA9PSBIQUxfU0RSQU1fU1RBVEVfUkVTRVQpCiAgIHsKICAgICBzd2l0Y2ggKENhbGxiYWNrSWQpCiAgICAgewotICAgIGNhc2UgSEFMX1NEUkFNX01TUF9JTklUX0NCX0lEIDoKLSAgICAgIGhzZHJhbS0+TXNwSW5pdENhbGxiYWNrID0gSEFMX1NEUkFNX01zcEluaXQ7Ci0gICAgICBicmVhazsKLSAgICBjYXNlIEhBTF9TRFJBTV9NU1BfREVJTklUX0NCX0lEIDoKLSAgICAgIGhzZHJhbS0+TXNwRGVJbml0Q2FsbGJhY2sgPSBIQUxfU0RSQU1fTXNwRGVJbml0OwotICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdCA6Ci0gICAgICAvKiB1cGRhdGUgcmV0dXJuIHN0YXR1cyAqLwotICAgICAgc3RhdHVzID0gIEhBTF9FUlJPUjsKLSAgICAgIGJyZWFrOworICAgICAgY2FzZSBIQUxfU0RSQU1fTVNQX0lOSVRfQ0JfSUQgOgorICAgICAgICBoc2RyYW0tPk1zcEluaXRDYWxsYmFjayA9IEhBTF9TRFJBTV9Nc3BJbml0OworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgSEFMX1NEUkFNX01TUF9ERUlOSVRfQ0JfSUQgOgorICAgICAgICBoc2RyYW0tPk1zcERlSW5pdENhbGxiYWNrID0gSEFMX1NEUkFNX01zcERlSW5pdDsKKyAgICAgICAgYnJlYWs7CisgICAgICBkZWZhdWx0IDoKKyAgICAgICAgLyogdXBkYXRlIHJldHVybiBzdGF0dXMgKi8KKyAgICAgICAgc3RhdHVzID0gIEhBTF9FUlJPUjsKKyAgICAgICAgYnJlYWs7CiAgICAgfQogICB9CiAgIGVsc2UKQEAgLTg0MiwxMiArOTQwLDEzIEBACiAgICogQHBhcmFtIHBDYWxsYmFjayA6IHBvaW50ZXIgdG8gdGhlIENhbGxiYWNrIGZ1bmN0aW9uCiAgICogQHJldHZhbCBzdGF0dXMKICAgKi8KLUhBTF9TdGF0dXNUeXBlRGVmIEhBTF9TRFJBTV9SZWdpc3RlckRtYUNhbGxiYWNrKFNEUkFNX0hhbmRsZVR5cGVEZWYgKmhzZHJhbSwgSEFMX1NEUkFNX0NhbGxiYWNrSURUeXBlRGVmIENhbGxiYWNrSWQsIHBTRFJBTV9EbWFDYWxsYmFja1R5cGVEZWYgcENhbGxiYWNrKQorSEFMX1N0YXR1c1R5cGVEZWYgSEFMX1NEUkFNX1JlZ2lzdGVyRG1hQ2FsbGJhY2soU0RSQU1fSGFuZGxlVHlwZURlZiAqaHNkcmFtLCBIQUxfU0RSQU1fQ2FsbGJhY2tJRFR5cGVEZWYgQ2FsbGJhY2tJZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBTRFJBTV9EbWFDYWxsYmFja1R5cGVEZWYgcENhbGxiYWNrKQogewogICBIQUxfU3RhdHVzVHlwZURlZiBzdGF0dXMgPSBIQUxfT0s7CiAgIEhBTF9TRFJBTV9TdGF0ZVR5cGVEZWYgc3RhdGU7Ci0gIAotICBpZihwQ2FsbGJhY2sgPT0gTlVMTCkKKworICBpZiAocENhbGxiYWNrID09IE5VTEwpCiAgIHsKICAgICByZXR1cm4gSEFMX0VSUk9SOwogICB9CkBAIC04NTYsMjAgKzk1NSwyMCBAQAogICBfX0hBTF9MT0NLKGhzZHJhbSk7CiAKICAgc3RhdGUgPSBoc2RyYW0tPlN0YXRlOwotICBpZigoc3RhdGUgPT0gSEFMX1NEUkFNX1NUQVRFX1JFQURZKSB8fCAoc3RhdGUgPT0gSEFMX1NEUkFNX1NUQVRFX1dSSVRFX1BST1RFQ1RFRCkpCisgIGlmICgoc3RhdGUgPT0gSEFMX1NEUkFNX1NUQVRFX1JFQURZKSB8fCAoc3RhdGUgPT0gSEFMX1NEUkFNX1NUQVRFX1dSSVRFX1BST1RFQ1RFRCkpCiAgIHsKICAgICBzd2l0Y2ggKENhbGxiYWNrSWQpCiAgICAgewotICAgIGNhc2UgSEFMX1NEUkFNX0RNQV9YRkVSX0NQTFRfQ0JfSUQgOgotICAgICAgaHNkcmFtLT5EbWFYZmVyQ3BsdENhbGxiYWNrID0gcENhbGxiYWNrOwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSBIQUxfU0RSQU1fRE1BX1hGRVJfRVJSX0NCX0lEIDoKLSAgICAgIGhzZHJhbS0+RG1hWGZlckVycm9yQ2FsbGJhY2sgPSBwQ2FsbGJhY2s7Ci0gICAgICBicmVhazsKLSAgICBkZWZhdWx0IDoKLSAgICAgIC8qIHVwZGF0ZSByZXR1cm4gc3RhdHVzICovCi0gICAgICBzdGF0dXMgPSAgSEFMX0VSUk9SOwotICAgICAgYnJlYWs7CisgICAgICBjYXNlIEhBTF9TRFJBTV9ETUFfWEZFUl9DUExUX0NCX0lEIDoKKyAgICAgICAgaHNkcmFtLT5EbWFYZmVyQ3BsdENhbGxiYWNrID0gcENhbGxiYWNrOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgSEFMX1NEUkFNX0RNQV9YRkVSX0VSUl9DQl9JRCA6CisgICAgICAgIGhzZHJhbS0+RG1hWGZlckVycm9yQ2FsbGJhY2sgPSBwQ2FsbGJhY2s7CisgICAgICAgIGJyZWFrOworICAgICAgZGVmYXVsdCA6CisgICAgICAgIC8qIHVwZGF0ZSByZXR1cm4gc3RhdHVzICovCisgICAgICAgIHN0YXR1cyA9ICBIQUxfRVJST1I7CisgICAgICAgIGJyZWFrOwogICAgIH0KICAgfQogICBlbHNlCkBAIC04ODIsMTkgKzk4MSwxOSBAQAogICBfX0hBTF9VTkxPQ0soaHNkcmFtKTsKICAgcmV0dXJuIHN0YXR1czsKIH0KLSNlbmRpZgorI2VuZGlmIC8qIFVTRV9IQUxfU0RSQU1fUkVHSVNURVJfQ0FMTEJBQ0tTICovCiAKIC8qKgogICAqIEB9CiAgICovCi0gIAotLyoqIEBkZWZncm91cCBTRFJBTV9FeHBvcnRlZF9GdW5jdGlvbnNfR3JvdXAzIENvbnRyb2wgZnVuY3Rpb25zIAotICogIEBicmllZiAgIG1hbmFnZW1lbnQgZnVuY3Rpb25zIAotICoKLUB2ZXJiYXRpbSAgIAorCisvKiogQGRlZmdyb3VwIFNEUkFNX0V4cG9ydGVkX0Z1bmN0aW9uc19Hcm91cDMgQ29udHJvbCBmdW5jdGlvbnMKKyAgKiAgQGJyaWVmICAgbWFuYWdlbWVudCBmdW5jdGlvbnMKKyAgKgorQHZlcmJhdGltCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICAgICAgICAgICAgICAgICAgICAgICAgICMjIyMjIFNEUkFNIENvbnRyb2wgZnVuY3Rpb25zICMjIyMjCi0gID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAgCisgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBbLi5dCiAgICAgVGhpcyBzdWJzZWN0aW9uIHByb3ZpZGVzIGEgc2V0IG9mIGZ1bmN0aW9ucyBhbGxvd2luZyB0byBjb250cm9sIGR5bmFtaWNhbGx5CiAgICAgdGhlIFNEUkFNIGludGVyZmFjZS4KQEAgLTkxMCwyMyArMTAwOSwyOSBAQAogICAqIEByZXR2YWwgSEFMIHN0YXR1cwogICAqLwogSEFMX1N0YXR1c1R5cGVEZWYgSEFMX1NEUkFNX1dyaXRlUHJvdGVjdGlvbl9FbmFibGUoU0RSQU1fSGFuZGxlVHlwZURlZiAqaHNkcmFtKQoteyAKLSAgLyogQ2hlY2sgdGhlIFNEUkFNIGNvbnRyb2xsZXIgc3RhdGUgKi8gCi0gIGlmKGhzZHJhbS0+U3RhdGUgPT0gSEFMX1NEUkFNX1NUQVRFX0JVU1kpCit7CisgIC8qIENoZWNrIHRoZSBTRFJBTSBjb250cm9sbGVyIHN0YXRlICovCisgIGlmIChoc2RyYW0tPlN0YXRlID09IEhBTF9TRFJBTV9TVEFURV9CVVNZKQogICB7CiAgICAgcmV0dXJuIEhBTF9CVVNZOwogICB9Ci0gIAotICAvKiBVcGRhdGUgdGhlIFNEUkFNIHN0YXRlICovCi0gIGhzZHJhbS0+U3RhdGUgPSBIQUxfU0RSQU1fU1RBVEVfQlVTWTsKLSAgCi0gIC8qIEVuYWJsZSB3cml0ZSBwcm90ZWN0aW9uICovCi0gIEZNQ19TRFJBTV9Xcml0ZVByb3RlY3Rpb25fRW5hYmxlKGhzZHJhbS0+SW5zdGFuY2UsIGhzZHJhbS0+SW5pdC5TREJhbmspOwotICAKLSAgLyogVXBkYXRlIHRoZSBTRFJBTSBzdGF0ZSAqLwotICBoc2RyYW0tPlN0YXRlID0gSEFMX1NEUkFNX1NUQVRFX1dSSVRFX1BST1RFQ1RFRDsKLSAgCi0gIHJldHVybiBIQUxfT0s7ICAKKyAgZWxzZSBpZiAoaHNkcmFtLT5TdGF0ZSA9PSBIQUxfU0RSQU1fU1RBVEVfUkVBRFkpCisgIHsKKyAgICAvKiBVcGRhdGUgdGhlIFNEUkFNIHN0YXRlICovCisgICAgaHNkcmFtLT5TdGF0ZSA9IEhBTF9TRFJBTV9TVEFURV9CVVNZOworCisgICAgLyogRW5hYmxlIHdyaXRlIHByb3RlY3Rpb24gKi8KKyAgICAodm9pZClGTUNfU0RSQU1fV3JpdGVQcm90ZWN0aW9uX0VuYWJsZShoc2RyYW0tPkluc3RhbmNlLCBoc2RyYW0tPkluaXQuU0RCYW5rKTsKKworICAgIC8qIFVwZGF0ZSB0aGUgU0RSQU0gc3RhdGUgKi8KKyAgICBoc2RyYW0tPlN0YXRlID0gSEFMX1NEUkFNX1NUQVRFX1dSSVRFX1BST1RFQ1RFRDsKKyAgfQorICBlbHNlCisgIHsKKyAgICByZXR1cm4gSEFMX0VSUk9SOworICB9CisKKyAgcmV0dXJuIEhBTF9PSzsKIH0KIAogLyoqCkBAIC05MzcsMjEgKzEwNDIsMjkgQEAKICAgKi8KIEhBTF9TdGF0dXNUeXBlRGVmIEhBTF9TRFJBTV9Xcml0ZVByb3RlY3Rpb25fRGlzYWJsZShTRFJBTV9IYW5kbGVUeXBlRGVmICpoc2RyYW0pCiB7CisgIEhBTF9TRFJBTV9TdGF0ZVR5cGVEZWYgc3RhdGUgPSBoc2RyYW0tPlN0YXRlOworCiAgIC8qIENoZWNrIHRoZSBTRFJBTSBjb250cm9sbGVyIHN0YXRlICovCi0gIGlmKGhzZHJhbS0+U3RhdGUgPT0gSEFMX1NEUkFNX1NUQVRFX0JVU1kpCisgIGlmIChzdGF0ZSA9PSBIQUxfU0RSQU1fU1RBVEVfQlVTWSkKICAgewogICAgIHJldHVybiBIQUxfQlVTWTsKICAgfQotICAKLSAgLyogVXBkYXRlIHRoZSBTRFJBTSBzdGF0ZSAqLwotICBoc2RyYW0tPlN0YXRlID0gSEFMX1NEUkFNX1NUQVRFX0JVU1k7Ci0gIAotICAvKiBEaXNhYmxlIHdyaXRlIHByb3RlY3Rpb24gKi8KLSAgRk1DX1NEUkFNX1dyaXRlUHJvdGVjdGlvbl9EaXNhYmxlKGhzZHJhbS0+SW5zdGFuY2UsIGhzZHJhbS0+SW5pdC5TREJhbmspOwotICAKLSAgLyogVXBkYXRlIHRoZSBTRFJBTSBzdGF0ZSAqLwotICBoc2RyYW0tPlN0YXRlID0gSEFMX1NEUkFNX1NUQVRFX1JFQURZOwotICAKKyAgZWxzZSBpZiAoc3RhdGUgPT0gSEFMX1NEUkFNX1NUQVRFX1dSSVRFX1BST1RFQ1RFRCkKKyAgeworICAgIC8qIFVwZGF0ZSB0aGUgU0RSQU0gc3RhdGUgKi8KKyAgICBoc2RyYW0tPlN0YXRlID0gSEFMX1NEUkFNX1NUQVRFX0JVU1k7CisKKyAgICAvKiBEaXNhYmxlIHdyaXRlIHByb3RlY3Rpb24gKi8KKyAgICAodm9pZClGTUNfU0RSQU1fV3JpdGVQcm90ZWN0aW9uX0Rpc2FibGUoaHNkcmFtLT5JbnN0YW5jZSwgaHNkcmFtLT5Jbml0LlNEQmFuayk7CisKKyAgICAvKiBVcGRhdGUgdGhlIFNEUkFNIHN0YXRlICovCisgICAgaHNkcmFtLT5TdGF0ZSA9IEhBTF9TRFJBTV9TVEFURV9SRUFEWTsKKyAgfQorICBlbHNlCisgIHsKKyAgICByZXR1cm4gSEFMX0VSUk9SOworICB9CisKICAgcmV0dXJuIEhBTF9PSzsKIH0KIApAQCAtOTYyLDg1ICsxMDc1LDEwNiBAQAogICAqIEBwYXJhbSAgQ29tbWFuZCBTRFJBTSBjb21tYW5kIHN0cnVjdHVyZQogICAqIEBwYXJhbSAgVGltZW91dCBUaW1lb3V0IGR1cmF0aW9uCiAgICogQHJldHZhbCBIQUwgc3RhdHVzCi0gICovICAKLUhBTF9TdGF0dXNUeXBlRGVmIEhBTF9TRFJBTV9TZW5kQ29tbWFuZChTRFJBTV9IYW5kbGVUeXBlRGVmICpoc2RyYW0sIEZNQ19TRFJBTV9Db21tYW5kVHlwZURlZiAqQ29tbWFuZCwgdWludDMyX3QgVGltZW91dCkKKyAgKi8KK0hBTF9TdGF0dXNUeXBlRGVmIEhBTF9TRFJBTV9TZW5kQ29tbWFuZChTRFJBTV9IYW5kbGVUeXBlRGVmICpoc2RyYW0sIEZNQ19TRFJBTV9Db21tYW5kVHlwZURlZiAqQ29tbWFuZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBUaW1lb3V0KQogeworICBIQUxfU0RSQU1fU3RhdGVUeXBlRGVmIHN0YXRlID0gaHNkcmFtLT5TdGF0ZTsKKwogICAvKiBDaGVjayB0aGUgU0RSQU0gY29udHJvbGxlciBzdGF0ZSAqLwotICBpZihoc2RyYW0tPlN0YXRlID09IEhBTF9TRFJBTV9TVEFURV9CVVNZKQorICBpZiAoc3RhdGUgPT0gSEFMX1NEUkFNX1NUQVRFX0JVU1kpCiAgIHsKICAgICByZXR1cm4gSEFMX0JVU1k7CiAgIH0KLSAgCi0gIC8qIFVwZGF0ZSB0aGUgU0RSQU0gc3RhdGUgKi8KLSAgaHNkcmFtLT5TdGF0ZSA9IEhBTF9TRFJBTV9TVEFURV9CVVNZOwotICAKLSAgLyogU2VuZCBTRFJBTSBjb21tYW5kICovCi0gIEZNQ19TRFJBTV9TZW5kQ29tbWFuZChoc2RyYW0tPkluc3RhbmNlLCBDb21tYW5kLCBUaW1lb3V0KTsKLSAgCi0gIC8qIFVwZGF0ZSB0aGUgU0RSQU0gY29udHJvbGxlciBzdGF0ZSBzdGF0ZSAqLwotICBpZihDb21tYW5kLT5Db21tYW5kTW9kZSA9PSBGTUNfU0RSQU1fQ01EX1BBTEwpCisgIGVsc2UgaWYgKChzdGF0ZSA9PSBIQUxfU0RSQU1fU1RBVEVfUkVBRFkpIHx8IChzdGF0ZSA9PSBIQUxfU0RSQU1fU1RBVEVfUFJFQ0hBUkdFRCkpCiAgIHsKLSAgICBoc2RyYW0tPlN0YXRlID0gSEFMX1NEUkFNX1NUQVRFX1BSRUNIQVJHRUQ7CisgICAgLyogVXBkYXRlIHRoZSBTRFJBTSBzdGF0ZSAqLworICAgIGhzZHJhbS0+U3RhdGUgPSBIQUxfU0RSQU1fU1RBVEVfQlVTWTsKKworICAgIC8qIFNlbmQgU0RSQU0gY29tbWFuZCAqLworICAgICh2b2lkKUZNQ19TRFJBTV9TZW5kQ29tbWFuZChoc2RyYW0tPkluc3RhbmNlLCBDb21tYW5kLCBUaW1lb3V0KTsKKworICAgIC8qIFVwZGF0ZSB0aGUgU0RSQU0gY29udHJvbGxlciBzdGF0ZSBzdGF0ZSAqLworICAgIGlmIChDb21tYW5kLT5Db21tYW5kTW9kZSA9PSBGTUNfU0RSQU1fQ01EX1BBTEwpCisgICAgeworICAgICAgaHNkcmFtLT5TdGF0ZSA9IEhBTF9TRFJBTV9TVEFURV9QUkVDSEFSR0VEOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgaHNkcmFtLT5TdGF0ZSA9IEhBTF9TRFJBTV9TVEFURV9SRUFEWTsKKyAgICB9CiAgIH0KICAgZWxzZQogICB7Ci0gICAgaHNkcmFtLT5TdGF0ZSA9IEhBTF9TRFJBTV9TVEFURV9SRUFEWTsKKyAgICByZXR1cm4gSEFMX0VSUk9SOwogICB9Ci0gIAotICByZXR1cm4gSEFMX09LOyAgCisKKyAgcmV0dXJuIEhBTF9PSzsKIH0KIAogLyoqCiAgICogQGJyaWVmICBQcm9ncmFtcyB0aGUgU0RSQU0gTWVtb3J5IFJlZnJlc2ggcmF0ZS4KICAgKiBAcGFyYW0gIGhzZHJhbSBwb2ludGVyIHRvIGEgU0RSQU1fSGFuZGxlVHlwZURlZiBzdHJ1Y3R1cmUgdGhhdCBjb250YWlucwotICAqICAgICAgICAgICAgICAgIHRoZSBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uIGZvciBTRFJBTSBtb2R1bGUuICAKLSAgKiBAcGFyYW0gIFJlZnJlc2hSYXRlIFRoZSBTRFJBTSByZWZyZXNoIHJhdGUgdmFsdWUgICAgICAgCisgICogICAgICAgICAgICAgICAgdGhlIGNvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb24gZm9yIFNEUkFNIG1vZHVsZS4KKyAgKiBAcGFyYW0gIFJlZnJlc2hSYXRlIFRoZSBTRFJBTSByZWZyZXNoIHJhdGUgdmFsdWUKICAgKiBAcmV0dmFsIEhBTCBzdGF0dXMKICAgKi8KIEhBTF9TdGF0dXNUeXBlRGVmIEhBTF9TRFJBTV9Qcm9ncmFtUmVmcmVzaFJhdGUoU0RSQU1fSGFuZGxlVHlwZURlZiAqaHNkcmFtLCB1aW50MzJfdCBSZWZyZXNoUmF0ZSkKIHsKICAgLyogQ2hlY2sgdGhlIFNEUkFNIGNvbnRyb2xsZXIgc3RhdGUgKi8KLSAgaWYoaHNkcmFtLT5TdGF0ZSA9PSBIQUxfU0RSQU1fU1RBVEVfQlVTWSkKKyAgaWYgKGhzZHJhbS0+U3RhdGUgPT0gSEFMX1NEUkFNX1NUQVRFX0JVU1kpCiAgIHsKICAgICByZXR1cm4gSEFMX0JVU1k7Ci0gIH0gCi0gIAotICAvKiBVcGRhdGUgdGhlIFNEUkFNIHN0YXRlICovCi0gIGhzZHJhbS0+U3RhdGUgPSBIQUxfU0RSQU1fU1RBVEVfQlVTWTsKLSAgCi0gIC8qIFByb2dyYW0gdGhlIHJlZnJlc2ggcmF0ZSAqLwotICBGTUNfU0RSQU1fUHJvZ3JhbVJlZnJlc2hSYXRlKGhzZHJhbS0+SW5zdGFuY2UgLFJlZnJlc2hSYXRlKTsKLSAgCi0gIC8qIFVwZGF0ZSB0aGUgU0RSQU0gc3RhdGUgKi8KLSAgaHNkcmFtLT5TdGF0ZSA9IEhBTF9TRFJBTV9TVEFURV9SRUFEWTsKLSAgCi0gIHJldHVybiBIQUxfT0s7ICAgCisgIH0KKyAgZWxzZSBpZiAoaHNkcmFtLT5TdGF0ZSA9PSBIQUxfU0RSQU1fU1RBVEVfUkVBRFkpCisgIHsKKyAgICAvKiBVcGRhdGUgdGhlIFNEUkFNIHN0YXRlICovCisgICAgaHNkcmFtLT5TdGF0ZSA9IEhBTF9TRFJBTV9TVEFURV9CVVNZOworCisgICAgLyogUHJvZ3JhbSB0aGUgcmVmcmVzaCByYXRlICovCisgICAgKHZvaWQpRk1DX1NEUkFNX1Byb2dyYW1SZWZyZXNoUmF0ZShoc2RyYW0tPkluc3RhbmNlLCBSZWZyZXNoUmF0ZSk7CisKKyAgICAvKiBVcGRhdGUgdGhlIFNEUkFNIHN0YXRlICovCisgICAgaHNkcmFtLT5TdGF0ZSA9IEhBTF9TRFJBTV9TVEFURV9SRUFEWTsKKyAgfQorICBlbHNlCisgIHsKKyAgICByZXR1cm4gSEFMX0VSUk9SOworICB9CisKKyAgcmV0dXJuIEhBTF9PSzsKIH0KIAogLyoqCiAgICogQGJyaWVmICBTZXRzIHRoZSBOdW1iZXIgb2YgY29uc2VjdXRpdmUgU0RSQU0gTWVtb3J5IGF1dG8gUmVmcmVzaCBjb21tYW5kcy4KICAgKiBAcGFyYW0gIGhzZHJhbSBwb2ludGVyIHRvIGEgU0RSQU1fSGFuZGxlVHlwZURlZiBzdHJ1Y3R1cmUgdGhhdCBjb250YWlucwotICAqICAgICAgICAgICAgICAgIHRoZSBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uIGZvciBTRFJBTSBtb2R1bGUuICAKLSAgKiBAcGFyYW0gIEF1dG9SZWZyZXNoTnVtYmVyIFRoZSBTRFJBTSBhdXRvIFJlZnJlc2ggbnVtYmVyICAgICAgIAorICAqICAgICAgICAgICAgICAgIHRoZSBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uIGZvciBTRFJBTSBtb2R1bGUuCisgICogQHBhcmFtICBBdXRvUmVmcmVzaE51bWJlciBUaGUgU0RSQU0gYXV0byBSZWZyZXNoIG51bWJlcgogICAqIEByZXR2YWwgSEFMIHN0YXR1cwogICAqLwogSEFMX1N0YXR1c1R5cGVEZWYgSEFMX1NEUkFNX1NldEF1dG9SZWZyZXNoTnVtYmVyKFNEUkFNX0hhbmRsZVR5cGVEZWYgKmhzZHJhbSwgdWludDMyX3QgQXV0b1JlZnJlc2hOdW1iZXIpCiB7CiAgIC8qIENoZWNrIHRoZSBTRFJBTSBjb250cm9sbGVyIHN0YXRlICovCi0gIGlmKGhzZHJhbS0+U3RhdGUgPT0gSEFMX1NEUkFNX1NUQVRFX0JVU1kpCisgIGlmIChoc2RyYW0tPlN0YXRlID09IEhBTF9TRFJBTV9TVEFURV9CVVNZKQogICB7CiAgICAgcmV0dXJuIEhBTF9CVVNZOwotICB9IAotICAKLSAgLyogVXBkYXRlIHRoZSBTRFJBTSBzdGF0ZSAqLwotICBoc2RyYW0tPlN0YXRlID0gSEFMX1NEUkFNX1NUQVRFX0JVU1k7Ci0gIAotICAvKiBTZXQgdGhlIEF1dG8tUmVmcmVzaCBudW1iZXIgKi8KLSAgRk1DX1NEUkFNX1NldEF1dG9SZWZyZXNoTnVtYmVyKGhzZHJhbS0+SW5zdGFuY2UgLEF1dG9SZWZyZXNoTnVtYmVyKTsKLSAgCi0gIC8qIFVwZGF0ZSB0aGUgU0RSQU0gc3RhdGUgKi8KLSAgaHNkcmFtLT5TdGF0ZSA9IEhBTF9TRFJBTV9TVEFURV9SRUFEWTsKLSAgCisgIH0KKyAgZWxzZSBpZiAoaHNkcmFtLT5TdGF0ZSA9PSBIQUxfU0RSQU1fU1RBVEVfUkVBRFkpCisgIHsKKyAgICAvKiBVcGRhdGUgdGhlIFNEUkFNIHN0YXRlICovCisgICAgaHNkcmFtLT5TdGF0ZSA9IEhBTF9TRFJBTV9TVEFURV9CVVNZOworCisgICAgLyogU2V0IHRoZSBBdXRvLVJlZnJlc2ggbnVtYmVyICovCisgICAgKHZvaWQpRk1DX1NEUkFNX1NldEF1dG9SZWZyZXNoTnVtYmVyKGhzZHJhbS0+SW5zdGFuY2UsIEF1dG9SZWZyZXNoTnVtYmVyKTsKKworICAgIC8qIFVwZGF0ZSB0aGUgU0RSQU0gc3RhdGUgKi8KKyAgICBoc2RyYW0tPlN0YXRlID0gSEFMX1NEUkFNX1NUQVRFX1JFQURZOworICB9CisgIGVsc2UKKyAgeworICAgIHJldHVybiBIQUxfRVJST1I7CisgIH0KKwogICByZXR1cm4gSEFMX09LOwogfQogCkBAIC0xMDQ4LDI3ICsxMTgyLDI3IEBACiAgICogQGJyaWVmICBSZXR1cm5zIHRoZSBTRFJBTSBtZW1vcnkgY3VycmVudCBtb2RlLgogICAqIEBwYXJhbSAgaHNkcmFtIHBvaW50ZXIgdG8gYSBTRFJBTV9IYW5kbGVUeXBlRGVmIHN0cnVjdHVyZSB0aGF0IGNvbnRhaW5zCiAgICogICAgICAgICAgICAgICAgdGhlIGNvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb24gZm9yIFNEUkFNIG1vZHVsZS4KLSAgKiBAcmV0dmFsIFRoZSBTRFJBTSBtZW1vcnkgbW9kZS4gICAgICAgIAorICAqIEByZXR2YWwgVGhlIFNEUkFNIG1lbW9yeSBtb2RlLgogICAqLwogdWludDMyX3QgSEFMX1NEUkFNX0dldE1vZGVTdGF0dXMoU0RSQU1fSGFuZGxlVHlwZURlZiAqaHNkcmFtKQogewogICAvKiBSZXR1cm4gdGhlIFNEUkFNIG1lbW9yeSBjdXJyZW50IG1vZGUgKi8KLSAgcmV0dXJuKEZNQ19TRFJBTV9HZXRNb2RlU3RhdHVzKGhzZHJhbS0+SW5zdGFuY2UsIGhzZHJhbS0+SW5pdC5TREJhbmspKTsKKyAgcmV0dXJuIChGTUNfU0RSQU1fR2V0TW9kZVN0YXR1cyhoc2RyYW0tPkluc3RhbmNlLCBoc2RyYW0tPkluaXQuU0RCYW5rKSk7CiB9CiAKIC8qKgogICAqIEB9CiAgICovCi0gIAotLyoqIEBkZWZncm91cCBTRFJBTV9FeHBvcnRlZF9GdW5jdGlvbnNfR3JvdXA0IFN0YXRlIGZ1bmN0aW9ucyAKLSAqICBAYnJpZWYgICBQZXJpcGhlcmFsIFN0YXRlIGZ1bmN0aW9ucyAKLSAqCi1AdmVyYmF0aW0gICAKKworLyoqIEBkZWZncm91cCBTRFJBTV9FeHBvcnRlZF9GdW5jdGlvbnNfR3JvdXA0IFN0YXRlIGZ1bmN0aW9ucworICAqICBAYnJpZWYgICBQZXJpcGhlcmFsIFN0YXRlIGZ1bmN0aW9ucworICAqCitAdmVyYmF0aW0KICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgICAgICAgICAgICAgICAgICAgICAgIyMjIyMgU0RSQU0gU3RhdGUgZnVuY3Rpb25zICMjIyMjCi0gID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAgCisgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBbLi5dCi0gICAgVGhpcyBzdWJzZWN0aW9uIHBlcm1pdHMgdG8gZ2V0IGluIHJ1bi10aW1lIHRoZSBzdGF0dXMgb2YgdGhlIFNEUkFNIGNvbnRyb2xsZXIgCisgICAgVGhpcyBzdWJzZWN0aW9uIHBlcm1pdHMgdG8gZ2V0IGluIHJ1bi10aW1lIHRoZSBzdGF0dXMgb2YgdGhlIFNEUkFNIGNvbnRyb2xsZXIKICAgICBhbmQgdGhlIGRhdGEgZmxvdy4KIAogQGVuZHZlcmJhdGltCkBAIC0xMDg4LDE4ICsxMjIyLDg1IEBACiAKIC8qKgogICAqIEB9Ci0gICovICAgIAorICAqLwogCiAvKioKICAgKiBAfQogICAqLworCisvKioKKyAgKiBAYnJpZWYgIERNQSBTRFJBTSBwcm9jZXNzIGNvbXBsZXRlIGNhbGxiYWNrLgorICAqIEBwYXJhbSAgaGRtYSA6IERNQSBoYW5kbGUKKyAgKiBAcmV0dmFsIE5vbmUKKyAgKi8KK3N0YXRpYyB2b2lkIFNEUkFNX0RNQUNwbHQoRE1BX0hhbmRsZVR5cGVEZWYgKmhkbWEpCit7CisgIFNEUkFNX0hhbmRsZVR5cGVEZWYgKmhzZHJhbSA9IChTRFJBTV9IYW5kbGVUeXBlRGVmICopKGhkbWEtPlBhcmVudCk7CisKKyAgLyogRGlzYWJsZSB0aGUgRE1BIGNoYW5uZWwgKi8KKyAgX19IQUxfRE1BX0RJU0FCTEUoaGRtYSk7CisKKyAgLyogVXBkYXRlIHRoZSBTRFJBTSBjb250cm9sbGVyIHN0YXRlICovCisgIGhzZHJhbS0+U3RhdGUgPSBIQUxfU0RSQU1fU1RBVEVfUkVBRFk7CisKKyNpZiAoVVNFX0hBTF9TRFJBTV9SRUdJU1RFUl9DQUxMQkFDS1MgPT0gMSkKKyAgaHNkcmFtLT5EbWFYZmVyQ3BsdENhbGxiYWNrKGhkbWEpOworI2Vsc2UKKyAgSEFMX1NEUkFNX0RNQV9YZmVyQ3BsdENhbGxiYWNrKGhkbWEpOworI2VuZGlmIC8qIFVTRV9IQUxfU0RSQU1fUkVHSVNURVJfQ0FMTEJBQ0tTICovCit9CisKKy8qKgorICAqIEBicmllZiAgRE1BIFNSQU0gcHJvY2VzcyBjb21wbGV0ZSBjYWxsYmFjay4KKyAgKiBAcGFyYW0gIGhkbWEgOiBETUEgaGFuZGxlCisgICogQHJldHZhbCBOb25lCisgICovCitzdGF0aWMgdm9pZCBTRFJBTV9ETUFDcGx0UHJvdChETUFfSGFuZGxlVHlwZURlZiAqaGRtYSkKK3sKKyAgU0RSQU1fSGFuZGxlVHlwZURlZiAqaHNkcmFtID0gKFNEUkFNX0hhbmRsZVR5cGVEZWYgKikoaGRtYS0+UGFyZW50KTsKKworICAvKiBEaXNhYmxlIHRoZSBETUEgY2hhbm5lbCAqLworICBfX0hBTF9ETUFfRElTQUJMRShoZG1hKTsKKworICAvKiBVcGRhdGUgdGhlIFNEUkFNIGNvbnRyb2xsZXIgc3RhdGUgKi8KKyAgaHNkcmFtLT5TdGF0ZSA9IEhBTF9TRFJBTV9TVEFURV9XUklURV9QUk9URUNURUQ7CisKKyNpZiAoVVNFX0hBTF9TRFJBTV9SRUdJU1RFUl9DQUxMQkFDS1MgPT0gMSkKKyAgaHNkcmFtLT5EbWFYZmVyQ3BsdENhbGxiYWNrKGhkbWEpOworI2Vsc2UKKyAgSEFMX1NEUkFNX0RNQV9YZmVyQ3BsdENhbGxiYWNrKGhkbWEpOworI2VuZGlmIC8qIFVTRV9IQUxfU0RSQU1fUkVHSVNURVJfQ0FMTEJBQ0tTICovCit9CisKKy8qKgorICAqIEBicmllZiAgRE1BIFNEUkFNIGVycm9yIGNhbGxiYWNrLgorICAqIEBwYXJhbSAgaGRtYSA6IERNQSBoYW5kbGUKKyAgKiBAcmV0dmFsIE5vbmUKKyAgKi8KK3N0YXRpYyB2b2lkIFNEUkFNX0RNQUVycm9yKERNQV9IYW5kbGVUeXBlRGVmICpoZG1hKQoreworICBTRFJBTV9IYW5kbGVUeXBlRGVmICpoc2RyYW0gPSAoU0RSQU1fSGFuZGxlVHlwZURlZiAqKShoZG1hLT5QYXJlbnQpOworCisgIC8qIERpc2FibGUgdGhlIERNQSBjaGFubmVsICovCisgIF9fSEFMX0RNQV9ESVNBQkxFKGhkbWEpOworCisgIC8qIFVwZGF0ZSB0aGUgU0RSQU0gY29udHJvbGxlciBzdGF0ZSAqLworICBoc2RyYW0tPlN0YXRlID0gSEFMX1NEUkFNX1NUQVRFX0VSUk9SOworCisjaWYgKFVTRV9IQUxfU0RSQU1fUkVHSVNURVJfQ0FMTEJBQ0tTID09IDEpCisgIGhzZHJhbS0+RG1hWGZlckVycm9yQ2FsbGJhY2soaGRtYSk7CisjZWxzZQorICBIQUxfU0RSQU1fRE1BX1hmZXJFcnJvckNhbGxiYWNrKGhkbWEpOworI2VuZGlmIC8qIFVTRV9IQUxfU0RSQU1fUkVHSVNURVJfQ0FMTEJBQ0tTICovCit9CisKKy8qKgorICAqIEB9CisgICovCisKICNlbmRpZiAvKiBIQUxfU0RSQU1fTU9EVUxFX0VOQUJMRUQgKi8KLS8qKgotICAqIEB9Ci0gICovCiAKIC8qKgogICAqIEB9CiAgICovCiAKLS8qKioqKioqKioqKioqKioqKioqKioqKiogKEMpIENPUFlSSUdIVCBTVE1pY3JvZWxlY3Ryb25pY3MgKioqKipFTkQgT0YgRklMRSoqKiovCmRpZmYgLS1naXQgYS9TcmMvc3RtMzJmN3h4X2hhbF9zbWFydGNhcmQuYyBiL1NyYy9zdG0zMmY3eHhfaGFsX3NtYXJ0Y2FyZC5jCmluZGV4IDcwNGMyMzYuLjJjZDAwYmIgMTAwNjQ0Ci0tLSBhL1NyYy9zdG0zMmY3eHhfaGFsX3NtYXJ0Y2FyZC5jCisrKyBiL1NyYy9zdG0zMmY3eHhfaGFsX3NtYXJ0Y2FyZC5jCkBAIC0xMCw2ICsxMCwxNyBAQAogICAqICAgICAgICAgICArIFBlcmlwaGVyYWwgQ29udHJvbCBmdW5jdGlvbnMKICAgKiAgICAgICAgICAgKyBQZXJpcGhlcmFsIFN0YXRlIGFuZCBFcnJvciBmdW5jdGlvbnMKICAgKgorICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgKiBAYXR0ZW50aW9uCisgICoKKyAgKiBDb3B5cmlnaHQgKGMpIDIwMTcgU1RNaWNyb2VsZWN0cm9uaWNzLgorICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgICoKKyAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIHVuZGVyIHRlcm1zIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUKKyAgKiBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb2Z0d2FyZSBjb21wb25lbnQuCisgICogSWYgbm8gTElDRU5TRSBmaWxlIGNvbWVzIHdpdGggdGhpcyBzb2Z0d2FyZSwgaXQgaXMgcHJvdmlkZWQgQVMtSVMuCisgICoKKyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgIEB2ZXJiYXRpbQogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgICAgICAgICAgICAgICAgICAgICAgICMjIyMjIEhvdyB0byB1c2UgdGhpcyBkcml2ZXIgIyMjIyMKQEAgLTE2MywxNyArMTc0LDYgQEAKIAogICBAZW5kdmVyYmF0aW0KICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gICogQGF0dGVudGlvbgotICAqCi0gICogPGgyPjxjZW50ZXI+JmNvcHk7IENvcHlyaWdodCAoYykgMjAxNyBTVE1pY3JvZWxlY3Ryb25pY3MuCi0gICogQWxsIHJpZ2h0cyByZXNlcnZlZC48L2NlbnRlcj48L2gyPgotICAqCi0gICogVGhpcyBzb2Z0d2FyZSBjb21wb25lbnQgaXMgbGljZW5zZWQgYnkgU1QgdW5kZXIgQlNEIDMtQ2xhdXNlIGxpY2Vuc2UsCi0gICogdGhlICJMaWNlbnNlIjsgWW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZQotICAqIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdDoKLSAgKiAgICAgICAgICAgICAgICAgICAgICAgIG9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0JTRC0zLUNsYXVzZQotICAqCi0gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAqLwogCiAvKiBJbmNsdWRlcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwpAQCAtNzgwLDExICs3ODAsMTEgQEAKICAgKiBAcGFyYW0gIFRpbWVvdXQgIFRpbWVvdXQgZHVyYXRpb24uCiAgICogQHJldHZhbCBIQUwgc3RhdHVzCiAgICovCi1IQUxfU3RhdHVzVHlwZURlZiBIQUxfU01BUlRDQVJEX1RyYW5zbWl0KFNNQVJUQ0FSRF9IYW5kbGVUeXBlRGVmICpoc21hcnRjYXJkLCB1aW50OF90ICpwRGF0YSwgdWludDE2X3QgU2l6ZSwKK0hBTF9TdGF0dXNUeXBlRGVmIEhBTF9TTUFSVENBUkRfVHJhbnNtaXQoU01BUlRDQVJEX0hhbmRsZVR5cGVEZWYgKmhzbWFydGNhcmQsIGNvbnN0IHVpbnQ4X3QgKnBEYXRhLCB1aW50MTZfdCBTaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBUaW1lb3V0KQogewogICB1aW50MzJfdCB0aWNrc3RhcnQ7Ci0gIHVpbnQ4X3QgICpwdG1wZGF0YSA9IHBEYXRhOworICBjb25zdCB1aW50OF90ICAqcHRtcGRhdGEgPSBwRGF0YTsKIAogICAvKiBDaGVjayB0aGF0IGEgVHggcHJvY2VzcyBpcyBub3QgYWxyZWFkeSBvbmdvaW5nICovCiAgIGlmIChoc21hcnRjYXJkLT5nU3RhdGUgPT0gSEFMX1NNQVJUQ0FSRF9TVEFURV9SRUFEWSkKQEAgLTk0Myw3ICs5NDMsNyBAQAogICAqIEBwYXJhbSAgU2l6ZSBhbW91bnQgb2YgZGF0YSB0byBiZSBzZW50LgogICAqIEByZXR2YWwgSEFMIHN0YXR1cwogICAqLwotSEFMX1N0YXR1c1R5cGVEZWYgSEFMX1NNQVJUQ0FSRF9UcmFuc21pdF9JVChTTUFSVENBUkRfSGFuZGxlVHlwZURlZiAqaHNtYXJ0Y2FyZCwgdWludDhfdCAqcERhdGEsIHVpbnQxNl90IFNpemUpCitIQUxfU3RhdHVzVHlwZURlZiBIQUxfU01BUlRDQVJEX1RyYW5zbWl0X0lUKFNNQVJUQ0FSRF9IYW5kbGVUeXBlRGVmICpoc21hcnRjYXJkLCBjb25zdCB1aW50OF90ICpwRGF0YSwgdWludDE2X3QgU2l6ZSkKIHsKICAgLyogQ2hlY2sgdGhhdCBhIFR4IHByb2Nlc3MgaXMgbm90IGFscmVhZHkgb25nb2luZyAqLwogICBpZiAoaHNtYXJ0Y2FyZC0+Z1N0YXRlID09IEhBTF9TTUFSVENBUkRfU1RBVEVfUkVBRFkpCkBAIC0xMDYyLDcgKzEwNjIsNyBAQAogICAqIEBwYXJhbSAgU2l6ZSBhbW91bnQgb2YgZGF0YSB0byBiZSBzZW50LgogICAqIEByZXR2YWwgSEFMIHN0YXR1cwogICAqLwotSEFMX1N0YXR1c1R5cGVEZWYgSEFMX1NNQVJUQ0FSRF9UcmFuc21pdF9ETUEoU01BUlRDQVJEX0hhbmRsZVR5cGVEZWYgKmhzbWFydGNhcmQsIHVpbnQ4X3QgKnBEYXRhLCB1aW50MTZfdCBTaXplKQorSEFMX1N0YXR1c1R5cGVEZWYgSEFMX1NNQVJUQ0FSRF9UcmFuc21pdF9ETUEoU01BUlRDQVJEX0hhbmRsZVR5cGVEZWYgKmhzbWFydGNhcmQsIGNvbnN0IHVpbnQ4X3QgKnBEYXRhLCB1aW50MTZfdCBTaXplKQogewogICAvKiBDaGVjayB0aGF0IGEgVHggcHJvY2VzcyBpcyBub3QgYWxyZWFkeSBvbmdvaW5nICovCiAgIGlmIChoc21hcnRjYXJkLT5nU3RhdGUgPT0gSEFMX1NNQVJUQ0FSRF9TVEFURV9SRUFEWSkKQEAgLTIyOTYsMjEgKzIyOTYsMjEgQEAKICAgewogICAgIGNhc2UgU01BUlRDQVJEX0NMT0NLU09VUkNFX1BDTEsxOgogICAgICAgcGNsayA9IEhBTF9SQ0NfR2V0UENMSzFGcmVxKCk7Ci0gICAgICB0bXByZWcgPSAodWludDE2X3QpKChwY2xrICsgKGhzbWFydGNhcmQtPkluaXQuQmF1ZFJhdGUgLyAyVSkpIC8gaHNtYXJ0Y2FyZC0+SW5pdC5CYXVkUmF0ZSk7CisgICAgICB0bXByZWcgPSAodWludDMyX3QpKChwY2xrICsgKGhzbWFydGNhcmQtPkluaXQuQmF1ZFJhdGUgLyAyVSkpIC8gaHNtYXJ0Y2FyZC0+SW5pdC5CYXVkUmF0ZSk7CiAgICAgICBicmVhazsKICAgICBjYXNlIFNNQVJUQ0FSRF9DTE9DS1NPVVJDRV9QQ0xLMjoKICAgICAgIHBjbGsgPSBIQUxfUkNDX0dldFBDTEsyRnJlcSgpOwotICAgICAgdG1wcmVnID0gKHVpbnQxNl90KSgocGNsayArIChoc21hcnRjYXJkLT5Jbml0LkJhdWRSYXRlIC8gMlUpKSAvIGhzbWFydGNhcmQtPkluaXQuQmF1ZFJhdGUpOworICAgICAgdG1wcmVnID0gKHVpbnQzMl90KSgocGNsayArIChoc21hcnRjYXJkLT5Jbml0LkJhdWRSYXRlIC8gMlUpKSAvIGhzbWFydGNhcmQtPkluaXQuQmF1ZFJhdGUpOwogICAgICAgYnJlYWs7CiAgICAgY2FzZSBTTUFSVENBUkRfQ0xPQ0tTT1VSQ0VfSFNJOgotICAgICAgdG1wcmVnID0gKHVpbnQxNl90KSgoSFNJX1ZBTFVFICsgKGhzbWFydGNhcmQtPkluaXQuQmF1ZFJhdGUgLyAyVSkpIC8gaHNtYXJ0Y2FyZC0+SW5pdC5CYXVkUmF0ZSk7CisgICAgICB0bXByZWcgPSAodWludDMyX3QpKChIU0lfVkFMVUUgKyAoaHNtYXJ0Y2FyZC0+SW5pdC5CYXVkUmF0ZSAvIDJVKSkgLyBoc21hcnRjYXJkLT5Jbml0LkJhdWRSYXRlKTsKICAgICAgIGJyZWFrOwogICAgIGNhc2UgU01BUlRDQVJEX0NMT0NLU09VUkNFX1NZU0NMSzoKICAgICAgIHBjbGsgPSBIQUxfUkNDX0dldFN5c0Nsb2NrRnJlcSgpOwotICAgICAgdG1wcmVnID0gKHVpbnQxNl90KSgocGNsayArIChoc21hcnRjYXJkLT5Jbml0LkJhdWRSYXRlIC8gMlUpKSAvIGhzbWFydGNhcmQtPkluaXQuQmF1ZFJhdGUpOworICAgICAgdG1wcmVnID0gKHVpbnQzMl90KSgocGNsayArIChoc21hcnRjYXJkLT5Jbml0LkJhdWRSYXRlIC8gMlUpKSAvIGhzbWFydGNhcmQtPkluaXQuQmF1ZFJhdGUpOwogICAgICAgYnJlYWs7CiAgICAgY2FzZSBTTUFSVENBUkRfQ0xPQ0tTT1VSQ0VfTFNFOgotICAgICAgdG1wcmVnID0gKHVpbnQxNl90KSgoTFNFX1ZBTFVFICsgKGhzbWFydGNhcmQtPkluaXQuQmF1ZFJhdGUgLyAyVSkpIC8gaHNtYXJ0Y2FyZC0+SW5pdC5CYXVkUmF0ZSk7CisgICAgICB0bXByZWcgPSAodWludDMyX3QpKChMU0VfVkFMVUUgKyAoaHNtYXJ0Y2FyZC0+SW5pdC5CYXVkUmF0ZSAvIDJVKSkgLyBoc21hcnRjYXJkLT5Jbml0LkJhdWRSYXRlKTsKICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICByZXQgPSBIQUxfRVJST1I7CkBAIC0yMzIwLDcgKzIzMjAsNyBAQAogICAvKiBVU0FSVERJViBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAwZDE2ICovCiAgIGlmICgodG1wcmVnID49IFVTQVJUX0JSUl9NSU4pICYmICh0bXByZWcgPD0gVVNBUlRfQlJSX01BWCkpCiAgIHsKLSAgICBoc21hcnRjYXJkLT5JbnN0YW5jZS0+QlJSID0gdG1wcmVnOworICAgIGhzbWFydGNhcmQtPkluc3RhbmNlLT5CUlIgPSAodWludDE2X3QpdG1wcmVnOwogICB9CiAgIGVsc2UKICAgewpAQCAtMjQzNywxMSArMjQzNywxMiBAQAogfQogCiAvKioKLSAgKiBAYnJpZWYgIEhhbmRsZSBTTUFSVENBUkQgQ29tbXVuaWNhdGlvbiBUaW1lb3V0LgorICAqIEBicmllZiAgSGFuZGxlIFNNQVJUQ0FSRCBDb21tdW5pY2F0aW9uIFRpbWVvdXQuIEl0IHdhaXRzCisgICogICAgICAgICB1bnRpbCBhIGZsYWcgaXMgbm8gbG9uZ2VyIGluIHRoZSBzcGVjaWZpZWQgc3RhdHVzLgogICAqIEBwYXJhbSAgaHNtYXJ0Y2FyZCBQb2ludGVyIHRvIGEgU01BUlRDQVJEX0hhbmRsZVR5cGVEZWYgc3RydWN0dXJlIHRoYXQgY29udGFpbnMKICAgKiAgICAgICAgICAgICAgICAgICB0aGUgY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbiBmb3IgdGhlIHNwZWNpZmllZCBTTUFSVENBUkQgbW9kdWxlLgogICAqIEBwYXJhbSAgRmxhZyBTcGVjaWZpZXMgdGhlIFNNQVJUQ0FSRCBmbGFnIHRvIGNoZWNrLgotICAqIEBwYXJhbSAgU3RhdHVzIFRoZSBuZXcgRmxhZyBzdGF0dXMgKFNFVCBvciBSRVNFVCkuCisgICogQHBhcmFtICBTdGF0dXMgVGhlIGFjdHVhbCBGbGFnIHN0YXR1cyAoU0VUIG9yIFJFU0VUKS4KICAgKiBAcGFyYW0gIFRpY2tzdGFydCBUaWNrIHN0YXJ0IHZhbHVlCiAgICogQHBhcmFtICBUaW1lb3V0IFRpbWVvdXQgZHVyYXRpb24uCiAgICogQHJldHZhbCBIQUwgc3RhdHVzCkBAIC0yOTIzLDQgKzI5MjQsMyBAQAogICAqIEB9CiAgICovCiAKLS8qKioqKioqKioqKioqKioqKioqKioqKiogKEMpIENPUFlSSUdIVCBTVE1pY3JvZWxlY3Ryb25pY3MgKioqKipFTkQgT0YgRklMRSoqKiovCmRpZmYgLS1naXQgYS9TcmMvc3RtMzJmN3h4X2hhbF9zbWFydGNhcmRfZXguYyBiL1NyYy9zdG0zMmY3eHhfaGFsX3NtYXJ0Y2FyZF9leC5jCmluZGV4IGM5MTljMDMuLmNkOWYyOGMgMTAwNjQ0Ci0tLSBhL1NyYy9zdG0zMmY3eHhfaGFsX3NtYXJ0Y2FyZF9leC5jCisrKyBiL1NyYy9zdG0zMmY3eHhfaGFsX3NtYXJ0Y2FyZF9leC5jCkBAIC04LDYgKzgsMTcgQEAKICAgKiAgICAgICAgICAgKyBJbml0aWFsaXphdGlvbiBhbmQgZGUtaW5pdGlhbGl6YXRpb24gZnVuY3Rpb25zCiAgICogICAgICAgICAgICsgUGVyaXBoZXJhbCBDb250cm9sIGZ1bmN0aW9ucwogICAqCisgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAqIEBhdHRlbnRpb24KKyAgKgorICAqIENvcHlyaWdodCAoYykgMjAxNyBTVE1pY3JvZWxlY3Ryb25pY3MuCisgICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAgKgorICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgdW5kZXIgdGVybXMgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZQorICAqIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvZnR3YXJlIGNvbXBvbmVudC4KKyAgKiBJZiBubyBMSUNFTlNFIGZpbGUgY29tZXMgd2l0aCB0aGlzIHNvZnR3YXJlLCBpdCBpcyBwcm92aWRlZCBBUy1JUy4KKyAgKgorICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgQHZlcmJhdGltCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgICAgICAgICAgICAgICAjIyMjIyBTTUFSVENBUkQgcGVyaXBoZXJhbCBleHRlbmRlZCBmZWF0dXJlcyAgIyMjIyMKQEAgLTIwLDE3ICszMSw2IEBACiAgICAgICAgIGF1dG8tcmV0cnkgY291bnRlciwuLi4pIGluIHRoZSBoc21hcnRjYXJkIEFkdmFuY2VkSW5pdCBzdHJ1Y3R1cmUuCiAgIEBlbmR2ZXJiYXRpbQogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAgKiBAYXR0ZW50aW9uCi0gICoKLSAgKiA8aDI+PGNlbnRlcj4mY29weTsgQ29weXJpZ2h0IChjKSAyMDE3IFNUTWljcm9lbGVjdHJvbmljcy4KLSAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLjwvY2VudGVyPjwvaDI+Ci0gICoKLSAgKiBUaGlzIHNvZnR3YXJlIGNvbXBvbmVudCBpcyBsaWNlbnNlZCBieSBTVCB1bmRlciBCU0QgMy1DbGF1c2UgbGljZW5zZSwKLSAgKiB0aGUgIkxpY2Vuc2UiOyBZb3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlCi0gICogTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0OgotICAqICAgICAgICAgICAgICAgICAgICAgICAgb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvQlNELTMtQ2xhdXNlCi0gICoKLSAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgICovCiAKIC8qIEluY2x1ZGVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCkBAIC0xOTUsNCArMTk1LDMgQEAKICAgKiBAfQogICAqLwogCi0vKioqKioqKioqKioqKioqKioqKioqKioqIChDKSBDT1BZUklHSFQgU1RNaWNyb2VsZWN0cm9uaWNzICoqKioqRU5EIE9GIEZJTEUqKioqLwpkaWZmIC0tZ2l0IGEvU3JjL3N0bTMyZjd4eF9oYWxfc21idXMuYyBiL1NyYy9zdG0zMmY3eHhfaGFsX3NtYnVzLmMKaW5kZXggMGRhNjNkYy4uN2RiN2EzZCAxMDA2NDQKLS0tIGEvU3JjL3N0bTMyZjd4eF9oYWxfc21idXMuYworKysgYi9TcmMvc3RtMzJmN3h4X2hhbF9zbWJ1cy5jCkBAIC0xMCw2ICsxMCwxNyBAQAogICAqICAgICAgICAgICArIElPIG9wZXJhdGlvbiBmdW5jdGlvbnMKICAgKiAgICAgICAgICAgKyBQZXJpcGhlcmFsIFN0YXRlIGFuZCBFcnJvcnMgZnVuY3Rpb25zCiAgICoKKyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICogQGF0dGVudGlvbgorICAqCisgICogQ29weXJpZ2h0IChjKSAyMDE3IFNUTWljcm9lbGVjdHJvbmljcy4KKyAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICAqCisgICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCB1bmRlciB0ZXJtcyB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlCisgICogaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc29mdHdhcmUgY29tcG9uZW50LgorICAqIElmIG5vIExJQ0VOU0UgZmlsZSBjb21lcyB3aXRoIHRoaXMgc29mdHdhcmUsIGl0IGlzIHByb3ZpZGVkIEFTLUlTLgorICAqCisgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICBAdmVyYmF0aW0KICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgICAgICAgICAgICAgICAgICAgICAgICAjIyMjIyBIb3cgdG8gdXNlIHRoaXMgZHJpdmVyICMjIyMjCkBAIC0yMCw3ICszMSw3IEBACiAgICAgKCMpIERlY2xhcmUgYSBTTUJVU19IYW5kbGVUeXBlRGVmIGhhbmRsZSBzdHJ1Y3R1cmUsIGZvciBleGFtcGxlOgogICAgICAgICBTTUJVU19IYW5kbGVUeXBlRGVmICBoc21idXM7CiAKLSAgICAoIylJbml0aWFsaXplIHRoZSBTTUJVUyBsb3cgbGV2ZWwgcmVzb3VyY2VzIGJ5IGltcGxlbWVudGluZyB0aGUgQHJlZiBIQUxfU01CVVNfTXNwSW5pdCgpIEFQSToKKyAgICAoIylJbml0aWFsaXplIHRoZSBTTUJVUyBsb3cgbGV2ZWwgcmVzb3VyY2VzIGJ5IGltcGxlbWVudGluZyB0aGUgSEFMX1NNQlVTX01zcEluaXQoKSBBUEk6CiAgICAgICAgICgjIykgRW5hYmxlIHRoZSBTTUJVU3ggaW50ZXJmYWNlIGNsb2NrCiAgICAgICAgICgjIykgU01CVVMgcGlucyBjb25maWd1cmF0aW9uCiAgICAgICAgICAgICAoKysrKSBFbmFibGUgdGhlIGNsb2NrIGZvciB0aGUgU01CVVMgR1BJT3MKQEAgLTMzLDY5ICs0NCw3NSBAQAogICAgICAgICBEdWFsIEFkZHJlc3NpbmcgbW9kZSwgT3duIEFkZHJlc3MyLCBPd24gQWRkcmVzczIgTWFzaywgR2VuZXJhbCBjYWxsLCBOb3N0cmV0Y2ggbW9kZSwKICAgICAgICAgUGVyaXBoZXJhbCBtb2RlIGFuZCBQYWNrZXQgRXJyb3IgQ2hlY2sgbW9kZSBpbiB0aGUgaHNtYnVzIEluaXQgc3RydWN0dXJlLgogCi0gICAgKCMpIEluaXRpYWxpemUgdGhlIFNNQlVTIHJlZ2lzdGVycyBieSBjYWxsaW5nIHRoZSBAcmVmIEhBTF9TTUJVU19Jbml0KCkgQVBJOgorICAgICgjKSBJbml0aWFsaXplIHRoZSBTTUJVUyByZWdpc3RlcnMgYnkgY2FsbGluZyB0aGUgSEFMX1NNQlVTX0luaXQoKSBBUEk6CiAgICAgICAgICgrKykgVGhlc2UgQVBJJ3MgY29uZmlndXJlcyBhbHNvIHRoZSBsb3cgbGV2ZWwgSGFyZHdhcmUgR1BJTywgQ0xPQ0ssIENPUlRFWC4uLmV0YykKLSAgICAgICAgICAgICBieSBjYWxsaW5nIHRoZSBjdXN0b21pemVkIEByZWYgSEFMX1NNQlVTX01zcEluaXQoJmhzbWJ1cykgQVBJLgorICAgICAgICAgICAgIGJ5IGNhbGxpbmcgdGhlIGN1c3RvbWl6ZWQgSEFMX1NNQlVTX01zcEluaXQoJmhzbWJ1cykgQVBJLgogCi0gICAgKCMpIFRvIGNoZWNrIGlmIHRhcmdldCBkZXZpY2UgaXMgcmVhZHkgZm9yIGNvbW11bmljYXRpb24sIHVzZSB0aGUgZnVuY3Rpb24gQHJlZiBIQUxfU01CVVNfSXNEZXZpY2VSZWFkeSgpCisgICAgKCMpIFRvIGNoZWNrIGlmIHRhcmdldCBkZXZpY2UgaXMgcmVhZHkgZm9yIGNvbW11bmljYXRpb24sIHVzZSB0aGUgZnVuY3Rpb24gSEFMX1NNQlVTX0lzRGV2aWNlUmVhZHkoKQogCiAgICAgKCMpIEZvciBTTUJVUyBJTyBvcGVyYXRpb25zLCBvbmx5IG9uZSBtb2RlIG9mIG9wZXJhdGlvbnMgaXMgYXZhaWxhYmxlIHdpdGhpbiB0aGlzIGRyaXZlcgogCiAgICAgKioqIEludGVycnVwdCBtb2RlIElPIG9wZXJhdGlvbiAqKioKICAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICAgIFsuLl0KLSAgICAgICgrKSBUcmFuc21pdCBpbiBtYXN0ZXIvaG9zdCBTTUJVUyBtb2RlIGFuIGFtb3VudCBvZiBkYXRhIGluIG5vbi1ibG9ja2luZyBtb2RlIHVzaW5nIEByZWYgSEFMX1NNQlVTX01hc3Rlcl9UcmFuc21pdF9JVCgpCi0gICAgICAoKyspIEF0IHRyYW5zbWlzc2lvbiBlbmQgb2YgdHJhbnNmZXIgQHJlZiBIQUxfU01CVVNfTWFzdGVyVHhDcGx0Q2FsbGJhY2soKSBpcyBleGVjdXRlZCBhbmQgdXNlciBjYW4KLSAgICAgICAgICAgYWRkIGhpcyBvd24gY29kZSBieSBjdXN0b21pemF0aW9uIG9mIGZ1bmN0aW9uIHBvaW50ZXIgQHJlZiBIQUxfU01CVVNfTWFzdGVyVHhDcGx0Q2FsbGJhY2soKQotICAgICAgKCspIFJlY2VpdmUgaW4gbWFzdGVyL2hvc3QgU01CVVMgbW9kZSBhbiBhbW91bnQgb2YgZGF0YSBpbiBub24tYmxvY2tpbmcgbW9kZSB1c2luZyBAcmVmIEhBTF9TTUJVU19NYXN0ZXJfUmVjZWl2ZV9JVCgpCi0gICAgICAoKyspIEF0IHJlY2VwdGlvbiBlbmQgb2YgdHJhbnNmZXIgQHJlZiBIQUxfU01CVVNfTWFzdGVyUnhDcGx0Q2FsbGJhY2soKSBpcyBleGVjdXRlZCBhbmQgdXNlciBjYW4KLSAgICAgICAgICAgYWRkIGhpcyBvd24gY29kZSBieSBjdXN0b21pemF0aW9uIG9mIGZ1bmN0aW9uIHBvaW50ZXIgQHJlZiBIQUxfU01CVVNfTWFzdGVyUnhDcGx0Q2FsbGJhY2soKQotICAgICAgKCspIEFib3J0IGEgbWFzdGVyL2hvc3QgU01CVVMgcHJvY2VzcyBjb21tdW5pY2F0aW9uIHdpdGggSW50ZXJydXB0IHVzaW5nIEByZWYgSEFMX1NNQlVTX01hc3Rlcl9BYm9ydF9JVCgpCisgICAgICAoKykgVHJhbnNtaXQgaW4gbWFzdGVyL2hvc3QgU01CVVMgbW9kZSBhbiBhbW91bnQgb2YgZGF0YSBpbiBub24tYmxvY2tpbmcgbW9kZQorICAgICAgICAgIHVzaW5nIEhBTF9TTUJVU19NYXN0ZXJfVHJhbnNtaXRfSVQoKQorICAgICAgKCsrKSBBdCB0cmFuc21pc3Npb24gZW5kIG9mIHRyYW5zZmVyIEhBTF9TTUJVU19NYXN0ZXJUeENwbHRDYWxsYmFjaygpIGlzIGV4ZWN1dGVkIGFuZCB1c2VycyBjYW4KKyAgICAgICAgICAgYWRkIHRoZWlyIG93biBjb2RlIGJ5IGN1c3RvbWl6YXRpb24gb2YgZnVuY3Rpb24gcG9pbnRlciBIQUxfU01CVVNfTWFzdGVyVHhDcGx0Q2FsbGJhY2soKQorICAgICAgKCspIFJlY2VpdmUgaW4gbWFzdGVyL2hvc3QgU01CVVMgbW9kZSBhbiBhbW91bnQgb2YgZGF0YSBpbiBub24tYmxvY2tpbmcgbW9kZQorICAgICAgICAgIHVzaW5nIEhBTF9TTUJVU19NYXN0ZXJfUmVjZWl2ZV9JVCgpCisgICAgICAoKyspIEF0IHJlY2VwdGlvbiBlbmQgb2YgdHJhbnNmZXIgSEFMX1NNQlVTX01hc3RlclJ4Q3BsdENhbGxiYWNrKCkgaXMgZXhlY3V0ZWQgYW5kIHVzZXJzIGNhbgorICAgICAgICAgICBhZGQgdGhlaXIgb3duIGNvZGUgYnkgY3VzdG9taXphdGlvbiBvZiBmdW5jdGlvbiBwb2ludGVyIEhBTF9TTUJVU19NYXN0ZXJSeENwbHRDYWxsYmFjaygpCisgICAgICAoKykgQWJvcnQgYSBtYXN0ZXIvaG9zdCBTTUJVUyBwcm9jZXNzIGNvbW11bmljYXRpb24gd2l0aCBJbnRlcnJ1cHQgdXNpbmcgSEFMX1NNQlVTX01hc3Rlcl9BYm9ydF9JVCgpCiAgICAgICAoKyspIFRoZSBhc3NvY2lhdGVkIHByZXZpb3VzIHRyYW5zZmVyIGNhbGxiYWNrIGlzIGNhbGxlZCBhdCB0aGUgZW5kIG9mIGFib3J0IHByb2Nlc3MKLSAgICAgICgrKykgbWVhbiBAcmVmIEhBTF9TTUJVU19NYXN0ZXJUeENwbHRDYWxsYmFjaygpIGluIGNhc2Ugb2YgcHJldmlvdXMgc3RhdGUgd2FzIG1hc3RlciB0cmFuc21pdAotICAgICAgKCsrKSBtZWFuIEByZWYgSEFMX1NNQlVTX01hc3RlclJ4Q3BsdENhbGxiYWNrKCkgaW4gY2FzZSBvZiBwcmV2aW91cyBzdGF0ZSB3YXMgbWFzdGVyIHJlY2VpdmUKKyAgICAgICgrKykgbWVhbiBIQUxfU01CVVNfTWFzdGVyVHhDcGx0Q2FsbGJhY2soKSBpbiBjYXNlIG9mIHByZXZpb3VzIHN0YXRlIHdhcyBtYXN0ZXIgdHJhbnNtaXQKKyAgICAgICgrKykgbWVhbiBIQUxfU01CVVNfTWFzdGVyUnhDcGx0Q2FsbGJhY2soKSBpbiBjYXNlIG9mIHByZXZpb3VzIHN0YXRlIHdhcyBtYXN0ZXIgcmVjZWl2ZQogICAgICAgKCspIEVuYWJsZS9kaXNhYmxlIHRoZSBBZGRyZXNzIGxpc3RlbiBtb2RlIGluIHNsYXZlL2RldmljZSBvciBob3N0L3NsYXZlIFNNQlVTIG1vZGUKLSAgICAgICAgICAgdXNpbmcgQHJlZiBIQUxfU01CVVNfRW5hYmxlTGlzdGVuX0lUKCkgQHJlZiBIQUxfU01CVVNfRGlzYWJsZUxpc3Rlbl9JVCgpCi0gICAgICAoKyspIFdoZW4gYWRkcmVzcyBzbGF2ZS9kZXZpY2UgU01CVVMgbWF0Y2gsIEByZWYgSEFMX1NNQlVTX0FkZHJDYWxsYmFjaygpIGlzIGV4ZWN1dGVkIGFuZCB1c2VyIGNhbgotICAgICAgICAgICBhZGQgaGlzIG93biBjb2RlIHRvIGNoZWNrIHRoZSBBZGRyZXNzIE1hdGNoIENvZGUgYW5kIHRoZSB0cmFuc21pc3Npb24gZGlyZWN0aW9uIHJlcXVlc3QgYnkgbWFzdGVyL2hvc3QgKFdyaXRlL1JlYWQpLgotICAgICAgKCsrKSBBdCBMaXN0ZW4gbW9kZSBlbmQgQHJlZiBIQUxfU01CVVNfTGlzdGVuQ3BsdENhbGxiYWNrKCkgaXMgZXhlY3V0ZWQgYW5kIHVzZXIgY2FuCi0gICAgICAgICAgIGFkZCBoaXMgb3duIGNvZGUgYnkgY3VzdG9taXphdGlvbiBvZiBmdW5jdGlvbiBwb2ludGVyIEByZWYgSEFMX1NNQlVTX0xpc3RlbkNwbHRDYWxsYmFjaygpCi0gICAgICAoKykgVHJhbnNtaXQgaW4gc2xhdmUvZGV2aWNlIFNNQlVTIG1vZGUgYW4gYW1vdW50IG9mIGRhdGEgaW4gbm9uLWJsb2NraW5nIG1vZGUgdXNpbmcgQHJlZiBIQUxfU01CVVNfU2xhdmVfVHJhbnNtaXRfSVQoKQotICAgICAgKCsrKSBBdCB0cmFuc21pc3Npb24gZW5kIG9mIHRyYW5zZmVyIEByZWYgSEFMX1NNQlVTX1NsYXZlVHhDcGx0Q2FsbGJhY2soKSBpcyBleGVjdXRlZCBhbmQgdXNlciBjYW4KLSAgICAgICAgICAgYWRkIGhpcyBvd24gY29kZSBieSBjdXN0b21pemF0aW9uIG9mIGZ1bmN0aW9uIHBvaW50ZXIgQHJlZiBIQUxfU01CVVNfU2xhdmVUeENwbHRDYWxsYmFjaygpCi0gICAgICAoKykgUmVjZWl2ZSBpbiBzbGF2ZS9kZXZpY2UgU01CVVMgbW9kZSBhbiBhbW91bnQgb2YgZGF0YSBpbiBub24tYmxvY2tpbmcgbW9kZSB1c2luZyBAcmVmIEhBTF9TTUJVU19TbGF2ZV9SZWNlaXZlX0lUKCkKLSAgICAgICgrKykgQXQgcmVjZXB0aW9uIGVuZCBvZiB0cmFuc2ZlciBAcmVmIEhBTF9TTUJVU19TbGF2ZVJ4Q3BsdENhbGxiYWNrKCkgaXMgZXhlY3V0ZWQgYW5kIHVzZXIgY2FuCi0gICAgICAgICAgIGFkZCBoaXMgb3duIGNvZGUgYnkgY3VzdG9taXphdGlvbiBvZiBmdW5jdGlvbiBwb2ludGVyIEByZWYgSEFMX1NNQlVTX1NsYXZlUnhDcGx0Q2FsbGJhY2soKQotICAgICAgKCspIEVuYWJsZS9EaXNhYmxlIHRoZSBTTUJVUyBhbGVydCBtb2RlIHVzaW5nIEByZWYgSEFMX1NNQlVTX0VuYWJsZUFsZXJ0X0lUKCkgQHJlZiBIQUxfU01CVVNfRGlzYWJsZUFsZXJ0X0lUKCkKLSAgICAgICgrKykgV2hlbiBTTUJVUyBBbGVydCBpcyBnZW5lcmF0ZWQgQHJlZiBIQUxfU01CVVNfRXJyb3JDYWxsYmFjaygpIGlzIGV4ZWN1dGVkIGFuZCB1c2VyIGNhbgotICAgICAgICAgICBhZGQgaGlzIG93biBjb2RlIGJ5IGN1c3RvbWl6YXRpb24gb2YgZnVuY3Rpb24gcG9pbnRlciBAcmVmIEhBTF9TTUJVU19FcnJvckNhbGxiYWNrKCkKLSAgICAgICAgICAgdG8gY2hlY2sgdGhlIEFsZXJ0IEVycm9yIENvZGUgdXNpbmcgZnVuY3Rpb24gQHJlZiBIQUxfU01CVVNfR2V0RXJyb3IoKQotICAgICAgKCspIEdldCBIQUwgc3RhdGUgbWFjaGluZSBvciBlcnJvciB2YWx1ZXMgdXNpbmcgQHJlZiBIQUxfU01CVVNfR2V0U3RhdGUoKSBvciBAcmVmIEhBTF9TTUJVU19HZXRFcnJvcigpCi0gICAgICAoKykgSW4gY2FzZSBvZiB0cmFuc2ZlciBFcnJvciwgQHJlZiBIQUxfU01CVVNfRXJyb3JDYWxsYmFjaygpIGZ1bmN0aW9uIGlzIGV4ZWN1dGVkIGFuZCB1c2VyIGNhbgotICAgICAgICAgICBhZGQgaGlzIG93biBjb2RlIGJ5IGN1c3RvbWl6YXRpb24gb2YgZnVuY3Rpb24gcG9pbnRlciBAcmVmIEhBTF9TTUJVU19FcnJvckNhbGxiYWNrKCkKLSAgICAgICAgICAgdG8gY2hlY2sgdGhlIEVycm9yIENvZGUgdXNpbmcgZnVuY3Rpb24gQHJlZiBIQUxfU01CVVNfR2V0RXJyb3IoKQorICAgICAgICAgICB1c2luZyBIQUxfU01CVVNfRW5hYmxlTGlzdGVuX0lUKCkgSEFMX1NNQlVTX0Rpc2FibGVMaXN0ZW5fSVQoKQorICAgICAgKCsrKSBXaGVuIGFkZHJlc3Mgc2xhdmUvZGV2aWNlIFNNQlVTIG1hdGNoLCBIQUxfU01CVVNfQWRkckNhbGxiYWNrKCkgaXMgZXhlY3V0ZWQgYW5kIHVzZXJzIGNhbgorICAgICAgICAgICBhZGQgdGhlaXIgb3duIGNvZGUgdG8gY2hlY2sgdGhlIEFkZHJlc3MgTWF0Y2ggQ29kZSBhbmQgdGhlIHRyYW5zbWlzc2lvbiBkaXJlY3Rpb24KKyAgICAgICAgICAgcmVxdWVzdCBieSBtYXN0ZXIvaG9zdCAoV3JpdGUvUmVhZCkuCisgICAgICAoKyspIEF0IExpc3RlbiBtb2RlIGVuZCBIQUxfU01CVVNfTGlzdGVuQ3BsdENhbGxiYWNrKCkgaXMgZXhlY3V0ZWQgYW5kIHVzZXJzIGNhbgorICAgICAgICAgICBhZGQgdGhlaXIgb3duIGNvZGUgYnkgY3VzdG9taXphdGlvbiBvZiBmdW5jdGlvbiBwb2ludGVyIEhBTF9TTUJVU19MaXN0ZW5DcGx0Q2FsbGJhY2soKQorICAgICAgKCspIFRyYW5zbWl0IGluIHNsYXZlL2RldmljZSBTTUJVUyBtb2RlIGFuIGFtb3VudCBvZiBkYXRhIGluIG5vbi1ibG9ja2luZyBtb2RlCisgICAgICAgICAgdXNpbmcgSEFMX1NNQlVTX1NsYXZlX1RyYW5zbWl0X0lUKCkKKyAgICAgICgrKykgQXQgdHJhbnNtaXNzaW9uIGVuZCBvZiB0cmFuc2ZlciBIQUxfU01CVVNfU2xhdmVUeENwbHRDYWxsYmFjaygpIGlzIGV4ZWN1dGVkIGFuZCB1c2VycyBjYW4KKyAgICAgICAgICAgYWRkIHRoZWlyIG93biBjb2RlIGJ5IGN1c3RvbWl6YXRpb24gb2YgZnVuY3Rpb24gcG9pbnRlciBIQUxfU01CVVNfU2xhdmVUeENwbHRDYWxsYmFjaygpCisgICAgICAoKykgUmVjZWl2ZSBpbiBzbGF2ZS9kZXZpY2UgU01CVVMgbW9kZSBhbiBhbW91bnQgb2YgZGF0YSBpbiBub24tYmxvY2tpbmcgbW9kZQorICAgICAgICAgIHVzaW5nIEhBTF9TTUJVU19TbGF2ZV9SZWNlaXZlX0lUKCkKKyAgICAgICgrKykgQXQgcmVjZXB0aW9uIGVuZCBvZiB0cmFuc2ZlciBIQUxfU01CVVNfU2xhdmVSeENwbHRDYWxsYmFjaygpIGlzIGV4ZWN1dGVkIGFuZCB1c2VycyBjYW4KKyAgICAgICAgICAgYWRkIHRoZWlyIG93biBjb2RlIGJ5IGN1c3RvbWl6YXRpb24gb2YgZnVuY3Rpb24gcG9pbnRlciBIQUxfU01CVVNfU2xhdmVSeENwbHRDYWxsYmFjaygpCisgICAgICAoKykgRW5hYmxlL0Rpc2FibGUgdGhlIFNNQlVTIGFsZXJ0IG1vZGUgdXNpbmcKKyAgICAgICAgICBIQUxfU01CVVNfRW5hYmxlQWxlcnRfSVQoKSBvciBIQUxfU01CVVNfRGlzYWJsZUFsZXJ0X0lUKCkKKyAgICAgICgrKykgV2hlbiBTTUJVUyBBbGVydCBpcyBnZW5lcmF0ZWQgSEFMX1NNQlVTX0Vycm9yQ2FsbGJhY2soKSBpcyBleGVjdXRlZCBhbmQgdXNlcnMgY2FuCisgICAgICAgICAgIGFkZCB0aGVpciBvd24gY29kZSBieSBjdXN0b21pemF0aW9uIG9mIGZ1bmN0aW9uIHBvaW50ZXIgSEFMX1NNQlVTX0Vycm9yQ2FsbGJhY2soKQorICAgICAgICAgICB0byBjaGVjayB0aGUgQWxlcnQgRXJyb3IgQ29kZSB1c2luZyBmdW5jdGlvbiBIQUxfU01CVVNfR2V0RXJyb3IoKQorICAgICAgKCspIEdldCBIQUwgc3RhdGUgbWFjaGluZSBvciBlcnJvciB2YWx1ZXMgdXNpbmcgSEFMX1NNQlVTX0dldFN0YXRlKCkgb3IgSEFMX1NNQlVTX0dldEVycm9yKCkKKyAgICAgICgrKSBJbiBjYXNlIG9mIHRyYW5zZmVyIEVycm9yLCBIQUxfU01CVVNfRXJyb3JDYWxsYmFjaygpIGZ1bmN0aW9uIGlzIGV4ZWN1dGVkIGFuZCB1c2VycyBjYW4KKyAgICAgICAgICAgYWRkIHRoZWlyIG93biBjb2RlIGJ5IGN1c3RvbWl6YXRpb24gb2YgZnVuY3Rpb24gcG9pbnRlciBIQUxfU01CVVNfRXJyb3JDYWxsYmFjaygpCisgICAgICAgICAgIHRvIGNoZWNrIHRoZSBFcnJvciBDb2RlIHVzaW5nIGZ1bmN0aW9uIEhBTF9TTUJVU19HZXRFcnJvcigpCiAKICAgICAgKioqIFNNQlVTIEhBTCBkcml2ZXIgbWFjcm9zIGxpc3QgKioqCiAgICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgICAgWy4uXQogICAgICAgIEJlbG93IHRoZSBsaXN0IG9mIG1vc3QgdXNlZCBtYWNyb3MgaW4gU01CVVMgSEFMIGRyaXZlci4KIAotICAgICAgKCspIEByZWYgX19IQUxfU01CVVNfRU5BQkxFOiAgICAgIEVuYWJsZSB0aGUgU01CVVMgcGVyaXBoZXJhbAotICAgICAgKCspIEByZWYgX19IQUxfU01CVVNfRElTQUJMRTogICAgIERpc2FibGUgdGhlIFNNQlVTIHBlcmlwaGVyYWwKLSAgICAgICgrKSBAcmVmIF9fSEFMX1NNQlVTX0dFVF9GTEFHOiAgICBDaGVjayB3aGV0aGVyIHRoZSBzcGVjaWZpZWQgU01CVVMgZmxhZyBpcyBzZXQgb3Igbm90Ci0gICAgICAoKykgQHJlZiBfX0hBTF9TTUJVU19DTEVBUl9GTEFHOiAgQ2xlYXIgdGhlIHNwZWNpZmllZCBTTUJVUyBwZW5kaW5nIGZsYWcKLSAgICAgICgrKSBAcmVmIF9fSEFMX1NNQlVTX0VOQUJMRV9JVDogICBFbmFibGUgdGhlIHNwZWNpZmllZCBTTUJVUyBpbnRlcnJ1cHQKLSAgICAgICgrKSBAcmVmIF9fSEFMX1NNQlVTX0RJU0FCTEVfSVQ6ICBEaXNhYmxlIHRoZSBzcGVjaWZpZWQgU01CVVMgaW50ZXJydXB0CisgICAgICAoKykgX19IQUxfU01CVVNfRU5BQkxFOiAgICAgIEVuYWJsZSB0aGUgU01CVVMgcGVyaXBoZXJhbAorICAgICAgKCspIF9fSEFMX1NNQlVTX0RJU0FCTEU6ICAgICBEaXNhYmxlIHRoZSBTTUJVUyBwZXJpcGhlcmFsCisgICAgICAoKykgX19IQUxfU01CVVNfR0VUX0ZMQUc6ICAgIENoZWNrIHdoZXRoZXIgdGhlIHNwZWNpZmllZCBTTUJVUyBmbGFnIGlzIHNldCBvciBub3QKKyAgICAgICgrKSBfX0hBTF9TTUJVU19DTEVBUl9GTEFHOiAgQ2xlYXIgdGhlIHNwZWNpZmllZCBTTUJVUyBwZW5kaW5nIGZsYWcKKyAgICAgICgrKSBfX0hBTF9TTUJVU19FTkFCTEVfSVQ6ICAgRW5hYmxlIHRoZSBzcGVjaWZpZWQgU01CVVMgaW50ZXJydXB0CisgICAgICAoKykgX19IQUxfU01CVVNfRElTQUJMRV9JVDogIERpc2FibGUgdGhlIHNwZWNpZmllZCBTTUJVUyBpbnRlcnJ1cHQKIAogICAgICAqKiogQ2FsbGJhY2sgcmVnaXN0cmF0aW9uICoqKgogICAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgICBbLi5dCiAgICAgIFRoZSBjb21waWxhdGlvbiBmbGFnIFVTRV9IQUxfU01CVVNfUkVHSVNURVJfQ0FMTEJBQ0tTIHdoZW4gc2V0IHRvIDEKICAgICAgYWxsb3dzIHRoZSB1c2VyIHRvIGNvbmZpZ3VyZSBkeW5hbWljYWxseSB0aGUgZHJpdmVyIGNhbGxiYWNrcy4KLSAgICAgVXNlIEZ1bmN0aW9ucyBAcmVmIEhBTF9TTUJVU19SZWdpc3RlckNhbGxiYWNrKCkgb3IgQHJlZiBIQUxfU01CVVNfUmVnaXN0ZXJBZGRyQ2FsbGJhY2soKQorICAgICBVc2UgRnVuY3Rpb25zIEhBTF9TTUJVU19SZWdpc3RlckNhbGxiYWNrKCkgb3IgSEFMX1NNQlVTX1JlZ2lzdGVyQWRkckNhbGxiYWNrKCkKICAgICAgdG8gcmVnaXN0ZXIgYW4gaW50ZXJydXB0IGNhbGxiYWNrLgogICAgIFsuLl0KLSAgICAgRnVuY3Rpb24gQHJlZiBIQUxfU01CVVNfUmVnaXN0ZXJDYWxsYmFjaygpIGFsbG93cyB0byByZWdpc3RlciBmb2xsb3dpbmcgY2FsbGJhY2tzOgorICAgICBGdW5jdGlvbiBIQUxfU01CVVNfUmVnaXN0ZXJDYWxsYmFjaygpIGFsbG93cyB0byByZWdpc3RlciBmb2xsb3dpbmcgY2FsbGJhY2tzOgogICAgICAgICgrKSBNYXN0ZXJUeENwbHRDYWxsYmFjayA6IGNhbGxiYWNrIGZvciBNYXN0ZXIgdHJhbnNtaXNzaW9uIGVuZCBvZiB0cmFuc2Zlci4KICAgICAgICAoKykgTWFzdGVyUnhDcGx0Q2FsbGJhY2sgOiBjYWxsYmFjayBmb3IgTWFzdGVyIHJlY2VwdGlvbiBlbmQgb2YgdHJhbnNmZXIuCiAgICAgICAgKCspIFNsYXZlVHhDcGx0Q2FsbGJhY2sgIDogY2FsbGJhY2sgZm9yIFNsYXZlIHRyYW5zbWlzc2lvbiBlbmQgb2YgdHJhbnNmZXIuCkBAIC0xMDcsMTEgKzEyNCwxMSBAQAogICAgICBUaGlzIGZ1bmN0aW9uIHRha2VzIGFzIHBhcmFtZXRlcnMgdGhlIEhBTCBwZXJpcGhlcmFsIGhhbmRsZSwgdGhlIENhbGxiYWNrIElECiAgICAgIGFuZCBhIHBvaW50ZXIgdG8gdGhlIHVzZXIgY2FsbGJhY2sgZnVuY3Rpb24uCiAgICAgWy4uXQotICAgICBGb3Igc3BlY2lmaWMgY2FsbGJhY2sgQWRkckNhbGxiYWNrIHVzZSBkZWRpY2F0ZWQgcmVnaXN0ZXIgY2FsbGJhY2tzIDogQHJlZiBIQUxfU01CVVNfUmVnaXN0ZXJBZGRyQ2FsbGJhY2suCisgICAgIEZvciBzcGVjaWZpYyBjYWxsYmFjayBBZGRyQ2FsbGJhY2sgdXNlIGRlZGljYXRlZCByZWdpc3RlciBjYWxsYmFja3MgOiBIQUxfU01CVVNfUmVnaXN0ZXJBZGRyQ2FsbGJhY2suCiAgICAgWy4uXQotICAgICBVc2UgZnVuY3Rpb24gQHJlZiBIQUxfU01CVVNfVW5SZWdpc3RlckNhbGxiYWNrIHRvIHJlc2V0IGEgY2FsbGJhY2sgdG8gdGhlIGRlZmF1bHQKKyAgICAgVXNlIGZ1bmN0aW9uIEhBTF9TTUJVU19VblJlZ2lzdGVyQ2FsbGJhY2sgdG8gcmVzZXQgYSBjYWxsYmFjayB0byB0aGUgZGVmYXVsdAogICAgICB3ZWFrIGZ1bmN0aW9uLgotICAgICBAcmVmIEhBTF9TTUJVU19VblJlZ2lzdGVyQ2FsbGJhY2sgdGFrZXMgYXMgcGFyYW1ldGVycyB0aGUgSEFMIHBlcmlwaGVyYWwgaGFuZGxlLAorICAgICBIQUxfU01CVVNfVW5SZWdpc3RlckNhbGxiYWNrIHRha2VzIGFzIHBhcmFtZXRlcnMgdGhlIEhBTCBwZXJpcGhlcmFsIGhhbmRsZSwKICAgICAgYW5kIHRoZSBDYWxsYmFjayBJRC4KICAgICAgVGhpcyBmdW5jdGlvbiBhbGxvd3MgdG8gcmVzZXQgZm9sbG93aW5nIGNhbGxiYWNrczoKICAgICAgICAoKykgTWFzdGVyVHhDcGx0Q2FsbGJhY2sgOiBjYWxsYmFjayBmb3IgTWFzdGVyIHRyYW5zbWlzc2lvbiBlbmQgb2YgdHJhbnNmZXIuCkBAIC0xMjMsMjQgKzE0MCwyNCBAQAogICAgICAgICgrKSBNc3BJbml0Q2FsbGJhY2sgICAgICA6IGNhbGxiYWNrIGZvciBNc3AgSW5pdC4KICAgICAgICAoKykgTXNwRGVJbml0Q2FsbGJhY2sgICAgOiBjYWxsYmFjayBmb3IgTXNwIERlSW5pdC4KICAgICBbLi5dCi0gICAgIEZvciBjYWxsYmFjayBBZGRyQ2FsbGJhY2sgdXNlIGRlZGljYXRlZCByZWdpc3RlciBjYWxsYmFja3MgOiBAcmVmIEhBTF9TTUJVU19VblJlZ2lzdGVyQWRkckNhbGxiYWNrLgorICAgICBGb3IgY2FsbGJhY2sgQWRkckNhbGxiYWNrIHVzZSBkZWRpY2F0ZWQgcmVnaXN0ZXIgY2FsbGJhY2tzIDogSEFMX1NNQlVTX1VuUmVnaXN0ZXJBZGRyQ2FsbGJhY2suCiAgICAgWy4uXQotICAgICBCeSBkZWZhdWx0LCBhZnRlciB0aGUgQHJlZiBIQUxfU01CVVNfSW5pdCgpIGFuZCB3aGVuIHRoZSBzdGF0ZSBpcyBAcmVmIEhBTF9JMkNfU1RBVEVfUkVTRVQKKyAgICAgQnkgZGVmYXVsdCwgYWZ0ZXIgdGhlIEhBTF9TTUJVU19Jbml0KCkgYW5kIHdoZW4gdGhlIHN0YXRlIGlzIEhBTF9JMkNfU1RBVEVfUkVTRVQKICAgICAgYWxsIGNhbGxiYWNrcyBhcmUgc2V0IHRvIHRoZSBjb3JyZXNwb25kaW5nIHdlYWsgZnVuY3Rpb25zOgotICAgICBleGFtcGxlcyBAcmVmIEhBTF9TTUJVU19NYXN0ZXJUeENwbHRDYWxsYmFjaygpLCBAcmVmIEhBTF9TTUJVU19NYXN0ZXJSeENwbHRDYWxsYmFjaygpLgorICAgICBleGFtcGxlcyBIQUxfU01CVVNfTWFzdGVyVHhDcGx0Q2FsbGJhY2soKSwgSEFMX1NNQlVTX01hc3RlclJ4Q3BsdENhbGxiYWNrKCkuCiAgICAgIEV4Y2VwdGlvbiBkb25lIGZvciBNc3BJbml0IGFuZCBNc3BEZUluaXQgZnVuY3Rpb25zIHRoYXQgYXJlCi0gICAgIHJlc2V0IHRvIHRoZSBsZWdhY3kgd2VhayBmdW5jdGlvbnMgaW4gdGhlIEByZWYgSEFMX1NNQlVTX0luaXQoKS8gQHJlZiBIQUxfU01CVVNfRGVJbml0KCkgb25seSB3aGVuCisgICAgIHJlc2V0IHRvIHRoZSBsZWdhY3kgd2VhayBmdW5jdGlvbnMgaW4gdGhlIEhBTF9TTUJVU19Jbml0KCkvIEhBTF9TTUJVU19EZUluaXQoKSBvbmx5IHdoZW4KICAgICAgdGhlc2UgY2FsbGJhY2tzIGFyZSBudWxsIChub3QgcmVnaXN0ZXJlZCBiZWZvcmVoYW5kKS4KLSAgICAgSWYgTXNwSW5pdCBvciBNc3BEZUluaXQgYXJlIG5vdCBudWxsLCB0aGUgQHJlZiBIQUxfU01CVVNfSW5pdCgpLyBAcmVmIEhBTF9TTUJVU19EZUluaXQoKQorICAgICBJZiBNc3BJbml0IG9yIE1zcERlSW5pdCBhcmUgbm90IG51bGwsIHRoZSBIQUxfU01CVVNfSW5pdCgpLyBIQUxfU01CVVNfRGVJbml0KCkKICAgICAga2VlcCBhbmQgdXNlIHRoZSB1c2VyIE1zcEluaXQvTXNwRGVJbml0IGNhbGxiYWNrcyAocmVnaXN0ZXJlZCBiZWZvcmVoYW5kKSB3aGF0ZXZlciB0aGUgc3RhdGUuCiAgICAgWy4uXQotICAgICBDYWxsYmFja3MgY2FuIGJlIHJlZ2lzdGVyZWQvdW5yZWdpc3RlcmVkIGluIEByZWYgSEFMX0kyQ19TVEFURV9SRUFEWSBzdGF0ZSBvbmx5LgorICAgICBDYWxsYmFja3MgY2FuIGJlIHJlZ2lzdGVyZWQvdW5yZWdpc3RlcmVkIGluIEhBTF9JMkNfU1RBVEVfUkVBRFkgc3RhdGUgb25seS4KICAgICAgRXhjZXB0aW9uIGRvbmUgTXNwSW5pdC9Nc3BEZUluaXQgZnVuY3Rpb25zIHRoYXQgY2FuIGJlIHJlZ2lzdGVyZWQvdW5yZWdpc3RlcmVkCi0gICAgIGluIEByZWYgSEFMX0kyQ19TVEFURV9SRUFEWSBvciBAcmVmIEhBTF9JMkNfU1RBVEVfUkVTRVQgc3RhdGUsCisgICAgIGluIEhBTF9JMkNfU1RBVEVfUkVBRFkgb3IgSEFMX0kyQ19TVEFURV9SRVNFVCBzdGF0ZSwKICAgICAgdGh1cyByZWdpc3RlcmVkICh1c2VyKSBNc3BJbml0L0RlSW5pdCBjYWxsYmFja3MgY2FuIGJlIHVzZWQgZHVyaW5nIHRoZSBJbml0L0RlSW5pdC4KICAgICAgVGhlbiwgdGhlIHVzZXIgZmlyc3QgcmVnaXN0ZXJzIHRoZSBNc3BJbml0L01zcERlSW5pdCB1c2VyIGNhbGxiYWNrcwotICAgICB1c2luZyBAcmVmIEhBTF9TTUJVU19SZWdpc3RlckNhbGxiYWNrKCkgYmVmb3JlIGNhbGxpbmcgQHJlZiBIQUxfU01CVVNfRGVJbml0KCkKLSAgICAgb3IgQHJlZiBIQUxfU01CVVNfSW5pdCgpIGZ1bmN0aW9uLgorICAgICB1c2luZyBIQUxfU01CVVNfUmVnaXN0ZXJDYWxsYmFjaygpIGJlZm9yZSBjYWxsaW5nIEhBTF9TTUJVU19EZUluaXQoKQorICAgICBvciBIQUxfU01CVVNfSW5pdCgpIGZ1bmN0aW9uLgogICAgIFsuLl0KICAgICAgV2hlbiB0aGUgY29tcGlsYXRpb24gZmxhZyBVU0VfSEFMX1NNQlVTX1JFR0lTVEVSX0NBTExCQUNLUyBpcyBzZXQgdG8gMCBvcgogICAgICBub3QgZGVmaW5lZCwgdGhlIGNhbGxiYWNrIHJlZ2lzdHJhdGlvbiBmZWF0dXJlIGlzIG5vdCBhdmFpbGFibGUgYW5kIGFsbCBjYWxsYmFja3MKQEAgLTE1MCwxOCArMTY3LDYgQEAKICAgICAgICAoQCkgWW91IGNhbiByZWZlciB0byB0aGUgU01CVVMgSEFMIGRyaXZlciBoZWFkZXIgZmlsZSBmb3IgbW9yZSB1c2VmdWwgbWFjcm9zCiAKICAgQGVuZHZlcmJhdGltCi0gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICAqIEBhdHRlbnRpb24KLSAgKgotICAqIDxoMj48Y2VudGVyPiZjb3B5OyBDb3B5cmlnaHQgKGMpIDIwMTcgU1RNaWNyb2VsZWN0cm9uaWNzLgotICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuPC9jZW50ZXI+PC9oMj4KLSAgKgotICAqIFRoaXMgc29mdHdhcmUgY29tcG9uZW50IGlzIGxpY2Vuc2VkIGJ5IFNUIHVuZGVyIEJTRCAzLUNsYXVzZSBsaWNlbnNlLAotICAqIHRoZSAiTGljZW5zZSI7IFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUKLSAgKiBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQ6Ci0gICogICAgICAgICAgICAgICAgICAgICAgICBvcGVuc291cmNlLm9yZy9saWNlbnNlcy9CU0QtMy1DbGF1c2UKLSAgKgotICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgKi8KIAogLyogSW5jbHVkZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KQEAgLTIwMywyMCArMjA4LDI4IEBACiAvKiogQGFkZHRvZ3JvdXAgU01CVVNfUHJpdmF0ZV9GdW5jdGlvbnMgU01CVVMgUHJpdmF0ZSBGdW5jdGlvbnMKICAgKiBAewogICAqLwotc3RhdGljIEhBTF9TdGF0dXNUeXBlRGVmIFNNQlVTX1dhaXRPbkZsYWdVbnRpbFRpbWVvdXQoU01CVVNfSGFuZGxlVHlwZURlZiAqaHNtYnVzLCB1aW50MzJfdCBGbGFnLCBGbGFnU3RhdHVzIFN0YXR1cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IFRpbWVvdXQpOworLyogUHJpdmF0ZSBmdW5jdGlvbnMgdG8gaGFuZGxlIGZsYWdzIGR1cmluZyBwb2xsaW5nIHRyYW5zZmVyICovCitzdGF0aWMgSEFMX1N0YXR1c1R5cGVEZWYgU01CVVNfV2FpdE9uRmxhZ1VudGlsVGltZW91dChTTUJVU19IYW5kbGVUeXBlRGVmICpoc21idXMsIHVpbnQzMl90IEZsYWcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGbGFnU3RhdHVzIFN0YXR1cywgdWludDMyX3QgVGltZW91dCk7CiAKLXN0YXRpYyB2b2lkIFNNQlVTX0VuYWJsZV9JUlEoU01CVVNfSGFuZGxlVHlwZURlZiAqaHNtYnVzLCB1aW50MzJfdCBJbnRlcnJ1cHRSZXF1ZXN0KTsKLXN0YXRpYyB2b2lkIFNNQlVTX0Rpc2FibGVfSVJRKFNNQlVTX0hhbmRsZVR5cGVEZWYgKmhzbWJ1cywgdWludDMyX3QgSW50ZXJydXB0UmVxdWVzdCk7CisvKiBQcml2YXRlIGZ1bmN0aW9ucyBmb3IgU01CVVMgdHJhbnNmZXIgSVJRIGhhbmRsZXIgKi8KIHN0YXRpYyBIQUxfU3RhdHVzVHlwZURlZiBTTUJVU19NYXN0ZXJfSVNSKFNNQlVTX0hhbmRsZVR5cGVEZWYgKmhzbWJ1cywgdWludDMyX3QgU3RhdHVzRmxhZ3MpOwogc3RhdGljIEhBTF9TdGF0dXNUeXBlRGVmIFNNQlVTX1NsYXZlX0lTUihTTUJVU19IYW5kbGVUeXBlRGVmICpoc21idXMsIHVpbnQzMl90IFN0YXR1c0ZsYWdzKTsKLQotc3RhdGljIHZvaWQgU01CVVNfQ29udmVydE90aGVyWGZlck9wdGlvbnMoU01CVVNfSGFuZGxlVHlwZURlZiAqaHNtYnVzKTsKLQogc3RhdGljIHZvaWQgU01CVVNfSVRFcnJvckhhbmRsZXIoU01CVVNfSGFuZGxlVHlwZURlZiAqaHNtYnVzKTsKIAotc3RhdGljIHZvaWQgU01CVVNfVHJhbnNmZXJDb25maWcoU01CVVNfSGFuZGxlVHlwZURlZiAqaHNtYnVzLCAgdWludDE2X3QgRGV2QWRkcmVzcywgdWludDhfdCBTaXplLCB1aW50MzJfdCBNb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgUmVxdWVzdCk7CisvKiBQcml2YXRlIGZ1bmN0aW9ucyB0byBjZW50cmFsaXplIHRoZSBlbmFibGUvZGlzYWJsZSBvZiBJbnRlcnJ1cHRzICovCitzdGF0aWMgdm9pZCBTTUJVU19FbmFibGVfSVJRKFNNQlVTX0hhbmRsZVR5cGVEZWYgKmhzbWJ1cywgdWludDMyX3QgSW50ZXJydXB0UmVxdWVzdCk7CitzdGF0aWMgdm9pZCBTTUJVU19EaXNhYmxlX0lSUShTTUJVU19IYW5kbGVUeXBlRGVmICpoc21idXMsIHVpbnQzMl90IEludGVycnVwdFJlcXVlc3QpOworCisvKiBQcml2YXRlIGZ1bmN0aW9uIHRvIGZsdXNoIFRYRFIgcmVnaXN0ZXIgKi8KK3N0YXRpYyB2b2lkIFNNQlVTX0ZsdXNoX1RYRFIoU01CVVNfSGFuZGxlVHlwZURlZiAqaHNtYnVzKTsKKworLyogUHJpdmF0ZSBmdW5jdGlvbiB0byBoYW5kbGUgc3RhcnQsIHJlc3RhcnQgb3Igc3RvcCBhIHRyYW5zZmVyICovCitzdGF0aWMgdm9pZCBTTUJVU19UcmFuc2ZlckNvbmZpZyhTTUJVU19IYW5kbGVUeXBlRGVmICpoc21idXMsICB1aW50MTZfdCBEZXZBZGRyZXNzLCB1aW50OF90IFNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBNb2RlLCB1aW50MzJfdCBSZXF1ZXN0KTsKKworLyogUHJpdmF0ZSBmdW5jdGlvbiB0byBDb252ZXJ0IFNwZWNpZmljIG9wdGlvbnMgKi8KK3N0YXRpYyB2b2lkIFNNQlVTX0NvbnZlcnRPdGhlclhmZXJPcHRpb25zKFNNQlVTX0hhbmRsZVR5cGVEZWYgKmhzbWJ1cyk7CiAvKioKICAgKiBAfQogICAqLwpAQCAtMzY0LDE1ICszNzcsMjAgQEAKIAogICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gU01CVVN4IE9BUjIgQ29uZmlndXJhdGlvbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAgIC8qIENvbmZpZ3VyZSBTTUJVU3g6IER1YWwgbW9kZSBhbmQgT3duIEFkZHJlc3MyICovCi0gIGhzbWJ1cy0+SW5zdGFuY2UtPk9BUjIgPSAoaHNtYnVzLT5Jbml0LkR1YWxBZGRyZXNzTW9kZSB8IGhzbWJ1cy0+SW5pdC5Pd25BZGRyZXNzMiB8IChoc21idXMtPkluaXQuT3duQWRkcmVzczJNYXNrcyA8PCA4VSkpOworICBoc21idXMtPkluc3RhbmNlLT5PQVIyID0gKGhzbWJ1cy0+SW5pdC5EdWFsQWRkcmVzc01vZGUgfCBoc21idXMtPkluaXQuT3duQWRkcmVzczIgfCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGhzbWJ1cy0+SW5pdC5Pd25BZGRyZXNzMk1hc2tzIDw8IDhVKSk7CiAKICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFNNQlVTeCBDUjEgQ29uZmlndXJhdGlvbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogICAvKiBDb25maWd1cmUgU01CVVN4OiBHZW5lcmFsY2FsbCBhbmQgTm9TdHJldGNoIG1vZGUgKi8KLSAgaHNtYnVzLT5JbnN0YW5jZS0+Q1IxID0gKGhzbWJ1cy0+SW5pdC5HZW5lcmFsQ2FsbE1vZGUgfCBoc21idXMtPkluaXQuTm9TdHJldGNoTW9kZSB8IGhzbWJ1cy0+SW5pdC5QYWNrZXRFcnJvckNoZWNrTW9kZSB8IGhzbWJ1cy0+SW5pdC5QZXJpcGhlcmFsTW9kZSB8IGhzbWJ1cy0+SW5pdC5BbmFsb2dGaWx0ZXIpOworICBoc21idXMtPkluc3RhbmNlLT5DUjEgPSAoaHNtYnVzLT5Jbml0LkdlbmVyYWxDYWxsTW9kZSB8IGhzbWJ1cy0+SW5pdC5Ob1N0cmV0Y2hNb2RlIHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgaHNtYnVzLT5Jbml0LlBhY2tldEVycm9yQ2hlY2tNb2RlIHwgaHNtYnVzLT5Jbml0LlBlcmlwaGVyYWxNb2RlIHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgaHNtYnVzLT5Jbml0LkFuYWxvZ0ZpbHRlcik7CiAKLSAgLyogRW5hYmxlIFNsYXZlIEJ5dGUgQ29udHJvbCBvbmx5IGluIGNhc2Ugb2YgUGFja2V0IEVycm9yIENoZWNrIGlzIGVuYWJsZWQgYW5kIFNNQlVTIFBlcmlwaGVyYWwgaXMgc2V0IGluIFNsYXZlIG1vZGUgKi8KLSAgaWYgKChoc21idXMtPkluaXQuUGFja2V0RXJyb3JDaGVja01vZGUgPT0gU01CVVNfUEVDX0VOQUJMRSkKLSAgICAgICYmICgoaHNtYnVzLT5Jbml0LlBlcmlwaGVyYWxNb2RlID09IFNNQlVTX1BFUklQSEVSQUxfTU9ERV9TTUJVU19TTEFWRSkgfHwgKGhzbWJ1cy0+SW5pdC5QZXJpcGhlcmFsTW9kZSA9PSBTTUJVU19QRVJJUEhFUkFMX01PREVfU01CVVNfU0xBVkVfQVJQKSkpCisgIC8qIEVuYWJsZSBTbGF2ZSBCeXRlIENvbnRyb2wgb25seSBpbiBjYXNlIG9mIFBhY2tldCBFcnJvciBDaGVjayBpcyBlbmFibGVkCisgICAgIGFuZCBTTUJVUyBQZXJpcGhlcmFsIGlzIHNldCBpbiBTbGF2ZSBtb2RlICovCisgIGlmICgoaHNtYnVzLT5Jbml0LlBhY2tldEVycm9yQ2hlY2tNb2RlID09IFNNQlVTX1BFQ19FTkFCTEUpICYmIFwKKyAgICAgICgoaHNtYnVzLT5Jbml0LlBlcmlwaGVyYWxNb2RlID09IFNNQlVTX1BFUklQSEVSQUxfTU9ERV9TTUJVU19TTEFWRSkgfHwgXAorICAgICAgIChoc21idXMtPkluaXQuUGVyaXBoZXJhbE1vZGUgPT0gU01CVVNfUEVSSVBIRVJBTF9NT0RFX1NNQlVTX1NMQVZFX0FSUCkpKQogICB7CiAgICAgaHNtYnVzLT5JbnN0YW5jZS0+Q1IxIHw9IEkyQ19DUjFfU0JDOwogICB9CkBAIC01ODEsNyArNTk5LDggQEAKICAgKiBAcGFyYW0gIHBDYWxsYmFjayBwb2ludGVyIHRvIHRoZSBDYWxsYmFjayBmdW5jdGlvbgogICAqIEByZXR2YWwgSEFMIHN0YXR1cwogICAqLwotSEFMX1N0YXR1c1R5cGVEZWYgSEFMX1NNQlVTX1JlZ2lzdGVyQ2FsbGJhY2soU01CVVNfSGFuZGxlVHlwZURlZiAqaHNtYnVzLCBIQUxfU01CVVNfQ2FsbGJhY2tJRFR5cGVEZWYgQ2FsbGJhY2tJRCwKK0hBTF9TdGF0dXNUeXBlRGVmIEhBTF9TTUJVU19SZWdpc3RlckNhbGxiYWNrKFNNQlVTX0hhbmRsZVR5cGVEZWYgKmhzbWJ1cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTF9TTUJVU19DYWxsYmFja0lEVHlwZURlZiBDYWxsYmFja0lELAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcFNNQlVTX0NhbGxiYWNrVHlwZURlZiBwQ2FsbGJhY2spCiB7CiAgIEhBTF9TdGF0dXNUeXBlRGVmIHN0YXR1cyA9IEhBTF9PSzsKQEAgLTY5NSw3ICs3MTQsOCBAQAogICAqICAgICAgICAgIEBhcmcgQHJlZiBIQUxfU01CVVNfTVNQREVJTklUX0NCX0lEIE1zcERlSW5pdCBjYWxsYmFjayBJRAogICAqIEByZXR2YWwgSEFMIHN0YXR1cwogICAqLwotSEFMX1N0YXR1c1R5cGVEZWYgSEFMX1NNQlVTX1VuUmVnaXN0ZXJDYWxsYmFjayhTTUJVU19IYW5kbGVUeXBlRGVmICpoc21idXMsIEhBTF9TTUJVU19DYWxsYmFja0lEVHlwZURlZiBDYWxsYmFja0lEKQorSEFMX1N0YXR1c1R5cGVEZWYgSEFMX1NNQlVTX1VuUmVnaXN0ZXJDYWxsYmFjayhTTUJVU19IYW5kbGVUeXBlRGVmICpoc21idXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTF9TTUJVU19DYWxsYmFja0lEVHlwZURlZiBDYWxsYmFja0lEKQogewogICBIQUxfU3RhdHVzVHlwZURlZiBzdGF0dXMgPSBIQUxfT0s7CiAKQEAgLTc5MCw3ICs4MTAsOCBAQAogICAqIEBwYXJhbSAgcENhbGxiYWNrIHBvaW50ZXIgdG8gdGhlIEFkZHJlc3MgTWF0Y2ggQ2FsbGJhY2sgZnVuY3Rpb24KICAgKiBAcmV0dmFsIEhBTCBzdGF0dXMKICAgKi8KLUhBTF9TdGF0dXNUeXBlRGVmIEhBTF9TTUJVU19SZWdpc3RlckFkZHJDYWxsYmFjayhTTUJVU19IYW5kbGVUeXBlRGVmICpoc21idXMsIHBTTUJVU19BZGRyQ2FsbGJhY2tUeXBlRGVmIHBDYWxsYmFjaykKK0hBTF9TdGF0dXNUeXBlRGVmIEhBTF9TTUJVU19SZWdpc3RlckFkZHJDYWxsYmFjayhTTUJVU19IYW5kbGVUeXBlRGVmICpoc21idXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcFNNQlVTX0FkZHJDYWxsYmFja1R5cGVEZWYgcENhbGxiYWNrKQogewogICBIQUxfU3RhdHVzVHlwZURlZiBzdGF0dXMgPSBIQUxfT0s7CiAKQEAgLTkxNCw4ICs5MzUsOCBAQAogICAqIEBwYXJhbSAgWGZlck9wdGlvbnMgT3B0aW9ucyBvZiBUcmFuc2ZlciwgdmFsdWUgb2YgQHJlZiBTTUJVU19YZmVyT3B0aW9uc19kZWZpbml0aW9uCiAgICogQHJldHZhbCBIQUwgc3RhdHVzCiAgICovCi1IQUxfU3RhdHVzVHlwZURlZiBIQUxfU01CVVNfTWFzdGVyX1RyYW5zbWl0X0lUKFNNQlVTX0hhbmRsZVR5cGVEZWYgKmhzbWJ1cywgdWludDE2X3QgRGV2QWRkcmVzcywgdWludDhfdCAqcERhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQxNl90IFNpemUsIHVpbnQzMl90IFhmZXJPcHRpb25zKQorSEFMX1N0YXR1c1R5cGVEZWYgSEFMX1NNQlVTX01hc3Rlcl9UcmFuc21pdF9JVChTTUJVU19IYW5kbGVUeXBlRGVmICpoc21idXMsIHVpbnQxNl90IERldkFkZHJlc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKnBEYXRhLCB1aW50MTZfdCBTaXplLCB1aW50MzJfdCBYZmVyT3B0aW9ucykKIHsKICAgdWludDMyX3QgdG1wOwogCkBAIC05NTUsNyArOTc2LDggQEAKICAgICBpZiAoKGhzbWJ1cy0+WGZlclNpemUgPCBoc21idXMtPlhmZXJDb3VudCkgJiYgKGhzbWJ1cy0+WGZlclNpemUgPT0gTUFYX05CWVRFX1NJWkUpKQogICAgIHsKICAgICAgIFNNQlVTX1RyYW5zZmVyQ29uZmlnKGhzbWJ1cywgRGV2QWRkcmVzcywgKHVpbnQ4X3QpaHNtYnVzLT5YZmVyU2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIFNNQlVTX1JFTE9BRF9NT0RFIHwgKGhzbWJ1cy0+WGZlck9wdGlvbnMgJiBTTUJVU19TRU5EUEVDX01PREUpLCBTTUJVU19HRU5FUkFURV9TVEFSVF9XUklURSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICBTTUJVU19SRUxPQURfTU9ERSB8IChoc21idXMtPlhmZXJPcHRpb25zICYgU01CVVNfU0VORFBFQ19NT0RFKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFNNQlVTX0dFTkVSQVRFX1NUQVJUX1dSSVRFKTsKICAgICB9CiAgICAgZWxzZQogICAgIHsKQEAgLTk2NSw5ICs5ODcsMTEgQEAKICAgICAgIC8qIFN0b3JlIGN1cnJlbnQgdm9sYXRpbGUgWGZlck9wdGlvbnMsIG1pc3JhIHJ1bGUgKi8KICAgICAgIHRtcCA9IGhzbWJ1cy0+WGZlck9wdGlvbnM7CiAKLSAgICAgIGlmICgoaHNtYnVzLT5QcmV2aW91c1N0YXRlID09IEhBTF9TTUJVU19TVEFURV9NQVNURVJfQlVTWV9UWCkgJiYgKElTX1NNQlVTX1RSQU5TRkVSX09USEVSX09QVElPTlNfUkVRVUVTVCh0bXApID09IDApKQorICAgICAgaWYgKChoc21idXMtPlByZXZpb3VzU3RhdGUgPT0gSEFMX1NNQlVTX1NUQVRFX01BU1RFUl9CVVNZX1RYKSAmJiBcCisgICAgICAgICAgKElTX1NNQlVTX1RSQU5TRkVSX09USEVSX09QVElPTlNfUkVRVUVTVCh0bXApID09IDApKQogICAgICAgewotICAgICAgICBTTUJVU19UcmFuc2ZlckNvbmZpZyhoc21idXMsIERldkFkZHJlc3MsICh1aW50OF90KWhzbWJ1cy0+WGZlclNpemUsIGhzbWJ1cy0+WGZlck9wdGlvbnMsIFNNQlVTX05PX1NUQVJUU1RPUCk7CisgICAgICAgIFNNQlVTX1RyYW5zZmVyQ29uZmlnKGhzbWJ1cywgRGV2QWRkcmVzcywgKHVpbnQ4X3QpaHNtYnVzLT5YZmVyU2l6ZSwgaHNtYnVzLT5YZmVyT3B0aW9ucywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU01CVVNfTk9fU1RBUlRTVE9QKTsKICAgICAgIH0KICAgICAgIC8qIEVsc2UgdHJhbnNmZXIgZGlyZWN0aW9uIGNoYW5nZSwgc28gZ2VuZXJhdGUgUmVzdGFydCB3aXRoIG5ldyB0cmFuc2ZlciBkaXJlY3Rpb24gKi8KICAgICAgIGVsc2UKQEAgLTk3Niw3ICsxMDAwLDkgQEAKICAgICAgICAgU01CVVNfQ29udmVydE90aGVyWGZlck9wdGlvbnMoaHNtYnVzKTsKIAogICAgICAgICAvKiBIYW5kbGUgVHJhbnNmZXIgKi8KLSAgICAgICAgU01CVVNfVHJhbnNmZXJDb25maWcoaHNtYnVzLCBEZXZBZGRyZXNzLCAodWludDhfdCloc21idXMtPlhmZXJTaXplLCBoc21idXMtPlhmZXJPcHRpb25zLCBTTUJVU19HRU5FUkFURV9TVEFSVF9XUklURSk7CisgICAgICAgIFNNQlVTX1RyYW5zZmVyQ29uZmlnKGhzbWJ1cywgRGV2QWRkcmVzcywgKHVpbnQ4X3QpaHNtYnVzLT5YZmVyU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHNtYnVzLT5YZmVyT3B0aW9ucywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU01CVVNfR0VORVJBVEVfU1RBUlRfV1JJVEUpOwogICAgICAgfQogCiAgICAgICAvKiBJZiBQRUMgbW9kZSBpcyBlbmFibGUsIHNpemUgdG8gdHJhbnNtaXQgbWFuYWdlIGJ5IFNXIHBhcnQgc2hvdWxkIGJlIFNpemUtMSBieXRlLCBjb3JyZXNwb25kaW5nIHRvIFBFQyBieXRlICovCkBAIC0xMDU3LDcgKzEwODMsOCBAQAogICAgIGlmICgoaHNtYnVzLT5YZmVyU2l6ZSA8IGhzbWJ1cy0+WGZlckNvdW50KSAmJiAoaHNtYnVzLT5YZmVyU2l6ZSA9PSBNQVhfTkJZVEVfU0laRSkpCiAgICAgewogICAgICAgU01CVVNfVHJhbnNmZXJDb25maWcoaHNtYnVzLCBEZXZBZGRyZXNzLCAodWludDhfdCloc21idXMtPlhmZXJTaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgU01CVVNfUkVMT0FEX01PREUgIHwgKGhzbWJ1cy0+WGZlck9wdGlvbnMgJiBTTUJVU19TRU5EUEVDX01PREUpLCBTTUJVU19HRU5FUkFURV9TVEFSVF9SRUFEKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFNNQlVTX1JFTE9BRF9NT0RFICB8IChoc21idXMtPlhmZXJPcHRpb25zICYgU01CVVNfU0VORFBFQ19NT0RFKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFNNQlVTX0dFTkVSQVRFX1NUQVJUX1JFQUQpOwogICAgIH0KICAgICBlbHNlCiAgICAgewpAQCAtMTA2Nyw5ICsxMDk0LDExIEBACiAgICAgICAvKiBTdG9yZSBjdXJyZW50IHZvbGF0aWxlIFhmZXJPcHRpb25zLCBNaXNyYSBydWxlICovCiAgICAgICB0bXAgPSBoc21idXMtPlhmZXJPcHRpb25zOwogCi0gICAgICBpZiAoKGhzbWJ1cy0+UHJldmlvdXNTdGF0ZSA9PSBIQUxfU01CVVNfU1RBVEVfTUFTVEVSX0JVU1lfUlgpICYmIChJU19TTUJVU19UUkFOU0ZFUl9PVEhFUl9PUFRJT05TX1JFUVVFU1QodG1wKSA9PSAwKSkKKyAgICAgIGlmICgoaHNtYnVzLT5QcmV2aW91c1N0YXRlID09IEhBTF9TTUJVU19TVEFURV9NQVNURVJfQlVTWV9SWCkgJiYgXAorICAgICAgICAgIChJU19TTUJVU19UUkFOU0ZFUl9PVEhFUl9PUFRJT05TX1JFUVVFU1QodG1wKSA9PSAwKSkKICAgICAgIHsKLSAgICAgICAgU01CVVNfVHJhbnNmZXJDb25maWcoaHNtYnVzLCBEZXZBZGRyZXNzLCAodWludDhfdCloc21idXMtPlhmZXJTaXplLCBoc21idXMtPlhmZXJPcHRpb25zLCBTTUJVU19OT19TVEFSVFNUT1ApOworICAgICAgICBTTUJVU19UcmFuc2ZlckNvbmZpZyhoc21idXMsIERldkFkZHJlc3MsICh1aW50OF90KWhzbWJ1cy0+WGZlclNpemUsIGhzbWJ1cy0+WGZlck9wdGlvbnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNNQlVTX05PX1NUQVJUU1RPUCk7CiAgICAgICB9CiAgICAgICAvKiBFbHNlIHRyYW5zZmVyIGRpcmVjdGlvbiBjaGFuZ2UsIHNvIGdlbmVyYXRlIFJlc3RhcnQgd2l0aCBuZXcgdHJhbnNmZXIgZGlyZWN0aW9uICovCiAgICAgICBlbHNlCkBAIC0xMDc4LDcgKzExMDcsOSBAQAogICAgICAgICBTTUJVU19Db252ZXJ0T3RoZXJYZmVyT3B0aW9ucyhoc21idXMpOwogCiAgICAgICAgIC8qIEhhbmRsZSBUcmFuc2ZlciAqLwotICAgICAgICBTTUJVU19UcmFuc2ZlckNvbmZpZyhoc21idXMsIERldkFkZHJlc3MsICh1aW50OF90KWhzbWJ1cy0+WGZlclNpemUsIGhzbWJ1cy0+WGZlck9wdGlvbnMsIFNNQlVTX0dFTkVSQVRFX1NUQVJUX1JFQUQpOworICAgICAgICBTTUJVU19UcmFuc2ZlckNvbmZpZyhoc21idXMsIERldkFkZHJlc3MsICh1aW50OF90KWhzbWJ1cy0+WGZlclNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhzbWJ1cy0+WGZlck9wdGlvbnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNNQlVTX0dFTkVSQVRFX1NUQVJUX1JFQUQpOwogICAgICAgfQogICAgIH0KIApAQCAtMTIyMiwxMiArMTI1MywxNCBAQAogICAgIGlmICgoaHNtYnVzLT5YZmVyU2l6ZSA8IGhzbWJ1cy0+WGZlckNvdW50KSAmJiAoaHNtYnVzLT5YZmVyU2l6ZSA9PSBNQVhfTkJZVEVfU0laRSkpCiAgICAgewogICAgICAgU01CVVNfVHJhbnNmZXJDb25maWcoaHNtYnVzLCAwLCAodWludDhfdCloc21idXMtPlhmZXJTaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgU01CVVNfUkVMT0FEX01PREUgfCAoaHNtYnVzLT5YZmVyT3B0aW9ucyAmIFNNQlVTX1NFTkRQRUNfTU9ERSksIFNNQlVTX05PX1NUQVJUU1RPUCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICBTTUJVU19SRUxPQURfTU9ERSB8IChoc21idXMtPlhmZXJPcHRpb25zICYgU01CVVNfU0VORFBFQ19NT0RFKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFNNQlVTX05PX1NUQVJUU1RPUCk7CiAgICAgfQogICAgIGVsc2UKICAgICB7CiAgICAgICAvKiBTZXQgTkJZVEUgdG8gdHJhbnNtaXQgKi8KLSAgICAgIFNNQlVTX1RyYW5zZmVyQ29uZmlnKGhzbWJ1cywgMCwgKHVpbnQ4X3QpaHNtYnVzLT5YZmVyU2l6ZSwgaHNtYnVzLT5YZmVyT3B0aW9ucywgU01CVVNfTk9fU1RBUlRTVE9QKTsKKyAgICAgIFNNQlVTX1RyYW5zZmVyQ29uZmlnKGhzbWJ1cywgMCwgKHVpbnQ4X3QpaHNtYnVzLT5YZmVyU2l6ZSwgaHNtYnVzLT5YZmVyT3B0aW9ucywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFNNQlVTX05PX1NUQVJUU1RPUCk7CiAKICAgICAgIC8qIElmIFBFQyBtb2RlIGlzIGVuYWJsZSwgc2l6ZSB0byB0cmFuc21pdCBzaG91bGQgYmUgU2l6ZS0xIGJ5dGUsIGNvcnJlc3BvbmRpbmcgdG8gUEVDIGJ5dGUgKi8KICAgICAgIC8qIFBFQyBieXRlIGlzIGF1dG9tYXRpY2FsbHkgc2VudCBieSBIVyBibG9jaywgbm8gbmVlZCB0byBtYW5hZ2UgaXQgaW4gVHJhbnNtaXQgcHJvY2VzcyAqLwpAQCAtMTMxMyw3ICsxMzQ2LDggQEAKICAgICAvKiBUaGlzIFJFTE9BRCBiaXQgd2lsbCBiZSByZXNldCBmb3IgbGFzdCBCWVRFIHRvIGJlIHJlY2VpdmUgaW4gU01CVVNfU2xhdmVfSVNSICovCiAgICAgaWYgKCgoU01CVVNfR0VUX1BFQ19NT0RFKGhzbWJ1cykgIT0gMFVMKSAmJiAoaHNtYnVzLT5YZmVyU2l6ZSA9PSAyVSkpIHx8IChoc21idXMtPlhmZXJTaXplID09IDFVKSkKICAgICB7Ci0gICAgICBTTUJVU19UcmFuc2ZlckNvbmZpZyhoc21idXMsIDAsICh1aW50OF90KWhzbWJ1cy0+WGZlclNpemUsIGhzbWJ1cy0+WGZlck9wdGlvbnMsIFNNQlVTX05PX1NUQVJUU1RPUCk7CisgICAgICBTTUJVU19UcmFuc2ZlckNvbmZpZyhoc21idXMsIDAsICh1aW50OF90KWhzbWJ1cy0+WGZlclNpemUsIGhzbWJ1cy0+WGZlck9wdGlvbnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBTTUJVU19OT19TVEFSVFNUT1ApOwogICAgIH0KICAgICBlbHNlCiAgICAgewpAQCAtMTU3Niw3ICsxNjEwLDggQEAKICAgdWludDMyX3QgdG1wY3IxdmFsdWUgPSBSRUFEX1JFRyhoc21idXMtPkluc3RhbmNlLT5DUjEpOwogCiAgIC8qIFNNQlVTIGluIG1vZGUgVHJhbnNtaXR0ZXIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLSAgaWYgKChTTUJVU19DSEVDS19JVF9TT1VSQ0UodG1wY3IxdmFsdWUsIChTTUJVU19JVF9UQ0kgfCBTTUJVU19JVF9TVE9QSSB8IFNNQlVTX0lUX05BQ0tJIHwgU01CVVNfSVRfVFhJKSkgIT0gUkVTRVQpICYmCisgIGlmICgoU01CVVNfQ0hFQ0tfSVRfU09VUkNFKHRtcGNyMXZhbHVlLCAoU01CVVNfSVRfVENJIHwgU01CVVNfSVRfU1RPUEkgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNNQlVTX0lUX05BQ0tJIHwgU01CVVNfSVRfVFhJKSkgIT0gUkVTRVQpICYmCiAgICAgICAoKFNNQlVTX0NIRUNLX0ZMQUcodG1waXNydmFsdWUsIFNNQlVTX0ZMQUdfVFhJUykgIT0gUkVTRVQpIHx8CiAgICAgICAgKFNNQlVTX0NIRUNLX0ZMQUcodG1waXNydmFsdWUsIFNNQlVTX0ZMQUdfVENSKSAhPSBSRVNFVCkgfHwKICAgICAgICAoU01CVVNfQ0hFQ0tfRkxBRyh0bXBpc3J2YWx1ZSwgU01CVVNfRkxBR19UQykgIT0gUkVTRVQpIHx8CkBAIC0xNjAwLDcgKzE2MzUsOCBAQAogICB9CiAKICAgLyogU01CVVMgaW4gbW9kZSBSZWNlaXZlciAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLSAgaWYgKChTTUJVU19DSEVDS19JVF9TT1VSQ0UodG1wY3IxdmFsdWUsIChTTUJVU19JVF9UQ0kgfCBTTUJVU19JVF9TVE9QSSB8IFNNQlVTX0lUX05BQ0tJIHwgU01CVVNfSVRfUlhJKSkgIT0gUkVTRVQpICYmCisgIGlmICgoU01CVVNfQ0hFQ0tfSVRfU09VUkNFKHRtcGNyMXZhbHVlLCAoU01CVVNfSVRfVENJIHwgU01CVVNfSVRfU1RPUEkgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNNQlVTX0lUX05BQ0tJIHwgU01CVVNfSVRfUlhJKSkgIT0gUkVTRVQpICYmCiAgICAgICAoKFNNQlVTX0NIRUNLX0ZMQUcodG1waXNydmFsdWUsIFNNQlVTX0ZMQUdfUlhORSkgIT0gUkVTRVQpIHx8CiAgICAgICAgKFNNQlVTX0NIRUNLX0ZMQUcodG1waXNydmFsdWUsIFNNQlVTX0ZMQUdfVENSKSAhPSBSRVNFVCkgfHwKICAgICAgICAoU01CVVNfQ0hFQ0tfRkxBRyh0bXBpc3J2YWx1ZSwgU01CVVNfRkxBR19UQykgIT0gUkVTRVQpIHx8CkBAIC0xNzIwLDcgKzE3NTYsOCBAQAogICAqIEBwYXJhbSAgQWRkck1hdGNoQ29kZSBBZGRyZXNzIE1hdGNoIENvZGUKICAgKiBAcmV0dmFsIE5vbmUKICAgKi8KLV9fd2VhayB2b2lkIEhBTF9TTUJVU19BZGRyQ2FsbGJhY2soU01CVVNfSGFuZGxlVHlwZURlZiAqaHNtYnVzLCB1aW50OF90IFRyYW5zZmVyRGlyZWN0aW9uLCB1aW50MTZfdCBBZGRyTWF0Y2hDb2RlKQorX193ZWFrIHZvaWQgSEFMX1NNQlVTX0FkZHJDYWxsYmFjayhTTUJVU19IYW5kbGVUeXBlRGVmICpoc21idXMsIHVpbnQ4X3QgVHJhbnNmZXJEaXJlY3Rpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQxNl90IEFkZHJNYXRjaENvZGUpCiB7CiAgIC8qIFByZXZlbnQgdW51c2VkIGFyZ3VtZW50KHMpIGNvbXBpbGF0aW9uIHdhcm5pbmcgKi8KICAgVU5VU0VEKGhzbWJ1cyk7CkBAIC0xODQyLDYgKzE4NzksOSBAQAogICAgIC8qIE5vIG5lZWQgdG8gZ2VuZXJhdGUgU1RPUCwgaXQgaXMgYXV0b21hdGljYWxseSBkb25lICovCiAgICAgaHNtYnVzLT5FcnJvckNvZGUgfD0gSEFMX1NNQlVTX0VSUk9SX0FDS0Y7CiAKKyAgICAvKiBGbHVzaCBUWCByZWdpc3RlciAqLworICAgIFNNQlVTX0ZsdXNoX1RYRFIoaHNtYnVzKTsKKwogICAgIC8qIFByb2Nlc3MgVW5sb2NrZWQgKi8KICAgICBfX0hBTF9VTkxPQ0soaHNtYnVzKTsKIApAQCAtMTk2NywxMyArMjAwNywxNSBAQAogICAgICAgaWYgKGhzbWJ1cy0+WGZlckNvdW50ID4gTUFYX05CWVRFX1NJWkUpCiAgICAgICB7CiAgICAgICAgIFNNQlVTX1RyYW5zZmVyQ29uZmlnKGhzbWJ1cywgRGV2QWRkcmVzcywgTUFYX05CWVRFX1NJWkUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChTTUJVU19SRUxPQURfTU9ERSB8IChoc21idXMtPlhmZXJPcHRpb25zICYgU01CVVNfU0VORFBFQ19NT0RFKSksIFNNQlVTX05PX1NUQVJUU1RPUCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChTTUJVU19SRUxPQURfTU9ERSB8IChoc21idXMtPlhmZXJPcHRpb25zICYgU01CVVNfU0VORFBFQ19NT0RFKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNNQlVTX05PX1NUQVJUU1RPUCk7CiAgICAgICAgIGhzbWJ1cy0+WGZlclNpemUgPSBNQVhfTkJZVEVfU0laRTsKICAgICAgIH0KICAgICAgIGVsc2UKICAgICAgIHsKICAgICAgICAgaHNtYnVzLT5YZmVyU2l6ZSA9IGhzbWJ1cy0+WGZlckNvdW50OwotICAgICAgICBTTUJVU19UcmFuc2ZlckNvbmZpZyhoc21idXMsIERldkFkZHJlc3MsICh1aW50OF90KWhzbWJ1cy0+WGZlclNpemUsIGhzbWJ1cy0+WGZlck9wdGlvbnMsIFNNQlVTX05PX1NUQVJUU1RPUCk7CisgICAgICAgIFNNQlVTX1RyYW5zZmVyQ29uZmlnKGhzbWJ1cywgRGV2QWRkcmVzcywgKHVpbnQ4X3QpaHNtYnVzLT5YZmVyU2l6ZSwgaHNtYnVzLT5YZmVyT3B0aW9ucywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU01CVVNfTk9fU1RBUlRTVE9QKTsKICAgICAgICAgLyogSWYgUEVDIG1vZGUgaXMgZW5hYmxlLCBzaXplIHRvIHRyYW5zbWl0IHNob3VsZCBiZSBTaXplLTEgYnl0ZSwgY29ycmVzcG9uZGluZyB0byBQRUMgYnl0ZSAqLwogICAgICAgICAvKiBQRUMgYnl0ZSBpcyBhdXRvbWF0aWNhbGx5IHNlbnQgYnkgSFcgYmxvY2ssIG5vIG5lZWQgdG8gbWFuYWdlIGl0IGluIFRyYW5zbWl0IHByb2Nlc3MgKi8KICAgICAgICAgaWYgKFNNQlVTX0dFVF9QRUNfTU9ERShoc21idXMpICE9IDBVTCkKQEAgLTIxMzAsNiArMjE3Miw5IEBACiAgICAgICAvKiBDbGVhciBOQUNLIEZsYWcgKi8KICAgICAgIF9fSEFMX1NNQlVTX0NMRUFSX0ZMQUcoaHNtYnVzLCBTTUJVU19GTEFHX0FGKTsKIAorICAgICAgLyogRmx1c2ggVFggcmVnaXN0ZXIgKi8KKyAgICAgIFNNQlVTX0ZsdXNoX1RYRFIoaHNtYnVzKTsKKwogICAgICAgLyogUHJvY2VzcyBVbmxvY2tlZCAqLwogICAgICAgX19IQUxfVU5MT0NLKGhzbWJ1cyk7CiAgICAgfQpAQCAtMjE1MSw2ICsyMTk2LDkgQEAKICAgICAgIC8qIFNldCBFcnJvckNvZGUgY29ycmVzcG9uZGluZyB0byBhIE5vbi1BY2tub3dsZWRnZSAqLwogICAgICAgaHNtYnVzLT5FcnJvckNvZGUgfD0gSEFMX1NNQlVTX0VSUk9SX0FDS0Y7CiAKKyAgICAgIC8qIEZsdXNoIFRYIHJlZ2lzdGVyICovCisgICAgICBTTUJVU19GbHVzaF9UWERSKGhzbWJ1cyk7CisKICAgICAgIC8qIFByb2Nlc3MgVW5sb2NrZWQgKi8KICAgICAgIF9fSEFMX1VOTE9DSyhoc21idXMpOwogCkBAIC0yMjI1LDcgKzIyNzMsOSBAQAogICAgICAgZWxzZQogICAgICAgewogICAgICAgICAvKiBTZXQgUmVsb2FkIGZvciBuZXh0IEJ5dGVzICovCi0gICAgICAgIFNNQlVTX1RyYW5zZmVyQ29uZmlnKGhzbWJ1cywgMCwgMSwgU01CVVNfUkVMT0FEX01PREUgIHwgKGhzbWJ1cy0+WGZlck9wdGlvbnMgJiBTTUJVU19TRU5EUEVDX01PREUpLCBTTUJVU19OT19TVEFSVFNUT1ApOworICAgICAgICBTTUJVU19UcmFuc2ZlckNvbmZpZyhoc21idXMsIDAsIDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNNQlVTX1JFTE9BRF9NT0RFICB8IChoc21idXMtPlhmZXJPcHRpb25zICYgU01CVVNfU0VORFBFQ19NT0RFKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU01CVVNfTk9fU1RBUlRTVE9QKTsKIAogICAgICAgICAvKiBBY2sgbGFzdCBCeXRlIFJlYWQgKi8KICAgICAgICAgaHNtYnVzLT5JbnN0YW5jZS0+Q1IyICY9IH5JMkNfQ1IyX05BQ0s7CkBAIC0yMjM3LDE0ICsyMjg3LDE2IEBACiAgICAgICB7CiAgICAgICAgIGlmIChoc21idXMtPlhmZXJDb3VudCA+IE1BWF9OQllURV9TSVpFKQogICAgICAgICB7Ci0gICAgICAgICAgU01CVVNfVHJhbnNmZXJDb25maWcoaHNtYnVzLCAwLCBNQVhfTkJZVEVfU0laRSwgKFNNQlVTX1JFTE9BRF9NT0RFIHwgKGhzbWJ1cy0+WGZlck9wdGlvbnMgJiBTTUJVU19TRU5EUEVDX01PREUpKSwKKyAgICAgICAgICBTTUJVU19UcmFuc2ZlckNvbmZpZyhoc21idXMsIDAsIE1BWF9OQllURV9TSVpFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChTTUJVU19SRUxPQURfTU9ERSB8IChoc21idXMtPlhmZXJPcHRpb25zICYgU01CVVNfU0VORFBFQ19NT0RFKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU01CVVNfTk9fU1RBUlRTVE9QKTsKICAgICAgICAgICBoc21idXMtPlhmZXJTaXplID0gTUFYX05CWVRFX1NJWkU7CiAgICAgICAgIH0KICAgICAgICAgZWxzZQogICAgICAgICB7CiAgICAgICAgICAgaHNtYnVzLT5YZmVyU2l6ZSA9IGhzbWJ1cy0+WGZlckNvdW50OwotICAgICAgICAgIFNNQlVTX1RyYW5zZmVyQ29uZmlnKGhzbWJ1cywgMCwgKHVpbnQ4X3QpaHNtYnVzLT5YZmVyU2l6ZSwgaHNtYnVzLT5YZmVyT3B0aW9ucywgU01CVVNfTk9fU1RBUlRTVE9QKTsKKyAgICAgICAgICBTTUJVU19UcmFuc2ZlckNvbmZpZyhoc21idXMsIDAsICh1aW50OF90KWhzbWJ1cy0+WGZlclNpemUsIGhzbWJ1cy0+WGZlck9wdGlvbnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU01CVVNfTk9fU1RBUlRTVE9QKTsKICAgICAgICAgICAvKiBJZiBQRUMgbW9kZSBpcyBlbmFibGUsIHNpemUgdG8gdHJhbnNtaXQgc2hvdWxkIGJlIFNpemUtMSBieXRlLCBjb3JyZXNwb25kaW5nIHRvIFBFQyBieXRlICovCiAgICAgICAgICAgLyogUEVDIGJ5dGUgaXMgYXV0b21hdGljYWxseSBzZW50IGJ5IEhXIGJsb2NrLCBubyBuZWVkIHRvIG1hbmFnZSBpdCBpbiBUcmFuc21pdCBwcm9jZXNzICovCiAgICAgICAgICAgaWYgKFNNQlVTX0dFVF9QRUNfTU9ERShoc21idXMpICE9IDBVTCkKQEAgLTI0ODksNyArMjU0MSw4IEBACiAgIHVpbnQzMl90IHRtcGVycm9yOwogCiAgIC8qIFNNQlVTIEJ1cyBlcnJvciBpbnRlcnJ1cHQgb2NjdXJyZWQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLSAgaWYgKCgoaXRmbGFncyAmIFNNQlVTX0ZMQUdfQkVSUikgPT0gU01CVVNfRkxBR19CRVJSKSAmJiAoKGl0c291cmNlcyAmIFNNQlVTX0lUX0VSUkkpID09IFNNQlVTX0lUX0VSUkkpKQorICBpZiAoKChpdGZsYWdzICYgU01CVVNfRkxBR19CRVJSKSA9PSBTTUJVU19GTEFHX0JFUlIpICYmIFwKKyAgICAgICgoaXRzb3VyY2VzICYgU01CVVNfSVRfRVJSSSkgPT0gU01CVVNfSVRfRVJSSSkpCiAgIHsKICAgICBoc21idXMtPkVycm9yQ29kZSB8PSBIQUxfU01CVVNfRVJST1JfQkVSUjsKIApAQCAtMjQ5OCw3ICsyNTUxLDggQEAKICAgfQogCiAgIC8qIFNNQlVTIE92ZXItUnVuL1VuZGVyLVJ1biBpbnRlcnJ1cHQgb2NjdXJyZWQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi0gIGlmICgoKGl0ZmxhZ3MgJiBTTUJVU19GTEFHX09WUikgPT0gU01CVVNfRkxBR19PVlIpICYmICgoaXRzb3VyY2VzICYgU01CVVNfSVRfRVJSSSkgPT0gU01CVVNfSVRfRVJSSSkpCisgIGlmICgoKGl0ZmxhZ3MgJiBTTUJVU19GTEFHX09WUikgPT0gU01CVVNfRkxBR19PVlIpICYmIFwKKyAgICAgICgoaXRzb3VyY2VzICYgU01CVVNfSVRfRVJSSSkgPT0gU01CVVNfSVRfRVJSSSkpCiAgIHsKICAgICBoc21idXMtPkVycm9yQ29kZSB8PSBIQUxfU01CVVNfRVJST1JfT1ZSOwogCkBAIC0yNTA3LDcgKzI1NjEsOCBAQAogICB9CiAKICAgLyogU01CVVMgQXJiaXRyYXRpb24gTG9zcyBlcnJvciBpbnRlcnJ1cHQgb2NjdXJyZWQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLSAgaWYgKCgoaXRmbGFncyAmIFNNQlVTX0ZMQUdfQVJMTykgPT0gU01CVVNfRkxBR19BUkxPKSAmJiAoKGl0c291cmNlcyAmIFNNQlVTX0lUX0VSUkkpID09IFNNQlVTX0lUX0VSUkkpKQorICBpZiAoKChpdGZsYWdzICYgU01CVVNfRkxBR19BUkxPKSA9PSBTTUJVU19GTEFHX0FSTE8pICYmIFwKKyAgICAgICgoaXRzb3VyY2VzICYgU01CVVNfSVRfRVJSSSkgPT0gU01CVVNfSVRfRVJSSSkpCiAgIHsKICAgICBoc21idXMtPkVycm9yQ29kZSB8PSBIQUxfU01CVVNfRVJST1JfQVJMTzsKIApAQCAtMjUxNiw3ICsyNTcxLDggQEAKICAgfQogCiAgIC8qIFNNQlVTIFRpbWVvdXQgZXJyb3IgaW50ZXJydXB0IG9jY3VycmVkIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi0gIGlmICgoKGl0ZmxhZ3MgJiBTTUJVU19GTEFHX1RJTUVPVVQpID09IFNNQlVTX0ZMQUdfVElNRU9VVCkgJiYgKChpdHNvdXJjZXMgJiBTTUJVU19JVF9FUlJJKSA9PSBTTUJVU19JVF9FUlJJKSkKKyAgaWYgKCgoaXRmbGFncyAmIFNNQlVTX0ZMQUdfVElNRU9VVCkgPT0gU01CVVNfRkxBR19USU1FT1VUKSAmJiBcCisgICAgICAoKGl0c291cmNlcyAmIFNNQlVTX0lUX0VSUkkpID09IFNNQlVTX0lUX0VSUkkpKQogICB7CiAgICAgaHNtYnVzLT5FcnJvckNvZGUgfD0gSEFMX1NNQlVTX0VSUk9SX0JVU1RJTUVPVVQ7CiAKQEAgLTI1MjUsNyArMjU4MSw4IEBACiAgIH0KIAogICAvKiBTTUJVUyBBbGVydCBlcnJvciBpbnRlcnJ1cHQgb2NjdXJyZWQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwotICBpZiAoKChpdGZsYWdzICYgU01CVVNfRkxBR19BTEVSVCkgPT0gU01CVVNfRkxBR19BTEVSVCkgJiYgKChpdHNvdXJjZXMgJiBTTUJVU19JVF9FUlJJKSA9PSBTTUJVU19JVF9FUlJJKSkKKyAgaWYgKCgoaXRmbGFncyAmIFNNQlVTX0ZMQUdfQUxFUlQpID09IFNNQlVTX0ZMQUdfQUxFUlQpICYmIFwKKyAgICAgICgoaXRzb3VyY2VzICYgU01CVVNfSVRfRVJSSSkgPT0gU01CVVNfSVRfRVJSSSkpCiAgIHsKICAgICBoc21idXMtPkVycm9yQ29kZSB8PSBIQUxfU01CVVNfRVJST1JfQUxFUlQ7CiAKQEAgLTI1MzQsNyArMjU5MSw4IEBACiAgIH0KIAogICAvKiBTTUJVUyBQYWNrZXQgRXJyb3IgQ2hlY2sgZXJyb3IgaW50ZXJydXB0IG9jY3VycmVkIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwotICBpZiAoKChpdGZsYWdzICYgU01CVVNfRkxBR19QRUNFUlIpID09IFNNQlVTX0ZMQUdfUEVDRVJSKSAmJiAoKGl0c291cmNlcyAmIFNNQlVTX0lUX0VSUkkpID09IFNNQlVTX0lUX0VSUkkpKQorICBpZiAoKChpdGZsYWdzICYgU01CVVNfRkxBR19QRUNFUlIpID09IFNNQlVTX0ZMQUdfUEVDRVJSKSAmJiBcCisgICAgICAoKGl0c291cmNlcyAmIFNNQlVTX0lUX0VSUkkpID09IFNNQlVTX0lUX0VSUkkpKQogICB7CiAgICAgaHNtYnVzLT5FcnJvckNvZGUgfD0gSEFMX1NNQlVTX0VSUk9SX1BFQ0VSUjsKIApAQCAtMjU0Miw3ICsyNjAwLDEwIEBACiAgICAgX19IQUxfU01CVVNfQ0xFQVJfRkxBRyhoc21idXMsIFNNQlVTX0ZMQUdfUEVDRVJSKTsKICAgfQogCi0gIC8qIFN0b3JlIGN1cnJlbnQgdm9sYXRpbGUgaHNtYnVzLT5TdGF0ZSwgbWlzcmEgcnVsZSAqLworICAvKiBGbHVzaCBUWCByZWdpc3RlciAqLworICBTTUJVU19GbHVzaF9UWERSKGhzbWJ1cyk7CisKKyAgLyogU3RvcmUgY3VycmVudCB2b2xhdGlsZSBoc21idXMtPkVycm9yQ29kZSwgbWlzcmEgcnVsZSAqLwogICB0bXBlcnJvciA9IGhzbWJ1cy0+RXJyb3JDb2RlOwogCiAgIC8qIENhbGwgdGhlIEVycm9yIENhbGxiYWNrIGluIGNhc2Ugb2YgRXJyb3IgZGV0ZWN0ZWQgKi8KQEAgLTI1ODIsOCArMjY0Myw4IEBACiAgICogQHBhcmFtICBUaW1lb3V0IFRpbWVvdXQgZHVyYXRpb24KICAgKiBAcmV0dmFsIEhBTCBzdGF0dXMKICAgKi8KLXN0YXRpYyBIQUxfU3RhdHVzVHlwZURlZiBTTUJVU19XYWl0T25GbGFnVW50aWxUaW1lb3V0KFNNQlVTX0hhbmRsZVR5cGVEZWYgKmhzbWJ1cywgdWludDMyX3QgRmxhZywgRmxhZ1N0YXR1cyBTdGF0dXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBUaW1lb3V0KQorc3RhdGljIEhBTF9TdGF0dXNUeXBlRGVmIFNNQlVTX1dhaXRPbkZsYWdVbnRpbFRpbWVvdXQoU01CVVNfSGFuZGxlVHlwZURlZiAqaHNtYnVzLCB1aW50MzJfdCBGbGFnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmxhZ1N0YXR1cyBTdGF0dXMsIHVpbnQzMl90IFRpbWVvdXQpCiB7CiAgIHVpbnQzMl90IHRpY2tzdGFydCA9IEhBTF9HZXRUaWNrKCk7CiAKQEAgLTI2MTMsNiArMjY3NCwyNyBAQAogfQogCiAvKioKKyAgKiBAYnJpZWYgIFNNQlVTIFR4IGRhdGEgcmVnaXN0ZXIgZmx1c2ggcHJvY2Vzcy4KKyAgKiBAcGFyYW0gIGhzbWJ1cyBTTUJVUyBoYW5kbGUuCisgICogQHJldHZhbCBOb25lCisgICovCitzdGF0aWMgdm9pZCBTTUJVU19GbHVzaF9UWERSKFNNQlVTX0hhbmRsZVR5cGVEZWYgKmhzbWJ1cykKK3sKKyAgLyogSWYgYSBwZW5kaW5nIFRYSVMgZmxhZyBpcyBzZXQgKi8KKyAgLyogV3JpdGUgYSBkdW1teSBkYXRhIGluIFRYRFIgdG8gY2xlYXIgaXQgKi8KKyAgaWYgKF9fSEFMX1NNQlVTX0dFVF9GTEFHKGhzbWJ1cywgU01CVVNfRkxBR19UWElTKSAhPSBSRVNFVCkKKyAgeworICAgIGhzbWJ1cy0+SW5zdGFuY2UtPlRYRFIgPSAweDAwVTsKKyAgfQorCisgIC8qIEZsdXNoIFRYIHJlZ2lzdGVyIGlmIG5vdCBlbXB0eSAqLworICBpZiAoX19IQUxfU01CVVNfR0VUX0ZMQUcoaHNtYnVzLCBTTUJVU19GTEFHX1RYRSkgPT0gUkVTRVQpCisgIHsKKyAgICBfX0hBTF9TTUJVU19DTEVBUl9GTEFHKGhzbWJ1cywgU01CVVNfRkxBR19UWEUpOworICB9Cit9CisKKy8qKgogICAqIEBicmllZiAgSGFuZGxlIFNNQlVTeCBjb21tdW5pY2F0aW9uIHdoZW4gc3RhcnRpbmcgdHJhbnNmZXIgb3IgZHVyaW5nIHRyYW5zZmVyIChUQyBvciBUQ1IgZmxhZyBhcmUgc2V0KS4KICAgKiBAcGFyYW0gIGhzbWJ1cyBTTUJVUyBoYW5kbGUuCiAgICogQHBhcmFtICBEZXZBZGRyZXNzIHNwZWNpZmllcyB0aGUgc2xhdmUgYWRkcmVzcyB0byBiZSBwcm9ncmFtbWVkLgpAQCAtMjYzMiw4ICsyNzE0LDggQEAKICAgKiAgICAgQGFyZyBAcmVmIFNNQlVTX0dFTkVSQVRFX1NUQVJUX1dSSVRFIEdlbmVyYXRlIFJlc3RhcnQgZm9yIHdyaXRlIHJlcXVlc3QuCiAgICogQHJldHZhbCBOb25lCiAgICovCi1zdGF0aWMgdm9pZCBTTUJVU19UcmFuc2ZlckNvbmZpZyhTTUJVU19IYW5kbGVUeXBlRGVmICpoc21idXMsICB1aW50MTZfdCBEZXZBZGRyZXNzLCB1aW50OF90IFNpemUsIHVpbnQzMl90IE1vZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBSZXF1ZXN0KQorc3RhdGljIHZvaWQgU01CVVNfVHJhbnNmZXJDb25maWcoU01CVVNfSGFuZGxlVHlwZURlZiAqaHNtYnVzLCAgdWludDE2X3QgRGV2QWRkcmVzcywgdWludDhfdCBTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgTW9kZSwgdWludDMyX3QgUmVxdWVzdCkKIHsKICAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8KICAgYXNzZXJ0X3BhcmFtKElTX1NNQlVTX0FMTF9JTlNUQU5DRShoc21idXMtPkluc3RhbmNlKSk7CkBAIC0yNjQ0LDkgKzI3MjYsMTAgQEAKICAgTU9ESUZZX1JFRyhoc21idXMtPkluc3RhbmNlLT5DUjIsCiAgICAgICAgICAgICAgKChJMkNfQ1IyX1NBREQgfCBJMkNfQ1IyX05CWVRFUyB8IEkyQ19DUjJfUkVMT0FEIHwgSTJDX0NSMl9BVVRPRU5EIHwgXAogICAgICAgICAgICAgICAgKEkyQ19DUjJfUkRfV1JOICYgKHVpbnQzMl90KShSZXF1ZXN0ID4+ICgzMVVMIC0gSTJDX0NSMl9SRF9XUk5fUG9zKSkpIHwgXAotICAgICAgICAgICAgICAgSTJDX0NSMl9TVEFSVCB8IEkyQ19DUjJfU1RPUCAgfCBJMkNfQ1IyX1BFQ0JZVEUpKSwgXAorICAgICAgICAgICAgICAgSTJDX0NSMl9TVEFSVCB8IEkyQ19DUjJfU1RPUCB8IEkyQ19DUjJfUEVDQllURSkpLCBcCiAgICAgICAgICAgICAgKHVpbnQzMl90KSgoKHVpbnQzMl90KURldkFkZHJlc3MgJiBJMkNfQ1IyX1NBREQpIHwgXAotICAgICAgICAgICAgICAgICAgICAgICAgKCgodWludDMyX3QpU2l6ZSA8PCBJMkNfQ1IyX05CWVRFU19Qb3MpICYgSTJDX0NSMl9OQllURVMpIHwgKHVpbnQzMl90KU1vZGUgfCAodWludDMyX3QpUmVxdWVzdCkpOworICAgICAgICAgICAgICAgICAgICAgICAgKCgodWludDMyX3QpU2l6ZSA8PCBJMkNfQ1IyX05CWVRFU19Qb3MpICYgSTJDX0NSMl9OQllURVMpIHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgKHVpbnQzMl90KU1vZGUgfCAodWludDMyX3QpUmVxdWVzdCkpOwogfQogCiAvKioKQEAgLTI3MDMsNSArMjc4NiwzIEBACiAvKioKICAgKiBAfQogICAqLwotCi0vKioqKioqKioqKioqKioqKioqKioqKioqIChDKSBDT1BZUklHSFQgU1RNaWNyb2VsZWN0cm9uaWNzICoqKioqRU5EIE9GIEZJTEUqKioqLwpkaWZmIC0tZ2l0IGEvU3JjL3N0bTMyZjd4eF9oYWxfc3BkaWZyeC5jIGIvU3JjL3N0bTMyZjd4eF9oYWxfc3BkaWZyeC5jCmluZGV4IDAzNmE5ZDkuLmRhMzgyZjYgMTAwNjQ0Ci0tLSBhL1NyYy9zdG0zMmY3eHhfaGFsX3NwZGlmcnguYworKysgYi9TcmMvc3RtMzJmN3h4X2hhbF9zcGRpZnJ4LmMKQEAgLTgsNiArOCwxOCBAQAogICAqICAgICAgICAgICArIERhdGEgdHJhbnNmZXJzIGZ1bmN0aW9ucwogICAqICAgICAgICAgICArIERNQSB0cmFuc2ZlcnMgbWFuYWdlbWVudAogICAqICAgICAgICAgICArIEludGVycnVwdHMgYW5kIGZsYWdzIG1hbmFnZW1lbnQKKyAgKgorICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgKiBAYXR0ZW50aW9uCisgICoKKyAgKiBDb3B5cmlnaHQgKGMpIDIwMTcgU1RNaWNyb2VsZWN0cm9uaWNzLgorICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgICoKKyAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIHVuZGVyIHRlcm1zIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUKKyAgKiBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb2Z0d2FyZSBjb21wb25lbnQuCisgICogSWYgbm8gTElDRU5TRSBmaWxlIGNvbWVzIHdpdGggdGhpcyBzb2Z0d2FyZSwgaXQgaXMgcHJvdmlkZWQgQVMtSVMuCisgICoKKyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgIEB2ZXJiYXRpbQogID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgICAgICAgICAgICAgICAgICMjIyMjIEhvdyB0byB1c2UgdGhpcyBkcml2ZXIgIyMjIyMKQEAgLTE0MiwxOCArMTU0LDYgQEAKICAgYXJlIHNldCB0byB0aGUgY29ycmVzcG9uZGluZyB3ZWFrIGZ1bmN0aW9ucy4KIAogICBAZW5kdmVyYmF0aW0KLSAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gICogQGF0dGVudGlvbgotICAqCi0gICogPGgyPjxjZW50ZXI+JmNvcHk7IENvcHlyaWdodCAoYykgMjAxNyBTVE1pY3JvZWxlY3Ryb25pY3MuCi0gICogQWxsIHJpZ2h0cyByZXNlcnZlZC48L2NlbnRlcj48L2gyPgotICAqCi0gICogVGhpcyBzb2Z0d2FyZSBjb21wb25lbnQgaXMgbGljZW5zZWQgYnkgU1QgdW5kZXIgQlNEIDMtQ2xhdXNlIGxpY2Vuc2UsCi0gICogdGhlICJMaWNlbnNlIjsgWW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZQotICAqIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdDoKLSAgKiAgICAgICAgICAgICAgICAgICAgICAgIG9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0JTRC0zLUNsYXVzZQotICAqCi0gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAqLwogCiAvKiBJbmNsdWRlcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwpAQCAtMTYxOSw1ICsxNjE5LDMgQEAKIC8qKgogICAqIEB9CiAgICovCi0KLS8qKioqKioqKioqKioqKioqKioqKioqKiogKEMpIENPUFlSSUdIVCBTVE1pY3JvZWxlY3Ryb25pY3MgKioqKipFTkQgT0YgRklMRSoqKiovCmRpZmYgLS1naXQgYS9TcmMvc3RtMzJmN3h4X2hhbF9zcGkuYyBiL1NyYy9zdG0zMmY3eHhfaGFsX3NwaS5jCmluZGV4IDY4NDYyMWMuLjdiZWQ3MDMgMTAwNjQ0Ci0tLSBhL1NyYy9zdG0zMmY3eHhfaGFsX3NwaS5jCisrKyBiL1NyYy9zdG0zMmY3eHhfaGFsX3NwaS5jCkBAIC05LDcgKzksMTcgQEAKICAgKiAgICAgICAgICAgKyBJTyBvcGVyYXRpb24gZnVuY3Rpb25zCiAgICogICAgICAgICAgICsgUGVyaXBoZXJhbCBDb250cm9sIGZ1bmN0aW9ucwogICAqICAgICAgICAgICArIFBlcmlwaGVyYWwgU3RhdGUgZnVuY3Rpb25zCisgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAqIEBhdHRlbnRpb24KICAgKgorICAqIENvcHlyaWdodCAoYykgMjAxNyBTVE1pY3JvZWxlY3Ryb25pY3MuCisgICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAgKgorICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgdW5kZXIgdGVybXMgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZQorICAqIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvZnR3YXJlIGNvbXBvbmVudC4KKyAgKiBJZiBubyBMSUNFTlNFIGZpbGUgY29tZXMgd2l0aCB0aGlzIHNvZnR3YXJlLCBpdCBpcyBwcm92aWRlZCBBUy1JUy4KKyAgKgorICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgQHZlcmJhdGltCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICAgICAgICAgICAgICAgICAgICAgICAgIyMjIyMgSG93IHRvIHVzZSB0aGlzIGRyaXZlciAjIyMjIwpAQCAtMTg0LDE4ICsxOTQsNiBAQAogICAgICAgICAgICAgKCMpIFJYIHByb2Nlc3NlcyBhcmUgSEFMX1NQSV9SZWNlaXZlKCksIEhBTF9TUElfUmVjZWl2ZV9JVCgpIGFuZCBIQUxfU1BJX1JlY2VpdmVfRE1BKCkKICAgICAgICAgICAgICgjKSBUWCBwcm9jZXNzZXMgYXJlIEhBTF9TUElfVHJhbnNtaXQoKSwgSEFMX1NQSV9UcmFuc21pdF9JVCgpIGFuZCBIQUxfU1BJX1RyYW5zbWl0X0RNQSgpCiAKLSAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gICogQGF0dGVudGlvbgotICAqCi0gICogPGgyPjxjZW50ZXI+JmNvcHk7IENvcHlyaWdodCAoYykgMjAxNyBTVE1pY3JvZWxlY3Ryb25pY3MuCi0gICogQWxsIHJpZ2h0cyByZXNlcnZlZC48L2NlbnRlcj48L2gyPgotICAqCi0gICogVGhpcyBzb2Z0d2FyZSBjb21wb25lbnQgaXMgbGljZW5zZWQgYnkgU1QgdW5kZXIgQlNEIDMtQ2xhdXNlIGxpY2Vuc2UsCi0gICogdGhlICJMaWNlbnNlIjsgWW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZQotICAqIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdDoKLSAgKiAgICAgICAgICAgICAgICAgICAgICAgIG9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0JTRC0zLUNsYXVzZQotICAqCi0gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAqLwogCiAvKiBJbmNsdWRlcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwpAQCAtMjE3LDYgKzIxNSw3IEBACiAgICogQHsKICAgKi8KICNkZWZpbmUgU1BJX0RFRkFVTFRfVElNRU9VVCAxMDBVCisjZGVmaW5lIFNQSV9CU1lfRkxBR19XT1JLQVJPVU5EX1RJTUVPVVQgMTAwMFUgLyohPCBUaW1lb3V0IDEwMDAgwrVzICAgICAgICAgICAgICovCiAvKioKICAgKiBAfQogICAqLwpAQCAtMTAwOSw2ICsxMDA4LDggQEAKIHsKICNpZiAoVVNFX1NQSV9DUkMgIT0gMFUpCiAgIF9fSU8gdWludDMyX3QgdG1wcmVnID0gMFU7CisgIF9fSU8gdWludDhfdCAgKnB0bXByZWc4OworICBfX0lPIHVpbnQ4X3QgIHRtcHJlZzggPSAwOwogI2VuZGlmIC8qIFVTRV9TUElfQ1JDICovCiAgIHVpbnQzMl90IHRpY2tzdGFydDsKICAgSEFMX1N0YXR1c1R5cGVEZWYgZXJyb3Jjb2RlID0gSEFMX09LOwpAQCAtMTE4MiwxMCArMTE4MywxMiBAQAogICAgIH0KICAgICBlbHNlCiAgICAgeworICAgICAgLyogSW5pdGlhbGl6ZSB0aGUgOGJpdCB0ZW1wb3JhcnkgcG9pbnRlciAqLworICAgICAgcHRtcHJlZzggPSAoX19JTyB1aW50OF90ICopJmhzcGktPkluc3RhbmNlLT5EUjsKICAgICAgIC8qIFJlYWQgOGJpdCBDUkMgKi8KLSAgICAgIHRtcHJlZyA9IFJFQURfUkVHKCooX19JTyB1aW50OF90ICopJmhzcGktPkluc3RhbmNlLT5EUik7CisgICAgICB0bXByZWc4ID0gKnB0bXByZWc4OwogICAgICAgLyogVG8gYXZvaWQgR0NDIHdhcm5pbmcgKi8KLSAgICAgIFVOVVNFRCh0bXByZWcpOworICAgICAgVU5VU0VEKHRtcHJlZzgpOwogCiAgICAgICBpZiAoKGhzcGktPkluaXQuRGF0YVNpemUgPT0gU1BJX0RBVEFTSVpFXzhCSVQpICYmIChoc3BpLT5Jbml0LkNSQ0xlbmd0aCA9PSBTUElfQ1JDX0xFTkdUSF8xNkJJVCkpCiAgICAgICB7CkBAIC0xMTk3LDkgKzEyMDAsOSBAQAogICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgIH0KICAgICAgICAgLyogUmVhZCA4Yml0IENSQyBhZ2FpbiBpbiBjYXNlIG9mIDE2Yml0IENSQyBpbiA4Yml0IERhdGEgbW9kZSAqLwotICAgICAgICB0bXByZWcgPSBSRUFEX1JFRygqKF9fSU8gdWludDhfdCAqKSZoc3BpLT5JbnN0YW5jZS0+RFIpOworICAgICAgICB0bXByZWc4ID0gKnB0bXByZWc4OwogICAgICAgICAvKiBUbyBhdm9pZCBHQ0Mgd2FybmluZyAqLwotICAgICAgICBVTlVTRUQodG1wcmVnKTsKKyAgICAgICAgVU5VU0VEKHRtcHJlZzgpOwogICAgICAgfQogICAgIH0KICAgfQpAQCAtMTI0NCwxNyArMTI0NywxNyBAQAogSEFMX1N0YXR1c1R5cGVEZWYgSEFMX1NQSV9UcmFuc21pdFJlY2VpdmUoU1BJX0hhbmRsZVR5cGVEZWYgKmhzcGksIHVpbnQ4X3QgKnBUeERhdGEsIHVpbnQ4X3QgKnBSeERhdGEsIHVpbnQxNl90IFNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBUaW1lb3V0KQogewotI2lmIChVU0VfU1BJX0NSQyAhPSAwVSkKLSAgX19JTyB1aW50MzJfdCB0bXByZWcgPSAwVTsKLSNlbmRpZiAvKiBVU0VfU1BJX0NSQyAqLwogICB1aW50MTZfdCAgICAgICAgICAgICBpbml0aWFsX1R4WGZlckNvdW50OwogICB1aW50MTZfdCAgICAgICAgICAgICBpbml0aWFsX1J4WGZlckNvdW50OwogICB1aW50MzJfdCAgICAgICAgICAgICB0bXBfbW9kZTsKICAgSEFMX1NQSV9TdGF0ZVR5cGVEZWYgdG1wX3N0YXRlOwogICB1aW50MzJfdCAgICAgICAgICAgICB0aWNrc3RhcnQ7CiAjaWYgKFVTRV9TUElfQ1JDICE9IDBVKQorICBfX0lPIHVpbnQzMl90IHRtcHJlZyA9IDBVOwogICB1aW50MzJfdCAgICAgICAgICAgICBzcGlfY3IxOwogICB1aW50MzJfdCAgICAgICAgICAgICBzcGlfY3IyOworICBfX0lPIHVpbnQ4X3QgICpwdG1wcmVnODsKKyAgX19JTyB1aW50OF90ICB0bXByZWc4ID0gMDsKICNlbmRpZiAvKiBVU0VfU1BJX0NSQyAqLwogCiAgIC8qIFZhcmlhYmxlIHVzZWQgdG8gYWx0ZXJuYXRlIFJ4IGFuZCBUeCBkdXJpbmcgdHJhbnNmZXIgKi8KQEAgLTE0OTQsMTAgKzE0OTcsMTIgQEAKICAgICB9CiAgICAgZWxzZQogICAgIHsKKyAgICAgIC8qIEluaXRpYWxpemUgdGhlIDhiaXQgdGVtcG9yYXJ5IHBvaW50ZXIgKi8KKyAgICAgIHB0bXByZWc4ID0gKF9fSU8gdWludDhfdCAqKSZoc3BpLT5JbnN0YW5jZS0+RFI7CiAgICAgICAvKiBSZWFkIDhiaXQgQ1JDICovCi0gICAgICB0bXByZWcgPSBSRUFEX1JFRygqKF9fSU8gdWludDhfdCAqKSZoc3BpLT5JbnN0YW5jZS0+RFIpOworICAgICAgdG1wcmVnOCA9ICpwdG1wcmVnODsKICAgICAgIC8qIFRvIGF2b2lkIEdDQyB3YXJuaW5nICovCi0gICAgICBVTlVTRUQodG1wcmVnKTsKKyAgICAgIFVOVVNFRCh0bXByZWc4KTsKIAogICAgICAgaWYgKGhzcGktPkluaXQuQ1JDTGVuZ3RoID09IFNQSV9DUkNfTEVOR1RIXzE2QklUKQogICAgICAgewpAQCAtMTUwOSw5ICsxNTE0LDkgQEAKICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICB9CiAgICAgICAgIC8qIFJlYWQgOGJpdCBDUkMgYWdhaW4gaW4gY2FzZSBvZiAxNmJpdCBDUkMgaW4gOGJpdCBEYXRhIG1vZGUgKi8KLSAgICAgICAgdG1wcmVnID0gUkVBRF9SRUcoKihfX0lPIHVpbnQ4X3QgKikmaHNwaS0+SW5zdGFuY2UtPkRSKTsKKyAgICAgICAgdG1wcmVnOCA9ICpwdG1wcmVnODsKICAgICAgICAgLyogVG8gYXZvaWQgR0NDIHdhcm5pbmcgKi8KLSAgICAgICAgVU5VU0VEKHRtcHJlZyk7CisgICAgICAgIFVOVVNFRCh0bXByZWc4KTsKICAgICAgIH0KICAgICB9CiAgIH0KQEAgLTMwNjgsNiArMzA3Myw4IEBACiAgIHVpbnQzMl90IHRpY2tzdGFydDsKICNpZiAoVVNFX1NQSV9DUkMgIT0gMFUpCiAgIF9fSU8gdWludDMyX3QgdG1wcmVnID0gMFU7CisgIF9fSU8gdWludDhfdCAgKnB0bXByZWc4OworICBfX0lPIHVpbnQ4X3QgIHRtcHJlZzggPSAwOwogI2VuZGlmIC8qIFVTRV9TUElfQ1JDICovCiAKICAgLyogSW5pdCB0aWNrc3RhcnQgZm9yIHRpbWVvdXQgbWFuYWdlbWVudCovCkBAIC0zMDk5LDEwICszMTA2LDEyIEBACiAgICAgICB9CiAgICAgICBlbHNlCiAgICAgICB7CisgICAgICAgIC8qIEluaXRpYWxpemUgdGhlIDhiaXQgdGVtcG9yYXJ5IHBvaW50ZXIgKi8KKyAgICAgICAgcHRtcHJlZzggPSAoX19JTyB1aW50OF90ICopJmhzcGktPkluc3RhbmNlLT5EUjsKICAgICAgICAgLyogUmVhZCA4Yml0IENSQyAqLwotICAgICAgICB0bXByZWcgPSBSRUFEX1JFRygqKF9fSU8gdWludDhfdCAqKSZoc3BpLT5JbnN0YW5jZS0+RFIpOworICAgICAgICB0bXByZWc4ID0gKnB0bXByZWc4OwogICAgICAgICAvKiBUbyBhdm9pZCBHQ0Mgd2FybmluZyAqLwotICAgICAgICBVTlVTRUQodG1wcmVnKTsKKyAgICAgICAgVU5VU0VEKHRtcHJlZzgpOwogCiAgICAgICAgIGlmIChoc3BpLT5Jbml0LkNSQ0xlbmd0aCA9PSBTUElfQ1JDX0xFTkdUSF8xNkJJVCkKICAgICAgICAgewpAQCAtMzExMiw5ICszMTIxLDkgQEAKICAgICAgICAgICAgIFNFVF9CSVQoaHNwaS0+RXJyb3JDb2RlLCBIQUxfU1BJX0VSUk9SX0NSQyk7CiAgICAgICAgICAgfQogICAgICAgICAgIC8qIFJlYWQgOGJpdCBDUkMgYWdhaW4gaW4gY2FzZSBvZiAxNmJpdCBDUkMgaW4gOGJpdCBEYXRhIG1vZGUgKi8KLSAgICAgICAgICB0bXByZWcgPSBSRUFEX1JFRygqKF9fSU8gdWludDhfdCAqKSZoc3BpLT5JbnN0YW5jZS0+RFIpOworICAgICAgICAgIHRtcHJlZzggPSAqcHRtcHJlZzg7CiAgICAgICAgICAgLyogVG8gYXZvaWQgR0NDIHdhcm5pbmcgKi8KLSAgICAgICAgICBVTlVTRUQodG1wcmVnKTsKKyAgICAgICAgICBVTlVTRUQodG1wcmVnOCk7CiAgICAgICAgIH0KICAgICAgIH0KICAgICB9CkBAIC0zMTgxLDYgKzMxOTAsOCBAQAogICB1aW50MzJfdCB0aWNrc3RhcnQ7CiAjaWYgKFVTRV9TUElfQ1JDICE9IDBVKQogICBfX0lPIHVpbnQzMl90IHRtcHJlZyA9IDBVOworICBfX0lPIHVpbnQ4X3QgICpwdG1wcmVnODsKKyAgX19JTyB1aW50OF90ICB0bXByZWc4ID0gMDsKICNlbmRpZiAvKiBVU0VfU1BJX0NSQyAqLwogCiAgIC8qIEluaXQgdGlja3N0YXJ0IGZvciB0aW1lb3V0IG1hbmFnZW1lbnQqLwpAQCAtMzIwNCwxMCArMzIxNSwxMiBAQAogICAgICAgICAgIC8qIEVycm9yIG9uIHRoZSBDUkMgcmVjZXB0aW9uICovCiAgICAgICAgICAgU0VUX0JJVChoc3BpLT5FcnJvckNvZGUsIEhBTF9TUElfRVJST1JfQ1JDKTsKICAgICAgICAgfQotICAgICAgICAvKiBSZWFkIENSQyB0byBGbHVzaCBEUiBhbmQgUlhORSBmbGFnICovCi0gICAgICAgIHRtcHJlZyA9IFJFQURfUkVHKCooX19JTyB1aW50OF90ICopJmhzcGktPkluc3RhbmNlLT5EUik7CisgICAgICAgIC8qIEluaXRpYWxpemUgdGhlIDhiaXQgdGVtcG9yYXJ5IHBvaW50ZXIgKi8KKyAgICAgICAgcHRtcHJlZzggPSAoX19JTyB1aW50OF90ICopJmhzcGktPkluc3RhbmNlLT5EUjsKKyAgICAgICAgLyogUmVhZCA4Yml0IENSQyAqLworICAgICAgICB0bXByZWc4ID0gKnB0bXByZWc4OwogICAgICAgICAvKiBUbyBhdm9pZCBHQ0Mgd2FybmluZyAqLwotICAgICAgICBVTlVTRUQodG1wcmVnKTsKKyAgICAgICAgVU5VU0VEKHRtcHJlZzgpOwogICAgICAgfQogICAgICAgZWxzZQogICAgICAgewpAQCAtMzU1NCwxMiArMzU2NywxNSBAQAogICAqLwogc3RhdGljIHZvaWQgU1BJXzJsaW5lc1J4SVNSXzhCSVRDUkMoc3RydWN0IF9fU1BJX0hhbmRsZVR5cGVEZWYgKmhzcGkpCiB7Ci0gIF9fSU8gdWludDMyX3QgdG1wcmVnID0gMFU7CisgIF9fSU8gdWludDhfdCAgKnB0bXByZWc4OworICBfX0lPIHVpbnQ4X3QgIHRtcHJlZzggPSAwOwogCisgIC8qIEluaXRpYWxpemUgdGhlIDhiaXQgdGVtcG9yYXJ5IHBvaW50ZXIgKi8KKyAgcHRtcHJlZzggPSAoX19JTyB1aW50OF90ICopJmhzcGktPkluc3RhbmNlLT5EUjsKICAgLyogUmVhZCA4Yml0IENSQyB0byBmbHVzaCBEYXRhIFJlZ2lzdGVyICovCi0gIHRtcHJlZyA9IFJFQURfUkVHKCooX19JTyB1aW50OF90ICopJmhzcGktPkluc3RhbmNlLT5EUik7CisgIHRtcHJlZzggPSAqcHRtcHJlZzg7CiAgIC8qIFRvIGF2b2lkIEdDQyB3YXJuaW5nICovCi0gIFVOVVNFRCh0bXByZWcpOworICBVTlVTRUQodG1wcmVnOCk7CiAKICAgaHNwaS0+Q1JDU2l6ZS0tOwogCkBAIC0zNjcxLDcgKzM2ODcsNyBAQAogICAvKiBSZWFkIDE2Yml0IENSQyB0byBmbHVzaCBEYXRhIFJlZ2lzdGVyICovCiAgIHRtcHJlZyA9IFJFQURfUkVHKGhzcGktPkluc3RhbmNlLT5EUik7CiAgIC8qIFRvIGF2b2lkIEdDQyB3YXJuaW5nICovCi0gIFVOVVNFRCh0bXByZWcpOyAgCisgIFVOVVNFRCh0bXByZWcpOwogCiAgIC8qIERpc2FibGUgUlhORSBpbnRlcnJ1cHQgKi8KICAgX19IQUxfU1BJX0RJU0FCTEVfSVQoaHNwaSwgU1BJX0lUX1JYTkUpOwpAQCAtMzcyNiwxMiArMzc0MiwxNSBAQAogICAqLwogc3RhdGljIHZvaWQgU1BJX1J4SVNSXzhCSVRDUkMoc3RydWN0IF9fU1BJX0hhbmRsZVR5cGVEZWYgKmhzcGkpCiB7Ci0gIF9fSU8gdWludDMyX3QgdG1wcmVnID0gMFU7CisgIF9fSU8gdWludDhfdCAgKnB0bXByZWc4OworICBfX0lPIHVpbnQ4X3QgIHRtcHJlZzggPSAwOwogCisgIC8qIEluaXRpYWxpemUgdGhlIDhiaXQgdGVtcG9yYXJ5IHBvaW50ZXIgKi8KKyAgcHRtcHJlZzggPSAoX19JTyB1aW50OF90ICopJmhzcGktPkluc3RhbmNlLT5EUjsKICAgLyogUmVhZCA4Yml0IENSQyB0byBmbHVzaCBEYXRhIFJlZ2lzdGVyICovCi0gIHRtcHJlZyA9IFJFQURfUkVHKCooX19JTyB1aW50OF90ICopJmhzcGktPkluc3RhbmNlLT5EUik7CisgIHRtcHJlZzggPSAqcHRtcHJlZzg7CiAgIC8qIFRvIGF2b2lkIEdDQyB3YXJuaW5nICovCi0gIFVOVVNFRCh0bXByZWcpOworICBVTlVTRUQodG1wcmVnOCk7CiAKICAgaHNwaS0+Q1JDU2l6ZS0tOwogCkBAIC0zOTQwLDcgKzM5NTksNyBAQAogICAgICAgICByZXR1cm4gSEFMX1RJTUVPVVQ7CiAgICAgICB9CiAgICAgICAvKiBJZiBTeXN0aWNrIGlzIGRpc2FibGVkIG9yIG5vdCBpbmNyZW1lbnRlZCwgZGVhY3RpdmF0ZSB0aW1lb3V0IHRvIGdvIGluIGRpc2FibGUgbG9vcCBwcm9jZWR1cmUgKi8KLSAgICAgIGlmKGNvdW50ID09IDBVKQorICAgICAgaWYgKGNvdW50ID09IDBVKQogICAgICAgewogICAgICAgICB0bXBfdGltZW91dCA9IDBVOwogICAgICAgfQpAQCAtMzk2NCwxNSArMzk4MywxOSBAQAogc3RhdGljIEhBTF9TdGF0dXNUeXBlRGVmIFNQSV9XYWl0Rmlmb1N0YXRlVW50aWxUaW1lb3V0KFNQSV9IYW5kbGVUeXBlRGVmICpoc3BpLCB1aW50MzJfdCBGaWZvLCB1aW50MzJfdCBTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBUaW1lb3V0LCB1aW50MzJfdCBUaWNrc3RhcnQpCiB7Ci0gIF9fSU8gdWludDMyX3QgdG1wcmVnOwogICBfX0lPIHVpbnQzMl90IGNvdW50OwogICB1aW50MzJfdCB0bXBfdGltZW91dDsKICAgdWludDMyX3QgdG1wX3RpY2tzdGFydDsKKyAgX19JTyB1aW50OF90ICAqcHRtcHJlZzg7CisgIF9fSU8gdWludDhfdCAgdG1wcmVnOCA9IDA7CiAKICAgLyogQWRqdXN0IFRpbWVvdXQgdmFsdWUgIGluIGNhc2Ugb2YgZW5kIG9mIHRyYW5zZmVyICovCiAgIHRtcF90aW1lb3V0ID0gVGltZW91dCAtIChIQUxfR2V0VGljaygpIC0gVGlja3N0YXJ0KTsKICAgdG1wX3RpY2tzdGFydCA9IEhBTF9HZXRUaWNrKCk7CiAKKyAgLyogSW5pdGlhbGl6ZSB0aGUgOGJpdCB0ZW1wb3JhcnkgcG9pbnRlciAqLworICBwdG1wcmVnOCA9IChfX0lPIHVpbnQ4X3QgKikmaHNwaS0+SW5zdGFuY2UtPkRSOworCiAgIC8qIENhbGN1bGF0ZSBUaW1lb3V0IGJhc2VkIG9uIGEgc29mdHdhcmUgbG9vcCB0byBhdm9pZCBibG9ja2luZyBpc3N1ZSBpZiBTeXN0aWNrIGlzIGRpc2FibGVkICovCiAgIGNvdW50ID0gdG1wX3RpbWVvdXQgKiAoKFN5c3RlbUNvcmVDbG9jayAqIDM1VSkgPj4gMjBVKTsKIApAQCAtMzk4MSw5ICs0MDA0LDkgQEAKICAgICBpZiAoKEZpZm8gPT0gU1BJX1NSX0ZSTFZMKSAmJiAoU3RhdGUgPT0gU1BJX0ZSTFZMX0VNUFRZKSkKICAgICB7CiAgICAgICAvKiBGbHVzaCBEYXRhIFJlZ2lzdGVyIGJ5IGEgYmxhbmsgcmVhZCAqLwotICAgICAgdG1wcmVnID0gUkVBRF9SRUcoKigoX19JTyB1aW50OF90ICopJmhzcGktPkluc3RhbmNlLT5EUikpOworICAgICAgdG1wcmVnOCA9ICpwdG1wcmVnODsKICAgICAgIC8qIFRvIGF2b2lkIEdDQyB3YXJuaW5nICovCi0gICAgICBVTlVTRUQodG1wcmVnKTsKKyAgICAgIFVOVVNFRCh0bXByZWc4KTsKICAgICB9CiAKICAgICBpZiAoVGltZW91dCAhPSBIQUxfTUFYX0RFTEFZKQpAQCAtNDAxOCwxMCArNDA0MSwxMCBAQAogICAgICAgICByZXR1cm4gSEFMX1RJTUVPVVQ7CiAgICAgICB9CiAgICAgICAvKiBJZiBTeXN0aWNrIGlzIGRpc2FibGVkIG9yIG5vdCBpbmNyZW1lbnRlZCwgZGVhY3RpdmF0ZSB0aW1lb3V0IHRvIGdvIGluIGRpc2FibGUgbG9vcCBwcm9jZWR1cmUgKi8KLSAgICAgIGlmKGNvdW50ID09IDBVKQorICAgICAgaWYgKGNvdW50ID09IDBVKQogICAgICAgewogICAgICAgICB0bXBfdGltZW91dCA9IDBVOwotICAgICAgfSAgICAgIAorICAgICAgfQogICAgICAgY291bnQtLTsKICAgICB9CiAgIH0KQEAgLTQwNDYsMTEgKzQwNjksMzQgQEAKICAgICBfX0hBTF9TUElfRElTQUJMRShoc3BpKTsKICAgfQogCi0gIC8qIENvbnRyb2wgdGhlIEJTWSBmbGFnICovCi0gIGlmIChTUElfV2FpdEZsYWdTdGF0ZVVudGlsVGltZW91dChoc3BpLCBTUElfRkxBR19CU1ksIFJFU0VULCBUaW1lb3V0LCBUaWNrc3RhcnQpICE9IEhBTF9PSykKKyAgLyogRXJyYXRhc2hlZXQ6IEJTWSBiaXQgbWF5IHN0YXkgaGlnaCBhdCB0aGUgZW5kIG9mIGEgZGF0YSB0cmFuc2ZlciBpbiBTbGF2ZSBtb2RlICovCisgIGlmIChoc3BpLT5Jbml0Lk1vZGUgPT0gU1BJX01PREVfTUFTVEVSKQogICB7Ci0gICAgU0VUX0JJVChoc3BpLT5FcnJvckNvZGUsIEhBTF9TUElfRVJST1JfRkxBRyk7Ci0gICAgcmV0dXJuIEhBTF9USU1FT1VUOworICAgIC8qIENvbnRyb2wgdGhlIEJTWSBmbGFnICovCisgICAgaWYgKFNQSV9XYWl0RmxhZ1N0YXRlVW50aWxUaW1lb3V0KGhzcGksIFNQSV9GTEFHX0JTWSwgUkVTRVQsIFRpbWVvdXQsIFRpY2tzdGFydCkgIT0gSEFMX09LKQorICAgIHsKKyAgICAgIFNFVF9CSVQoaHNwaS0+RXJyb3JDb2RlLCBIQUxfU1BJX0VSUk9SX0ZMQUcpOworICAgICAgcmV0dXJuIEhBTF9USU1FT1VUOworICAgIH0KKyAgfQorICBlbHNlIC8qIFNQSV9NT0RFX1NMQVZFICovCisgIHsKKyAgICAvKiBUaW1lb3V0IGluIMK1cyAqLworICAgIF9fSU8gdWludDMyX3QgY291bnQgPSBTUElfQlNZX0ZMQUdfV09SS0FST1VORF9USU1FT1VUICogKFN5c3RlbUNvcmVDbG9jayAvIDI0VSAvIDEwMDAwMDBVKTsKKworICAgIC8qIFdhaXQgQlNZIGZsYWcgZHVyaW5nIDEgQnl0ZSB0aW1lIHRyYW5zZmVyIGluIGNhc2Ugb2YgUnggdHJhbnNmZXIKKyAgICAqIElmIFRpbWVvdXQgaXMgcmVhY2hlZCwgdGhlIHRyYW5zZmVyIGlzIGNvbnNpZGVyZWQgYXMgZmluaXNoLgorICAgICogVXNlciBoYXZlIHRvIGNhbGN1bGF0ZSB0aGUgdGltZW91dCB2YWx1ZSB0byBmaXQgd2l0aCB0aGUgdGltZSBvZiAxIGJ5dGUgdHJhbnNmZXIuCisgICAgKiBUaGlzIHRpbWUgaXMgZGlyZWN0bHkgbGluayB3aXRoIHRoZSBTUEkgY2xvY2sgZnJvbSBNYXN0ZXIgZGV2aWNlLgorICAgICovCisgICAgZG8KKyAgICB7CisgICAgICBpZiAoY291bnQgPT0gMFUpCisgICAgICB7CisgICAgICAgIGJyZWFrOworICAgICAgfQorICAgICAgY291bnQtLTsKKyAgICB9IHdoaWxlIChfX0hBTF9TUElfR0VUX0ZMQUcoaHNwaSwgU1BJX0ZMQUdfQlNZKSAhPSBSRVNFVCk7CiAgIH0KIAogICBpZiAoKGhzcGktPkluaXQuTW9kZSA9PSBTUElfTU9ERV9NQVNURVIpICYmICgoaHNwaS0+SW5pdC5EaXJlY3Rpb24gPT0gU1BJX0RJUkVDVElPTl8xTElORSkKQEAgLTQwODIsMTIgKzQxMjgsMzUgQEAKICAgICByZXR1cm4gSEFMX1RJTUVPVVQ7CiAgIH0KIAotICAvKiBDb250cm9sIHRoZSBCU1kgZmxhZyAqLwotICBpZiAoU1BJX1dhaXRGbGFnU3RhdGVVbnRpbFRpbWVvdXQoaHNwaSwgU1BJX0ZMQUdfQlNZLCBSRVNFVCwgVGltZW91dCwgVGlja3N0YXJ0KSAhPSBIQUxfT0spCisgIC8qIFRpbWVvdXQgaW4gwrVzICovCisgIF9fSU8gdWludDMyX3QgY291bnQgPSBTUElfQlNZX0ZMQUdfV09SS0FST1VORF9USU1FT1VUICogKFN5c3RlbUNvcmVDbG9jayAvIDI0VSAvIDEwMDAwMDBVKTsKKyAgLyogRXJyYXRhc2hlZXQ6IEJTWSBiaXQgbWF5IHN0YXkgaGlnaCBhdCB0aGUgZW5kIG9mIGEgZGF0YSB0cmFuc2ZlciBpbiBTbGF2ZSBtb2RlICovCisgIGlmIChoc3BpLT5Jbml0Lk1vZGUgPT0gU1BJX01PREVfTUFTVEVSKQogICB7Ci0gICAgU0VUX0JJVChoc3BpLT5FcnJvckNvZGUsIEhBTF9TUElfRVJST1JfRkxBRyk7Ci0gICAgcmV0dXJuIEhBTF9USU1FT1VUOworICAgIC8qIENvbnRyb2wgdGhlIEJTWSBmbGFnICovCisgICAgaWYgKFNQSV9XYWl0RmxhZ1N0YXRlVW50aWxUaW1lb3V0KGhzcGksIFNQSV9GTEFHX0JTWSwgUkVTRVQsIFRpbWVvdXQsIFRpY2tzdGFydCkgIT0gSEFMX09LKQorICAgIHsKKyAgICAgIFNFVF9CSVQoaHNwaS0+RXJyb3JDb2RlLCBIQUxfU1BJX0VSUk9SX0ZMQUcpOworICAgICAgcmV0dXJuIEhBTF9USU1FT1VUOworICAgIH0KICAgfQorICBlbHNlCisgIHsKKyAgICAvKiBXYWl0IEJTWSBmbGFnIGR1cmluZyAxIEJ5dGUgdGltZSB0cmFuc2ZlciBpbiBjYXNlIG9mIEZ1bGwtRHVwbGV4IGFuZCBUeCB0cmFuc2ZlcgorICAgICogSWYgVGltZW91dCBpcyByZWFjaGVkLCB0aGUgdHJhbnNmZXIgaXMgY29uc2lkZXJlZCBhcyBmaW5pc2guCisgICAgKiBVc2VyIGhhdmUgdG8gY2FsY3VsYXRlIHRoZSB0aW1lb3V0IHZhbHVlIHRvIGZpdCB3aXRoIHRoZSB0aW1lIG9mIDEgYnl0ZSB0cmFuc2Zlci4KKyAgICAqIFRoaXMgdGltZSBpcyBkaXJlY3RseSBsaW5rIHdpdGggdGhlIFNQSSBjbG9jayBmcm9tIE1hc3RlciBkZXZpY2UuCisgICAgKi8KKyAgICBkbworICAgIHsKKyAgICAgIGlmIChjb3VudCA9PSAwVSkKKyAgICAgIHsKKyAgICAgICAgYnJlYWs7CisgICAgICB9CisgICAgICBjb3VudC0tOworICAgIH0gd2hpbGUgKF9fSEFMX1NQSV9HRVRfRkxBRyhoc3BpLCBTUElfRkxBR19CU1kpICE9IFJFU0VUKTsKKyAgfQorCiAKICAgLyogQ29udHJvbCBpZiB0aGUgUlggZmlmbyBpcyBlbXB0eSAqLwogICBpZiAoU1BJX1dhaXRGaWZvU3RhdGVVbnRpbFRpbWVvdXQoaHNwaSwgU1BJX0ZMQUdfRlJMVkwsIFNQSV9GUkxWTF9FTVBUWSwgVGltZW91dCwgVGlja3N0YXJ0KSAhPSBIQUxfT0spCkBAIC00NDEyLDQgKzQ0ODEsMyBAQAogICAqIEB9CiAgICovCiAKLS8qKioqKioqKioqKioqKioqKioqKioqKiogKEMpIENPUFlSSUdIVCBTVE1pY3JvZWxlY3Ryb25pY3MgKioqKipFTkQgT0YgRklMRSoqKiovCmRpZmYgLS1naXQgYS9TcmMvc3RtMzJmN3h4X2hhbF9zcGlfZXguYyBiL1NyYy9zdG0zMmY3eHhfaGFsX3NwaV9leC5jCmluZGV4IGQzNGNiNDUuLmU2ZmNmYjUgMTAwNjQ0Ci0tLSBhL1NyYy9zdG0zMmY3eHhfaGFsX3NwaV9leC5jCisrKyBiL1NyYy9zdG0zMmY3eHhfaGFsX3NwaV9leC5jCkBAIC0xMCwxMyArMTAsMTIgQEAKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgICogQGF0dGVudGlvbgogICAqCi0gICogPGgyPjxjZW50ZXI+JmNvcHk7IENvcHlyaWdodCAoYykgMjAxNyBTVE1pY3JvZWxlY3Ryb25pY3MuCi0gICogQWxsIHJpZ2h0cyByZXNlcnZlZC48L2NlbnRlcj48L2gyPgorICAqIENvcHlyaWdodCAoYykgMjAxNyBTVE1pY3JvZWxlY3Ryb25pY3MuCisgICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgKgotICAqIFRoaXMgc29mdHdhcmUgY29tcG9uZW50IGlzIGxpY2Vuc2VkIGJ5IFNUIHVuZGVyIEJTRCAzLUNsYXVzZSBsaWNlbnNlLAotICAqIHRoZSAiTGljZW5zZSI7IFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUKLSAgKiBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQ6Ci0gICogICAgICAgICAgICAgICAgICAgICAgICBvcGVuc291cmNlLm9yZy9saWNlbnNlcy9CU0QtMy1DbGF1c2UKKyAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIHVuZGVyIHRlcm1zIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUKKyAgKiBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb2Z0d2FyZSBjb21wb25lbnQuCisgICogSWYgbm8gTElDRU5TRSBmaWxlIGNvbWVzIHdpdGggdGhpcyBzb2Z0d2FyZSwgaXQgaXMgcHJvdmlkZWQgQVMtSVMuCiAgICoKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgICovCkBAIC0xMTEsNSArMTEwLDMgQEAKIC8qKgogICAqIEB9CiAgICovCi0KLS8qKioqKioqKioqKioqKioqKioqKioqKiogKEMpIENPUFlSSUdIVCBTVE1pY3JvZWxlY3Ryb25pY3MgKioqKipFTkQgT0YgRklMRSoqKiovCmRpZmYgLS1naXQgYS9TcmMvc3RtMzJmN3h4X2hhbF9zcmFtLmMgYi9TcmMvc3RtMzJmN3h4X2hhbF9zcmFtLmMKaW5kZXggYWVjNzNhZi4uYzg3ZGMyNiAxMDA2NDQKLS0tIGEvU3JjL3N0bTMyZjd4eF9oYWxfc3JhbS5jCisrKyBiL1NyYy9zdG0zMmY3eHhfaGFsX3NyYW0uYwpAQCAtMyw1OCArMyw2OSBAQAogICAqIEBmaWxlICAgIHN0bTMyZjd4eF9oYWxfc3JhbS5jCiAgICogQGF1dGhvciAgTUNEIEFwcGxpY2F0aW9uIFRlYW0KICAgKiBAYnJpZWYgICBTUkFNIEhBTCBtb2R1bGUgZHJpdmVyLgotICAqICAgICAgICAgIFRoaXMgZmlsZSBwcm92aWRlcyBhIGdlbmVyaWMgZmlybXdhcmUgdG8gZHJpdmUgU1JBTSBtZW1vcmllcyAgCisgICogICAgICAgICAgVGhpcyBmaWxlIHByb3ZpZGVzIGEgZ2VuZXJpYyBmaXJtd2FyZSB0byBkcml2ZSBTUkFNIG1lbW9yaWVzCiAgICogICAgICAgICAgbW91bnRlZCBhcyBleHRlcm5hbCBkZXZpY2UuCi0gICogICAgICAgICAKKyAgKgorICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgKiBAYXR0ZW50aW9uCisgICoKKyAgKiBDb3B5cmlnaHQgKGMpIDIwMTcgU1RNaWNyb2VsZWN0cm9uaWNzLgorICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgICoKKyAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIHVuZGVyIHRlcm1zIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUKKyAgKiBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb2Z0d2FyZSBjb21wb25lbnQuCisgICogSWYgbm8gTElDRU5TRSBmaWxlIGNvbWVzIHdpdGggdGhpcyBzb2Z0d2FyZSwgaXQgaXMgcHJvdmlkZWQgQVMtSVMuCisgICoKKyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgIEB2ZXJiYXRpbQogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIyMjIyMgSG93IHRvIHVzZSB0aGlzIGRyaXZlciAjIyMjIwotICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gIAorICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgWy4uXQotICAgIFRoaXMgZHJpdmVyIGlzIGEgZ2VuZXJpYyBsYXllcmVkIGRyaXZlciB3aGljaCBjb250YWlucyBhIHNldCBvZiBBUElzIHVzZWQgdG8gCi0gICAgY29udHJvbCBTUkFNIG1lbW9yaWVzLiBJdCB1c2VzIHRoZSBGTUMgbGF5ZXIgZnVuY3Rpb25zIHRvIGludGVyZmFjZSAKLSAgICB3aXRoIFNSQU0gZGV2aWNlcy4gIAorICAgIFRoaXMgZHJpdmVyIGlzIGEgZ2VuZXJpYyBsYXllcmVkIGRyaXZlciB3aGljaCBjb250YWlucyBhIHNldCBvZiBBUElzIHVzZWQgdG8KKyAgICBjb250cm9sIFNSQU0gbWVtb3JpZXMuIEl0IHVzZXMgdGhlIEZNQyBsYXllciBmdW5jdGlvbnMgdG8gaW50ZXJmYWNlCisgICAgd2l0aCBTUkFNIGRldmljZXMuCiAgICAgVGhlIGZvbGxvd2luZyBzZXF1ZW5jZSBzaG91bGQgYmUgZm9sbG93ZWQgdG8gY29uZmlndXJlIHRoZSBGTUMgdG8gaW50ZXJmYWNlCi0gICAgd2l0aCBTUkFNL1BTUkFNIG1lbW9yaWVzOiAKLSAgICAgIAorICAgIHdpdGggU1JBTS9QU1JBTSBtZW1vcmllczoKKwogICAgKCMpIERlY2xhcmUgYSBTUkFNX0hhbmRsZVR5cGVEZWYgaGFuZGxlIHN0cnVjdHVyZSwgZm9yIGV4YW1wbGU6Ci0gICAgICAgICAgU1JBTV9IYW5kbGVUeXBlRGVmICBoc3JhbTsgYW5kOiAKLSAgICAgICAgICAKLSAgICAgICAoKyspIEZpbGwgdGhlIFNSQU1fSGFuZGxlVHlwZURlZiBoYW5kbGUgIkluaXQiIGZpZWxkIHdpdGggdGhlIGFsbG93ZWQgCisgICAgICAgICAgU1JBTV9IYW5kbGVUeXBlRGVmICBoc3JhbTsgYW5kOgorCisgICAgICAgKCsrKSBGaWxsIHRoZSBTUkFNX0hhbmRsZVR5cGVEZWYgaGFuZGxlICJJbml0IiBmaWVsZCB3aXRoIHRoZSBhbGxvd2VkCiAgICAgICAgICAgICB2YWx1ZXMgb2YgdGhlIHN0cnVjdHVyZSBtZW1iZXIuCi0gICAgICAgICAgICAKLSAgICAgICAoKyspIEZpbGwgdGhlIFNSQU1fSGFuZGxlVHlwZURlZiBoYW5kbGUgIkluc3RhbmNlIiBmaWVsZCB3aXRoIGEgcHJlZGVmaW5lZCAKLSAgICAgICAgICAgIGJhc2UgcmVnaXN0ZXIgaW5zdGFuY2UgZm9yIE5PUiBvciBTUkFNIGRldmljZSAKLSAgICAgICAgICAgICAgICAgICAgICAgICAKKworICAgICAgICgrKykgRmlsbCB0aGUgU1JBTV9IYW5kbGVUeXBlRGVmIGhhbmRsZSAiSW5zdGFuY2UiIGZpZWxkIHdpdGggYSBwcmVkZWZpbmVkCisgICAgICAgICAgICBiYXNlIHJlZ2lzdGVyIGluc3RhbmNlIGZvciBOT1Igb3IgU1JBTSBkZXZpY2UKKwogICAgICAgICgrKykgRmlsbCB0aGUgU1JBTV9IYW5kbGVUeXBlRGVmIGhhbmRsZSAiRXh0ZW5kZWQiIGZpZWxkIHdpdGggYSBwcmVkZWZpbmVkCi0gICAgICAgICAgICBiYXNlIHJlZ2lzdGVyIGluc3RhbmNlIGZvciBOT1Igb3IgU1JBTSBleHRlbmRlZCBtb2RlIAotICAgICAgICAgICAgIAotICAgKCMpIERlY2xhcmUgdHdvIEZNQ19OT1JTUkFNX1RpbWluZ1R5cGVEZWYgc3RydWN0dXJlcywgZm9yIGJvdGggbm9ybWFsIGFuZCBleHRlbmRlZCAKKyAgICAgICAgICAgIGJhc2UgcmVnaXN0ZXIgaW5zdGFuY2UgZm9yIE5PUiBvciBTUkFNIGV4dGVuZGVkIG1vZGUKKworICAgKCMpIERlY2xhcmUgdHdvIEZNQ19OT1JTUkFNX1RpbWluZ1R5cGVEZWYgc3RydWN0dXJlcywgZm9yIGJvdGggbm9ybWFsIGFuZCBleHRlbmRlZAogICAgICAgIG1vZGUgdGltaW5nczsgZm9yIGV4YW1wbGU6CiAgICAgICAgICAgRk1DX05PUlNSQU1fVGltaW5nVHlwZURlZiAgVGltaW5nIGFuZCBGTUNfTk9SU1JBTV9UaW1pbmdUeXBlRGVmICBFeFRpbWluZzsKICAgICAgIGFuZCBmaWxsIGl0cyBmaWVsZHMgd2l0aCB0aGUgYWxsb3dlZCB2YWx1ZXMgb2YgdGhlIHN0cnVjdHVyZSBtZW1iZXIuCi0gICAgICAKKwogICAgKCMpIEluaXRpYWxpemUgdGhlIFNSQU0gQ29udHJvbGxlciBieSBjYWxsaW5nIHRoZSBmdW5jdGlvbiBIQUxfU1JBTV9Jbml0KCkuIFRoaXMgZnVuY3Rpb24KICAgICAgICBwZXJmb3JtcyB0aGUgZm9sbG93aW5nIHNlcXVlbmNlOgotICAgICAgICAgIAotICAgICAgICgjIykgTVNQIGhhcmR3YXJlIGxheWVyIGNvbmZpZ3VyYXRpb24gdXNpbmcgdGhlIGZ1bmN0aW9uIEhBTF9TUkFNX01zcEluaXQoKQotICAgICAgICgjIykgQ29udHJvbCByZWdpc3RlciBjb25maWd1cmF0aW9uIHVzaW5nIHRoZSBGTUMgTk9SU1JBTSBpbnRlcmZhY2UgZnVuY3Rpb24gCi0gICAgICAgICAgICBGTUNfTk9SU1JBTV9Jbml0KCkKLSAgICAgICAoIyMpIFRpbWluZyByZWdpc3RlciBjb25maWd1cmF0aW9uIHVzaW5nIHRoZSBGTUMgTk9SU1JBTSBpbnRlcmZhY2UgZnVuY3Rpb24gCi0gICAgICAgICAgICBGTUNfTk9SU1JBTV9UaW1pbmdfSW5pdCgpCi0gICAgICAgKCMjKSBFeHRlbmRlZCBtb2RlIFRpbWluZyByZWdpc3RlciBjb25maWd1cmF0aW9uIHVzaW5nIHRoZSBGTUMgTk9SU1JBTSBpbnRlcmZhY2UgZnVuY3Rpb24gCi0gICAgICAgICAgICBGTUNfTk9SU1JBTV9FeHRlbmRlZF9UaW1pbmdfSW5pdCgpCi0gICAgICAgKCMjKSBFbmFibGUgdGhlIFNSQU0gZGV2aWNlIHVzaW5nIHRoZSBtYWNybyBfX0ZNQ19OT1JTUkFNX0VOQUJMRSgpICAgIAogCi0gICAoIykgQXQgdGhpcyBzdGFnZSB5b3UgY2FuIHBlcmZvcm0gcmVhZC93cml0ZSBhY2Nlc3NlcyBmcm9tL3RvIHRoZSBtZW1vcnkgY29ubmVjdGVkIAorICAgICAgICgjIykgTVNQIGhhcmR3YXJlIGxheWVyIGNvbmZpZ3VyYXRpb24gdXNpbmcgdGhlIGZ1bmN0aW9uIEhBTF9TUkFNX01zcEluaXQoKQorICAgICAgICgjIykgQ29udHJvbCByZWdpc3RlciBjb25maWd1cmF0aW9uIHVzaW5nIHRoZSBGTUMgTk9SU1JBTSBpbnRlcmZhY2UgZnVuY3Rpb24KKyAgICAgICAgICAgIEZNQ19OT1JTUkFNX0luaXQoKQorICAgICAgICgjIykgVGltaW5nIHJlZ2lzdGVyIGNvbmZpZ3VyYXRpb24gdXNpbmcgdGhlIEZNQyBOT1JTUkFNIGludGVyZmFjZSBmdW5jdGlvbgorICAgICAgICAgICAgRk1DX05PUlNSQU1fVGltaW5nX0luaXQoKQorICAgICAgICgjIykgRXh0ZW5kZWQgbW9kZSBUaW1pbmcgcmVnaXN0ZXIgY29uZmlndXJhdGlvbiB1c2luZyB0aGUgRk1DIE5PUlNSQU0gaW50ZXJmYWNlIGZ1bmN0aW9uCisgICAgICAgICAgICBGTUNfTk9SU1JBTV9FeHRlbmRlZF9UaW1pbmdfSW5pdCgpCisgICAgICAgKCMjKSBFbmFibGUgdGhlIFNSQU0gZGV2aWNlIHVzaW5nIHRoZSBtYWNybyBfX0ZNQ19OT1JTUkFNX0VOQUJMRSgpCisKKyAgICgjKSBBdCB0aGlzIHN0YWdlIHlvdSBjYW4gcGVyZm9ybSByZWFkL3dyaXRlIGFjY2Vzc2VzIGZyb20vdG8gdGhlIG1lbW9yeSBjb25uZWN0ZWQKICAgICAgICB0byB0aGUgTk9SL1NSQU0gQmFuay4gWW91IGNhbiBwZXJmb3JtIGVpdGhlciBwb2xsaW5nIG9yIERNQSB0cmFuc2ZlciB1c2luZyB0aGUKICAgICAgICBmb2xsb3dpbmcgQVBJczoKICAgICAgICAoKyspIEhBTF9TUkFNX1JlYWQoKS9IQUxfU1JBTV9Xcml0ZSgpIGZvciBwb2xsaW5nIHJlYWQvd3JpdGUgYWNjZXNzCiAgICAgICAgKCsrKSBIQUxfU1JBTV9SZWFkX0RNQSgpL0hBTF9TUkFNX1dyaXRlX0RNQSgpIGZvciBETUEgcmVhZC93cml0ZSB0cmFuc2ZlcgotICAgICAgIAorCiAgICAoIykgWW91IGNhbiBhbHNvIGNvbnRyb2wgdGhlIFNSQU0gZGV2aWNlIGJ5IGNhbGxpbmcgdGhlIGNvbnRyb2wgQVBJcyBIQUxfU1JBTV9Xcml0ZU9wZXJhdGlvbl9FbmFibGUoKS8KLSAgICAgICBIQUxfU1JBTV9Xcml0ZU9wZXJhdGlvbl9EaXNhYmxlKCkgdG8gcmVzcGVjdGl2ZWx5IGVuYWJsZS9kaXNhYmxlIHRoZSBTUkFNIHdyaXRlIG9wZXJhdGlvbiAgCi0gICAgICAgCisgICAgICAgSEFMX1NSQU1fV3JpdGVPcGVyYXRpb25fRGlzYWJsZSgpIHRvIHJlc3BlY3RpdmVseSBlbmFibGUvZGlzYWJsZSB0aGUgU1JBTSB3cml0ZSBvcGVyYXRpb24KKwogICAgKCMpIFlvdSBjYW4gY29udGludW91c2x5IG1vbml0b3IgdGhlIFNSQU0gZGV2aWNlIEhBTCBzdGF0ZSBieSBjYWxsaW5nIHRoZSBmdW5jdGlvbgogICAgICAgIEhBTF9TUkFNX0dldFN0YXRlKCkKIApAQCAtNjQsMjUgKzc1LDI1IEBACiAgICAgICBUaGUgY29tcGlsYXRpb24gZGVmaW5lICBVU0VfSEFMX1NSQU1fUkVHSVNURVJfQ0FMTEJBQ0tTIHdoZW4gc2V0IHRvIDEKICAgICAgIGFsbG93cyB0aGUgdXNlciB0byBjb25maWd1cmUgZHluYW1pY2FsbHkgdGhlIGRyaXZlciBjYWxsYmFja3MuCiAKLSAgICAgIFVzZSBGdW5jdGlvbnMgQHJlZiBIQUxfU1JBTV9SZWdpc3RlckNhbGxiYWNrKCkgdG8gcmVnaXN0ZXIgYSB1c2VyIGNhbGxiYWNrLAorICAgICAgVXNlIEZ1bmN0aW9ucyBIQUxfU1JBTV9SZWdpc3RlckNhbGxiYWNrKCkgdG8gcmVnaXN0ZXIgYSB1c2VyIGNhbGxiYWNrLAogICAgICAgaXQgYWxsb3dzIHRvIHJlZ2lzdGVyIGZvbGxvd2luZyBjYWxsYmFja3M6CiAgICAgICAgICgrKSBNc3BJbml0Q2FsbGJhY2sgICAgOiBTUkFNIE1zcEluaXQuCiAgICAgICAgICgrKSBNc3BEZUluaXRDYWxsYmFjayAgOiBTUkFNIE1zcERlSW5pdC4KICAgICAgIFRoaXMgZnVuY3Rpb24gdGFrZXMgYXMgcGFyYW1ldGVycyB0aGUgSEFMIHBlcmlwaGVyYWwgaGFuZGxlLCB0aGUgQ2FsbGJhY2sgSUQKICAgICAgIGFuZCBhIHBvaW50ZXIgdG8gdGhlIHVzZXIgY2FsbGJhY2sgZnVuY3Rpb24uCiAKLSAgICAgIFVzZSBmdW5jdGlvbiBAcmVmIEhBTF9TUkFNX1VuUmVnaXN0ZXJDYWxsYmFjaygpIHRvIHJlc2V0IGEgY2FsbGJhY2sgdG8gdGhlIGRlZmF1bHQKKyAgICAgIFVzZSBmdW5jdGlvbiBIQUxfU1JBTV9VblJlZ2lzdGVyQ2FsbGJhY2soKSB0byByZXNldCBhIGNhbGxiYWNrIHRvIHRoZSBkZWZhdWx0CiAgICAgICB3ZWFrIChzdXJjaGFyZ2VkKSBmdW5jdGlvbi4gSXQgYWxsb3dzIHRvIHJlc2V0IGZvbGxvd2luZyBjYWxsYmFja3M6CiAgICAgICAgICgrKSBNc3BJbml0Q2FsbGJhY2sgICAgOiBTUkFNIE1zcEluaXQuCiAgICAgICAgICgrKSBNc3BEZUluaXRDYWxsYmFjayAgOiBTUkFNIE1zcERlSW5pdC4KICAgICAgIFRoaXMgZnVuY3Rpb24pIHRha2VzIGFzIHBhcmFtZXRlcnMgdGhlIEhBTCBwZXJpcGhlcmFsIGhhbmRsZSBhbmQgdGhlIENhbGxiYWNrIElELgogCi0gICAgICBCeSBkZWZhdWx0LCBhZnRlciB0aGUgQHJlZiBIQUxfU1JBTV9Jbml0IGFuZCBpZiB0aGUgc3RhdGUgaXMgSEFMX1NSQU1fU1RBVEVfUkVTRVQKKyAgICAgIEJ5IGRlZmF1bHQsIGFmdGVyIHRoZSBIQUxfU1JBTV9Jbml0IGFuZCBpZiB0aGUgc3RhdGUgaXMgSEFMX1NSQU1fU1RBVEVfUkVTRVQKICAgICAgIGFsbCBjYWxsYmFja3MgYXJlIHJlc2V0IHRvIHRoZSBjb3JyZXNwb25kaW5nIGxlZ2FjeSB3ZWFrIChzdXJjaGFyZ2VkKSBmdW5jdGlvbnMuCiAgICAgICBFeGNlcHRpb24gZG9uZSBmb3IgTXNwSW5pdCBhbmQgTXNwRGVJbml0IGNhbGxiYWNrcyB0aGF0IGFyZSByZXNwZWN0aXZlbHkKLSAgICAgIHJlc2V0IHRvIHRoZSBsZWdhY3kgd2VhayAoc3VyY2hhcmdlZCkgZnVuY3Rpb25zIGluIHRoZSBAcmVmIEhBTF9TUkFNX0luaXQKLSAgICAgIGFuZCBAcmVmICBIQUxfU1JBTV9EZUluaXQgb25seSB3aGVuIHRoZXNlIGNhbGxiYWNrcyBhcmUgbnVsbCAobm90IHJlZ2lzdGVyZWQgYmVmb3JlaGFuZCkuCi0gICAgICBJZiBub3QsIE1zcEluaXQgb3IgTXNwRGVJbml0IGFyZSBub3QgbnVsbCwgdGhlIEByZWYgSEFMX1NSQU1fSW5pdCBhbmQgQHJlZiBIQUxfU1JBTV9EZUluaXQKKyAgICAgIHJlc2V0IHRvIHRoZSBsZWdhY3kgd2VhayAoc3VyY2hhcmdlZCkgZnVuY3Rpb25zIGluIHRoZSBIQUxfU1JBTV9Jbml0CisgICAgICBhbmQgIEhBTF9TUkFNX0RlSW5pdCBvbmx5IHdoZW4gdGhlc2UgY2FsbGJhY2tzIGFyZSBudWxsIChub3QgcmVnaXN0ZXJlZCBiZWZvcmVoYW5kKS4KKyAgICAgIElmIG5vdCwgTXNwSW5pdCBvciBNc3BEZUluaXQgYXJlIG5vdCBudWxsLCB0aGUgSEFMX1NSQU1fSW5pdCBhbmQgSEFMX1NSQU1fRGVJbml0CiAgICAgICBrZWVwIGFuZCB1c2UgdGhlIHVzZXIgTXNwSW5pdC9Nc3BEZUluaXQgY2FsbGJhY2tzIChyZWdpc3RlcmVkIGJlZm9yZWhhbmQpCiAKICAgICAgIENhbGxiYWNrcyBjYW4gYmUgcmVnaXN0ZXJlZC91bnJlZ2lzdGVyZWQgaW4gUkVBRFkgc3RhdGUgb25seS4KQEAgLTkwLDggKzEwMSw4IEBACiAgICAgICBpbiBSRUFEWSBvciBSRVNFVCBzdGF0ZSwgdGh1cyByZWdpc3RlcmVkICh1c2VyKSBNc3BJbml0L0RlSW5pdCBjYWxsYmFja3MgY2FuIGJlIHVzZWQKICAgICAgIGR1cmluZyB0aGUgSW5pdC9EZUluaXQuCiAgICAgICBJbiB0aGF0IGNhc2UgZmlyc3QgcmVnaXN0ZXIgdGhlIE1zcEluaXQvTXNwRGVJbml0IHVzZXIgY2FsbGJhY2tzCi0gICAgICB1c2luZyBAcmVmIEhBTF9TUkFNX1JlZ2lzdGVyQ2FsbGJhY2sgYmVmb3JlIGNhbGxpbmcgQHJlZiBIQUxfU1JBTV9EZUluaXQKLSAgICAgIG9yIEByZWYgSEFMX1NSQU1fSW5pdCBmdW5jdGlvbi4KKyAgICAgIHVzaW5nIEhBTF9TUkFNX1JlZ2lzdGVyQ2FsbGJhY2sgYmVmb3JlIGNhbGxpbmcgSEFMX1NSQU1fRGVJbml0CisgICAgICBvciBIQUxfU1JBTV9Jbml0IGZ1bmN0aW9uLgogCiAgICAgICBXaGVuIFRoZSBjb21waWxhdGlvbiBkZWZpbmUgVVNFX0hBTF9TUkFNX1JFR0lTVEVSX0NBTExCQUNLUyBpcyBzZXQgdG8gMCBvcgogICAgICAgbm90IGRlZmluZWQsIHRoZSBjYWxsYmFjayByZWdpc3RlcmluZyBmZWF0dXJlIGlzIG5vdCBhdmFpbGFibGUKQEAgLTk5LDM2ICsxMTAsMzIgQEAKIAogICBAZW5kdmVyYmF0aW0KICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gICogQGF0dGVudGlvbgotICAqCi0gICogPGgyPjxjZW50ZXI+JmNvcHk7IENvcHlyaWdodCAoYykgMjAxNyBTVE1pY3JvZWxlY3Ryb25pY3MuCi0gICogQWxsIHJpZ2h0cyByZXNlcnZlZC48L2NlbnRlcj48L2gyPgotICAqCi0gICogVGhpcyBzb2Z0d2FyZSBjb21wb25lbnQgaXMgbGljZW5zZWQgYnkgU1QgdW5kZXIgQlNEIDMtQ2xhdXNlIGxpY2Vuc2UsCi0gICogdGhlICJMaWNlbnNlIjsgWW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZQotICAqIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdDoKLSAgKiAgICAgICAgICAgICAgICAgICAgICAgIG9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0JTRC0zLUNsYXVzZQotICAqCi0gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICAqLyAKKyAgKi8KIAogLyogSW5jbHVkZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KICNpbmNsdWRlICJzdG0zMmY3eHhfaGFsLmgiCiAKKwogLyoqIEBhZGR0b2dyb3VwIFNUTTMyRjd4eF9IQUxfRHJpdmVyCiAgICogQHsKICAgKi8KIAotLyoqIEBkZWZncm91cCBTUkFNIFNSQU0gCisjaWZkZWYgSEFMX1NSQU1fTU9EVUxFX0VOQUJMRUQKKworLyoqIEBkZWZncm91cCBTUkFNIFNSQU0KICAgKiBAYnJpZWYgU1JBTSBkcml2ZXIgbW9kdWxlcwogICAqIEB7CiAgICovCi0jaWZkZWYgSEFMX1NSQU1fTU9EVUxFX0VOQUJMRUQKKwogLyogUHJpdmF0ZSB0eXBlZGVmIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KIC8qIFByaXZhdGUgZGVmaW5lIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi0vKiBQcml2YXRlIG1hY3JvIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyAgICAKKy8qIFByaXZhdGUgbWFjcm8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAvKiBQcml2YXRlIHZhcmlhYmxlcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogLyogUHJpdmF0ZSBmdW5jdGlvbiBwcm90b3R5cGVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KK3N0YXRpYyB2b2lkIFNSQU1fRE1BQ3BsdChETUFfSGFuZGxlVHlwZURlZiAqaGRtYSk7CitzdGF0aWMgdm9pZCBTUkFNX0RNQUNwbHRQcm90KERNQV9IYW5kbGVUeXBlRGVmICpoZG1hKTsKK3N0YXRpYyB2b2lkIFNSQU1fRE1BRXJyb3IoRE1BX0hhbmRsZVR5cGVEZWYgKmhkbWEpOworCiAvKiBFeHBvcnRlZCBmdW5jdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogCiAvKiogQGRlZmdyb3VwIFNSQU1fRXhwb3J0ZWRfRnVuY3Rpb25zIFNSQU0gRXhwb3J0ZWQgRnVuY3Rpb25zCkBAIC0xMzgsMTMgKzE0NSwxMyBAQAogLyoqIEBkZWZncm91cCBTUkFNX0V4cG9ydGVkX0Z1bmN0aW9uc19Hcm91cDEgSW5pdGlhbGl6YXRpb24gYW5kIGRlLWluaXRpYWxpemF0aW9uIGZ1bmN0aW9ucwogICAqIEBicmllZiAgICBJbml0aWFsaXphdGlvbiBhbmQgQ29uZmlndXJhdGlvbiBmdW5jdGlvbnMuCiAgICoKLSAgQHZlcmJhdGltICAgIAorICBAdmVyYmF0aW0KICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgICAgICAgICAgICMjIyMjIFNSQU0gSW5pdGlhbGl6YXRpb24gYW5kIGRlX2luaXRpYWxpemF0aW9uIGZ1bmN0aW9ucyAjIyMjIwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgICBbLi5dICBUaGlzIHNlY3Rpb24gcHJvdmlkZXMgZnVuY3Rpb25zIGFsbG93aW5nIHRvIGluaXRpYWxpemUvZGUtaW5pdGlhbGl6ZQogICAgICAgICAgIHRoZSBTUkFNIG1lbW9yeQotICAKKwogQGVuZHZlcmJhdGltCiAgICogQHsKICAgKi8KQEAgLTE1MywyNSArMTYwLDI2IEBACiAgICogQGJyaWVmICBQZXJmb3JtcyB0aGUgU1JBTSBkZXZpY2UgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UKICAgKiBAcGFyYW0gIGhzcmFtIHBvaW50ZXIgdG8gYSBTUkFNX0hhbmRsZVR5cGVEZWYgc3RydWN0dXJlIHRoYXQgY29udGFpbnMKICAgKiAgICAgICAgICAgICAgICB0aGUgY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbiBmb3IgU1JBTSBtb2R1bGUuCi0gICogQHBhcmFtICBUaW1pbmcgUG9pbnRlciB0byBTUkFNIGNvbnRyb2wgdGltaW5nIHN0cnVjdHVyZSAKLSAgKiBAcGFyYW0gIEV4dFRpbWluZyBQb2ludGVyIHRvIFNSQU0gZXh0ZW5kZWQgbW9kZSB0aW1pbmcgc3RydWN0dXJlICAKKyAgKiBAcGFyYW0gIFRpbWluZyBQb2ludGVyIHRvIFNSQU0gY29udHJvbCB0aW1pbmcgc3RydWN0dXJlCisgICogQHBhcmFtICBFeHRUaW1pbmcgUG9pbnRlciB0byBTUkFNIGV4dGVuZGVkIG1vZGUgdGltaW5nIHN0cnVjdHVyZQogICAqIEByZXR2YWwgSEFMIHN0YXR1cwogICAqLwotSEFMX1N0YXR1c1R5cGVEZWYgSEFMX1NSQU1fSW5pdChTUkFNX0hhbmRsZVR5cGVEZWYgKmhzcmFtLCBGTUNfTk9SU1JBTV9UaW1pbmdUeXBlRGVmICpUaW1pbmcsIEZNQ19OT1JTUkFNX1RpbWluZ1R5cGVEZWYgKkV4dFRpbWluZykKLXsgCitIQUxfU3RhdHVzVHlwZURlZiBIQUxfU1JBTV9Jbml0KFNSQU1fSGFuZGxlVHlwZURlZiAqaHNyYW0sIEZNQ19OT1JTUkFNX1RpbWluZ1R5cGVEZWYgKlRpbWluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRk1DX05PUlNSQU1fVGltaW5nVHlwZURlZiAqRXh0VGltaW5nKQorewogICAvKiBDaGVjayB0aGUgU1JBTSBoYW5kbGUgcGFyYW1ldGVyICovCi0gIGlmKGhzcmFtID09IE5VTEwpCisgIGlmIChoc3JhbSA9PSBOVUxMKQogICB7Ci0gICAgIHJldHVybiBIQUxfRVJST1I7CisgICAgcmV0dXJuIEhBTF9FUlJPUjsKICAgfQotICAKLSAgaWYoaHNyYW0tPlN0YXRlID09IEhBTF9TUkFNX1NUQVRFX1JFU0VUKQotICB7ICAKKworICBpZiAoaHNyYW0tPlN0YXRlID09IEhBTF9TUkFNX1NUQVRFX1JFU0VUKQorICB7CiAgICAgLyogQWxsb2NhdGUgbG9jayByZXNvdXJjZSBhbmQgaW5pdGlhbGl6ZSBpdCAqLwogICAgIGhzcmFtLT5Mb2NrID0gSEFMX1VOTE9DS0VEOwogCiAjaWYgKFVTRV9IQUxfU1JBTV9SRUdJU1RFUl9DQUxMQkFDS1MgPT0gMSkKLSAgICBpZihoc3JhbS0+TXNwSW5pdENhbGxiYWNrID09IE5VTEwpCisgICAgaWYgKGhzcmFtLT5Nc3BJbml0Q2FsbGJhY2sgPT0gTlVMTCkKICAgICB7CiAgICAgICBoc3JhbS0+TXNwSW5pdENhbGxiYWNrID0gSEFMX1NSQU1fTXNwSW5pdDsKICAgICB9CkBAIC0xODMsMjEgKzE5MSwyNSBAQAogI2Vsc2UKICAgICAvKiBJbml0aWFsaXplIHRoZSBsb3cgbGV2ZWwgaGFyZHdhcmUgKE1TUCkgKi8KICAgICBIQUxfU1JBTV9Nc3BJbml0KGhzcmFtKTsKLSNlbmRpZgorI2VuZGlmIC8qIFVTRV9IQUxfU1JBTV9SRUdJU1RFUl9DQUxMQkFDS1MgKi8KICAgfQotICAKKwogICAvKiBJbml0aWFsaXplIFNSQU0gY29udHJvbCBJbnRlcmZhY2UgKi8KLSAgRk1DX05PUlNSQU1fSW5pdChoc3JhbS0+SW5zdGFuY2UsICYoaHNyYW0tPkluaXQpKTsKKyAgKHZvaWQpRk1DX05PUlNSQU1fSW5pdChoc3JhbS0+SW5zdGFuY2UsICYoaHNyYW0tPkluaXQpKTsKIAogICAvKiBJbml0aWFsaXplIFNSQU0gdGltaW5nIEludGVyZmFjZSAqLwotICBGTUNfTk9SU1JBTV9UaW1pbmdfSW5pdChoc3JhbS0+SW5zdGFuY2UsIFRpbWluZywgaHNyYW0tPkluaXQuTlNCYW5rKTsgCisgICh2b2lkKUZNQ19OT1JTUkFNX1RpbWluZ19Jbml0KGhzcmFtLT5JbnN0YW5jZSwgVGltaW5nLCBoc3JhbS0+SW5pdC5OU0JhbmspOwogCiAgIC8qIEluaXRpYWxpemUgU1JBTSBleHRlbmRlZCBtb2RlIHRpbWluZyBJbnRlcmZhY2UgKi8KLSAgRk1DX05PUlNSQU1fRXh0ZW5kZWRfVGltaW5nX0luaXQoaHNyYW0tPkV4dGVuZGVkLCBFeHRUaW1pbmcsIGhzcmFtLT5Jbml0Lk5TQmFuaywgIGhzcmFtLT5Jbml0LkV4dGVuZGVkTW9kZSk7ICAKLSAgCisgICh2b2lkKUZNQ19OT1JTUkFNX0V4dGVuZGVkX1RpbWluZ19Jbml0KGhzcmFtLT5FeHRlbmRlZCwgRXh0VGltaW5nLCBoc3JhbS0+SW5pdC5OU0JhbmssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhzcmFtLT5Jbml0LkV4dGVuZGVkTW9kZSk7CisKICAgLyogRW5hYmxlIHRoZSBOT1JTUkFNIGRldmljZSAqLwotICBfX0ZNQ19OT1JTUkFNX0VOQUJMRShoc3JhbS0+SW5zdGFuY2UsIGhzcmFtLT5Jbml0Lk5TQmFuayk7IAotICAKKyAgX19GTUNfTk9SU1JBTV9FTkFCTEUoaHNyYW0tPkluc3RhbmNlLCBoc3JhbS0+SW5pdC5OU0JhbmspOworCisgIC8qIEluaXRpYWxpemUgdGhlIFNSQU0gY29udHJvbGxlciBzdGF0ZSAqLworICBoc3JhbS0+U3RhdGUgPSBIQUxfU1JBTV9TVEFURV9SRUFEWTsKKwogICByZXR1cm4gSEFMX09LOwogfQogCkBAIC0yMTAsNyArMjIyLDcgQEAKIEhBTF9TdGF0dXNUeXBlRGVmIEhBTF9TUkFNX0RlSW5pdChTUkFNX0hhbmRsZVR5cGVEZWYgKmhzcmFtKQogewogI2lmIChVU0VfSEFMX1NSQU1fUkVHSVNURVJfQ0FMTEJBQ0tTID09IDEpCi0gIGlmKGhzcmFtLT5Nc3BEZUluaXRDYWxsYmFjayA9PSBOVUxMKQorICBpZiAoaHNyYW0tPk1zcERlSW5pdENhbGxiYWNrID09IE5VTEwpCiAgIHsKICAgICBoc3JhbS0+TXNwRGVJbml0Q2FsbGJhY2sgPSBIQUxfU1JBTV9Nc3BEZUluaXQ7CiAgIH0KQEAgLTIyMCwxMyArMjMyLDE0IEBACiAjZWxzZQogICAvKiBEZS1Jbml0aWFsaXplIHRoZSBsb3cgbGV2ZWwgaGFyZHdhcmUgKE1TUCkgKi8KICAgSEFMX1NSQU1fTXNwRGVJbml0KGhzcmFtKTsKLSNlbmRpZgorI2VuZGlmIC8qIFVTRV9IQUxfU1JBTV9SRUdJU1RFUl9DQUxMQkFDS1MgKi8KIAogICAvKiBDb25maWd1cmUgdGhlIFNSQU0gcmVnaXN0ZXJzIHdpdGggdGhlaXIgcmVzZXQgdmFsdWVzICovCi0gIEZNQ19OT1JTUkFNX0RlSW5pdChoc3JhbS0+SW5zdGFuY2UsIGhzcmFtLT5FeHRlbmRlZCwgaHNyYW0tPkluaXQuTlNCYW5rKTsKKyAgKHZvaWQpRk1DX05PUlNSQU1fRGVJbml0KGhzcmFtLT5JbnN0YW5jZSwgaHNyYW0tPkV4dGVuZGVkLCBoc3JhbS0+SW5pdC5OU0JhbmspOwogCisgIC8qIFJlc2V0IHRoZSBTUkFNIGNvbnRyb2xsZXIgc3RhdGUgKi8KICAgaHNyYW0tPlN0YXRlID0gSEFMX1NSQU1fU1RBVEVfUkVTRVQ7Ci0gIAorCiAgIC8qIFJlbGVhc2UgTG9jayAqLwogICBfX0hBTF9VTkxPQ0soaHNyYW0pOwogCkBAIC0yNDMsMTAgKzI1NiwxMCBAQAogewogICAvKiBQcmV2ZW50IHVudXNlZCBhcmd1bWVudChzKSBjb21waWxhdGlvbiB3YXJuaW5nICovCiAgIFVOVVNFRChoc3JhbSk7Ci0gCisKICAgLyogTk9URSA6IFRoaXMgZnVuY3Rpb24gU2hvdWxkIG5vdCBiZSBtb2RpZmllZCwgd2hlbiB0aGUgY2FsbGJhY2sgaXMgbmVlZGVkLAogICAgICAgICAgICAgdGhlIEhBTF9TUkFNX01zcEluaXQgY291bGQgYmUgaW1wbGVtZW50ZWQgaW4gdGhlIHVzZXIgZmlsZQotICAgKi8gCisgICAqLwogfQogCiAvKioKQEAgLTI1OSwxMCArMjcyLDEwIEBACiB7CiAgIC8qIFByZXZlbnQgdW51c2VkIGFyZ3VtZW50KHMpIGNvbXBpbGF0aW9uIHdhcm5pbmcgKi8KICAgVU5VU0VEKGhzcmFtKTsKLSAKKwogICAvKiBOT1RFIDogVGhpcyBmdW5jdGlvbiBTaG91bGQgbm90IGJlIG1vZGlmaWVkLCB3aGVuIHRoZSBjYWxsYmFjayBpcyBuZWVkZWQsCiAgICAgICAgICAgICB0aGUgSEFMX1NSQU1fTXNwRGVJbml0IGNvdWxkIGJlIGltcGxlbWVudGVkIGluIHRoZSB1c2VyIGZpbGUKLSAgICovIAorICAgKi8KIH0KIAogLyoqCkBAIC0yNzUsMTAgKzI4OCwxMCBAQAogewogICAvKiBQcmV2ZW50IHVudXNlZCBhcmd1bWVudChzKSBjb21waWxhdGlvbiB3YXJuaW5nICovCiAgIFVOVVNFRChoZG1hKTsKLSAKKwogICAvKiBOT1RFIDogVGhpcyBmdW5jdGlvbiBTaG91bGQgbm90IGJlIG1vZGlmaWVkLCB3aGVuIHRoZSBjYWxsYmFjayBpcyBuZWVkZWQsCiAgICAgICAgICAgICB0aGUgSEFMX1NSQU1fRE1BX1hmZXJDcGx0Q2FsbGJhY2sgY291bGQgYmUgaW1wbGVtZW50ZWQgaW4gdGhlIHVzZXIgZmlsZQotICAgKi8gCisgICAqLwogfQogCiAvKioKQEAgLTI5MSwyNTggKzMwNCwzMzcgQEAKIHsKICAgLyogUHJldmVudCB1bnVzZWQgYXJndW1lbnQocykgY29tcGlsYXRpb24gd2FybmluZyAqLwogICBVTlVTRUQoaGRtYSk7Ci0gCisKICAgLyogTk9URSA6IFRoaXMgZnVuY3Rpb24gU2hvdWxkIG5vdCBiZSBtb2RpZmllZCwgd2hlbiB0aGUgY2FsbGJhY2sgaXMgbmVlZGVkLAogICAgICAgICAgICAgdGhlIEhBTF9TUkFNX0RNQV9YZmVyRXJyb3JDYWxsYmFjayBjb3VsZCBiZSBpbXBsZW1lbnRlZCBpbiB0aGUgdXNlciBmaWxlCi0gICAqLyAKKyAgICovCiB9CiAKIC8qKgogICAqIEB9CiAgICovCiAKLS8qKiBAZGVmZ3JvdXAgU1JBTV9FeHBvcnRlZF9GdW5jdGlvbnNfR3JvdXAyIElucHV0IE91dHB1dCBhbmQgbWVtb3J5IGNvbnRyb2wgZnVuY3Rpb25zIAotICAqIEBicmllZiAgICBJbnB1dCBPdXRwdXQgYW5kIG1lbW9yeSBjb250cm9sIGZ1bmN0aW9ucyAKKy8qKiBAZGVmZ3JvdXAgU1JBTV9FeHBvcnRlZF9GdW5jdGlvbnNfR3JvdXAyIElucHV0IE91dHB1dCBhbmQgbWVtb3J5IGNvbnRyb2wgZnVuY3Rpb25zCisgICogQGJyaWVmICAgIElucHV0IE91dHB1dCBhbmQgbWVtb3J5IGNvbnRyb2wgZnVuY3Rpb25zCiAgICoKLSAgQHZlcmJhdGltICAgIAorICBAdmVyYmF0aW0KICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgICAgICAgICAgICAgICAgICAjIyMjIyBTUkFNIElucHV0IGFuZCBPdXRwdXQgZnVuY3Rpb25zICMjIyMjCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotICBbLi5dICAKKyAgWy4uXQogICAgIFRoaXMgc2VjdGlvbiBwcm92aWRlcyBmdW5jdGlvbnMgYWxsb3dpbmcgdG8gdXNlIGFuZCBjb250cm9sIHRoZSBTUkFNIG1lbW9yeQotICAKKwogQGVuZHZlcmJhdGltCiAgICogQHsKICAgKi8KIAogLyoqCi0gICogQGJyaWVmICBSZWFkcyA4LWJpdCBidWZmZXIgZnJvbSBTUkFNIG1lbW9yeS4gCisgICogQGJyaWVmICBSZWFkcyA4LWJpdCBidWZmZXIgZnJvbSBTUkFNIG1lbW9yeS4KICAgKiBAcGFyYW0gIGhzcmFtIHBvaW50ZXIgdG8gYSBTUkFNX0hhbmRsZVR5cGVEZWYgc3RydWN0dXJlIHRoYXQgY29udGFpbnMKICAgKiAgICAgICAgICAgICAgICB0aGUgY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbiBmb3IgU1JBTSBtb2R1bGUuCiAgICogQHBhcmFtICBwQWRkcmVzcyBQb2ludGVyIHRvIHJlYWQgc3RhcnQgYWRkcmVzcwotICAqIEBwYXJhbSAgcERzdEJ1ZmZlciBQb2ludGVyIHRvIGRlc3RpbmF0aW9uIGJ1ZmZlciAgCisgICogQHBhcmFtICBwRHN0QnVmZmVyIFBvaW50ZXIgdG8gZGVzdGluYXRpb24gYnVmZmVyCiAgICogQHBhcmFtICBCdWZmZXJTaXplIFNpemUgb2YgdGhlIGJ1ZmZlciB0byByZWFkIGZyb20gbWVtb3J5CiAgICogQHJldHZhbCBIQUwgc3RhdHVzCiAgICovCi1IQUxfU3RhdHVzVHlwZURlZiBIQUxfU1JBTV9SZWFkXzhiKFNSQU1fSGFuZGxlVHlwZURlZiAqaHNyYW0sIHVpbnQzMl90ICpwQWRkcmVzcywgdWludDhfdCAqcERzdEJ1ZmZlciwgdWludDMyX3QgQnVmZmVyU2l6ZSkKK0hBTF9TdGF0dXNUeXBlRGVmIEhBTF9TUkFNX1JlYWRfOGIoU1JBTV9IYW5kbGVUeXBlRGVmICpoc3JhbSwgdWludDMyX3QgKnBBZGRyZXNzLCB1aW50OF90ICpwRHN0QnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBCdWZmZXJTaXplKQogewotICBfX0lPIHVpbnQ4X3QgKiBwc3JhbWFkZHJlc3MgPSAodWludDhfdCAqKXBBZGRyZXNzOwotICAKLSAgLyogUHJvY2VzcyBMb2NrZWQgKi8KLSAgX19IQUxfTE9DSyhoc3JhbSk7Ci0gIAotICAvKiBVcGRhdGUgdGhlIFNSQU0gY29udHJvbGxlciBzdGF0ZSAqLwotICBoc3JhbS0+U3RhdGUgPSBIQUxfU1JBTV9TVEFURV9CVVNZOyAgCi0gIAotICAvKiBSZWFkIGRhdGEgZnJvbSBtZW1vcnkgKi8KLSAgZm9yKDsgQnVmZmVyU2l6ZSAhPSAwOyBCdWZmZXJTaXplLS0pCi0gIHsKLSAgICAqcERzdEJ1ZmZlciA9ICooX19JTyB1aW50OF90ICopcHNyYW1hZGRyZXNzOwotICAgIHBEc3RCdWZmZXIrKzsKLSAgICBwc3JhbWFkZHJlc3MrKzsKLSAgfQotICAKLSAgLyogVXBkYXRlIHRoZSBTUkFNIGNvbnRyb2xsZXIgc3RhdGUgKi8KLSAgaHNyYW0tPlN0YXRlID0gSEFMX1NSQU1fU1RBVEVfUkVBRFk7ICAgIAorICB1aW50MzJfdCBzaXplOworICBfX0lPIHVpbnQ4X3QgKnBzcmFtYWRkcmVzcyA9ICh1aW50OF90ICopcEFkZHJlc3M7CisgIHVpbnQ4X3QgKnBkZXN0YnVmZiA9IHBEc3RCdWZmZXI7CisgIEhBTF9TUkFNX1N0YXRlVHlwZURlZiBzdGF0ZSA9IGhzcmFtLT5TdGF0ZTsKIAotICAvKiBQcm9jZXNzIHVubG9ja2VkICovCi0gIF9fSEFMX1VOTE9DSyhoc3JhbSk7IAotICAgIAotICByZXR1cm4gSEFMX09LOyAgIAorICAvKiBDaGVjayB0aGUgU1JBTSBjb250cm9sbGVyIHN0YXRlICovCisgIGlmICgoc3RhdGUgPT0gSEFMX1NSQU1fU1RBVEVfUkVBRFkpIHx8IChzdGF0ZSA9PSBIQUxfU1JBTV9TVEFURV9QUk9URUNURUQpKQorICB7CisgICAgLyogUHJvY2VzcyBMb2NrZWQgKi8KKyAgICBfX0hBTF9MT0NLKGhzcmFtKTsKKworICAgIC8qIFVwZGF0ZSB0aGUgU1JBTSBjb250cm9sbGVyIHN0YXRlICovCisgICAgaHNyYW0tPlN0YXRlID0gSEFMX1NSQU1fU1RBVEVfQlVTWTsKKworICAgIC8qIFJlYWQgZGF0YSBmcm9tIG1lbW9yeSAqLworICAgIGZvciAoc2l6ZSA9IEJ1ZmZlclNpemU7IHNpemUgIT0gMFU7IHNpemUtLSkKKyAgICB7CisgICAgICAqcGRlc3RidWZmID0gKnBzcmFtYWRkcmVzczsKKyAgICAgIHBkZXN0YnVmZisrOworICAgICAgcHNyYW1hZGRyZXNzKys7CisgICAgfQorCisgICAgLyogVXBkYXRlIHRoZSBTUkFNIGNvbnRyb2xsZXIgc3RhdGUgKi8KKyAgICBoc3JhbS0+U3RhdGUgPSBzdGF0ZTsKKworICAgIC8qIFByb2Nlc3MgdW5sb2NrZWQgKi8KKyAgICBfX0hBTF9VTkxPQ0soaHNyYW0pOworICB9CisgIGVsc2UKKyAgeworICAgIHJldHVybiBIQUxfRVJST1I7CisgIH0KKworICByZXR1cm4gSEFMX09LOwogfQogCiAvKioKLSAgKiBAYnJpZWYgIFdyaXRlcyA4LWJpdCBidWZmZXIgdG8gU1JBTSBtZW1vcnkuIAorICAqIEBicmllZiAgV3JpdGVzIDgtYml0IGJ1ZmZlciB0byBTUkFNIG1lbW9yeS4KICAgKiBAcGFyYW0gIGhzcmFtIHBvaW50ZXIgdG8gYSBTUkFNX0hhbmRsZVR5cGVEZWYgc3RydWN0dXJlIHRoYXQgY29udGFpbnMKICAgKiAgICAgICAgICAgICAgICB0aGUgY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbiBmb3IgU1JBTSBtb2R1bGUuCiAgICogQHBhcmFtICBwQWRkcmVzcyBQb2ludGVyIHRvIHdyaXRlIHN0YXJ0IGFkZHJlc3MKLSAgKiBAcGFyYW0gIHBTcmNCdWZmZXIgUG9pbnRlciB0byBzb3VyY2UgYnVmZmVyIHRvIHdyaXRlICAKKyAgKiBAcGFyYW0gIHBTcmNCdWZmZXIgUG9pbnRlciB0byBzb3VyY2UgYnVmZmVyIHRvIHdyaXRlCiAgICogQHBhcmFtICBCdWZmZXJTaXplIFNpemUgb2YgdGhlIGJ1ZmZlciB0byB3cml0ZSB0byBtZW1vcnkKICAgKiBAcmV0dmFsIEhBTCBzdGF0dXMKICAgKi8KLUhBTF9TdGF0dXNUeXBlRGVmIEhBTF9TUkFNX1dyaXRlXzhiKFNSQU1fSGFuZGxlVHlwZURlZiAqaHNyYW0sIHVpbnQzMl90ICpwQWRkcmVzcywgdWludDhfdCAqcFNyY0J1ZmZlciwgdWludDMyX3QgQnVmZmVyU2l6ZSkKK0hBTF9TdGF0dXNUeXBlRGVmIEhBTF9TUkFNX1dyaXRlXzhiKFNSQU1fSGFuZGxlVHlwZURlZiAqaHNyYW0sIHVpbnQzMl90ICpwQWRkcmVzcywgdWludDhfdCAqcFNyY0J1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IEJ1ZmZlclNpemUpCiB7Ci0gIF9fSU8gdWludDhfdCAqIHBzcmFtYWRkcmVzcyA9ICh1aW50OF90ICopcEFkZHJlc3M7Ci0gIAorICB1aW50MzJfdCBzaXplOworICBfX0lPIHVpbnQ4X3QgKnBzcmFtYWRkcmVzcyA9ICh1aW50OF90ICopcEFkZHJlc3M7CisgIHVpbnQ4X3QgKnBzcmNidWZmID0gcFNyY0J1ZmZlcjsKKwogICAvKiBDaGVjayB0aGUgU1JBTSBjb250cm9sbGVyIHN0YXRlICovCi0gIGlmKGhzcmFtLT5TdGF0ZSA9PSBIQUxfU1JBTV9TVEFURV9QUk9URUNURUQpCisgIGlmIChoc3JhbS0+U3RhdGUgPT0gSEFMX1NSQU1fU1RBVEVfUkVBRFkpCiAgIHsKLSAgICByZXR1cm4gIEhBTF9FUlJPUjsgCisgICAgLyogUHJvY2VzcyBMb2NrZWQgKi8KKyAgICBfX0hBTF9MT0NLKGhzcmFtKTsKKworICAgIC8qIFVwZGF0ZSB0aGUgU1JBTSBjb250cm9sbGVyIHN0YXRlICovCisgICAgaHNyYW0tPlN0YXRlID0gSEFMX1NSQU1fU1RBVEVfQlVTWTsKKworICAgIC8qIFdyaXRlIGRhdGEgdG8gbWVtb3J5ICovCisgICAgZm9yIChzaXplID0gQnVmZmVyU2l6ZTsgc2l6ZSAhPSAwVTsgc2l6ZS0tKQorICAgIHsKKyAgICAgICpwc3JhbWFkZHJlc3MgPSAqcHNyY2J1ZmY7CisgICAgICBwc3JjYnVmZisrOworICAgICAgcHNyYW1hZGRyZXNzKys7CisgICAgfQorCisgICAgLyogVXBkYXRlIHRoZSBTUkFNIGNvbnRyb2xsZXIgc3RhdGUgKi8KKyAgICBoc3JhbS0+U3RhdGUgPSBIQUxfU1JBTV9TVEFURV9SRUFEWTsKKworICAgIC8qIFByb2Nlc3MgdW5sb2NrZWQgKi8KKyAgICBfX0hBTF9VTkxPQ0soaHNyYW0pOwogICB9Ci0gIAotICAvKiBQcm9jZXNzIExvY2tlZCAqLwotICBfX0hBTF9MT0NLKGhzcmFtKTsKLSAgCi0gIC8qIFVwZGF0ZSB0aGUgU1JBTSBjb250cm9sbGVyIHN0YXRlICovCi0gIGhzcmFtLT5TdGF0ZSA9IEhBTF9TUkFNX1NUQVRFX0JVU1k7IAotCi0gIC8qIFdyaXRlIGRhdGEgdG8gbWVtb3J5ICovCi0gIGZvcig7IEJ1ZmZlclNpemUgIT0gMDsgQnVmZmVyU2l6ZS0tKQorICBlbHNlCiAgIHsKLSAgICAqKF9fSU8gdWludDhfdCAqKXBzcmFtYWRkcmVzcyA9ICpwU3JjQnVmZmVyOyAKLSAgICBwU3JjQnVmZmVyKys7Ci0gICAgcHNyYW1hZGRyZXNzKys7ICAgIAotICB9ICAgIAorICAgIHJldHVybiBIQUxfRVJST1I7CisgIH0KIAotICAvKiBVcGRhdGUgdGhlIFNSQU0gY29udHJvbGxlciBzdGF0ZSAqLwotICBoc3JhbS0+U3RhdGUgPSBIQUxfU1JBTV9TVEFURV9SRUFEWTsgCi0gIAotICAvKiBQcm9jZXNzIHVubG9ja2VkICovCi0gIF9fSEFMX1VOTE9DSyhoc3JhbSk7Ci0gICAgCi0gIHJldHVybiBIQUxfT0s7ICAgCisgIHJldHVybiBIQUxfT0s7CiB9CiAKIC8qKgotICAqIEBicmllZiAgUmVhZHMgMTYtYml0IGJ1ZmZlciBmcm9tIFNSQU0gbWVtb3J5LiAKKyAgKiBAYnJpZWYgIFJlYWRzIDE2LWJpdCBidWZmZXIgZnJvbSBTUkFNIG1lbW9yeS4KICAgKiBAcGFyYW0gIGhzcmFtIHBvaW50ZXIgdG8gYSBTUkFNX0hhbmRsZVR5cGVEZWYgc3RydWN0dXJlIHRoYXQgY29udGFpbnMKICAgKiAgICAgICAgICAgICAgICB0aGUgY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbiBmb3IgU1JBTSBtb2R1bGUuCiAgICogQHBhcmFtICBwQWRkcmVzcyBQb2ludGVyIHRvIHJlYWQgc3RhcnQgYWRkcmVzcwotICAqIEBwYXJhbSAgcERzdEJ1ZmZlciBQb2ludGVyIHRvIGRlc3RpbmF0aW9uIGJ1ZmZlciAgCisgICogQHBhcmFtICBwRHN0QnVmZmVyIFBvaW50ZXIgdG8gZGVzdGluYXRpb24gYnVmZmVyCiAgICogQHBhcmFtICBCdWZmZXJTaXplIFNpemUgb2YgdGhlIGJ1ZmZlciB0byByZWFkIGZyb20gbWVtb3J5CiAgICogQHJldHZhbCBIQUwgc3RhdHVzCiAgICovCi1IQUxfU3RhdHVzVHlwZURlZiBIQUxfU1JBTV9SZWFkXzE2YihTUkFNX0hhbmRsZVR5cGVEZWYgKmhzcmFtLCB1aW50MzJfdCAqcEFkZHJlc3MsIHVpbnQxNl90ICpwRHN0QnVmZmVyLCB1aW50MzJfdCBCdWZmZXJTaXplKQorSEFMX1N0YXR1c1R5cGVEZWYgSEFMX1NSQU1fUmVhZF8xNmIoU1JBTV9IYW5kbGVUeXBlRGVmICpoc3JhbSwgdWludDMyX3QgKnBBZGRyZXNzLCB1aW50MTZfdCAqcERzdEJ1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IEJ1ZmZlclNpemUpCiB7Ci0gIF9fSU8gdWludDE2X3QgKiBwc3JhbWFkZHJlc3MgPSAodWludDE2X3QgKilwQWRkcmVzczsKLSAgCi0gIC8qIFByb2Nlc3MgTG9ja2VkICovCi0gIF9fSEFMX0xPQ0soaHNyYW0pOwotICAKLSAgLyogVXBkYXRlIHRoZSBTUkFNIGNvbnRyb2xsZXIgc3RhdGUgKi8KLSAgaHNyYW0tPlN0YXRlID0gSEFMX1NSQU1fU1RBVEVfQlVTWTsgIAotICAKLSAgLyogUmVhZCBkYXRhIGZyb20gbWVtb3J5ICovCi0gIGZvcig7IEJ1ZmZlclNpemUgIT0gMDsgQnVmZmVyU2l6ZS0tKQotICB7Ci0gICAgKnBEc3RCdWZmZXIgPSAqKF9fSU8gdWludDE2X3QgKilwc3JhbWFkZHJlc3M7Ci0gICAgcERzdEJ1ZmZlcisrOwotICAgIHBzcmFtYWRkcmVzcysrOwotICB9Ci0gIAotICAvKiBVcGRhdGUgdGhlIFNSQU0gY29udHJvbGxlciBzdGF0ZSAqLwotICBoc3JhbS0+U3RhdGUgPSBIQUxfU1JBTV9TVEFURV9SRUFEWTsgICAgCisgIHVpbnQzMl90IHNpemU7CisgIF9fSU8gdWludDMyX3QgKnBzcmFtYWRkcmVzcyA9IHBBZGRyZXNzOworICB1aW50MTZfdCAqcGRlc3RidWZmID0gcERzdEJ1ZmZlcjsKKyAgdWludDhfdCBsaW1pdDsKKyAgSEFMX1NSQU1fU3RhdGVUeXBlRGVmIHN0YXRlID0gaHNyYW0tPlN0YXRlOwogCi0gIC8qIFByb2Nlc3MgdW5sb2NrZWQgKi8KLSAgX19IQUxfVU5MT0NLKGhzcmFtKTsgCi0gICAgCi0gIHJldHVybiBIQUxfT0s7ICAKKyAgLyogQ2hlY2sgdGhlIFNSQU0gY29udHJvbGxlciBzdGF0ZSAqLworICBpZiAoKHN0YXRlID09IEhBTF9TUkFNX1NUQVRFX1JFQURZKSB8fCAoc3RhdGUgPT0gSEFMX1NSQU1fU1RBVEVfUFJPVEVDVEVEKSkKKyAgeworICAgIC8qIFByb2Nlc3MgTG9ja2VkICovCisgICAgX19IQUxfTE9DSyhoc3JhbSk7CisKKyAgICAvKiBVcGRhdGUgdGhlIFNSQU0gY29udHJvbGxlciBzdGF0ZSAqLworICAgIGhzcmFtLT5TdGF0ZSA9IEhBTF9TUkFNX1NUQVRFX0JVU1k7CisKKyAgICAvKiBDaGVjayBpZiB0aGUgc2l6ZSBpcyBhIDMyLWJpdHMgbXVsdGlwbGUgKi8KKyAgICBsaW1pdCA9ICgoKEJ1ZmZlclNpemUgJSAyVSkgIT0gMFUpID8gMVUgOiAwVSk7CisKKyAgICAvKiBSZWFkIGRhdGEgZnJvbSBtZW1vcnkgKi8KKyAgICBmb3IgKHNpemUgPSBCdWZmZXJTaXplOyBzaXplICE9IGxpbWl0OyBzaXplIC09IDJVKQorICAgIHsKKyAgICAgICpwZGVzdGJ1ZmYgPSAodWludDE2X3QpKCgqcHNyYW1hZGRyZXNzKSAmIDB4MDAwMEZGRkZVKTsKKyAgICAgIHBkZXN0YnVmZisrOworICAgICAgKnBkZXN0YnVmZiA9ICh1aW50MTZfdCkoKCgqcHNyYW1hZGRyZXNzKSAmIDB4RkZGRjAwMDBVKSA+PiAxNlUpOworICAgICAgcGRlc3RidWZmKys7CisgICAgICBwc3JhbWFkZHJlc3MrKzsKKyAgICB9CisKKyAgICAvKiBSZWFkIGxhc3QgMTYtYml0cyBpZiBzaXplIGlzIG5vdCAzMi1iaXRzIG11bHRpcGxlICovCisgICAgaWYgKGxpbWl0ICE9IDBVKQorICAgIHsKKyAgICAgICpwZGVzdGJ1ZmYgPSAodWludDE2X3QpKCgqcHNyYW1hZGRyZXNzKSAmIDB4MDAwMEZGRkZVKTsKKyAgICB9CisKKyAgICAvKiBVcGRhdGUgdGhlIFNSQU0gY29udHJvbGxlciBzdGF0ZSAqLworICAgIGhzcmFtLT5TdGF0ZSA9IHN0YXRlOworCisgICAgLyogUHJvY2VzcyB1bmxvY2tlZCAqLworICAgIF9fSEFMX1VOTE9DSyhoc3JhbSk7CisgIH0KKyAgZWxzZQorICB7CisgICAgcmV0dXJuIEhBTF9FUlJPUjsKKyAgfQorCisgIHJldHVybiBIQUxfT0s7CiB9CiAKIC8qKgotICAqIEBicmllZiAgV3JpdGVzIDE2LWJpdCBidWZmZXIgdG8gU1JBTSBtZW1vcnkuIAorICAqIEBicmllZiAgV3JpdGVzIDE2LWJpdCBidWZmZXIgdG8gU1JBTSBtZW1vcnkuCiAgICogQHBhcmFtICBoc3JhbSBwb2ludGVyIHRvIGEgU1JBTV9IYW5kbGVUeXBlRGVmIHN0cnVjdHVyZSB0aGF0IGNvbnRhaW5zCiAgICogICAgICAgICAgICAgICAgdGhlIGNvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb24gZm9yIFNSQU0gbW9kdWxlLgogICAqIEBwYXJhbSAgcEFkZHJlc3MgUG9pbnRlciB0byB3cml0ZSBzdGFydCBhZGRyZXNzCi0gICogQHBhcmFtICBwU3JjQnVmZmVyIFBvaW50ZXIgdG8gc291cmNlIGJ1ZmZlciB0byB3cml0ZSAgCisgICogQHBhcmFtICBwU3JjQnVmZmVyIFBvaW50ZXIgdG8gc291cmNlIGJ1ZmZlciB0byB3cml0ZQogICAqIEBwYXJhbSAgQnVmZmVyU2l6ZSBTaXplIG9mIHRoZSBidWZmZXIgdG8gd3JpdGUgdG8gbWVtb3J5CiAgICogQHJldHZhbCBIQUwgc3RhdHVzCiAgICovCi1IQUxfU3RhdHVzVHlwZURlZiBIQUxfU1JBTV9Xcml0ZV8xNmIoU1JBTV9IYW5kbGVUeXBlRGVmICpoc3JhbSwgdWludDMyX3QgKnBBZGRyZXNzLCB1aW50MTZfdCAqcFNyY0J1ZmZlciwgdWludDMyX3QgQnVmZmVyU2l6ZSkKK0hBTF9TdGF0dXNUeXBlRGVmIEhBTF9TUkFNX1dyaXRlXzE2YihTUkFNX0hhbmRsZVR5cGVEZWYgKmhzcmFtLCB1aW50MzJfdCAqcEFkZHJlc3MsIHVpbnQxNl90ICpwU3JjQnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IEJ1ZmZlclNpemUpCiB7Ci0gIF9fSU8gdWludDE2X3QgKiBwc3JhbWFkZHJlc3MgPSAodWludDE2X3QgKilwQWRkcmVzczsgCi0gIAorICB1aW50MzJfdCBzaXplOworICBfX0lPIHVpbnQzMl90ICpwc3JhbWFkZHJlc3MgPSBwQWRkcmVzczsKKyAgdWludDE2X3QgKnBzcmNidWZmID0gcFNyY0J1ZmZlcjsKKyAgdWludDhfdCBsaW1pdDsKKwogICAvKiBDaGVjayB0aGUgU1JBTSBjb250cm9sbGVyIHN0YXRlICovCi0gIGlmKGhzcmFtLT5TdGF0ZSA9PSBIQUxfU1JBTV9TVEFURV9QUk9URUNURUQpCisgIGlmIChoc3JhbS0+U3RhdGUgPT0gSEFMX1NSQU1fU1RBVEVfUkVBRFkpCiAgIHsKLSAgICByZXR1cm4gIEhBTF9FUlJPUjsgCisgICAgLyogUHJvY2VzcyBMb2NrZWQgKi8KKyAgICBfX0hBTF9MT0NLKGhzcmFtKTsKKworICAgIC8qIFVwZGF0ZSB0aGUgU1JBTSBjb250cm9sbGVyIHN0YXRlICovCisgICAgaHNyYW0tPlN0YXRlID0gSEFMX1NSQU1fU1RBVEVfQlVTWTsKKworICAgIC8qIENoZWNrIGlmIHRoZSBzaXplIGlzIGEgMzItYml0cyBtdWx0aXBsZSAqLworICAgIGxpbWl0ID0gKCgoQnVmZmVyU2l6ZSAlIDJVKSAhPSAwVSkgPyAxVSA6IDBVKTsKKworICAgIC8qIFdyaXRlIGRhdGEgdG8gbWVtb3J5ICovCisgICAgZm9yIChzaXplID0gQnVmZmVyU2l6ZTsgc2l6ZSAhPSBsaW1pdDsgc2l6ZSAtPSAyVSkKKyAgICB7CisgICAgICAqcHNyYW1hZGRyZXNzID0gKHVpbnQzMl90KSgqcHNyY2J1ZmYpOworICAgICAgcHNyY2J1ZmYrKzsKKyAgICAgICpwc3JhbWFkZHJlc3MgfD0gKCh1aW50MzJfdCkoKnBzcmNidWZmKSA8PCAxNlUpOworICAgICAgcHNyY2J1ZmYrKzsKKyAgICAgIHBzcmFtYWRkcmVzcysrOworICAgIH0KKworICAgIC8qIFdyaXRlIGxhc3QgMTYtYml0cyBpZiBzaXplIGlzIG5vdCAzMi1iaXRzIG11bHRpcGxlICovCisgICAgaWYgKGxpbWl0ICE9IDBVKQorICAgIHsKKyAgICAgICpwc3JhbWFkZHJlc3MgPSAoKHVpbnQzMl90KSgqcHNyY2J1ZmYpICYgMHgwMDAwRkZGRlUpIHwgKCgqcHNyYW1hZGRyZXNzKSAmIDB4RkZGRjAwMDBVKTsKKyAgICB9CisKKyAgICAvKiBVcGRhdGUgdGhlIFNSQU0gY29udHJvbGxlciBzdGF0ZSAqLworICAgIGhzcmFtLT5TdGF0ZSA9IEhBTF9TUkFNX1NUQVRFX1JFQURZOworCisgICAgLyogUHJvY2VzcyB1bmxvY2tlZCAqLworICAgIF9fSEFMX1VOTE9DSyhoc3JhbSk7CiAgIH0KLSAgCi0gIC8qIFByb2Nlc3MgTG9ja2VkICovCi0gIF9fSEFMX0xPQ0soaHNyYW0pOwotICAKLSAgLyogVXBkYXRlIHRoZSBTUkFNIGNvbnRyb2xsZXIgc3RhdGUgKi8KLSAgaHNyYW0tPlN0YXRlID0gSEFMX1NSQU1fU1RBVEVfQlVTWTsgCi0KLSAgLyogV3JpdGUgZGF0YSB0byBtZW1vcnkgKi8KLSAgZm9yKDsgQnVmZmVyU2l6ZSAhPSAwOyBCdWZmZXJTaXplLS0pCisgIGVsc2UKICAgewotICAgICooX19JTyB1aW50MTZfdCAqKXBzcmFtYWRkcmVzcyA9ICpwU3JjQnVmZmVyOyAKLSAgICBwU3JjQnVmZmVyKys7Ci0gICAgcHNyYW1hZGRyZXNzKys7ICAgIAotICB9ICAgIAorICAgIHJldHVybiBIQUxfRVJST1I7CisgIH0KIAotICAvKiBVcGRhdGUgdGhlIFNSQU0gY29udHJvbGxlciBzdGF0ZSAqLwotICBoc3JhbS0+U3RhdGUgPSBIQUxfU1JBTV9TVEFURV9SRUFEWTsgCi0gIAotICAvKiBQcm9jZXNzIHVubG9ja2VkICovCi0gIF9fSEFMX1VOTE9DSyhoc3JhbSk7Ci0gICAgCi0gIHJldHVybiBIQUxfT0s7ICAKKyAgcmV0dXJuIEhBTF9PSzsKIH0KIAogLyoqCi0gICogQGJyaWVmICBSZWFkcyAzMi1iaXQgYnVmZmVyIGZyb20gU1JBTSBtZW1vcnkuIAorICAqIEBicmllZiAgUmVhZHMgMzItYml0IGJ1ZmZlciBmcm9tIFNSQU0gbWVtb3J5LgogICAqIEBwYXJhbSAgaHNyYW0gcG9pbnRlciB0byBhIFNSQU1fSGFuZGxlVHlwZURlZiBzdHJ1Y3R1cmUgdGhhdCBjb250YWlucwogICAqICAgICAgICAgICAgICAgIHRoZSBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uIGZvciBTUkFNIG1vZHVsZS4KICAgKiBAcGFyYW0gIHBBZGRyZXNzIFBvaW50ZXIgdG8gcmVhZCBzdGFydCBhZGRyZXNzCi0gICogQHBhcmFtICBwRHN0QnVmZmVyIFBvaW50ZXIgdG8gZGVzdGluYXRpb24gYnVmZmVyICAKKyAgKiBAcGFyYW0gIHBEc3RCdWZmZXIgUG9pbnRlciB0byBkZXN0aW5hdGlvbiBidWZmZXIKICAgKiBAcGFyYW0gIEJ1ZmZlclNpemUgU2l6ZSBvZiB0aGUgYnVmZmVyIHRvIHJlYWQgZnJvbSBtZW1vcnkKICAgKiBAcmV0dmFsIEhBTCBzdGF0dXMKICAgKi8KLUhBTF9TdGF0dXNUeXBlRGVmIEhBTF9TUkFNX1JlYWRfMzJiKFNSQU1fSGFuZGxlVHlwZURlZiAqaHNyYW0sIHVpbnQzMl90ICpwQWRkcmVzcywgdWludDMyX3QgKnBEc3RCdWZmZXIsIHVpbnQzMl90IEJ1ZmZlclNpemUpCitIQUxfU3RhdHVzVHlwZURlZiBIQUxfU1JBTV9SZWFkXzMyYihTUkFNX0hhbmRsZVR5cGVEZWYgKmhzcmFtLCB1aW50MzJfdCAqcEFkZHJlc3MsIHVpbnQzMl90ICpwRHN0QnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgQnVmZmVyU2l6ZSkKIHsKLSAgLyogUHJvY2VzcyBMb2NrZWQgKi8KLSAgX19IQUxfTE9DSyhoc3JhbSk7Ci0gIAotICAvKiBVcGRhdGUgdGhlIFNSQU0gY29udHJvbGxlciBzdGF0ZSAqLwotICBoc3JhbS0+U3RhdGUgPSBIQUxfU1JBTV9TVEFURV9CVVNZOyAgCi0gIAotICAvKiBSZWFkIGRhdGEgZnJvbSBtZW1vcnkgKi8KLSAgZm9yKDsgQnVmZmVyU2l6ZSAhPSAwOyBCdWZmZXJTaXplLS0pCi0gIHsKLSAgICAqcERzdEJ1ZmZlciA9ICooX19JTyB1aW50MzJfdCAqKXBBZGRyZXNzOwotICAgIHBEc3RCdWZmZXIrKzsKLSAgICBwQWRkcmVzcysrOwotICB9Ci0gIAotICAvKiBVcGRhdGUgdGhlIFNSQU0gY29udHJvbGxlciBzdGF0ZSAqLwotICBoc3JhbS0+U3RhdGUgPSBIQUxfU1JBTV9TVEFURV9SRUFEWTsgICAgCisgIHVpbnQzMl90IHNpemU7CisgIF9fSU8gdWludDMyX3QgKnBzcmFtYWRkcmVzcyA9IHBBZGRyZXNzOworICB1aW50MzJfdCAqcGRlc3RidWZmID0gcERzdEJ1ZmZlcjsKKyAgSEFMX1NSQU1fU3RhdGVUeXBlRGVmIHN0YXRlID0gaHNyYW0tPlN0YXRlOwogCi0gIC8qIFByb2Nlc3MgdW5sb2NrZWQgKi8KLSAgX19IQUxfVU5MT0NLKGhzcmFtKTsgCi0gICAgCi0gIHJldHVybiBIQUxfT0s7ICAKKyAgLyogQ2hlY2sgdGhlIFNSQU0gY29udHJvbGxlciBzdGF0ZSAqLworICBpZiAoKHN0YXRlID09IEhBTF9TUkFNX1NUQVRFX1JFQURZKSB8fCAoc3RhdGUgPT0gSEFMX1NSQU1fU1RBVEVfUFJPVEVDVEVEKSkKKyAgeworICAgIC8qIFByb2Nlc3MgTG9ja2VkICovCisgICAgX19IQUxfTE9DSyhoc3JhbSk7CisKKyAgICAvKiBVcGRhdGUgdGhlIFNSQU0gY29udHJvbGxlciBzdGF0ZSAqLworICAgIGhzcmFtLT5TdGF0ZSA9IEhBTF9TUkFNX1NUQVRFX0JVU1k7CisKKyAgICAvKiBSZWFkIGRhdGEgZnJvbSBtZW1vcnkgKi8KKyAgICBmb3IgKHNpemUgPSBCdWZmZXJTaXplOyBzaXplICE9IDBVOyBzaXplLS0pCisgICAgeworICAgICAgKnBkZXN0YnVmZiA9ICpwc3JhbWFkZHJlc3M7CisgICAgICBwZGVzdGJ1ZmYrKzsKKyAgICAgIHBzcmFtYWRkcmVzcysrOworICAgIH0KKworICAgIC8qIFVwZGF0ZSB0aGUgU1JBTSBjb250cm9sbGVyIHN0YXRlICovCisgICAgaHNyYW0tPlN0YXRlID0gc3RhdGU7CisKKyAgICAvKiBQcm9jZXNzIHVubG9ja2VkICovCisgICAgX19IQUxfVU5MT0NLKGhzcmFtKTsKKyAgfQorICBlbHNlCisgIHsKKyAgICByZXR1cm4gSEFMX0VSUk9SOworICB9CisKKyAgcmV0dXJuIEhBTF9PSzsKIH0KIAogLyoqCi0gICogQGJyaWVmICBXcml0ZXMgMzItYml0IGJ1ZmZlciB0byBTUkFNIG1lbW9yeS4gCisgICogQGJyaWVmICBXcml0ZXMgMzItYml0IGJ1ZmZlciB0byBTUkFNIG1lbW9yeS4KICAgKiBAcGFyYW0gIGhzcmFtIHBvaW50ZXIgdG8gYSBTUkFNX0hhbmRsZVR5cGVEZWYgc3RydWN0dXJlIHRoYXQgY29udGFpbnMKICAgKiAgICAgICAgICAgICAgICB0aGUgY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbiBmb3IgU1JBTSBtb2R1bGUuCiAgICogQHBhcmFtICBwQWRkcmVzcyBQb2ludGVyIHRvIHdyaXRlIHN0YXJ0IGFkZHJlc3MKLSAgKiBAcGFyYW0gIHBTcmNCdWZmZXIgUG9pbnRlciB0byBzb3VyY2UgYnVmZmVyIHRvIHdyaXRlICAKKyAgKiBAcGFyYW0gIHBTcmNCdWZmZXIgUG9pbnRlciB0byBzb3VyY2UgYnVmZmVyIHRvIHdyaXRlCiAgICogQHBhcmFtICBCdWZmZXJTaXplIFNpemUgb2YgdGhlIGJ1ZmZlciB0byB3cml0ZSB0byBtZW1vcnkKICAgKiBAcmV0dmFsIEhBTCBzdGF0dXMKICAgKi8KLUhBTF9TdGF0dXNUeXBlRGVmIEhBTF9TUkFNX1dyaXRlXzMyYihTUkFNX0hhbmRsZVR5cGVEZWYgKmhzcmFtLCB1aW50MzJfdCAqcEFkZHJlc3MsIHVpbnQzMl90ICpwU3JjQnVmZmVyLCB1aW50MzJfdCBCdWZmZXJTaXplKQorSEFMX1N0YXR1c1R5cGVEZWYgSEFMX1NSQU1fV3JpdGVfMzJiKFNSQU1fSGFuZGxlVHlwZURlZiAqaHNyYW0sIHVpbnQzMl90ICpwQWRkcmVzcywgdWludDMyX3QgKnBTcmNCdWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgQnVmZmVyU2l6ZSkKIHsKKyAgdWludDMyX3Qgc2l6ZTsKKyAgX19JTyB1aW50MzJfdCAqcHNyYW1hZGRyZXNzID0gcEFkZHJlc3M7CisgIHVpbnQzMl90ICpwc3JjYnVmZiA9IHBTcmNCdWZmZXI7CisKICAgLyogQ2hlY2sgdGhlIFNSQU0gY29udHJvbGxlciBzdGF0ZSAqLwotICBpZihoc3JhbS0+U3RhdGUgPT0gSEFMX1NSQU1fU1RBVEVfUFJPVEVDVEVEKQorICBpZiAoaHNyYW0tPlN0YXRlID09IEhBTF9TUkFNX1NUQVRFX1JFQURZKQogICB7Ci0gICAgcmV0dXJuICBIQUxfRVJST1I7IAorICAgIC8qIFByb2Nlc3MgTG9ja2VkICovCisgICAgX19IQUxfTE9DSyhoc3JhbSk7CisKKyAgICAvKiBVcGRhdGUgdGhlIFNSQU0gY29udHJvbGxlciBzdGF0ZSAqLworICAgIGhzcmFtLT5TdGF0ZSA9IEhBTF9TUkFNX1NUQVRFX0JVU1k7CisKKyAgICAvKiBXcml0ZSBkYXRhIHRvIG1lbW9yeSAqLworICAgIGZvciAoc2l6ZSA9IEJ1ZmZlclNpemU7IHNpemUgIT0gMFU7IHNpemUtLSkKKyAgICB7CisgICAgICAqcHNyYW1hZGRyZXNzID0gKnBzcmNidWZmOworICAgICAgcHNyY2J1ZmYrKzsKKyAgICAgIHBzcmFtYWRkcmVzcysrOworICAgIH0KKworICAgIC8qIFVwZGF0ZSB0aGUgU1JBTSBjb250cm9sbGVyIHN0YXRlICovCisgICAgaHNyYW0tPlN0YXRlID0gSEFMX1NSQU1fU1RBVEVfUkVBRFk7CisKKyAgICAvKiBQcm9jZXNzIHVubG9ja2VkICovCisgICAgX19IQUxfVU5MT0NLKGhzcmFtKTsKICAgfQotICAKLSAgLyogUHJvY2VzcyBMb2NrZWQgKi8KLSAgX19IQUxfTE9DSyhoc3JhbSk7Ci0gIAotICAvKiBVcGRhdGUgdGhlIFNSQU0gY29udHJvbGxlciBzdGF0ZSAqLwotICBoc3JhbS0+U3RhdGUgPSBIQUxfU1JBTV9TVEFURV9CVVNZOyAKLQotICAvKiBXcml0ZSBkYXRhIHRvIG1lbW9yeSAqLwotICBmb3IoOyBCdWZmZXJTaXplICE9IDA7IEJ1ZmZlclNpemUtLSkKKyAgZWxzZQogICB7Ci0gICAgKihfX0lPIHVpbnQzMl90ICopcEFkZHJlc3MgPSAqcFNyY0J1ZmZlcjsgCi0gICAgcFNyY0J1ZmZlcisrOwotICAgIHBBZGRyZXNzKys7ICAgIAotICB9ICAgIAorICAgIHJldHVybiBIQUxfRVJST1I7CisgIH0KIAotICAvKiBVcGRhdGUgdGhlIFNSQU0gY29udHJvbGxlciBzdGF0ZSAqLwotICBoc3JhbS0+U3RhdGUgPSBIQUxfU1JBTV9TVEFURV9SRUFEWTsgCi0gIAotICAvKiBQcm9jZXNzIHVubG9ja2VkICovCi0gIF9fSEFMX1VOTE9DSyhoc3JhbSk7Ci0gICAgCi0gIHJldHVybiBIQUxfT0s7ICAgCisgIHJldHVybiBIQUxfT0s7CiB9CiAKIC8qKgpAQCAtNTUwLDMyICs2NDIsNDggQEAKICAgKiBAcGFyYW0gIGhzcmFtIHBvaW50ZXIgdG8gYSBTUkFNX0hhbmRsZVR5cGVEZWYgc3RydWN0dXJlIHRoYXQgY29udGFpbnMKICAgKiAgICAgICAgICAgICAgICB0aGUgY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbiBmb3IgU1JBTSBtb2R1bGUuCiAgICogQHBhcmFtICBwQWRkcmVzcyBQb2ludGVyIHRvIHJlYWQgc3RhcnQgYWRkcmVzcwotICAqIEBwYXJhbSAgcERzdEJ1ZmZlciBQb2ludGVyIHRvIGRlc3RpbmF0aW9uIGJ1ZmZlciAgCisgICogQHBhcmFtICBwRHN0QnVmZmVyIFBvaW50ZXIgdG8gZGVzdGluYXRpb24gYnVmZmVyCiAgICogQHBhcmFtICBCdWZmZXJTaXplIFNpemUgb2YgdGhlIGJ1ZmZlciB0byByZWFkIGZyb20gbWVtb3J5CiAgICogQHJldHZhbCBIQUwgc3RhdHVzCiAgICovCi1IQUxfU3RhdHVzVHlwZURlZiBIQUxfU1JBTV9SZWFkX0RNQShTUkFNX0hhbmRsZVR5cGVEZWYgKmhzcmFtLCB1aW50MzJfdCAqcEFkZHJlc3MsIHVpbnQzMl90ICpwRHN0QnVmZmVyLCB1aW50MzJfdCBCdWZmZXJTaXplKQorSEFMX1N0YXR1c1R5cGVEZWYgSEFMX1NSQU1fUmVhZF9ETUEoU1JBTV9IYW5kbGVUeXBlRGVmICpoc3JhbSwgdWludDMyX3QgKnBBZGRyZXNzLCB1aW50MzJfdCAqcERzdEJ1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IEJ1ZmZlclNpemUpCiB7Ci0gIC8qIFByb2Nlc3MgTG9ja2VkICovCi0gIF9fSEFMX0xPQ0soaHNyYW0pOyAgCi0gIAotICAvKiBVcGRhdGUgdGhlIFNSQU0gY29udHJvbGxlciBzdGF0ZSAqLwotICBoc3JhbS0+U3RhdGUgPSBIQUxfU1JBTV9TVEFURV9CVVNZOyAgIAotICAKLSAgLyogQ29uZmlndXJlIERNQSB1c2VyIGNhbGxiYWNrcyAqLwotICBoc3JhbS0+aGRtYS0+WGZlckNwbHRDYWxsYmFjayAgPSBIQUxfU1JBTV9ETUFfWGZlckNwbHRDYWxsYmFjazsKLSAgaHNyYW0tPmhkbWEtPlhmZXJFcnJvckNhbGxiYWNrID0gSEFMX1NSQU1fRE1BX1hmZXJFcnJvckNhbGxiYWNrOworICBIQUxfU3RhdHVzVHlwZURlZiBzdGF0dXM7CisgIEhBTF9TUkFNX1N0YXRlVHlwZURlZiBzdGF0ZSA9IGhzcmFtLT5TdGF0ZTsKIAotICAvKiBFbmFibGUgdGhlIERNQSBTdHJlYW0gKi8KLSAgSEFMX0RNQV9TdGFydF9JVChoc3JhbS0+aGRtYSwgKHVpbnQzMl90KXBBZGRyZXNzLCAodWludDMyX3QpcERzdEJ1ZmZlciwgKHVpbnQzMl90KUJ1ZmZlclNpemUpOwotICAKLSAgLyogVXBkYXRlIHRoZSBTUkFNIGNvbnRyb2xsZXIgc3RhdGUgKi8KLSAgaHNyYW0tPlN0YXRlID0gSEFMX1NSQU1fU1RBVEVfUkVBRFk7IAotICAKLSAgLyogUHJvY2VzcyB1bmxvY2tlZCAqLwotICBfX0hBTF9VTkxPQ0soaHNyYW0pOyAgCi0gIAotICByZXR1cm4gSEFMX09LOyAKKyAgLyogQ2hlY2sgdGhlIFNSQU0gY29udHJvbGxlciBzdGF0ZSAqLworICBpZiAoKHN0YXRlID09IEhBTF9TUkFNX1NUQVRFX1JFQURZKSB8fCAoc3RhdGUgPT0gSEFMX1NSQU1fU1RBVEVfUFJPVEVDVEVEKSkKKyAgeworICAgIC8qIFByb2Nlc3MgTG9ja2VkICovCisgICAgX19IQUxfTE9DSyhoc3JhbSk7CisKKyAgICAvKiBVcGRhdGUgdGhlIFNSQU0gY29udHJvbGxlciBzdGF0ZSAqLworICAgIGhzcmFtLT5TdGF0ZSA9IEhBTF9TUkFNX1NUQVRFX0JVU1k7CisKKyAgICAvKiBDb25maWd1cmUgRE1BIHVzZXIgY2FsbGJhY2tzICovCisgICAgaWYgKHN0YXRlID09IEhBTF9TUkFNX1NUQVRFX1JFQURZKQorICAgIHsKKyAgICAgIGhzcmFtLT5oZG1hLT5YZmVyQ3BsdENhbGxiYWNrID0gU1JBTV9ETUFDcGx0OworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgaHNyYW0tPmhkbWEtPlhmZXJDcGx0Q2FsbGJhY2sgPSBTUkFNX0RNQUNwbHRQcm90OworICAgIH0KKyAgICBoc3JhbS0+aGRtYS0+WGZlckVycm9yQ2FsbGJhY2sgPSBTUkFNX0RNQUVycm9yOworCisgICAgLyogRW5hYmxlIHRoZSBETUEgU3RyZWFtICovCisgICAgc3RhdHVzID0gSEFMX0RNQV9TdGFydF9JVChoc3JhbS0+aGRtYSwgKHVpbnQzMl90KXBBZGRyZXNzLCAodWludDMyX3QpcERzdEJ1ZmZlciwgKHVpbnQzMl90KUJ1ZmZlclNpemUpOworCisgICAgLyogUHJvY2VzcyB1bmxvY2tlZCAqLworICAgIF9fSEFMX1VOTE9DSyhoc3JhbSk7CisgIH0KKyAgZWxzZQorICB7CisgICAgc3RhdHVzID0gSEFMX0VSUk9SOworICB9CisKKyAgcmV0dXJuIHN0YXR1czsKIH0KIAogLyoqCkBAIC01ODMsMzggKzY5MSw0MCBAQAogICAqIEBwYXJhbSAgaHNyYW0gcG9pbnRlciB0byBhIFNSQU1fSGFuZGxlVHlwZURlZiBzdHJ1Y3R1cmUgdGhhdCBjb250YWlucwogICAqICAgICAgICAgICAgICAgIHRoZSBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uIGZvciBTUkFNIG1vZHVsZS4KICAgKiBAcGFyYW0gIHBBZGRyZXNzIFBvaW50ZXIgdG8gd3JpdGUgc3RhcnQgYWRkcmVzcwotICAqIEBwYXJhbSAgcFNyY0J1ZmZlciBQb2ludGVyIHRvIHNvdXJjZSBidWZmZXIgdG8gd3JpdGUgIAorICAqIEBwYXJhbSAgcFNyY0J1ZmZlciBQb2ludGVyIHRvIHNvdXJjZSBidWZmZXIgdG8gd3JpdGUKICAgKiBAcGFyYW0gIEJ1ZmZlclNpemUgU2l6ZSBvZiB0aGUgYnVmZmVyIHRvIHdyaXRlIHRvIG1lbW9yeQogICAqIEByZXR2YWwgSEFMIHN0YXR1cwogICAqLwotSEFMX1N0YXR1c1R5cGVEZWYgSEFMX1NSQU1fV3JpdGVfRE1BKFNSQU1fSGFuZGxlVHlwZURlZiAqaHNyYW0sIHVpbnQzMl90ICpwQWRkcmVzcywgdWludDMyX3QgKnBTcmNCdWZmZXIsIHVpbnQzMl90IEJ1ZmZlclNpemUpCitIQUxfU3RhdHVzVHlwZURlZiBIQUxfU1JBTV9Xcml0ZV9ETUEoU1JBTV9IYW5kbGVUeXBlRGVmICpoc3JhbSwgdWludDMyX3QgKnBBZGRyZXNzLCB1aW50MzJfdCAqcFNyY0J1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBCdWZmZXJTaXplKQogewotICAvKiBDaGVjayB0aGUgU1JBTSBjb250cm9sbGVyIHN0YXRlICovCi0gIGlmKGhzcmFtLT5TdGF0ZSA9PSBIQUxfU1JBTV9TVEFURV9QUk9URUNURUQpCi0gIHsKLSAgICByZXR1cm4gIEhBTF9FUlJPUjsgCi0gIH0KLSAgCi0gIC8qIFByb2Nlc3MgTG9ja2VkICovCi0gIF9fSEFMX0xPQ0soaHNyYW0pOwotICAKLSAgLyogVXBkYXRlIHRoZSBTUkFNIGNvbnRyb2xsZXIgc3RhdGUgKi8KLSAgaHNyYW0tPlN0YXRlID0gSEFMX1NSQU1fU1RBVEVfQlVTWTsgCi0gIAotICAvKiBDb25maWd1cmUgRE1BIHVzZXIgY2FsbGJhY2tzICovCi0gIGhzcmFtLT5oZG1hLT5YZmVyQ3BsdENhbGxiYWNrICA9IEhBTF9TUkFNX0RNQV9YZmVyQ3BsdENhbGxiYWNrOwotICBoc3JhbS0+aGRtYS0+WGZlckVycm9yQ2FsbGJhY2sgPSBIQUxfU1JBTV9ETUFfWGZlckVycm9yQ2FsbGJhY2s7CisgIEhBTF9TdGF0dXNUeXBlRGVmIHN0YXR1czsKIAotICAvKiBFbmFibGUgdGhlIERNQSBTdHJlYW0gKi8KLSAgSEFMX0RNQV9TdGFydF9JVChoc3JhbS0+aGRtYSwgKHVpbnQzMl90KXBTcmNCdWZmZXIsICh1aW50MzJfdClwQWRkcmVzcywgKHVpbnQzMl90KUJ1ZmZlclNpemUpOwotICAKLSAgLyogVXBkYXRlIHRoZSBTUkFNIGNvbnRyb2xsZXIgc3RhdGUgKi8KLSAgaHNyYW0tPlN0YXRlID0gSEFMX1NSQU1fU1RBVEVfUkVBRFk7ICAKLSAgCi0gIC8qIFByb2Nlc3MgdW5sb2NrZWQgKi8KLSAgX19IQUxfVU5MT0NLKGhzcmFtKTsgIAotICAKLSAgcmV0dXJuIEhBTF9PSzsKKyAgLyogQ2hlY2sgdGhlIFNSQU0gY29udHJvbGxlciBzdGF0ZSAqLworICBpZiAoaHNyYW0tPlN0YXRlID09IEhBTF9TUkFNX1NUQVRFX1JFQURZKQorICB7CisgICAgLyogUHJvY2VzcyBMb2NrZWQgKi8KKyAgICBfX0hBTF9MT0NLKGhzcmFtKTsKKworICAgIC8qIFVwZGF0ZSB0aGUgU1JBTSBjb250cm9sbGVyIHN0YXRlICovCisgICAgaHNyYW0tPlN0YXRlID0gSEFMX1NSQU1fU1RBVEVfQlVTWTsKKworICAgIC8qIENvbmZpZ3VyZSBETUEgdXNlciBjYWxsYmFja3MgKi8KKyAgICBoc3JhbS0+aGRtYS0+WGZlckNwbHRDYWxsYmFjayA9IFNSQU1fRE1BQ3BsdDsKKyAgICBoc3JhbS0+aGRtYS0+WGZlckVycm9yQ2FsbGJhY2sgPSBTUkFNX0RNQUVycm9yOworCisgICAgLyogRW5hYmxlIHRoZSBETUEgU3RyZWFtICovCisgICAgc3RhdHVzID0gSEFMX0RNQV9TdGFydF9JVChoc3JhbS0+aGRtYSwgKHVpbnQzMl90KXBTcmNCdWZmZXIsICh1aW50MzJfdClwQWRkcmVzcywgKHVpbnQzMl90KUJ1ZmZlclNpemUpOworCisgICAgLyogUHJvY2VzcyB1bmxvY2tlZCAqLworICAgIF9fSEFMX1VOTE9DSyhoc3JhbSk7CisgIH0KKyAgZWxzZQorICB7CisgICAgc3RhdHVzID0gSEFMX0VSUk9SOworICB9CisKKyAgcmV0dXJuIHN0YXR1czsKIH0KIAogI2lmIChVU0VfSEFMX1NSQU1fUkVHSVNURVJfQ0FMTEJBQ0tTID09IDEpCkBAIC02MjksMTIgKzczOSwxMyBAQAogICAqIEBwYXJhbSBwQ2FsbGJhY2sgOiBwb2ludGVyIHRvIHRoZSBDYWxsYmFjayBmdW5jdGlvbgogICAqIEByZXR2YWwgc3RhdHVzCiAgICovCi1IQUxfU3RhdHVzVHlwZURlZiBIQUxfU1JBTV9SZWdpc3RlckNhbGxiYWNrIChTUkFNX0hhbmRsZVR5cGVEZWYgKmhzcmFtLCBIQUxfU1JBTV9DYWxsYmFja0lEVHlwZURlZiBDYWxsYmFja0lkLCBwU1JBTV9DYWxsYmFja1R5cGVEZWYgcENhbGxiYWNrKQorSEFMX1N0YXR1c1R5cGVEZWYgSEFMX1NSQU1fUmVnaXN0ZXJDYWxsYmFjayhTUkFNX0hhbmRsZVR5cGVEZWYgKmhzcmFtLCBIQUxfU1JBTV9DYWxsYmFja0lEVHlwZURlZiBDYWxsYmFja0lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwU1JBTV9DYWxsYmFja1R5cGVEZWYgcENhbGxiYWNrKQogewogICBIQUxfU3RhdHVzVHlwZURlZiBzdGF0dXMgPSBIQUxfT0s7CiAgIEhBTF9TUkFNX1N0YXRlVHlwZURlZiBzdGF0ZTsKIAotICBpZihwQ2FsbGJhY2sgPT0gTlVMTCkKKyAgaWYgKHBDYWxsYmFjayA9PSBOVUxMKQogICB7CiAgICAgcmV0dXJuIEhBTF9FUlJPUjsKICAgfQpAQCAtNjQzLDIwICs3NTQsMjAgQEAKICAgX19IQUxfTE9DSyhoc3JhbSk7CiAKICAgc3RhdGUgPSBoc3JhbS0+U3RhdGU7Ci0gIGlmKChzdGF0ZSA9PSBIQUxfU1JBTV9TVEFURV9SRUFEWSkgfHwgKHN0YXRlID09IEhBTF9TUkFNX1NUQVRFX1JFU0VUKSB8fCAoc3RhdGUgPT0gSEFMX1NSQU1fU1RBVEVfUFJPVEVDVEVEKSkKKyAgaWYgKChzdGF0ZSA9PSBIQUxfU1JBTV9TVEFURV9SRUFEWSkgfHwgKHN0YXRlID09IEhBTF9TUkFNX1NUQVRFX1JFU0VUKSB8fCAoc3RhdGUgPT0gSEFMX1NSQU1fU1RBVEVfUFJPVEVDVEVEKSkKICAgewogICAgIHN3aXRjaCAoQ2FsbGJhY2tJZCkKICAgICB7Ci0gICAgY2FzZSBIQUxfU1JBTV9NU1BfSU5JVF9DQl9JRCA6Ci0gICAgICBoc3JhbS0+TXNwSW5pdENhbGxiYWNrID0gcENhbGxiYWNrOwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSBIQUxfU1JBTV9NU1BfREVJTklUX0NCX0lEIDoKLSAgICAgIGhzcmFtLT5Nc3BEZUluaXRDYWxsYmFjayA9IHBDYWxsYmFjazsKLSAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQgOgotICAgICAgLyogdXBkYXRlIHJldHVybiBzdGF0dXMgKi8KLSAgICAgIHN0YXR1cyA9ICBIQUxfRVJST1I7Ci0gICAgICBicmVhazsKKyAgICAgIGNhc2UgSEFMX1NSQU1fTVNQX0lOSVRfQ0JfSUQgOgorICAgICAgICBoc3JhbS0+TXNwSW5pdENhbGxiYWNrID0gcENhbGxiYWNrOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgSEFMX1NSQU1fTVNQX0RFSU5JVF9DQl9JRCA6CisgICAgICAgIGhzcmFtLT5Nc3BEZUluaXRDYWxsYmFjayA9IHBDYWxsYmFjazsKKyAgICAgICAgYnJlYWs7CisgICAgICBkZWZhdWx0IDoKKyAgICAgICAgLyogdXBkYXRlIHJldHVybiBzdGF0dXMgKi8KKyAgICAgICAgc3RhdHVzID0gIEhBTF9FUlJPUjsKKyAgICAgICAgYnJlYWs7CiAgICAgfQogICB9CiAgIGVsc2UKQEAgLTY4Miw3ICs3OTMsNyBAQAogICAqICAgICAgICAgIEBhcmcgQHJlZiBIQUxfU1JBTV9ETUFfWEZFUl9FUlJfQ0JfSUQgICBTUkFNIERNQSBYZmVyIEVycm9yIGNhbGxiYWNrIElECiAgICogQHJldHZhbCBzdGF0dXMKICAgKi8KLUhBTF9TdGF0dXNUeXBlRGVmIEhBTF9TUkFNX1VuUmVnaXN0ZXJDYWxsYmFjayAoU1JBTV9IYW5kbGVUeXBlRGVmICpoc3JhbSwgSEFMX1NSQU1fQ2FsbGJhY2tJRFR5cGVEZWYgQ2FsbGJhY2tJZCkKK0hBTF9TdGF0dXNUeXBlRGVmIEhBTF9TUkFNX1VuUmVnaXN0ZXJDYWxsYmFjayhTUkFNX0hhbmRsZVR5cGVEZWYgKmhzcmFtLCBIQUxfU1JBTV9DYWxsYmFja0lEVHlwZURlZiBDYWxsYmFja0lkKQogewogICBIQUxfU3RhdHVzVHlwZURlZiBzdGF0dXMgPSBIQUxfT0s7CiAgIEhBTF9TUkFNX1N0YXRlVHlwZURlZiBzdGF0ZTsKQEAgLTY5MSw0MiArODAyLDQyIEBACiAgIF9fSEFMX0xPQ0soaHNyYW0pOwogCiAgIHN0YXRlID0gaHNyYW0tPlN0YXRlOwotICBpZigoc3RhdGUgPT0gSEFMX1NSQU1fU1RBVEVfUkVBRFkpIHx8IChzdGF0ZSA9PSBIQUxfU1JBTV9TVEFURV9QUk9URUNURUQpKQorICBpZiAoKHN0YXRlID09IEhBTF9TUkFNX1NUQVRFX1JFQURZKSB8fCAoc3RhdGUgPT0gSEFMX1NSQU1fU1RBVEVfUFJPVEVDVEVEKSkKICAgewogICAgIHN3aXRjaCAoQ2FsbGJhY2tJZCkKICAgICB7Ci0gICAgY2FzZSBIQUxfU1JBTV9NU1BfSU5JVF9DQl9JRCA6Ci0gICAgICBoc3JhbS0+TXNwSW5pdENhbGxiYWNrID0gSEFMX1NSQU1fTXNwSW5pdDsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgSEFMX1NSQU1fTVNQX0RFSU5JVF9DQl9JRCA6Ci0gICAgICBoc3JhbS0+TXNwRGVJbml0Q2FsbGJhY2sgPSBIQUxfU1JBTV9Nc3BEZUluaXQ7Ci0gICAgICBicmVhazsKLSAgICBjYXNlIEhBTF9TUkFNX0RNQV9YRkVSX0NQTFRfQ0JfSUQgOgotICAgICAgaHNyYW0tPkRtYVhmZXJDcGx0Q2FsbGJhY2sgPSBIQUxfU1JBTV9ETUFfWGZlckNwbHRDYWxsYmFjazsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgSEFMX1NSQU1fRE1BX1hGRVJfRVJSX0NCX0lEIDoKLSAgICAgIGhzcmFtLT5EbWFYZmVyRXJyb3JDYWxsYmFjayA9IEhBTF9TUkFNX0RNQV9YZmVyRXJyb3JDYWxsYmFjazsKLSAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQgOgotICAgICAgLyogdXBkYXRlIHJldHVybiBzdGF0dXMgKi8KLSAgICAgIHN0YXR1cyA9ICBIQUxfRVJST1I7Ci0gICAgICBicmVhazsKKyAgICAgIGNhc2UgSEFMX1NSQU1fTVNQX0lOSVRfQ0JfSUQgOgorICAgICAgICBoc3JhbS0+TXNwSW5pdENhbGxiYWNrID0gSEFMX1NSQU1fTXNwSW5pdDsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEhBTF9TUkFNX01TUF9ERUlOSVRfQ0JfSUQgOgorICAgICAgICBoc3JhbS0+TXNwRGVJbml0Q2FsbGJhY2sgPSBIQUxfU1JBTV9Nc3BEZUluaXQ7CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBIQUxfU1JBTV9ETUFfWEZFUl9DUExUX0NCX0lEIDoKKyAgICAgICAgaHNyYW0tPkRtYVhmZXJDcGx0Q2FsbGJhY2sgPSBIQUxfU1JBTV9ETUFfWGZlckNwbHRDYWxsYmFjazsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEhBTF9TUkFNX0RNQV9YRkVSX0VSUl9DQl9JRCA6CisgICAgICAgIGhzcmFtLT5EbWFYZmVyRXJyb3JDYWxsYmFjayA9IEhBTF9TUkFNX0RNQV9YZmVyRXJyb3JDYWxsYmFjazsKKyAgICAgICAgYnJlYWs7CisgICAgICBkZWZhdWx0IDoKKyAgICAgICAgLyogdXBkYXRlIHJldHVybiBzdGF0dXMgKi8KKyAgICAgICAgc3RhdHVzID0gIEhBTF9FUlJPUjsKKyAgICAgICAgYnJlYWs7CiAgICAgfQogICB9Ci0gIGVsc2UgaWYoc3RhdGUgPT0gSEFMX1NSQU1fU1RBVEVfUkVTRVQpCisgIGVsc2UgaWYgKHN0YXRlID09IEhBTF9TUkFNX1NUQVRFX1JFU0VUKQogICB7CiAgICAgc3dpdGNoIChDYWxsYmFja0lkKQogICAgIHsKLSAgICBjYXNlIEhBTF9TUkFNX01TUF9JTklUX0NCX0lEIDoKLSAgICAgIGhzcmFtLT5Nc3BJbml0Q2FsbGJhY2sgPSBIQUxfU1JBTV9Nc3BJbml0OwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSBIQUxfU1JBTV9NU1BfREVJTklUX0NCX0lEIDoKLSAgICAgIGhzcmFtLT5Nc3BEZUluaXRDYWxsYmFjayA9IEhBTF9TUkFNX01zcERlSW5pdDsKLSAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQgOgotICAgICAgLyogdXBkYXRlIHJldHVybiBzdGF0dXMgKi8KLSAgICAgIHN0YXR1cyA9ICBIQUxfRVJST1I7Ci0gICAgICBicmVhazsKKyAgICAgIGNhc2UgSEFMX1NSQU1fTVNQX0lOSVRfQ0JfSUQgOgorICAgICAgICBoc3JhbS0+TXNwSW5pdENhbGxiYWNrID0gSEFMX1NSQU1fTXNwSW5pdDsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEhBTF9TUkFNX01TUF9ERUlOSVRfQ0JfSUQgOgorICAgICAgICBoc3JhbS0+TXNwRGVJbml0Q2FsbGJhY2sgPSBIQUxfU1JBTV9Nc3BEZUluaXQ7CisgICAgICAgIGJyZWFrOworICAgICAgZGVmYXVsdCA6CisgICAgICAgIC8qIHVwZGF0ZSByZXR1cm4gc3RhdHVzICovCisgICAgICAgIHN0YXR1cyA9ICBIQUxfRVJST1I7CisgICAgICAgIGJyZWFrOwogICAgIH0KICAgfQogICBlbHNlCkBAIC03NTEsMTIgKzg2MiwxMyBAQAogICAqIEBwYXJhbSBwQ2FsbGJhY2sgOiBwb2ludGVyIHRvIHRoZSBDYWxsYmFjayBmdW5jdGlvbgogICAqIEByZXR2YWwgc3RhdHVzCiAgICovCi1IQUxfU3RhdHVzVHlwZURlZiBIQUxfU1JBTV9SZWdpc3RlckRtYUNhbGxiYWNrKFNSQU1fSGFuZGxlVHlwZURlZiAqaHNyYW0sIEhBTF9TUkFNX0NhbGxiYWNrSURUeXBlRGVmIENhbGxiYWNrSWQsIHBTUkFNX0RtYUNhbGxiYWNrVHlwZURlZiBwQ2FsbGJhY2spCitIQUxfU3RhdHVzVHlwZURlZiBIQUxfU1JBTV9SZWdpc3RlckRtYUNhbGxiYWNrKFNSQU1fSGFuZGxlVHlwZURlZiAqaHNyYW0sIEhBTF9TUkFNX0NhbGxiYWNrSURUeXBlRGVmIENhbGxiYWNrSWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBTUkFNX0RtYUNhbGxiYWNrVHlwZURlZiBwQ2FsbGJhY2spCiB7CiAgIEhBTF9TdGF0dXNUeXBlRGVmIHN0YXR1cyA9IEhBTF9PSzsKICAgSEFMX1NSQU1fU3RhdGVUeXBlRGVmIHN0YXRlOwogCi0gIGlmKHBDYWxsYmFjayA9PSBOVUxMKQorICBpZiAocENhbGxiYWNrID09IE5VTEwpCiAgIHsKICAgICByZXR1cm4gSEFMX0VSUk9SOwogICB9CkBAIC03NjUsMjAgKzg3NywyMCBAQAogICBfX0hBTF9MT0NLKGhzcmFtKTsKIAogICBzdGF0ZSA9IGhzcmFtLT5TdGF0ZTsKLSAgaWYoKHN0YXRlID09IEhBTF9TUkFNX1NUQVRFX1JFQURZKSB8fCAoc3RhdGUgPT0gSEFMX1NSQU1fU1RBVEVfUFJPVEVDVEVEKSkKKyAgaWYgKChzdGF0ZSA9PSBIQUxfU1JBTV9TVEFURV9SRUFEWSkgfHwgKHN0YXRlID09IEhBTF9TUkFNX1NUQVRFX1BST1RFQ1RFRCkpCiAgIHsKICAgICBzd2l0Y2ggKENhbGxiYWNrSWQpCiAgICAgewotICAgIGNhc2UgSEFMX1NSQU1fRE1BX1hGRVJfQ1BMVF9DQl9JRCA6Ci0gICAgICBoc3JhbS0+RG1hWGZlckNwbHRDYWxsYmFjayA9IHBDYWxsYmFjazsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgSEFMX1NSQU1fRE1BX1hGRVJfRVJSX0NCX0lEIDoKLSAgICAgIGhzcmFtLT5EbWFYZmVyRXJyb3JDYWxsYmFjayA9IHBDYWxsYmFjazsKLSAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQgOgotICAgICAgLyogdXBkYXRlIHJldHVybiBzdGF0dXMgKi8KLSAgICAgIHN0YXR1cyA9ICBIQUxfRVJST1I7Ci0gICAgICBicmVhazsKKyAgICAgIGNhc2UgSEFMX1NSQU1fRE1BX1hGRVJfQ1BMVF9DQl9JRCA6CisgICAgICAgIGhzcmFtLT5EbWFYZmVyQ3BsdENhbGxiYWNrID0gcENhbGxiYWNrOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgSEFMX1NSQU1fRE1BX1hGRVJfRVJSX0NCX0lEIDoKKyAgICAgICAgaHNyYW0tPkRtYVhmZXJFcnJvckNhbGxiYWNrID0gcENhbGxiYWNrOworICAgICAgICBicmVhazsKKyAgICAgIGRlZmF1bHQgOgorICAgICAgICAvKiB1cGRhdGUgcmV0dXJuIHN0YXR1cyAqLworICAgICAgICBzdGF0dXMgPSAgSEFMX0VSUk9SOworICAgICAgICBicmVhazsKICAgICB9CiAgIH0KICAgZWxzZQpAQCAtNzkxLDE4ICs5MDMsMTkgQEAKICAgX19IQUxfVU5MT0NLKGhzcmFtKTsKICAgcmV0dXJuIHN0YXR1czsKIH0KLSNlbmRpZgorI2VuZGlmIC8qIFVTRV9IQUxfU1JBTV9SRUdJU1RFUl9DQUxMQkFDS1MgKi8KKwogLyoqCiAgICogQH0KICAgKi8KLSAgCi0vKiogQGRlZmdyb3VwIFNSQU1fRXhwb3J0ZWRfRnVuY3Rpb25zX0dyb3VwMyBDb250cm9sIGZ1bmN0aW9ucyAKLSAqICBAYnJpZWYgICBDb250cm9sIGZ1bmN0aW9ucyAKLSAqCi1AdmVyYmF0aW0gICAKKworLyoqIEBkZWZncm91cCBTUkFNX0V4cG9ydGVkX0Z1bmN0aW9uc19Hcm91cDMgQ29udHJvbCBmdW5jdGlvbnMKKyAgKiAgQGJyaWVmICAgQ29udHJvbCBmdW5jdGlvbnMKKyAgKgorQHZlcmJhdGltCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICAgICAgICAgICAgICAgICAgICAgICAgIyMjIyMgU1JBTSBDb250cm9sIGZ1bmN0aW9ucyAjIyMjIwotICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gIAorICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgWy4uXQogICAgIFRoaXMgc3Vic2VjdGlvbiBwcm92aWRlcyBhIHNldCBvZiBmdW5jdGlvbnMgYWxsb3dpbmcgdG8gY29udHJvbCBkeW5hbWljYWxseQogICAgIHRoZSBTUkFNIGludGVyZmFjZS4KQEAgLTgxMCw3ICs5MjMsNyBAQAogQGVuZHZlcmJhdGltCiAgICogQHsKICAgKi8KLSAgICAKKwogLyoqCiAgICogQGJyaWVmICBFbmFibGVzIGR5bmFtaWNhbGx5IFNSQU0gd3JpdGUgb3BlcmF0aW9uLgogICAqIEBwYXJhbSAgaHNyYW0gcG9pbnRlciB0byBhIFNSQU1fSGFuZGxlVHlwZURlZiBzdHJ1Y3R1cmUgdGhhdCBjb250YWlucwpAQCAtODE5LDE5ICs5MzIsMzAgQEAKICAgKi8KIEhBTF9TdGF0dXNUeXBlRGVmIEhBTF9TUkFNX1dyaXRlT3BlcmF0aW9uX0VuYWJsZShTUkFNX0hhbmRsZVR5cGVEZWYgKmhzcmFtKQogewotICAvKiBQcm9jZXNzIExvY2tlZCAqLwotICBfX0hBTF9MT0NLKGhzcmFtKTsKKyAgLyogQ2hlY2sgdGhlIFNSQU0gY29udHJvbGxlciBzdGF0ZSAqLworICBpZiAoaHNyYW0tPlN0YXRlID09IEhBTF9TUkFNX1NUQVRFX1BST1RFQ1RFRCkKKyAgeworICAgIC8qIFByb2Nlc3MgTG9ja2VkICovCisgICAgX19IQUxfTE9DSyhoc3JhbSk7CiAKLSAgLyogRW5hYmxlIHdyaXRlIG9wZXJhdGlvbiAqLwotICBGTUNfTk9SU1JBTV9Xcml0ZU9wZXJhdGlvbl9FbmFibGUoaHNyYW0tPkluc3RhbmNlLCBoc3JhbS0+SW5pdC5OU0JhbmspOyAKLSAgCi0gIC8qIFVwZGF0ZSB0aGUgU1JBTSBjb250cm9sbGVyIHN0YXRlICovCi0gIGhzcmFtLT5TdGF0ZSA9IEhBTF9TUkFNX1NUQVRFX1JFQURZOwotICAKLSAgLyogUHJvY2VzcyB1bmxvY2tlZCAqLwotICBfX0hBTF9VTkxPQ0soaHNyYW0pOyAKLSAgCi0gIHJldHVybiBIQUxfT0s7ICAKKyAgICAvKiBVcGRhdGUgdGhlIFNSQU0gY29udHJvbGxlciBzdGF0ZSAqLworICAgIGhzcmFtLT5TdGF0ZSA9IEhBTF9TUkFNX1NUQVRFX0JVU1k7CisKKyAgICAvKiBFbmFibGUgd3JpdGUgb3BlcmF0aW9uICovCisgICAgKHZvaWQpRk1DX05PUlNSQU1fV3JpdGVPcGVyYXRpb25fRW5hYmxlKGhzcmFtLT5JbnN0YW5jZSwgaHNyYW0tPkluaXQuTlNCYW5rKTsKKworICAgIC8qIFVwZGF0ZSB0aGUgU1JBTSBjb250cm9sbGVyIHN0YXRlICovCisgICAgaHNyYW0tPlN0YXRlID0gSEFMX1NSQU1fU1RBVEVfUkVBRFk7CisKKyAgICAvKiBQcm9jZXNzIHVubG9ja2VkICovCisgICAgX19IQUxfVU5MT0NLKGhzcmFtKTsKKyAgfQorICBlbHNlCisgIHsKKyAgICByZXR1cm4gSEFMX0VSUk9SOworICB9CisKKyAgcmV0dXJuIEhBTF9PSzsKIH0KIAogLyoqCkBAIC04NDIsNDMgKzk2Niw1MSBAQAogICAqLwogSEFMX1N0YXR1c1R5cGVEZWYgSEFMX1NSQU1fV3JpdGVPcGVyYXRpb25fRGlzYWJsZShTUkFNX0hhbmRsZVR5cGVEZWYgKmhzcmFtKQogewotICAvKiBQcm9jZXNzIExvY2tlZCAqLwotICBfX0hBTF9MT0NLKGhzcmFtKTsKKyAgLyogQ2hlY2sgdGhlIFNSQU0gY29udHJvbGxlciBzdGF0ZSAqLworICBpZiAoaHNyYW0tPlN0YXRlID09IEhBTF9TUkFNX1NUQVRFX1JFQURZKQorICB7CisgICAgLyogUHJvY2VzcyBMb2NrZWQgKi8KKyAgICBfX0hBTF9MT0NLKGhzcmFtKTsKIAotICAvKiBVcGRhdGUgdGhlIFNSQU0gY29udHJvbGxlciBzdGF0ZSAqLwotICBoc3JhbS0+U3RhdGUgPSBIQUxfU1JBTV9TVEFURV9CVVNZOwotICAgIAotICAvKiBEaXNhYmxlIHdyaXRlIG9wZXJhdGlvbiAqLwotICBGTUNfTk9SU1JBTV9Xcml0ZU9wZXJhdGlvbl9EaXNhYmxlKGhzcmFtLT5JbnN0YW5jZSwgaHNyYW0tPkluaXQuTlNCYW5rKTsgCi0gIAotICAvKiBVcGRhdGUgdGhlIFNSQU0gY29udHJvbGxlciBzdGF0ZSAqLwotICBoc3JhbS0+U3RhdGUgPSBIQUxfU1JBTV9TVEFURV9QUk9URUNURUQ7Ci0gIAotICAvKiBQcm9jZXNzIHVubG9ja2VkICovCi0gIF9fSEFMX1VOTE9DSyhoc3JhbSk7IAotICAKLSAgcmV0dXJuIEhBTF9PSzsgIAorICAgIC8qIFVwZGF0ZSB0aGUgU1JBTSBjb250cm9sbGVyIHN0YXRlICovCisgICAgaHNyYW0tPlN0YXRlID0gSEFMX1NSQU1fU1RBVEVfQlVTWTsKKworICAgIC8qIERpc2FibGUgd3JpdGUgb3BlcmF0aW9uICovCisgICAgKHZvaWQpRk1DX05PUlNSQU1fV3JpdGVPcGVyYXRpb25fRGlzYWJsZShoc3JhbS0+SW5zdGFuY2UsIGhzcmFtLT5Jbml0Lk5TQmFuayk7CisKKyAgICAvKiBVcGRhdGUgdGhlIFNSQU0gY29udHJvbGxlciBzdGF0ZSAqLworICAgIGhzcmFtLT5TdGF0ZSA9IEhBTF9TUkFNX1NUQVRFX1BST1RFQ1RFRDsKKworICAgIC8qIFByb2Nlc3MgdW5sb2NrZWQgKi8KKyAgICBfX0hBTF9VTkxPQ0soaHNyYW0pOworICB9CisgIGVsc2UKKyAgeworICAgIHJldHVybiBIQUxfRVJST1I7CisgIH0KKworICByZXR1cm4gSEFMX09LOwogfQogCiAvKioKICAgKiBAfQogICAqLwogCi0vKiogQGRlZmdyb3VwIFNSQU1fRXhwb3J0ZWRfRnVuY3Rpb25zX0dyb3VwNCBQZXJpcGhlcmFsIFN0YXRlIGZ1bmN0aW9ucyAKLSAqICBAYnJpZWYgICBQZXJpcGhlcmFsIFN0YXRlIGZ1bmN0aW9ucyAKLSAqCi1AdmVyYmF0aW0gICAKKy8qKiBAZGVmZ3JvdXAgU1JBTV9FeHBvcnRlZF9GdW5jdGlvbnNfR3JvdXA0IFBlcmlwaGVyYWwgU3RhdGUgZnVuY3Rpb25zCisgICogIEBicmllZiAgIFBlcmlwaGVyYWwgU3RhdGUgZnVuY3Rpb25zCisgICoKK0B2ZXJiYXRpbQogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgICAgICAgICAgICAgICAgICAgICAjIyMjIyBTUkFNIFN0YXRlIGZ1bmN0aW9ucyAjIyMjIwotICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gIAorICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgWy4uXQotICAgIFRoaXMgc3Vic2VjdGlvbiBwZXJtaXRzIHRvIGdldCBpbiBydW4tdGltZSB0aGUgc3RhdHVzIG9mIHRoZSBTUkFNIGNvbnRyb2xsZXIgCisgICAgVGhpcyBzdWJzZWN0aW9uIHBlcm1pdHMgdG8gZ2V0IGluIHJ1bi10aW1lIHRoZSBzdGF0dXMgb2YgdGhlIFNSQU0gY29udHJvbGxlcgogICAgIGFuZCB0aGUgZGF0YSBmbG93LgogCiBAZW5kdmVyYmF0aW0KICAgKiBAewogICAqLwotICAKKwogLyoqCiAgICogQGJyaWVmICBSZXR1cm5zIHRoZSBTUkFNIGNvbnRyb2xsZXIgc3RhdGUKICAgKiBAcGFyYW0gIGhzcmFtIHBvaW50ZXIgdG8gYSBTUkFNX0hhbmRsZVR5cGVEZWYgc3RydWN0dXJlIHRoYXQgY29udGFpbnMKQEAgLTg5NywxMyArMTAyOSw4MCBAQAogLyoqCiAgICogQH0KICAgKi8KKworLyoqCisgICogQGJyaWVmICBETUEgU1JBTSBwcm9jZXNzIGNvbXBsZXRlIGNhbGxiYWNrLgorICAqIEBwYXJhbSAgaGRtYSA6IERNQSBoYW5kbGUKKyAgKiBAcmV0dmFsIE5vbmUKKyAgKi8KK3N0YXRpYyB2b2lkIFNSQU1fRE1BQ3BsdChETUFfSGFuZGxlVHlwZURlZiAqaGRtYSkKK3sKKyAgU1JBTV9IYW5kbGVUeXBlRGVmICpoc3JhbSA9IChTUkFNX0hhbmRsZVR5cGVEZWYgKikoaGRtYS0+UGFyZW50KTsKKworICAvKiBEaXNhYmxlIHRoZSBETUEgY2hhbm5lbCAqLworICBfX0hBTF9ETUFfRElTQUJMRShoZG1hKTsKKworICAvKiBVcGRhdGUgdGhlIFNSQU0gY29udHJvbGxlciBzdGF0ZSAqLworICBoc3JhbS0+U3RhdGUgPSBIQUxfU1JBTV9TVEFURV9SRUFEWTsKKworI2lmIChVU0VfSEFMX1NSQU1fUkVHSVNURVJfQ0FMTEJBQ0tTID09IDEpCisgIGhzcmFtLT5EbWFYZmVyQ3BsdENhbGxiYWNrKGhkbWEpOworI2Vsc2UKKyAgSEFMX1NSQU1fRE1BX1hmZXJDcGx0Q2FsbGJhY2soaGRtYSk7CisjZW5kaWYgLyogVVNFX0hBTF9TUkFNX1JFR0lTVEVSX0NBTExCQUNLUyAqLworfQorCisvKioKKyAgKiBAYnJpZWYgIERNQSBTUkFNIHByb2Nlc3MgY29tcGxldGUgY2FsbGJhY2suCisgICogQHBhcmFtICBoZG1hIDogRE1BIGhhbmRsZQorICAqIEByZXR2YWwgTm9uZQorICAqLworc3RhdGljIHZvaWQgU1JBTV9ETUFDcGx0UHJvdChETUFfSGFuZGxlVHlwZURlZiAqaGRtYSkKK3sKKyAgU1JBTV9IYW5kbGVUeXBlRGVmICpoc3JhbSA9IChTUkFNX0hhbmRsZVR5cGVEZWYgKikoaGRtYS0+UGFyZW50KTsKKworICAvKiBEaXNhYmxlIHRoZSBETUEgY2hhbm5lbCAqLworICBfX0hBTF9ETUFfRElTQUJMRShoZG1hKTsKKworICAvKiBVcGRhdGUgdGhlIFNSQU0gY29udHJvbGxlciBzdGF0ZSAqLworICBoc3JhbS0+U3RhdGUgPSBIQUxfU1JBTV9TVEFURV9QUk9URUNURUQ7CisKKyNpZiAoVVNFX0hBTF9TUkFNX1JFR0lTVEVSX0NBTExCQUNLUyA9PSAxKQorICBoc3JhbS0+RG1hWGZlckNwbHRDYWxsYmFjayhoZG1hKTsKKyNlbHNlCisgIEhBTF9TUkFNX0RNQV9YZmVyQ3BsdENhbGxiYWNrKGhkbWEpOworI2VuZGlmIC8qIFVTRV9IQUxfU1JBTV9SRUdJU1RFUl9DQUxMQkFDS1MgKi8KK30KKworLyoqCisgICogQGJyaWVmICBETUEgU1JBTSBlcnJvciBjYWxsYmFjay4KKyAgKiBAcGFyYW0gIGhkbWEgOiBETUEgaGFuZGxlCisgICogQHJldHZhbCBOb25lCisgICovCitzdGF0aWMgdm9pZCBTUkFNX0RNQUVycm9yKERNQV9IYW5kbGVUeXBlRGVmICpoZG1hKQoreworICBTUkFNX0hhbmRsZVR5cGVEZWYgKmhzcmFtID0gKFNSQU1fSGFuZGxlVHlwZURlZiAqKShoZG1hLT5QYXJlbnQpOworCisgIC8qIERpc2FibGUgdGhlIERNQSBjaGFubmVsICovCisgIF9fSEFMX0RNQV9ESVNBQkxFKGhkbWEpOworCisgIC8qIFVwZGF0ZSB0aGUgU1JBTSBjb250cm9sbGVyIHN0YXRlICovCisgIGhzcmFtLT5TdGF0ZSA9IEhBTF9TUkFNX1NUQVRFX0VSUk9SOworCisjaWYgKFVTRV9IQUxfU1JBTV9SRUdJU1RFUl9DQUxMQkFDS1MgPT0gMSkKKyAgaHNyYW0tPkRtYVhmZXJFcnJvckNhbGxiYWNrKGhkbWEpOworI2Vsc2UKKyAgSEFMX1NSQU1fRE1BX1hmZXJFcnJvckNhbGxiYWNrKGhkbWEpOworI2VuZGlmIC8qIFVTRV9IQUxfU1JBTV9SRUdJU1RFUl9DQUxMQkFDS1MgKi8KK30KKworLyoqCisgICogQH0KKyAgKi8KKwogI2VuZGlmIC8qIEhBTF9TUkFNX01PRFVMRV9FTkFCTEVEICovCi0vKioKLSAgKiBAfQotICAqLwogCiAvKioKICAgKiBAfQogICAqLwogCi0vKioqKioqKioqKioqKioqKioqKioqKioqIChDKSBDT1BZUklHSFQgU1RNaWNyb2VsZWN0cm9uaWNzICoqKioqRU5EIE9GIEZJTEUqKioqLwpkaWZmIC0tZ2l0IGEvU3JjL3N0bTMyZjd4eF9oYWxfdGltLmMgYi9TcmMvc3RtMzJmN3h4X2hhbF90aW0uYwppbmRleCAyNDk2ZGQ2Li5kMGZiYjFlIDEwMDY0NAotLS0gYS9TcmMvc3RtMzJmN3h4X2hhbF90aW0uYworKysgYi9TcmMvc3RtMzJmN3h4X2hhbF90aW0uYwpAQCAtMjksNiArMjksMTcgQEAKICAgKiAgICAgICAgICAgKyBDb21tdXRhdGlvbiBFdmVudCBjb25maWd1cmF0aW9uIHdpdGggSW50ZXJydXB0aW9uIGFuZCBETUEKICAgKiAgICAgICAgICAgKyBUSU0gT0NSZWYgY2xlYXIgY29uZmlndXJhdGlvbgogICAqICAgICAgICAgICArIFRJTSBFeHRlcm5hbCBDbG9jayBjb25maWd1cmF0aW9uCisgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAqIEBhdHRlbnRpb24KKyAgKgorICAqIENvcHlyaWdodCAoYykgMjAxNyBTVE1pY3JvZWxlY3Ryb25pY3MuCisgICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAgKgorICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgdW5kZXIgdGVybXMgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZQorICAqIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvZnR3YXJlIGNvbXBvbmVudC4KKyAgKiBJZiBubyBMSUNFTlNFIGZpbGUgY29tZXMgd2l0aCB0aGlzIHNvZnR3YXJlLCBpdCBpcyBwcm92aWRlZCBBUy1JUy4KKyAgKgorICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgQHZlcmJhdGltCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICAgICAgICAgICAgICAgICAgICAgICMjIyMjIFRJTUVSIEdlbmVyaWMgZmVhdHVyZXMgIyMjIyMKQEAgLTEwMywxNCArMTE0LDE0IEBACiAgIGFsbG93cyB0aGUgdXNlciB0byBjb25maWd1cmUgZHluYW1pY2FsbHkgdGhlIGRyaXZlciBjYWxsYmFja3MuCiAKICAgWy4uXQotICBVc2UgRnVuY3Rpb24gQHJlZiBIQUxfVElNX1JlZ2lzdGVyQ2FsbGJhY2soKSB0byByZWdpc3RlciBhIGNhbGxiYWNrLgotICBAcmVmIEhBTF9USU1fUmVnaXN0ZXJDYWxsYmFjaygpIHRha2VzIGFzIHBhcmFtZXRlcnMgdGhlIEhBTCBwZXJpcGhlcmFsIGhhbmRsZSwKKyAgVXNlIEZ1bmN0aW9uIEhBTF9USU1fUmVnaXN0ZXJDYWxsYmFjaygpIHRvIHJlZ2lzdGVyIGEgY2FsbGJhY2suCisgIEhBTF9USU1fUmVnaXN0ZXJDYWxsYmFjaygpIHRha2VzIGFzIHBhcmFtZXRlcnMgdGhlIEhBTCBwZXJpcGhlcmFsIGhhbmRsZSwKICAgdGhlIENhbGxiYWNrIElEIGFuZCBhIHBvaW50ZXIgdG8gdGhlIHVzZXIgY2FsbGJhY2sgZnVuY3Rpb24uCiAKICAgWy4uXQotICBVc2UgZnVuY3Rpb24gQHJlZiBIQUxfVElNX1VuUmVnaXN0ZXJDYWxsYmFjaygpIHRvIHJlc2V0IGEgY2FsbGJhY2sgdG8gdGhlIGRlZmF1bHQKKyAgVXNlIGZ1bmN0aW9uIEhBTF9USU1fVW5SZWdpc3RlckNhbGxiYWNrKCkgdG8gcmVzZXQgYSBjYWxsYmFjayB0byB0aGUgZGVmYXVsdAogICB3ZWFrIGZ1bmN0aW9uLgotICBAcmVmIEhBTF9USU1fVW5SZWdpc3RlckNhbGxiYWNrIHRha2VzIGFzIHBhcmFtZXRlcnMgdGhlIEhBTCBwZXJpcGhlcmFsIGhhbmRsZSwKKyAgSEFMX1RJTV9VblJlZ2lzdGVyQ2FsbGJhY2sgdGFrZXMgYXMgcGFyYW1ldGVycyB0aGUgSEFMIHBlcmlwaGVyYWwgaGFuZGxlLAogICBhbmQgdGhlIENhbGxiYWNrIElELgogCiAgIFsuLl0KQEAgLTE0Nyw3ICsxNTgsNyBAQAogICBbLi5dCiBCeSBkZWZhdWx0LCBhZnRlciB0aGUgSW5pdCBhbmQgd2hlbiB0aGUgc3RhdGUgaXMgSEFMX1RJTV9TVEFURV9SRVNFVAogYWxsIGludGVycnVwdCBjYWxsYmFja3MgYXJlIHNldCB0byB0aGUgY29ycmVzcG9uZGluZyB3ZWFrIGZ1bmN0aW9uczoKLSAgZXhhbXBsZXMgQHJlZiBIQUxfVElNX1RyaWdnZXJDYWxsYmFjaygpLCBAcmVmIEhBTF9USU1fRXJyb3JDYWxsYmFjaygpLgorICBleGFtcGxlcyBIQUxfVElNX1RyaWdnZXJDYWxsYmFjaygpLCBIQUxfVElNX0Vycm9yQ2FsbGJhY2soKS4KIAogICBbLi5dCiAgIEV4Y2VwdGlvbiBkb25lIGZvciBNc3BJbml0IGFuZCBNc3BEZUluaXQgZnVuY3Rpb25zIHRoYXQgYXJlIHJlc2V0IHRvIHRoZSBsZWdhY3kgd2VhawpAQCAtMTYxLDcgKzE3Miw3IEBACiAgICAgaW4gSEFMX1RJTV9TVEFURV9SRUFEWSBvciBIQUxfVElNX1NUQVRFX1JFU0VUIHN0YXRlLAogICAgIHRodXMgcmVnaXN0ZXJlZCh1c2VyKSBNc3BJbml0IC8gRGVJbml0IGNhbGxiYWNrcyBjYW4gYmUgdXNlZCBkdXJpbmcgdGhlIEluaXQgLyBEZUluaXQuCiAgIEluIHRoYXQgY2FzZSBmaXJzdCByZWdpc3RlciB0aGUgTXNwSW5pdC9Nc3BEZUluaXQgdXNlciBjYWxsYmFja3MKLSAgICAgIHVzaW5nIEByZWYgSEFMX1RJTV9SZWdpc3RlckNhbGxiYWNrKCkgYmVmb3JlIGNhbGxpbmcgRGVJbml0IG9yIEluaXQgZnVuY3Rpb24uCisgICAgICB1c2luZyBIQUxfVElNX1JlZ2lzdGVyQ2FsbGJhY2soKSBiZWZvcmUgY2FsbGluZyBEZUluaXQgb3IgSW5pdCBmdW5jdGlvbi4KIAogICBbLi5dCiAgICAgICBXaGVuIFRoZSBjb21waWxhdGlvbiBkZWZpbmUgVVNFX0hBTF9USU1fUkVHSVNURVJfQ0FMTEJBQ0tTIGlzIHNldCB0byAwIG9yCkBAIC0xNzAsMTcgKzE4MSw2IEBACiAKICAgQGVuZHZlcmJhdGltCiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICAqIEBhdHRlbnRpb24KLSAgKgotICAqIDxoMj48Y2VudGVyPiZjb3B5OyBDb3B5cmlnaHQgKGMpIDIwMTcgU1RNaWNyb2VsZWN0cm9uaWNzLgotICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuPC9jZW50ZXI+PC9oMj4KLSAgKgotICAqIFRoaXMgc29mdHdhcmUgY29tcG9uZW50IGlzIGxpY2Vuc2VkIGJ5IFNUIHVuZGVyIEJTRCAzLUNsYXVzZSBsaWNlbnNlLAotICAqIHRoZSAiTGljZW5zZSI7IFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUKLSAgKiBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQ6Ci0gICogICAgICAgICAgICAgICAgICAgICAgICBvcGVuc291cmNlLm9yZy9saWNlbnNlcy9CU0QtMy1DbGF1c2UKLSAgKgotICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgKi8KIAogLyogSW5jbHVkZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KQEAgLTU2MSw3ICs1NjEsOCBAQAogICBodGltLT5oZG1hW1RJTV9ETUFfSURfVVBEQVRFXS0+WGZlckVycm9yQ2FsbGJhY2sgPSBUSU1fRE1BRXJyb3IgOwogCiAgIC8qIEVuYWJsZSB0aGUgRE1BIHN0cmVhbSAqLwotICBpZiAoSEFMX0RNQV9TdGFydF9JVChodGltLT5oZG1hW1RJTV9ETUFfSURfVVBEQVRFXSwgKHVpbnQzMl90KXBEYXRhLCAodWludDMyX3QpJmh0aW0tPkluc3RhbmNlLT5BUlIsIExlbmd0aCkgIT0gSEFMX09LKQorICBpZiAoSEFMX0RNQV9TdGFydF9JVChodGltLT5oZG1hW1RJTV9ETUFfSURfVVBEQVRFXSwgKHVpbnQzMl90KXBEYXRhLCAodWludDMyX3QpJmh0aW0tPkluc3RhbmNlLT5BUlIsCisgICAgICAgICAgICAgICAgICAgICAgIExlbmd0aCkgIT0gSEFMX09LKQogICB7CiAgICAgLyogUmV0dXJuIGVycm9yIHN0YXR1cyAqLwogICAgIHJldHVybiBIQUxfRVJST1I7CkBAIC04ODEsNiArODgyLDcgQEAKICAgKi8KIEhBTF9TdGF0dXNUeXBlRGVmIEhBTF9USU1fT0NfU3RhcnRfSVQoVElNX0hhbmRsZVR5cGVEZWYgKmh0aW0sIHVpbnQzMl90IENoYW5uZWwpCiB7CisgIEhBTF9TdGF0dXNUeXBlRGVmIHN0YXR1cyA9IEhBTF9PSzsKICAgdWludDMyX3QgdG1wc21jcjsKIAogICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLwpAQCAtOTI2LDM0ICs5MjgsMzggQEAKICAgICB9CiAKICAgICBkZWZhdWx0OgorICAgICAgc3RhdHVzID0gSEFMX0VSUk9SOwogICAgICAgYnJlYWs7CiAgIH0KIAotICAvKiBFbmFibGUgdGhlIE91dHB1dCBjb21wYXJlIGNoYW5uZWwgKi8KLSAgVElNX0NDeENoYW5uZWxDbWQoaHRpbS0+SW5zdGFuY2UsIENoYW5uZWwsIFRJTV9DQ3hfRU5BQkxFKTsKLQotICBpZiAoSVNfVElNX0JSRUFLX0lOU1RBTkNFKGh0aW0tPkluc3RhbmNlKSAhPSBSRVNFVCkKKyAgaWYgKHN0YXR1cyA9PSBIQUxfT0spCiAgIHsKLSAgICAvKiBFbmFibGUgdGhlIG1haW4gb3V0cHV0ICovCi0gICAgX19IQUxfVElNX01PRV9FTkFCTEUoaHRpbSk7Ci0gIH0KKyAgICAvKiBFbmFibGUgdGhlIE91dHB1dCBjb21wYXJlIGNoYW5uZWwgKi8KKyAgICBUSU1fQ0N4Q2hhbm5lbENtZChodGltLT5JbnN0YW5jZSwgQ2hhbm5lbCwgVElNX0NDeF9FTkFCTEUpOwogCi0gIC8qIEVuYWJsZSB0aGUgUGVyaXBoZXJhbCwgZXhjZXB0IGluIHRyaWdnZXIgbW9kZSB3aGVyZSBlbmFibGUgaXMgYXV0b21hdGljYWxseSBkb25lIHdpdGggdHJpZ2dlciAqLwotICBpZiAoSVNfVElNX1NMQVZFX0lOU1RBTkNFKGh0aW0tPkluc3RhbmNlKSkKLSAgewotICAgIHRtcHNtY3IgPSBodGltLT5JbnN0YW5jZS0+U01DUiAmIFRJTV9TTUNSX1NNUzsKLSAgICBpZiAoIUlTX1RJTV9TTEFWRU1PREVfVFJJR0dFUl9FTkFCTEVEKHRtcHNtY3IpKQorICAgIGlmIChJU19USU1fQlJFQUtfSU5TVEFOQ0UoaHRpbS0+SW5zdGFuY2UpICE9IFJFU0VUKQorICAgIHsKKyAgICAgIC8qIEVuYWJsZSB0aGUgbWFpbiBvdXRwdXQgKi8KKyAgICAgIF9fSEFMX1RJTV9NT0VfRU5BQkxFKGh0aW0pOworICAgIH0KKworICAgIC8qIEVuYWJsZSB0aGUgUGVyaXBoZXJhbCwgZXhjZXB0IGluIHRyaWdnZXIgbW9kZSB3aGVyZSBlbmFibGUgaXMgYXV0b21hdGljYWxseSBkb25lIHdpdGggdHJpZ2dlciAqLworICAgIGlmIChJU19USU1fU0xBVkVfSU5TVEFOQ0UoaHRpbS0+SW5zdGFuY2UpKQorICAgIHsKKyAgICAgIHRtcHNtY3IgPSBodGltLT5JbnN0YW5jZS0+U01DUiAmIFRJTV9TTUNSX1NNUzsKKyAgICAgIGlmICghSVNfVElNX1NMQVZFTU9ERV9UUklHR0VSX0VOQUJMRUQodG1wc21jcikpCisgICAgICB7CisgICAgICAgIF9fSEFMX1RJTV9FTkFCTEUoaHRpbSk7CisgICAgICB9CisgICAgfQorICAgIGVsc2UKICAgICB7CiAgICAgICBfX0hBTF9USU1fRU5BQkxFKGh0aW0pOwogICAgIH0KICAgfQotICBlbHNlCi0gIHsKLSAgICBfX0hBTF9USU1fRU5BQkxFKGh0aW0pOwotICB9CiAKICAgLyogUmV0dXJuIGZ1bmN0aW9uIHN0YXR1cyAqLwotICByZXR1cm4gSEFMX09LOworICByZXR1cm4gc3RhdHVzOwogfQogCiAvKioKQEAgLTk2OSw2ICs5NzUsOCBAQAogICAqLwogSEFMX1N0YXR1c1R5cGVEZWYgSEFMX1RJTV9PQ19TdG9wX0lUKFRJTV9IYW5kbGVUeXBlRGVmICpodGltLCB1aW50MzJfdCBDaGFubmVsKQogeworICBIQUxfU3RhdHVzVHlwZURlZiBzdGF0dXMgPSBIQUxfT0s7CisKICAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8KICAgYXNzZXJ0X3BhcmFtKElTX1RJTV9DQ1hfSU5TVEFOQ0UoaHRpbS0+SW5zdGFuY2UsIENoYW5uZWwpKTsKIApAQCAtMTAwMywyNiArMTAxMSwzMCBAQAogICAgIH0KIAogICAgIGRlZmF1bHQ6CisgICAgICBzdGF0dXMgPSBIQUxfRVJST1I7CiAgICAgICBicmVhazsKICAgfQogCi0gIC8qIERpc2FibGUgdGhlIE91dHB1dCBjb21wYXJlIGNoYW5uZWwgKi8KLSAgVElNX0NDeENoYW5uZWxDbWQoaHRpbS0+SW5zdGFuY2UsIENoYW5uZWwsIFRJTV9DQ3hfRElTQUJMRSk7Ci0KLSAgaWYgKElTX1RJTV9CUkVBS19JTlNUQU5DRShodGltLT5JbnN0YW5jZSkgIT0gUkVTRVQpCisgIGlmIChzdGF0dXMgPT0gSEFMX09LKQogICB7Ci0gICAgLyogRGlzYWJsZSB0aGUgTWFpbiBPdXRwdXQgKi8KLSAgICBfX0hBTF9USU1fTU9FX0RJU0FCTEUoaHRpbSk7CisgICAgLyogRGlzYWJsZSB0aGUgT3V0cHV0IGNvbXBhcmUgY2hhbm5lbCAqLworICAgIFRJTV9DQ3hDaGFubmVsQ21kKGh0aW0tPkluc3RhbmNlLCBDaGFubmVsLCBUSU1fQ0N4X0RJU0FCTEUpOworCisgICAgaWYgKElTX1RJTV9CUkVBS19JTlNUQU5DRShodGltLT5JbnN0YW5jZSkgIT0gUkVTRVQpCisgICAgeworICAgICAgLyogRGlzYWJsZSB0aGUgTWFpbiBPdXRwdXQgKi8KKyAgICAgIF9fSEFMX1RJTV9NT0VfRElTQUJMRShodGltKTsKKyAgICB9CisKKyAgICAvKiBEaXNhYmxlIHRoZSBQZXJpcGhlcmFsICovCisgICAgX19IQUxfVElNX0RJU0FCTEUoaHRpbSk7CisKKyAgICAvKiBTZXQgdGhlIFRJTSBjaGFubmVsIHN0YXRlICovCisgICAgVElNX0NIQU5ORUxfU1RBVEVfU0VUKGh0aW0sIENoYW5uZWwsIEhBTF9USU1fQ0hBTk5FTF9TVEFURV9SRUFEWSk7CiAgIH0KIAotICAvKiBEaXNhYmxlIHRoZSBQZXJpcGhlcmFsICovCi0gIF9fSEFMX1RJTV9ESVNBQkxFKGh0aW0pOwotCi0gIC8qIFNldCB0aGUgVElNIGNoYW5uZWwgc3RhdGUgKi8KLSAgVElNX0NIQU5ORUxfU1RBVEVfU0VUKGh0aW0sIENoYW5uZWwsIEhBTF9USU1fQ0hBTk5FTF9TVEFURV9SRUFEWSk7Ci0KICAgLyogUmV0dXJuIGZ1bmN0aW9uIHN0YXR1cyAqLwotICByZXR1cm4gSEFMX09LOworICByZXR1cm4gc3RhdHVzOwogfQogCiAvKioKQEAgLTEwNDAsNiArMTA1Miw3IEBACiAgICovCiBIQUxfU3RhdHVzVHlwZURlZiBIQUxfVElNX09DX1N0YXJ0X0RNQShUSU1fSGFuZGxlVHlwZURlZiAqaHRpbSwgdWludDMyX3QgQ2hhbm5lbCwgdWludDMyX3QgKnBEYXRhLCB1aW50MTZfdCBMZW5ndGgpCiB7CisgIEhBTF9TdGF0dXNUeXBlRGVmIHN0YXR1cyA9IEhBTF9PSzsKICAgdWludDMyX3QgdG1wc21jcjsKIAogICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLwpAQCAtMTA3OCw3ICsxMDkxLDggQEAKICAgICAgIGh0aW0tPmhkbWFbVElNX0RNQV9JRF9DQzFdLT5YZmVyRXJyb3JDYWxsYmFjayA9IFRJTV9ETUFFcnJvciA7CiAKICAgICAgIC8qIEVuYWJsZSB0aGUgRE1BIHN0cmVhbSAqLwotICAgICAgaWYgKEhBTF9ETUFfU3RhcnRfSVQoaHRpbS0+aGRtYVtUSU1fRE1BX0lEX0NDMV0sICh1aW50MzJfdClwRGF0YSwgKHVpbnQzMl90KSZodGltLT5JbnN0YW5jZS0+Q0NSMSwgTGVuZ3RoKSAhPSBIQUxfT0spCisgICAgICBpZiAoSEFMX0RNQV9TdGFydF9JVChodGltLT5oZG1hW1RJTV9ETUFfSURfQ0MxXSwgKHVpbnQzMl90KXBEYXRhLCAodWludDMyX3QpJmh0aW0tPkluc3RhbmNlLT5DQ1IxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgTGVuZ3RoKSAhPSBIQUxfT0spCiAgICAgICB7CiAgICAgICAgIC8qIFJldHVybiBlcnJvciBzdGF0dXMgKi8KICAgICAgICAgcmV0dXJuIEhBTF9FUlJPUjsKQEAgLTEwOTksNyArMTExMyw4IEBACiAgICAgICBodGltLT5oZG1hW1RJTV9ETUFfSURfQ0MyXS0+WGZlckVycm9yQ2FsbGJhY2sgPSBUSU1fRE1BRXJyb3IgOwogCiAgICAgICAvKiBFbmFibGUgdGhlIERNQSBzdHJlYW0gKi8KLSAgICAgIGlmIChIQUxfRE1BX1N0YXJ0X0lUKGh0aW0tPmhkbWFbVElNX0RNQV9JRF9DQzJdLCAodWludDMyX3QpcERhdGEsICh1aW50MzJfdCkmaHRpbS0+SW5zdGFuY2UtPkNDUjIsIExlbmd0aCkgIT0gSEFMX09LKQorICAgICAgaWYgKEhBTF9ETUFfU3RhcnRfSVQoaHRpbS0+aGRtYVtUSU1fRE1BX0lEX0NDMl0sICh1aW50MzJfdClwRGF0YSwgKHVpbnQzMl90KSZodGltLT5JbnN0YW5jZS0+Q0NSMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIExlbmd0aCkgIT0gSEFMX09LKQogICAgICAgewogICAgICAgICAvKiBSZXR1cm4gZXJyb3Igc3RhdHVzICovCiAgICAgICAgIHJldHVybiBIQUxfRVJST1I7CkBAIC0xMTIwLDcgKzExMzUsOCBAQAogICAgICAgaHRpbS0+aGRtYVtUSU1fRE1BX0lEX0NDM10tPlhmZXJFcnJvckNhbGxiYWNrID0gVElNX0RNQUVycm9yIDsKIAogICAgICAgLyogRW5hYmxlIHRoZSBETUEgc3RyZWFtICovCi0gICAgICBpZiAoSEFMX0RNQV9TdGFydF9JVChodGltLT5oZG1hW1RJTV9ETUFfSURfQ0MzXSwgKHVpbnQzMl90KXBEYXRhLCAodWludDMyX3QpJmh0aW0tPkluc3RhbmNlLT5DQ1IzLCBMZW5ndGgpICE9IEhBTF9PSykKKyAgICAgIGlmIChIQUxfRE1BX1N0YXJ0X0lUKGh0aW0tPmhkbWFbVElNX0RNQV9JRF9DQzNdLCAodWludDMyX3QpcERhdGEsICh1aW50MzJfdCkmaHRpbS0+SW5zdGFuY2UtPkNDUjMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBMZW5ndGgpICE9IEhBTF9PSykKICAgICAgIHsKICAgICAgICAgLyogUmV0dXJuIGVycm9yIHN0YXR1cyAqLwogICAgICAgICByZXR1cm4gSEFMX0VSUk9SOwpAQCAtMTE0MCw3ICsxMTU2LDggQEAKICAgICAgIGh0aW0tPmhkbWFbVElNX0RNQV9JRF9DQzRdLT5YZmVyRXJyb3JDYWxsYmFjayA9IFRJTV9ETUFFcnJvciA7CiAKICAgICAgIC8qIEVuYWJsZSB0aGUgRE1BIHN0cmVhbSAqLwotICAgICAgaWYgKEhBTF9ETUFfU3RhcnRfSVQoaHRpbS0+aGRtYVtUSU1fRE1BX0lEX0NDNF0sICh1aW50MzJfdClwRGF0YSwgKHVpbnQzMl90KSZodGltLT5JbnN0YW5jZS0+Q0NSNCwgTGVuZ3RoKSAhPSBIQUxfT0spCisgICAgICBpZiAoSEFMX0RNQV9TdGFydF9JVChodGltLT5oZG1hW1RJTV9ETUFfSURfQ0M0XSwgKHVpbnQzMl90KXBEYXRhLCAodWludDMyX3QpJmh0aW0tPkluc3RhbmNlLT5DQ1I0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgTGVuZ3RoKSAhPSBIQUxfT0spCiAgICAgICB7CiAgICAgICAgIC8qIFJldHVybiBlcnJvciBzdGF0dXMgKi8KICAgICAgICAgcmV0dXJuIEhBTF9FUlJPUjsKQEAgLTExNTEsMzQgKzExNjgsMzggQEAKICAgICB9CiAKICAgICBkZWZhdWx0OgorICAgICAgc3RhdHVzID0gSEFMX0VSUk9SOwogICAgICAgYnJlYWs7CiAgIH0KIAotICAvKiBFbmFibGUgdGhlIE91dHB1dCBjb21wYXJlIGNoYW5uZWwgKi8KLSAgVElNX0NDeENoYW5uZWxDbWQoaHRpbS0+SW5zdGFuY2UsIENoYW5uZWwsIFRJTV9DQ3hfRU5BQkxFKTsKLQotICBpZiAoSVNfVElNX0JSRUFLX0lOU1RBTkNFKGh0aW0tPkluc3RhbmNlKSAhPSBSRVNFVCkKKyAgaWYgKHN0YXR1cyA9PSBIQUxfT0spCiAgIHsKLSAgICAvKiBFbmFibGUgdGhlIG1haW4gb3V0cHV0ICovCi0gICAgX19IQUxfVElNX01PRV9FTkFCTEUoaHRpbSk7Ci0gIH0KKyAgICAvKiBFbmFibGUgdGhlIE91dHB1dCBjb21wYXJlIGNoYW5uZWwgKi8KKyAgICBUSU1fQ0N4Q2hhbm5lbENtZChodGltLT5JbnN0YW5jZSwgQ2hhbm5lbCwgVElNX0NDeF9FTkFCTEUpOwogCi0gIC8qIEVuYWJsZSB0aGUgUGVyaXBoZXJhbCwgZXhjZXB0IGluIHRyaWdnZXIgbW9kZSB3aGVyZSBlbmFibGUgaXMgYXV0b21hdGljYWxseSBkb25lIHdpdGggdHJpZ2dlciAqLwotICBpZiAoSVNfVElNX1NMQVZFX0lOU1RBTkNFKGh0aW0tPkluc3RhbmNlKSkKLSAgewotICAgIHRtcHNtY3IgPSBodGltLT5JbnN0YW5jZS0+U01DUiAmIFRJTV9TTUNSX1NNUzsKLSAgICBpZiAoIUlTX1RJTV9TTEFWRU1PREVfVFJJR0dFUl9FTkFCTEVEKHRtcHNtY3IpKQorICAgIGlmIChJU19USU1fQlJFQUtfSU5TVEFOQ0UoaHRpbS0+SW5zdGFuY2UpICE9IFJFU0VUKQorICAgIHsKKyAgICAgIC8qIEVuYWJsZSB0aGUgbWFpbiBvdXRwdXQgKi8KKyAgICAgIF9fSEFMX1RJTV9NT0VfRU5BQkxFKGh0aW0pOworICAgIH0KKworICAgIC8qIEVuYWJsZSB0aGUgUGVyaXBoZXJhbCwgZXhjZXB0IGluIHRyaWdnZXIgbW9kZSB3aGVyZSBlbmFibGUgaXMgYXV0b21hdGljYWxseSBkb25lIHdpdGggdHJpZ2dlciAqLworICAgIGlmIChJU19USU1fU0xBVkVfSU5TVEFOQ0UoaHRpbS0+SW5zdGFuY2UpKQorICAgIHsKKyAgICAgIHRtcHNtY3IgPSBodGltLT5JbnN0YW5jZS0+U01DUiAmIFRJTV9TTUNSX1NNUzsKKyAgICAgIGlmICghSVNfVElNX1NMQVZFTU9ERV9UUklHR0VSX0VOQUJMRUQodG1wc21jcikpCisgICAgICB7CisgICAgICAgIF9fSEFMX1RJTV9FTkFCTEUoaHRpbSk7CisgICAgICB9CisgICAgfQorICAgIGVsc2UKICAgICB7CiAgICAgICBfX0hBTF9USU1fRU5BQkxFKGh0aW0pOwogICAgIH0KICAgfQotICBlbHNlCi0gIHsKLSAgICBfX0hBTF9USU1fRU5BQkxFKGh0aW0pOwotICB9CiAKICAgLyogUmV0dXJuIGZ1bmN0aW9uIHN0YXR1cyAqLwotICByZXR1cm4gSEFMX09LOworICByZXR1cm4gc3RhdHVzOwogfQogCiAvKioKQEAgLTExOTQsNiArMTIxNSw4IEBACiAgICovCiBIQUxfU3RhdHVzVHlwZURlZiBIQUxfVElNX09DX1N0b3BfRE1BKFRJTV9IYW5kbGVUeXBlRGVmICpodGltLCB1aW50MzJfdCBDaGFubmVsKQogeworICBIQUxfU3RhdHVzVHlwZURlZiBzdGF0dXMgPSBIQUxfT0s7CisKICAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8KICAgYXNzZXJ0X3BhcmFtKElTX1RJTV9DQ1hfSU5TVEFOQ0UoaHRpbS0+SW5zdGFuY2UsIENoYW5uZWwpKTsKIApAQCAtMTIzMiwyNiArMTI1NSwzMCBAQAogICAgIH0KIAogICAgIGRlZmF1bHQ6CisgICAgICBzdGF0dXMgPSBIQUxfRVJST1I7CiAgICAgICBicmVhazsKICAgfQogCi0gIC8qIERpc2FibGUgdGhlIE91dHB1dCBjb21wYXJlIGNoYW5uZWwgKi8KLSAgVElNX0NDeENoYW5uZWxDbWQoaHRpbS0+SW5zdGFuY2UsIENoYW5uZWwsIFRJTV9DQ3hfRElTQUJMRSk7Ci0KLSAgaWYgKElTX1RJTV9CUkVBS19JTlNUQU5DRShodGltLT5JbnN0YW5jZSkgIT0gUkVTRVQpCisgIGlmIChzdGF0dXMgPT0gSEFMX09LKQogICB7Ci0gICAgLyogRGlzYWJsZSB0aGUgTWFpbiBPdXRwdXQgKi8KLSAgICBfX0hBTF9USU1fTU9FX0RJU0FCTEUoaHRpbSk7CisgICAgLyogRGlzYWJsZSB0aGUgT3V0cHV0IGNvbXBhcmUgY2hhbm5lbCAqLworICAgIFRJTV9DQ3hDaGFubmVsQ21kKGh0aW0tPkluc3RhbmNlLCBDaGFubmVsLCBUSU1fQ0N4X0RJU0FCTEUpOworCisgICAgaWYgKElTX1RJTV9CUkVBS19JTlNUQU5DRShodGltLT5JbnN0YW5jZSkgIT0gUkVTRVQpCisgICAgeworICAgICAgLyogRGlzYWJsZSB0aGUgTWFpbiBPdXRwdXQgKi8KKyAgICAgIF9fSEFMX1RJTV9NT0VfRElTQUJMRShodGltKTsKKyAgICB9CisKKyAgICAvKiBEaXNhYmxlIHRoZSBQZXJpcGhlcmFsICovCisgICAgX19IQUxfVElNX0RJU0FCTEUoaHRpbSk7CisKKyAgICAvKiBTZXQgdGhlIFRJTSBjaGFubmVsIHN0YXRlICovCisgICAgVElNX0NIQU5ORUxfU1RBVEVfU0VUKGh0aW0sIENoYW5uZWwsIEhBTF9USU1fQ0hBTk5FTF9TVEFURV9SRUFEWSk7CiAgIH0KIAotICAvKiBEaXNhYmxlIHRoZSBQZXJpcGhlcmFsICovCi0gIF9fSEFMX1RJTV9ESVNBQkxFKGh0aW0pOwotCi0gIC8qIFNldCB0aGUgVElNIGNoYW5uZWwgc3RhdGUgKi8KLSAgVElNX0NIQU5ORUxfU1RBVEVfU0VUKGh0aW0sIENoYW5uZWwsIEhBTF9USU1fQ0hBTk5FTF9TVEFURV9SRUFEWSk7Ci0KICAgLyogUmV0dXJuIGZ1bmN0aW9uIHN0YXR1cyAqLwotICByZXR1cm4gSEFMX09LOworICByZXR1cm4gc3RhdHVzOwogfQogCiAvKioKQEAgLTE1MjIsNyArMTU0OSw5IEBACiAgICovCiBIQUxfU3RhdHVzVHlwZURlZiBIQUxfVElNX1BXTV9TdGFydF9JVChUSU1fSGFuZGxlVHlwZURlZiAqaHRpbSwgdWludDMyX3QgQ2hhbm5lbCkKIHsKKyAgSEFMX1N0YXR1c1R5cGVEZWYgc3RhdHVzID0gSEFMX09LOwogICB1aW50MzJfdCB0bXBzbWNyOworCiAgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCiAgIGFzc2VydF9wYXJhbShJU19USU1fQ0NYX0lOU1RBTkNFKGh0aW0tPkluc3RhbmNlLCBDaGFubmVsKSk7CiAKQEAgLTE1NjYsMzQgKzE1OTUsMzggQEAKICAgICB9CiAKICAgICBkZWZhdWx0OgorICAgICAgc3RhdHVzID0gSEFMX0VSUk9SOwogICAgICAgYnJlYWs7CiAgIH0KIAotICAvKiBFbmFibGUgdGhlIENhcHR1cmUgY29tcGFyZSBjaGFubmVsICovCi0gIFRJTV9DQ3hDaGFubmVsQ21kKGh0aW0tPkluc3RhbmNlLCBDaGFubmVsLCBUSU1fQ0N4X0VOQUJMRSk7Ci0KLSAgaWYgKElTX1RJTV9CUkVBS19JTlNUQU5DRShodGltLT5JbnN0YW5jZSkgIT0gUkVTRVQpCisgIGlmIChzdGF0dXMgPT0gSEFMX09LKQogICB7Ci0gICAgLyogRW5hYmxlIHRoZSBtYWluIG91dHB1dCAqLwotICAgIF9fSEFMX1RJTV9NT0VfRU5BQkxFKGh0aW0pOwotICB9CisgICAgLyogRW5hYmxlIHRoZSBDYXB0dXJlIGNvbXBhcmUgY2hhbm5lbCAqLworICAgIFRJTV9DQ3hDaGFubmVsQ21kKGh0aW0tPkluc3RhbmNlLCBDaGFubmVsLCBUSU1fQ0N4X0VOQUJMRSk7CiAKLSAgLyogRW5hYmxlIHRoZSBQZXJpcGhlcmFsLCBleGNlcHQgaW4gdHJpZ2dlciBtb2RlIHdoZXJlIGVuYWJsZSBpcyBhdXRvbWF0aWNhbGx5IGRvbmUgd2l0aCB0cmlnZ2VyICovCi0gIGlmIChJU19USU1fU0xBVkVfSU5TVEFOQ0UoaHRpbS0+SW5zdGFuY2UpKQotICB7Ci0gICAgdG1wc21jciA9IGh0aW0tPkluc3RhbmNlLT5TTUNSICYgVElNX1NNQ1JfU01TOwotICAgIGlmICghSVNfVElNX1NMQVZFTU9ERV9UUklHR0VSX0VOQUJMRUQodG1wc21jcikpCisgICAgaWYgKElTX1RJTV9CUkVBS19JTlNUQU5DRShodGltLT5JbnN0YW5jZSkgIT0gUkVTRVQpCisgICAgeworICAgICAgLyogRW5hYmxlIHRoZSBtYWluIG91dHB1dCAqLworICAgICAgX19IQUxfVElNX01PRV9FTkFCTEUoaHRpbSk7CisgICAgfQorCisgICAgLyogRW5hYmxlIHRoZSBQZXJpcGhlcmFsLCBleGNlcHQgaW4gdHJpZ2dlciBtb2RlIHdoZXJlIGVuYWJsZSBpcyBhdXRvbWF0aWNhbGx5IGRvbmUgd2l0aCB0cmlnZ2VyICovCisgICAgaWYgKElTX1RJTV9TTEFWRV9JTlNUQU5DRShodGltLT5JbnN0YW5jZSkpCisgICAgeworICAgICAgdG1wc21jciA9IGh0aW0tPkluc3RhbmNlLT5TTUNSICYgVElNX1NNQ1JfU01TOworICAgICAgaWYgKCFJU19USU1fU0xBVkVNT0RFX1RSSUdHRVJfRU5BQkxFRCh0bXBzbWNyKSkKKyAgICAgIHsKKyAgICAgICAgX19IQUxfVElNX0VOQUJMRShodGltKTsKKyAgICAgIH0KKyAgICB9CisgICAgZWxzZQogICAgIHsKICAgICAgIF9fSEFMX1RJTV9FTkFCTEUoaHRpbSk7CiAgICAgfQogICB9Ci0gIGVsc2UKLSAgewotICAgIF9fSEFMX1RJTV9FTkFCTEUoaHRpbSk7Ci0gIH0KIAogICAvKiBSZXR1cm4gZnVuY3Rpb24gc3RhdHVzICovCi0gIHJldHVybiBIQUxfT0s7CisgIHJldHVybiBzdGF0dXM7CiB9CiAKIC8qKgpAQCAtMTYwOSw2ICsxNjQyLDggQEAKICAgKi8KIEhBTF9TdGF0dXNUeXBlRGVmIEhBTF9USU1fUFdNX1N0b3BfSVQoVElNX0hhbmRsZVR5cGVEZWYgKmh0aW0sIHVpbnQzMl90IENoYW5uZWwpCiB7CisgIEhBTF9TdGF0dXNUeXBlRGVmIHN0YXR1cyA9IEhBTF9PSzsKKwogICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLwogICBhc3NlcnRfcGFyYW0oSVNfVElNX0NDWF9JTlNUQU5DRShodGltLT5JbnN0YW5jZSwgQ2hhbm5lbCkpOwogCkBAIC0xNjQzLDI2ICsxNjc4LDMwIEBACiAgICAgfQogCiAgICAgZGVmYXVsdDoKKyAgICAgIHN0YXR1cyA9IEhBTF9FUlJPUjsKICAgICAgIGJyZWFrOwogICB9CiAKLSAgLyogRGlzYWJsZSB0aGUgQ2FwdHVyZSBjb21wYXJlIGNoYW5uZWwgKi8KLSAgVElNX0NDeENoYW5uZWxDbWQoaHRpbS0+SW5zdGFuY2UsIENoYW5uZWwsIFRJTV9DQ3hfRElTQUJMRSk7Ci0KLSAgaWYgKElTX1RJTV9CUkVBS19JTlNUQU5DRShodGltLT5JbnN0YW5jZSkgIT0gUkVTRVQpCisgIGlmIChzdGF0dXMgPT0gSEFMX09LKQogICB7Ci0gICAgLyogRGlzYWJsZSB0aGUgTWFpbiBPdXRwdXQgKi8KLSAgICBfX0hBTF9USU1fTU9FX0RJU0FCTEUoaHRpbSk7CisgICAgLyogRGlzYWJsZSB0aGUgQ2FwdHVyZSBjb21wYXJlIGNoYW5uZWwgKi8KKyAgICBUSU1fQ0N4Q2hhbm5lbENtZChodGltLT5JbnN0YW5jZSwgQ2hhbm5lbCwgVElNX0NDeF9ESVNBQkxFKTsKKworICAgIGlmIChJU19USU1fQlJFQUtfSU5TVEFOQ0UoaHRpbS0+SW5zdGFuY2UpICE9IFJFU0VUKQorICAgIHsKKyAgICAgIC8qIERpc2FibGUgdGhlIE1haW4gT3V0cHV0ICovCisgICAgICBfX0hBTF9USU1fTU9FX0RJU0FCTEUoaHRpbSk7CisgICAgfQorCisgICAgLyogRGlzYWJsZSB0aGUgUGVyaXBoZXJhbCAqLworICAgIF9fSEFMX1RJTV9ESVNBQkxFKGh0aW0pOworCisgICAgLyogU2V0IHRoZSBUSU0gY2hhbm5lbCBzdGF0ZSAqLworICAgIFRJTV9DSEFOTkVMX1NUQVRFX1NFVChodGltLCBDaGFubmVsLCBIQUxfVElNX0NIQU5ORUxfU1RBVEVfUkVBRFkpOwogICB9CiAKLSAgLyogRGlzYWJsZSB0aGUgUGVyaXBoZXJhbCAqLwotICBfX0hBTF9USU1fRElTQUJMRShodGltKTsKLQotICAvKiBTZXQgdGhlIFRJTSBjaGFubmVsIHN0YXRlICovCi0gIFRJTV9DSEFOTkVMX1NUQVRFX1NFVChodGltLCBDaGFubmVsLCBIQUxfVElNX0NIQU5ORUxfU1RBVEVfUkVBRFkpOwotCiAgIC8qIFJldHVybiBmdW5jdGlvbiBzdGF0dXMgKi8KLSAgcmV0dXJuIEhBTF9PSzsKKyAgcmV0dXJuIHN0YXR1czsKIH0KIAogLyoqCkBAIC0xNjgwLDYgKzE3MTksNyBAQAogICAqLwogSEFMX1N0YXR1c1R5cGVEZWYgSEFMX1RJTV9QV01fU3RhcnRfRE1BKFRJTV9IYW5kbGVUeXBlRGVmICpodGltLCB1aW50MzJfdCBDaGFubmVsLCB1aW50MzJfdCAqcERhdGEsIHVpbnQxNl90IExlbmd0aCkKIHsKKyAgSEFMX1N0YXR1c1R5cGVEZWYgc3RhdHVzID0gSEFMX09LOwogICB1aW50MzJfdCB0bXBzbWNyOwogCiAgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCkBAIC0xNzE4LDcgKzE3NTgsOCBAQAogICAgICAgaHRpbS0+aGRtYVtUSU1fRE1BX0lEX0NDMV0tPlhmZXJFcnJvckNhbGxiYWNrID0gVElNX0RNQUVycm9yIDsKIAogICAgICAgLyogRW5hYmxlIHRoZSBETUEgc3RyZWFtICovCi0gICAgICBpZiAoSEFMX0RNQV9TdGFydF9JVChodGltLT5oZG1hW1RJTV9ETUFfSURfQ0MxXSwgKHVpbnQzMl90KXBEYXRhLCAodWludDMyX3QpJmh0aW0tPkluc3RhbmNlLT5DQ1IxLCBMZW5ndGgpICE9IEhBTF9PSykKKyAgICAgIGlmIChIQUxfRE1BX1N0YXJ0X0lUKGh0aW0tPmhkbWFbVElNX0RNQV9JRF9DQzFdLCAodWludDMyX3QpcERhdGEsICh1aW50MzJfdCkmaHRpbS0+SW5zdGFuY2UtPkNDUjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBMZW5ndGgpICE9IEhBTF9PSykKICAgICAgIHsKICAgICAgICAgLyogUmV0dXJuIGVycm9yIHN0YXR1cyAqLwogICAgICAgICByZXR1cm4gSEFMX0VSUk9SOwpAQCAtMTczOSw3ICsxNzgwLDggQEAKICAgICAgIGh0aW0tPmhkbWFbVElNX0RNQV9JRF9DQzJdLT5YZmVyRXJyb3JDYWxsYmFjayA9IFRJTV9ETUFFcnJvciA7CiAKICAgICAgIC8qIEVuYWJsZSB0aGUgRE1BIHN0cmVhbSAqLwotICAgICAgaWYgKEhBTF9ETUFfU3RhcnRfSVQoaHRpbS0+aGRtYVtUSU1fRE1BX0lEX0NDMl0sICh1aW50MzJfdClwRGF0YSwgKHVpbnQzMl90KSZodGltLT5JbnN0YW5jZS0+Q0NSMiwgTGVuZ3RoKSAhPSBIQUxfT0spCisgICAgICBpZiAoSEFMX0RNQV9TdGFydF9JVChodGltLT5oZG1hW1RJTV9ETUFfSURfQ0MyXSwgKHVpbnQzMl90KXBEYXRhLCAodWludDMyX3QpJmh0aW0tPkluc3RhbmNlLT5DQ1IyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgTGVuZ3RoKSAhPSBIQUxfT0spCiAgICAgICB7CiAgICAgICAgIC8qIFJldHVybiBlcnJvciBzdGF0dXMgKi8KICAgICAgICAgcmV0dXJuIEhBTF9FUlJPUjsKQEAgLTE3NTksNyArMTgwMSw4IEBACiAgICAgICBodGltLT5oZG1hW1RJTV9ETUFfSURfQ0MzXS0+WGZlckVycm9yQ2FsbGJhY2sgPSBUSU1fRE1BRXJyb3IgOwogCiAgICAgICAvKiBFbmFibGUgdGhlIERNQSBzdHJlYW0gKi8KLSAgICAgIGlmIChIQUxfRE1BX1N0YXJ0X0lUKGh0aW0tPmhkbWFbVElNX0RNQV9JRF9DQzNdLCAodWludDMyX3QpcERhdGEsICh1aW50MzJfdCkmaHRpbS0+SW5zdGFuY2UtPkNDUjMsIExlbmd0aCkgIT0gSEFMX09LKQorICAgICAgaWYgKEhBTF9ETUFfU3RhcnRfSVQoaHRpbS0+aGRtYVtUSU1fRE1BX0lEX0NDM10sICh1aW50MzJfdClwRGF0YSwgKHVpbnQzMl90KSZodGltLT5JbnN0YW5jZS0+Q0NSMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIExlbmd0aCkgIT0gSEFMX09LKQogICAgICAgewogICAgICAgICAvKiBSZXR1cm4gZXJyb3Igc3RhdHVzICovCiAgICAgICAgIHJldHVybiBIQUxfRVJST1I7CkBAIC0xNzc5LDcgKzE4MjIsOCBAQAogICAgICAgaHRpbS0+aGRtYVtUSU1fRE1BX0lEX0NDNF0tPlhmZXJFcnJvckNhbGxiYWNrID0gVElNX0RNQUVycm9yIDsKIAogICAgICAgLyogRW5hYmxlIHRoZSBETUEgc3RyZWFtICovCi0gICAgICBpZiAoSEFMX0RNQV9TdGFydF9JVChodGltLT5oZG1hW1RJTV9ETUFfSURfQ0M0XSwgKHVpbnQzMl90KXBEYXRhLCAodWludDMyX3QpJmh0aW0tPkluc3RhbmNlLT5DQ1I0LCBMZW5ndGgpICE9IEhBTF9PSykKKyAgICAgIGlmIChIQUxfRE1BX1N0YXJ0X0lUKGh0aW0tPmhkbWFbVElNX0RNQV9JRF9DQzRdLCAodWludDMyX3QpcERhdGEsICh1aW50MzJfdCkmaHRpbS0+SW5zdGFuY2UtPkNDUjQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBMZW5ndGgpICE9IEhBTF9PSykKICAgICAgIHsKICAgICAgICAgLyogUmV0dXJuIGVycm9yIHN0YXR1cyAqLwogICAgICAgICByZXR1cm4gSEFMX0VSUk9SOwpAQCAtMTc5MCwzNCArMTgzNCwzOCBAQAogICAgIH0KIAogICAgIGRlZmF1bHQ6CisgICAgICBzdGF0dXMgPSBIQUxfRVJST1I7CiAgICAgICBicmVhazsKICAgfQogCi0gIC8qIEVuYWJsZSB0aGUgQ2FwdHVyZSBjb21wYXJlIGNoYW5uZWwgKi8KLSAgVElNX0NDeENoYW5uZWxDbWQoaHRpbS0+SW5zdGFuY2UsIENoYW5uZWwsIFRJTV9DQ3hfRU5BQkxFKTsKLQotICBpZiAoSVNfVElNX0JSRUFLX0lOU1RBTkNFKGh0aW0tPkluc3RhbmNlKSAhPSBSRVNFVCkKKyAgaWYgKHN0YXR1cyA9PSBIQUxfT0spCiAgIHsKLSAgICAvKiBFbmFibGUgdGhlIG1haW4gb3V0cHV0ICovCi0gICAgX19IQUxfVElNX01PRV9FTkFCTEUoaHRpbSk7Ci0gIH0KKyAgICAvKiBFbmFibGUgdGhlIENhcHR1cmUgY29tcGFyZSBjaGFubmVsICovCisgICAgVElNX0NDeENoYW5uZWxDbWQoaHRpbS0+SW5zdGFuY2UsIENoYW5uZWwsIFRJTV9DQ3hfRU5BQkxFKTsKIAotICAvKiBFbmFibGUgdGhlIFBlcmlwaGVyYWwsIGV4Y2VwdCBpbiB0cmlnZ2VyIG1vZGUgd2hlcmUgZW5hYmxlIGlzIGF1dG9tYXRpY2FsbHkgZG9uZSB3aXRoIHRyaWdnZXIgKi8KLSAgaWYgKElTX1RJTV9TTEFWRV9JTlNUQU5DRShodGltLT5JbnN0YW5jZSkpCi0gIHsKLSAgICB0bXBzbWNyID0gaHRpbS0+SW5zdGFuY2UtPlNNQ1IgJiBUSU1fU01DUl9TTVM7Ci0gICAgaWYgKCFJU19USU1fU0xBVkVNT0RFX1RSSUdHRVJfRU5BQkxFRCh0bXBzbWNyKSkKKyAgICBpZiAoSVNfVElNX0JSRUFLX0lOU1RBTkNFKGh0aW0tPkluc3RhbmNlKSAhPSBSRVNFVCkKKyAgICB7CisgICAgICAvKiBFbmFibGUgdGhlIG1haW4gb3V0cHV0ICovCisgICAgICBfX0hBTF9USU1fTU9FX0VOQUJMRShodGltKTsKKyAgICB9CisKKyAgICAvKiBFbmFibGUgdGhlIFBlcmlwaGVyYWwsIGV4Y2VwdCBpbiB0cmlnZ2VyIG1vZGUgd2hlcmUgZW5hYmxlIGlzIGF1dG9tYXRpY2FsbHkgZG9uZSB3aXRoIHRyaWdnZXIgKi8KKyAgICBpZiAoSVNfVElNX1NMQVZFX0lOU1RBTkNFKGh0aW0tPkluc3RhbmNlKSkKKyAgICB7CisgICAgICB0bXBzbWNyID0gaHRpbS0+SW5zdGFuY2UtPlNNQ1IgJiBUSU1fU01DUl9TTVM7CisgICAgICBpZiAoIUlTX1RJTV9TTEFWRU1PREVfVFJJR0dFUl9FTkFCTEVEKHRtcHNtY3IpKQorICAgICAgeworICAgICAgICBfX0hBTF9USU1fRU5BQkxFKGh0aW0pOworICAgICAgfQorICAgIH0KKyAgICBlbHNlCiAgICAgewogICAgICAgX19IQUxfVElNX0VOQUJMRShodGltKTsKICAgICB9CiAgIH0KLSAgZWxzZQotICB7Ci0gICAgX19IQUxfVElNX0VOQUJMRShodGltKTsKLSAgfQogCiAgIC8qIFJldHVybiBmdW5jdGlvbiBzdGF0dXMgKi8KLSAgcmV0dXJuIEhBTF9PSzsKKyAgcmV0dXJuIHN0YXR1czsKIH0KIAogLyoqCkBAIC0xODMzLDYgKzE4ODEsOCBAQAogICAqLwogSEFMX1N0YXR1c1R5cGVEZWYgSEFMX1RJTV9QV01fU3RvcF9ETUEoVElNX0hhbmRsZVR5cGVEZWYgKmh0aW0sIHVpbnQzMl90IENoYW5uZWwpCiB7CisgIEhBTF9TdGF0dXNUeXBlRGVmIHN0YXR1cyA9IEhBTF9PSzsKKwogICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLwogICBhc3NlcnRfcGFyYW0oSVNfVElNX0NDWF9JTlNUQU5DRShodGltLT5JbnN0YW5jZSwgQ2hhbm5lbCkpOwogCkBAIC0xODcxLDI2ICsxOTIxLDMwIEBACiAgICAgfQogCiAgICAgZGVmYXVsdDoKKyAgICAgIHN0YXR1cyA9IEhBTF9FUlJPUjsKICAgICAgIGJyZWFrOwogICB9CiAKLSAgLyogRGlzYWJsZSB0aGUgQ2FwdHVyZSBjb21wYXJlIGNoYW5uZWwgKi8KLSAgVElNX0NDeENoYW5uZWxDbWQoaHRpbS0+SW5zdGFuY2UsIENoYW5uZWwsIFRJTV9DQ3hfRElTQUJMRSk7Ci0KLSAgaWYgKElTX1RJTV9CUkVBS19JTlNUQU5DRShodGltLT5JbnN0YW5jZSkgIT0gUkVTRVQpCisgIGlmIChzdGF0dXMgPT0gSEFMX09LKQogICB7Ci0gICAgLyogRGlzYWJsZSB0aGUgTWFpbiBPdXRwdXQgKi8KLSAgICBfX0hBTF9USU1fTU9FX0RJU0FCTEUoaHRpbSk7CisgICAgLyogRGlzYWJsZSB0aGUgQ2FwdHVyZSBjb21wYXJlIGNoYW5uZWwgKi8KKyAgICBUSU1fQ0N4Q2hhbm5lbENtZChodGltLT5JbnN0YW5jZSwgQ2hhbm5lbCwgVElNX0NDeF9ESVNBQkxFKTsKKworICAgIGlmIChJU19USU1fQlJFQUtfSU5TVEFOQ0UoaHRpbS0+SW5zdGFuY2UpICE9IFJFU0VUKQorICAgIHsKKyAgICAgIC8qIERpc2FibGUgdGhlIE1haW4gT3V0cHV0ICovCisgICAgICBfX0hBTF9USU1fTU9FX0RJU0FCTEUoaHRpbSk7CisgICAgfQorCisgICAgLyogRGlzYWJsZSB0aGUgUGVyaXBoZXJhbCAqLworICAgIF9fSEFMX1RJTV9ESVNBQkxFKGh0aW0pOworCisgICAgLyogU2V0IHRoZSBUSU0gY2hhbm5lbCBzdGF0ZSAqLworICAgIFRJTV9DSEFOTkVMX1NUQVRFX1NFVChodGltLCBDaGFubmVsLCBIQUxfVElNX0NIQU5ORUxfU1RBVEVfUkVBRFkpOwogICB9CiAKLSAgLyogRGlzYWJsZSB0aGUgUGVyaXBoZXJhbCAqLwotICBfX0hBTF9USU1fRElTQUJMRShodGltKTsKLQotICAvKiBTZXQgdGhlIFRJTSBjaGFubmVsIHN0YXRlICovCi0gIFRJTV9DSEFOTkVMX1NUQVRFX1NFVChodGltLCBDaGFubmVsLCBIQUxfVElNX0NIQU5ORUxfU1RBVEVfUkVBRFkpOwotCiAgIC8qIFJldHVybiBmdW5jdGlvbiBzdGF0dXMgKi8KLSAgcmV0dXJuIEhBTF9PSzsKKyAgcmV0dXJuIHN0YXR1czsKIH0KIAogLyoqCkBAIC0yMTUwLDcgKzIyMDQsOSBAQAogICAqLwogSEFMX1N0YXR1c1R5cGVEZWYgSEFMX1RJTV9JQ19TdGFydF9JVChUSU1fSGFuZGxlVHlwZURlZiAqaHRpbSwgdWludDMyX3QgQ2hhbm5lbCkKIHsKKyAgSEFMX1N0YXR1c1R5cGVEZWYgc3RhdHVzID0gSEFMX09LOwogICB1aW50MzJfdCB0bXBzbWNyOworCiAgIEhBTF9USU1fQ2hhbm5lbFN0YXRlVHlwZURlZiBjaGFubmVsX3N0YXRlID0gVElNX0NIQU5ORUxfU1RBVEVfR0VUKGh0aW0sIENoYW5uZWwpOwogICBIQUxfVElNX0NoYW5uZWxTdGF0ZVR5cGVEZWYgY29tcGxlbWVudGFyeV9jaGFubmVsX3N0YXRlID0gVElNX0NIQU5ORUxfTl9TVEFURV9HRVQoaHRpbSwgQ2hhbm5lbCk7CiAKQEAgLTIxOTksMjcgKzIyNTUsMzIgQEAKICAgICB9CiAKICAgICBkZWZhdWx0OgorICAgICAgc3RhdHVzID0gSEFMX0VSUk9SOwogICAgICAgYnJlYWs7CiAgIH0KLSAgLyogRW5hYmxlIHRoZSBJbnB1dCBDYXB0dXJlIGNoYW5uZWwgKi8KLSAgVElNX0NDeENoYW5uZWxDbWQoaHRpbS0+SW5zdGFuY2UsIENoYW5uZWwsIFRJTV9DQ3hfRU5BQkxFKTsKIAotICAvKiBFbmFibGUgdGhlIFBlcmlwaGVyYWwsIGV4Y2VwdCBpbiB0cmlnZ2VyIG1vZGUgd2hlcmUgZW5hYmxlIGlzIGF1dG9tYXRpY2FsbHkgZG9uZSB3aXRoIHRyaWdnZXIgKi8KLSAgaWYgKElTX1RJTV9TTEFWRV9JTlNUQU5DRShodGltLT5JbnN0YW5jZSkpCisgIGlmIChzdGF0dXMgPT0gSEFMX09LKQogICB7Ci0gICAgdG1wc21jciA9IGh0aW0tPkluc3RhbmNlLT5TTUNSICYgVElNX1NNQ1JfU01TOwotICAgIGlmICghSVNfVElNX1NMQVZFTU9ERV9UUklHR0VSX0VOQUJMRUQodG1wc21jcikpCisgICAgLyogRW5hYmxlIHRoZSBJbnB1dCBDYXB0dXJlIGNoYW5uZWwgKi8KKyAgICBUSU1fQ0N4Q2hhbm5lbENtZChodGltLT5JbnN0YW5jZSwgQ2hhbm5lbCwgVElNX0NDeF9FTkFCTEUpOworCisgICAgLyogRW5hYmxlIHRoZSBQZXJpcGhlcmFsLCBleGNlcHQgaW4gdHJpZ2dlciBtb2RlIHdoZXJlIGVuYWJsZSBpcyBhdXRvbWF0aWNhbGx5IGRvbmUgd2l0aCB0cmlnZ2VyICovCisgICAgaWYgKElTX1RJTV9TTEFWRV9JTlNUQU5DRShodGltLT5JbnN0YW5jZSkpCisgICAgeworICAgICAgdG1wc21jciA9IGh0aW0tPkluc3RhbmNlLT5TTUNSICYgVElNX1NNQ1JfU01TOworICAgICAgaWYgKCFJU19USU1fU0xBVkVNT0RFX1RSSUdHRVJfRU5BQkxFRCh0bXBzbWNyKSkKKyAgICAgIHsKKyAgICAgICAgX19IQUxfVElNX0VOQUJMRShodGltKTsKKyAgICAgIH0KKyAgICB9CisgICAgZWxzZQogICAgIHsKICAgICAgIF9fSEFMX1RJTV9FTkFCTEUoaHRpbSk7CiAgICAgfQogICB9Ci0gIGVsc2UKLSAgewotICAgIF9fSEFMX1RJTV9FTkFCTEUoaHRpbSk7Ci0gIH0KIAogICAvKiBSZXR1cm4gZnVuY3Rpb24gc3RhdHVzICovCi0gIHJldHVybiBIQUxfT0s7CisgIHJldHVybiBzdGF0dXM7CiB9CiAKIC8qKgpAQCAtMjIzNSw2ICsyMjk2LDggQEAKICAgKi8KIEhBTF9TdGF0dXNUeXBlRGVmIEhBTF9USU1fSUNfU3RvcF9JVChUSU1fSGFuZGxlVHlwZURlZiAqaHRpbSwgdWludDMyX3QgQ2hhbm5lbCkKIHsKKyAgSEFMX1N0YXR1c1R5cGVEZWYgc3RhdHVzID0gSEFMX09LOworCiAgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCiAgIGFzc2VydF9wYXJhbShJU19USU1fQ0NYX0lOU1RBTkNFKGh0aW0tPkluc3RhbmNlLCBDaGFubmVsKSk7CiAKQEAgLTIyNjksMjEgKzIzMzIsMjUgQEAKICAgICB9CiAKICAgICBkZWZhdWx0OgorICAgICAgc3RhdHVzID0gSEFMX0VSUk9SOwogICAgICAgYnJlYWs7CiAgIH0KIAotICAvKiBEaXNhYmxlIHRoZSBJbnB1dCBDYXB0dXJlIGNoYW5uZWwgKi8KLSAgVElNX0NDeENoYW5uZWxDbWQoaHRpbS0+SW5zdGFuY2UsIENoYW5uZWwsIFRJTV9DQ3hfRElTQUJMRSk7CisgIGlmIChzdGF0dXMgPT0gSEFMX09LKQorICB7CisgICAgLyogRGlzYWJsZSB0aGUgSW5wdXQgQ2FwdHVyZSBjaGFubmVsICovCisgICAgVElNX0NDeENoYW5uZWxDbWQoaHRpbS0+SW5zdGFuY2UsIENoYW5uZWwsIFRJTV9DQ3hfRElTQUJMRSk7CiAKLSAgLyogRGlzYWJsZSB0aGUgUGVyaXBoZXJhbCAqLwotICBfX0hBTF9USU1fRElTQUJMRShodGltKTsKKyAgICAvKiBEaXNhYmxlIHRoZSBQZXJpcGhlcmFsICovCisgICAgX19IQUxfVElNX0RJU0FCTEUoaHRpbSk7CiAKLSAgLyogU2V0IHRoZSBUSU0gY2hhbm5lbCBzdGF0ZSAqLwotICBUSU1fQ0hBTk5FTF9TVEFURV9TRVQoaHRpbSwgQ2hhbm5lbCwgSEFMX1RJTV9DSEFOTkVMX1NUQVRFX1JFQURZKTsKLSAgVElNX0NIQU5ORUxfTl9TVEFURV9TRVQoaHRpbSwgQ2hhbm5lbCwgSEFMX1RJTV9DSEFOTkVMX1NUQVRFX1JFQURZKTsKKyAgICAvKiBTZXQgdGhlIFRJTSBjaGFubmVsIHN0YXRlICovCisgICAgVElNX0NIQU5ORUxfU1RBVEVfU0VUKGh0aW0sIENoYW5uZWwsIEhBTF9USU1fQ0hBTk5FTF9TVEFURV9SRUFEWSk7CisgICAgVElNX0NIQU5ORUxfTl9TVEFURV9TRVQoaHRpbSwgQ2hhbm5lbCwgSEFMX1RJTV9DSEFOTkVMX1NUQVRFX1JFQURZKTsKKyAgfQogCiAgIC8qIFJldHVybiBmdW5jdGlvbiBzdGF0dXMgKi8KLSAgcmV0dXJuIEhBTF9PSzsKKyAgcmV0dXJuIHN0YXR1czsKIH0KIAogLyoqCkBAIC0yMzAxLDcgKzIzNjgsOSBAQAogICAqLwogSEFMX1N0YXR1c1R5cGVEZWYgSEFMX1RJTV9JQ19TdGFydF9ETUEoVElNX0hhbmRsZVR5cGVEZWYgKmh0aW0sIHVpbnQzMl90IENoYW5uZWwsIHVpbnQzMl90ICpwRGF0YSwgdWludDE2X3QgTGVuZ3RoKQogeworICBIQUxfU3RhdHVzVHlwZURlZiBzdGF0dXMgPSBIQUxfT0s7CiAgIHVpbnQzMl90IHRtcHNtY3I7CisKICAgSEFMX1RJTV9DaGFubmVsU3RhdGVUeXBlRGVmIGNoYW5uZWxfc3RhdGUgPSBUSU1fQ0hBTk5FTF9TVEFURV9HRVQoaHRpbSwgQ2hhbm5lbCk7CiAgIEhBTF9USU1fQ2hhbm5lbFN0YXRlVHlwZURlZiBjb21wbGVtZW50YXJ5X2NoYW5uZWxfc3RhdGUgPSBUSU1fQ0hBTk5FTF9OX1NUQVRFX0dFVChodGltLCBDaGFubmVsKTsKIApAQCAtMjMzNiwyMCArMjQwNSw2IEBACiAgIC8qIEVuYWJsZSB0aGUgSW5wdXQgQ2FwdHVyZSBjaGFubmVsICovCiAgIFRJTV9DQ3hDaGFubmVsQ21kKGh0aW0tPkluc3RhbmNlLCBDaGFubmVsLCBUSU1fQ0N4X0VOQUJMRSk7CiAKLSAgLyogRW5hYmxlIHRoZSBQZXJpcGhlcmFsLCBleGNlcHQgaW4gdHJpZ2dlciBtb2RlIHdoZXJlIGVuYWJsZSBpcyBhdXRvbWF0aWNhbGx5IGRvbmUgd2l0aCB0cmlnZ2VyICovCi0gIGlmIChJU19USU1fU0xBVkVfSU5TVEFOQ0UoaHRpbS0+SW5zdGFuY2UpKQotICB7Ci0gICAgdG1wc21jciA9IGh0aW0tPkluc3RhbmNlLT5TTUNSICYgVElNX1NNQ1JfU01TOwotICAgIGlmICghSVNfVElNX1NMQVZFTU9ERV9UUklHR0VSX0VOQUJMRUQodG1wc21jcikpCi0gICAgewotICAgICAgX19IQUxfVElNX0VOQUJMRShodGltKTsKLSAgICB9Ci0gIH0KLSAgZWxzZQotICB7Ci0gICAgX19IQUxfVElNX0VOQUJMRShodGltKTsKLSAgfQotCiAgIHN3aXRjaCAoQ2hhbm5lbCkKICAgewogICAgIGNhc2UgVElNX0NIQU5ORUxfMToKQEAgLTIzNjIsNyArMjQxNyw4IEBACiAgICAgICBodGltLT5oZG1hW1RJTV9ETUFfSURfQ0MxXS0+WGZlckVycm9yQ2FsbGJhY2sgPSBUSU1fRE1BRXJyb3IgOwogCiAgICAgICAvKiBFbmFibGUgdGhlIERNQSBzdHJlYW0gKi8KLSAgICAgIGlmIChIQUxfRE1BX1N0YXJ0X0lUKGh0aW0tPmhkbWFbVElNX0RNQV9JRF9DQzFdLCAodWludDMyX3QpJmh0aW0tPkluc3RhbmNlLT5DQ1IxLCAodWludDMyX3QpcERhdGEsIExlbmd0aCkgIT0gSEFMX09LKQorICAgICAgaWYgKEhBTF9ETUFfU3RhcnRfSVQoaHRpbS0+aGRtYVtUSU1fRE1BX0lEX0NDMV0sICh1aW50MzJfdCkmaHRpbS0+SW5zdGFuY2UtPkNDUjEsICh1aW50MzJfdClwRGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIExlbmd0aCkgIT0gSEFMX09LKQogICAgICAgewogICAgICAgICAvKiBSZXR1cm4gZXJyb3Igc3RhdHVzICovCiAgICAgICAgIHJldHVybiBIQUxfRVJST1I7CkBAIC0yMzgyLDcgKzI0MzgsOCBAQAogICAgICAgaHRpbS0+aGRtYVtUSU1fRE1BX0lEX0NDMl0tPlhmZXJFcnJvckNhbGxiYWNrID0gVElNX0RNQUVycm9yIDsKIAogICAgICAgLyogRW5hYmxlIHRoZSBETUEgc3RyZWFtICovCi0gICAgICBpZiAoSEFMX0RNQV9TdGFydF9JVChodGltLT5oZG1hW1RJTV9ETUFfSURfQ0MyXSwgKHVpbnQzMl90KSZodGltLT5JbnN0YW5jZS0+Q0NSMiwgKHVpbnQzMl90KXBEYXRhLCBMZW5ndGgpICE9IEhBTF9PSykKKyAgICAgIGlmIChIQUxfRE1BX1N0YXJ0X0lUKGh0aW0tPmhkbWFbVElNX0RNQV9JRF9DQzJdLCAodWludDMyX3QpJmh0aW0tPkluc3RhbmNlLT5DQ1IyLCAodWludDMyX3QpcERhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBMZW5ndGgpICE9IEhBTF9PSykKICAgICAgIHsKICAgICAgICAgLyogUmV0dXJuIGVycm9yIHN0YXR1cyAqLwogICAgICAgICByZXR1cm4gSEFMX0VSUk9SOwpAQCAtMjQwMiw3ICsyNDU5LDggQEAKICAgICAgIGh0aW0tPmhkbWFbVElNX0RNQV9JRF9DQzNdLT5YZmVyRXJyb3JDYWxsYmFjayA9IFRJTV9ETUFFcnJvciA7CiAKICAgICAgIC8qIEVuYWJsZSB0aGUgRE1BIHN0cmVhbSAqLwotICAgICAgaWYgKEhBTF9ETUFfU3RhcnRfSVQoaHRpbS0+aGRtYVtUSU1fRE1BX0lEX0NDM10sICh1aW50MzJfdCkmaHRpbS0+SW5zdGFuY2UtPkNDUjMsICh1aW50MzJfdClwRGF0YSwgTGVuZ3RoKSAhPSBIQUxfT0spCisgICAgICBpZiAoSEFMX0RNQV9TdGFydF9JVChodGltLT5oZG1hW1RJTV9ETUFfSURfQ0MzXSwgKHVpbnQzMl90KSZodGltLT5JbnN0YW5jZS0+Q0NSMywgKHVpbnQzMl90KXBEYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgTGVuZ3RoKSAhPSBIQUxfT0spCiAgICAgICB7CiAgICAgICAgIC8qIFJldHVybiBlcnJvciBzdGF0dXMgKi8KICAgICAgICAgcmV0dXJuIEhBTF9FUlJPUjsKQEAgLTI0MjIsNyArMjQ4MCw4IEBACiAgICAgICBodGltLT5oZG1hW1RJTV9ETUFfSURfQ0M0XS0+WGZlckVycm9yQ2FsbGJhY2sgPSBUSU1fRE1BRXJyb3IgOwogCiAgICAgICAvKiBFbmFibGUgdGhlIERNQSBzdHJlYW0gKi8KLSAgICAgIGlmIChIQUxfRE1BX1N0YXJ0X0lUKGh0aW0tPmhkbWFbVElNX0RNQV9JRF9DQzRdLCAodWludDMyX3QpJmh0aW0tPkluc3RhbmNlLT5DQ1I0LCAodWludDMyX3QpcERhdGEsIExlbmd0aCkgIT0gSEFMX09LKQorICAgICAgaWYgKEhBTF9ETUFfU3RhcnRfSVQoaHRpbS0+aGRtYVtUSU1fRE1BX0lEX0NDNF0sICh1aW50MzJfdCkmaHRpbS0+SW5zdGFuY2UtPkNDUjQsICh1aW50MzJfdClwRGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIExlbmd0aCkgIT0gSEFMX09LKQogICAgICAgewogICAgICAgICAvKiBSZXR1cm4gZXJyb3Igc3RhdHVzICovCiAgICAgICAgIHJldHVybiBIQUxfRVJST1I7CkBAIC0yNDMzLDExICsyNDkyLDI2IEBACiAgICAgfQogCiAgICAgZGVmYXVsdDoKKyAgICAgIHN0YXR1cyA9IEhBTF9FUlJPUjsKICAgICAgIGJyZWFrOwogICB9CiAKKyAgLyogRW5hYmxlIHRoZSBQZXJpcGhlcmFsLCBleGNlcHQgaW4gdHJpZ2dlciBtb2RlIHdoZXJlIGVuYWJsZSBpcyBhdXRvbWF0aWNhbGx5IGRvbmUgd2l0aCB0cmlnZ2VyICovCisgIGlmIChJU19USU1fU0xBVkVfSU5TVEFOQ0UoaHRpbS0+SW5zdGFuY2UpKQorICB7CisgICAgdG1wc21jciA9IGh0aW0tPkluc3RhbmNlLT5TTUNSICYgVElNX1NNQ1JfU01TOworICAgIGlmICghSVNfVElNX1NMQVZFTU9ERV9UUklHR0VSX0VOQUJMRUQodG1wc21jcikpCisgICAgeworICAgICAgX19IQUxfVElNX0VOQUJMRShodGltKTsKKyAgICB9CisgIH0KKyAgZWxzZQorICB7CisgICAgX19IQUxfVElNX0VOQUJMRShodGltKTsKKyAgfQorCiAgIC8qIFJldHVybiBmdW5jdGlvbiBzdGF0dXMgKi8KLSAgcmV0dXJuIEhBTF9PSzsKKyAgcmV0dXJuIHN0YXR1czsKIH0KIAogLyoqCkBAIC0yNDUzLDYgKzI1MjcsOCBAQAogICAqLwogSEFMX1N0YXR1c1R5cGVEZWYgSEFMX1RJTV9JQ19TdG9wX0RNQShUSU1fSGFuZGxlVHlwZURlZiAqaHRpbSwgdWludDMyX3QgQ2hhbm5lbCkKIHsKKyAgSEFMX1N0YXR1c1R5cGVEZWYgc3RhdHVzID0gSEFMX09LOworCiAgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCiAgIGFzc2VydF9wYXJhbShJU19USU1fQ0NYX0lOU1RBTkNFKGh0aW0tPkluc3RhbmNlLCBDaGFubmVsKSk7CiAgIGFzc2VydF9wYXJhbShJU19USU1fRE1BX0NDX0lOU1RBTkNFKGh0aW0tPkluc3RhbmNlKSk7CkBAIC0yNDk1LDE4ICsyNTcxLDIyIEBACiAgICAgfQogCiAgICAgZGVmYXVsdDoKKyAgICAgIHN0YXR1cyA9IEhBTF9FUlJPUjsKICAgICAgIGJyZWFrOwogICB9CiAKLSAgLyogRGlzYWJsZSB0aGUgUGVyaXBoZXJhbCAqLwotICBfX0hBTF9USU1fRElTQUJMRShodGltKTsKKyAgaWYgKHN0YXR1cyA9PSBIQUxfT0spCisgIHsKKyAgICAvKiBEaXNhYmxlIHRoZSBQZXJpcGhlcmFsICovCisgICAgX19IQUxfVElNX0RJU0FCTEUoaHRpbSk7CiAKLSAgLyogU2V0IHRoZSBUSU0gY2hhbm5lbCBzdGF0ZSAqLwotICBUSU1fQ0hBTk5FTF9TVEFURV9TRVQoaHRpbSwgQ2hhbm5lbCwgSEFMX1RJTV9DSEFOTkVMX1NUQVRFX1JFQURZKTsKLSAgVElNX0NIQU5ORUxfTl9TVEFURV9TRVQoaHRpbSwgQ2hhbm5lbCwgSEFMX1RJTV9DSEFOTkVMX1NUQVRFX1JFQURZKTsKKyAgICAvKiBTZXQgdGhlIFRJTSBjaGFubmVsIHN0YXRlICovCisgICAgVElNX0NIQU5ORUxfU1RBVEVfU0VUKGh0aW0sIENoYW5uZWwsIEhBTF9USU1fQ0hBTk5FTF9TVEFURV9SRUFEWSk7CisgICAgVElNX0NIQU5ORUxfTl9TVEFURV9TRVQoaHRpbSwgQ2hhbm5lbCwgSEFMX1RJTV9DSEFOTkVMX1NUQVRFX1JFQURZKTsKKyAgfQogCiAgIC8qIFJldHVybiBmdW5jdGlvbiBzdGF0dXMgKi8KLSAgcmV0dXJuIEhBTF9PSzsKKyAgcmV0dXJuIHN0YXR1czsKIH0KIC8qKgogICAqIEB9CkBAIC0yNjkyLDggKzI3NzIsOCBAQAogICAqIEBicmllZiAgU3RhcnRzIHRoZSBUSU0gT25lIFB1bHNlIHNpZ25hbCBnZW5lcmF0aW9uLgogICAqIEBub3RlIFRob3VnaCBPdXRwdXRDaGFubmVsIHBhcmFtZXRlciBpcyBkZXByZWNhdGVkIGFuZCBpZ25vcmVkIGJ5IHRoZSBmdW5jdGlvbgogICAqICAgICAgICBpdCBoYXMgYmVlbiBrZXB0IHRvIGF2b2lkIEhBTF9USU0gQVBJIGNvbXBhdGliaWxpdHkgYnJlYWsuCi0gICogQG5vdGUgVGhlIHB1bHNlIG91dHB1dCBjaGFubmVsIGlzIGRldGVybWluZWQgd2hlbiBjYWxsaW5nIAotICAqICAgICAgIEByZWYgSEFMX1RJTV9PbmVQdWxzZV9Db25maWdDaGFubmVsKCkuIAorICAqIEBub3RlIFRoZSBwdWxzZSBvdXRwdXQgY2hhbm5lbCBpcyBkZXRlcm1pbmVkIHdoZW4gY2FsbGluZworICAqICAgICAgIEByZWYgSEFMX1RJTV9PbmVQdWxzZV9Db25maWdDaGFubmVsKCkuCiAgICogQHBhcmFtICBodGltIFRJTSBPbmUgUHVsc2UgaGFuZGxlCiAgICogQHBhcmFtICBPdXRwdXRDaGFubmVsIFNlZSBub3RlIGFib3ZlCiAgICogQHJldHZhbCBIQUwgc3RhdHVzCkBAIC0yNzQ5LDggKzI4MjksOCBAQAogICAqIEBicmllZiAgU3RvcHMgdGhlIFRJTSBPbmUgUHVsc2Ugc2lnbmFsIGdlbmVyYXRpb24uCiAgICogQG5vdGUgVGhvdWdoIE91dHB1dENoYW5uZWwgcGFyYW1ldGVyIGlzIGRlcHJlY2F0ZWQgYW5kIGlnbm9yZWQgYnkgdGhlIGZ1bmN0aW9uCiAgICogICAgICAgIGl0IGhhcyBiZWVuIGtlcHQgdG8gYXZvaWQgSEFMX1RJTSBBUEkgY29tcGF0aWJpbGl0eSBicmVhay4KLSAgKiBAbm90ZSBUaGUgcHVsc2Ugb3V0cHV0IGNoYW5uZWwgaXMgZGV0ZXJtaW5lZCB3aGVuIGNhbGxpbmcgCi0gICogICAgICAgQHJlZiBIQUxfVElNX09uZVB1bHNlX0NvbmZpZ0NoYW5uZWwoKS4gCisgICogQG5vdGUgVGhlIHB1bHNlIG91dHB1dCBjaGFubmVsIGlzIGRldGVybWluZWQgd2hlbiBjYWxsaW5nCisgICogICAgICAgQHJlZiBIQUxfVElNX09uZVB1bHNlX0NvbmZpZ0NoYW5uZWwoKS4KICAgKiBAcGFyYW0gIGh0aW0gVElNIE9uZSBQdWxzZSBoYW5kbGUKICAgKiBAcGFyYW0gIE91dHB1dENoYW5uZWwgU2VlIG5vdGUgYWJvdmUKICAgKiBAcmV0dmFsIEhBTCBzdGF0dXMKQEAgLTI3OTIsOCArMjg3Miw4IEBACiAgICogQGJyaWVmICBTdGFydHMgdGhlIFRJTSBPbmUgUHVsc2Ugc2lnbmFsIGdlbmVyYXRpb24gaW4gaW50ZXJydXB0IG1vZGUuCiAgICogQG5vdGUgVGhvdWdoIE91dHB1dENoYW5uZWwgcGFyYW1ldGVyIGlzIGRlcHJlY2F0ZWQgYW5kIGlnbm9yZWQgYnkgdGhlIGZ1bmN0aW9uCiAgICogICAgICAgIGl0IGhhcyBiZWVuIGtlcHQgdG8gYXZvaWQgSEFMX1RJTSBBUEkgY29tcGF0aWJpbGl0eSBicmVhay4KLSAgKiBAbm90ZSBUaGUgcHVsc2Ugb3V0cHV0IGNoYW5uZWwgaXMgZGV0ZXJtaW5lZCB3aGVuIGNhbGxpbmcgCi0gICogICAgICAgQHJlZiBIQUxfVElNX09uZVB1bHNlX0NvbmZpZ0NoYW5uZWwoKS4gCisgICogQG5vdGUgVGhlIHB1bHNlIG91dHB1dCBjaGFubmVsIGlzIGRldGVybWluZWQgd2hlbiBjYWxsaW5nCisgICogICAgICAgQHJlZiBIQUxfVElNX09uZVB1bHNlX0NvbmZpZ0NoYW5uZWwoKS4KICAgKiBAcGFyYW0gIGh0aW0gVElNIE9uZSBQdWxzZSBoYW5kbGUKICAgKiBAcGFyYW0gIE91dHB1dENoYW5uZWwgU2VlIG5vdGUgYWJvdmUKICAgKiBAcmV0dmFsIEhBTCBzdGF0dXMKQEAgLTI4NTUsOCArMjkzNSw4IEBACiAgICogQGJyaWVmICBTdG9wcyB0aGUgVElNIE9uZSBQdWxzZSBzaWduYWwgZ2VuZXJhdGlvbiBpbiBpbnRlcnJ1cHQgbW9kZS4KICAgKiBAbm90ZSBUaG91Z2ggT3V0cHV0Q2hhbm5lbCBwYXJhbWV0ZXIgaXMgZGVwcmVjYXRlZCBhbmQgaWdub3JlZCBieSB0aGUgZnVuY3Rpb24KICAgKiAgICAgICAgaXQgaGFzIGJlZW4ga2VwdCB0byBhdm9pZCBIQUxfVElNIEFQSSBjb21wYXRpYmlsaXR5IGJyZWFrLgotICAqIEBub3RlIFRoZSBwdWxzZSBvdXRwdXQgY2hhbm5lbCBpcyBkZXRlcm1pbmVkIHdoZW4gY2FsbGluZyAKLSAgKiAgICAgICBAcmVmIEhBTF9USU1fT25lUHVsc2VfQ29uZmlnQ2hhbm5lbCgpLiAKKyAgKiBAbm90ZSBUaGUgcHVsc2Ugb3V0cHV0IGNoYW5uZWwgaXMgZGV0ZXJtaW5lZCB3aGVuIGNhbGxpbmcKKyAgKiAgICAgICBAcmVmIEhBTF9USU1fT25lUHVsc2VfQ29uZmlnQ2hhbm5lbCgpLgogICAqIEBwYXJhbSAgaHRpbSBUSU0gT25lIFB1bHNlIGhhbmRsZQogICAqIEBwYXJhbSAgT3V0cHV0Q2hhbm5lbCBTZWUgbm90ZSBhYm92ZQogICAqIEByZXR2YWwgSEFMIHN0YXR1cwpAQCAtMzU1OSw3ICszNjM5LDggQEAKICAgICAgIGh0aW0tPmhkbWFbVElNX0RNQV9JRF9DQzFdLT5YZmVyRXJyb3JDYWxsYmFjayA9IFRJTV9ETUFFcnJvciA7CiAKICAgICAgIC8qIEVuYWJsZSB0aGUgRE1BIHN0cmVhbSAqLwotICAgICAgaWYgKEhBTF9ETUFfU3RhcnRfSVQoaHRpbS0+aGRtYVtUSU1fRE1BX0lEX0NDMV0sICh1aW50MzJfdCkmaHRpbS0+SW5zdGFuY2UtPkNDUjEsICh1aW50MzJfdClwRGF0YTEsIExlbmd0aCkgIT0gSEFMX09LKQorICAgICAgaWYgKEhBTF9ETUFfU3RhcnRfSVQoaHRpbS0+aGRtYVtUSU1fRE1BX0lEX0NDMV0sICh1aW50MzJfdCkmaHRpbS0+SW5zdGFuY2UtPkNDUjEsICh1aW50MzJfdClwRGF0YTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBMZW5ndGgpICE9IEhBTF9PSykKICAgICAgIHsKICAgICAgICAgLyogUmV0dXJuIGVycm9yIHN0YXR1cyAqLwogICAgICAgICByZXR1cm4gSEFMX0VSUk9SOwpAQCAtMzU2NywxMSArMzY0OCwxMiBAQAogICAgICAgLyogRW5hYmxlIHRoZSBUSU0gSW5wdXQgQ2FwdHVyZSBETUEgcmVxdWVzdCAqLwogICAgICAgX19IQUxfVElNX0VOQUJMRV9ETUEoaHRpbSwgVElNX0RNQV9DQzEpOwogCisgICAgICAvKiBFbmFibGUgdGhlIENhcHR1cmUgY29tcGFyZSBjaGFubmVsICovCisgICAgICBUSU1fQ0N4Q2hhbm5lbENtZChodGltLT5JbnN0YW5jZSwgVElNX0NIQU5ORUxfMSwgVElNX0NDeF9FTkFCTEUpOworCiAgICAgICAvKiBFbmFibGUgdGhlIFBlcmlwaGVyYWwgKi8KICAgICAgIF9fSEFMX1RJTV9FTkFCTEUoaHRpbSk7CiAKLSAgICAgIC8qIEVuYWJsZSB0aGUgQ2FwdHVyZSBjb21wYXJlIGNoYW5uZWwgKi8KLSAgICAgIFRJTV9DQ3hDaGFubmVsQ21kKGh0aW0tPkluc3RhbmNlLCBUSU1fQ0hBTk5FTF8xLCBUSU1fQ0N4X0VOQUJMRSk7CiAgICAgICBicmVhazsKICAgICB9CiAKQEAgLTM1ODQsNyArMzY2Niw4IEBACiAgICAgICAvKiBTZXQgdGhlIERNQSBlcnJvciBjYWxsYmFjayAqLwogICAgICAgaHRpbS0+aGRtYVtUSU1fRE1BX0lEX0NDMl0tPlhmZXJFcnJvckNhbGxiYWNrID0gVElNX0RNQUVycm9yOwogICAgICAgLyogRW5hYmxlIHRoZSBETUEgc3RyZWFtICovCi0gICAgICBpZiAoSEFMX0RNQV9TdGFydF9JVChodGltLT5oZG1hW1RJTV9ETUFfSURfQ0MyXSwgKHVpbnQzMl90KSZodGltLT5JbnN0YW5jZS0+Q0NSMiwgKHVpbnQzMl90KXBEYXRhMiwgTGVuZ3RoKSAhPSBIQUxfT0spCisgICAgICBpZiAoSEFMX0RNQV9TdGFydF9JVChodGltLT5oZG1hW1RJTV9ETUFfSURfQ0MyXSwgKHVpbnQzMl90KSZodGltLT5JbnN0YW5jZS0+Q0NSMiwgKHVpbnQzMl90KXBEYXRhMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIExlbmd0aCkgIT0gSEFMX09LKQogICAgICAgewogICAgICAgICAvKiBSZXR1cm4gZXJyb3Igc3RhdHVzICovCiAgICAgICAgIHJldHVybiBIQUxfRVJST1I7CkBAIC0zNTkyLDE1ICszNjc1LDE2IEBACiAgICAgICAvKiBFbmFibGUgdGhlIFRJTSBJbnB1dCBDYXB0dXJlICBETUEgcmVxdWVzdCAqLwogICAgICAgX19IQUxfVElNX0VOQUJMRV9ETUEoaHRpbSwgVElNX0RNQV9DQzIpOwogCisgICAgICAvKiBFbmFibGUgdGhlIENhcHR1cmUgY29tcGFyZSBjaGFubmVsICovCisgICAgICBUSU1fQ0N4Q2hhbm5lbENtZChodGltLT5JbnN0YW5jZSwgVElNX0NIQU5ORUxfMiwgVElNX0NDeF9FTkFCTEUpOworCiAgICAgICAvKiBFbmFibGUgdGhlIFBlcmlwaGVyYWwgKi8KICAgICAgIF9fSEFMX1RJTV9FTkFCTEUoaHRpbSk7CiAKLSAgICAgIC8qIEVuYWJsZSB0aGUgQ2FwdHVyZSBjb21wYXJlIGNoYW5uZWwgKi8KLSAgICAgIFRJTV9DQ3hDaGFubmVsQ21kKGh0aW0tPkluc3RhbmNlLCBUSU1fQ0hBTk5FTF8yLCBUSU1fQ0N4X0VOQUJMRSk7CiAgICAgICBicmVhazsKICAgICB9CiAKLSAgICBjYXNlIFRJTV9DSEFOTkVMX0FMTDoKKyAgICBkZWZhdWx0OgogICAgIHsKICAgICAgIC8qIFNldCB0aGUgRE1BIGNhcHR1cmUgY2FsbGJhY2tzICovCiAgICAgICBodGltLT5oZG1hW1RJTV9ETUFfSURfQ0MxXS0+WGZlckNwbHRDYWxsYmFjayA9IFRJTV9ETUFDYXB0dXJlQ3BsdDsKQEAgLTM2MTAsNyArMzY5NCw4IEBACiAgICAgICBodGltLT5oZG1hW1RJTV9ETUFfSURfQ0MxXS0+WGZlckVycm9yQ2FsbGJhY2sgPSBUSU1fRE1BRXJyb3IgOwogCiAgICAgICAvKiBFbmFibGUgdGhlIERNQSBzdHJlYW0gKi8KLSAgICAgIGlmIChIQUxfRE1BX1N0YXJ0X0lUKGh0aW0tPmhkbWFbVElNX0RNQV9JRF9DQzFdLCAodWludDMyX3QpJmh0aW0tPkluc3RhbmNlLT5DQ1IxLCAodWludDMyX3QpcERhdGExLCBMZW5ndGgpICE9IEhBTF9PSykKKyAgICAgIGlmIChIQUxfRE1BX1N0YXJ0X0lUKGh0aW0tPmhkbWFbVElNX0RNQV9JRF9DQzFdLCAodWludDMyX3QpJmh0aW0tPkluc3RhbmNlLT5DQ1IxLCAodWludDMyX3QpcERhdGExLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgTGVuZ3RoKSAhPSBIQUxfT0spCiAgICAgICB7CiAgICAgICAgIC8qIFJldHVybiBlcnJvciBzdGF0dXMgKi8KICAgICAgICAgcmV0dXJuIEhBTF9FUlJPUjsKQEAgLTM2MjQsMjcgKzM3MDksMjcgQEAKICAgICAgIGh0aW0tPmhkbWFbVElNX0RNQV9JRF9DQzJdLT5YZmVyRXJyb3JDYWxsYmFjayA9IFRJTV9ETUFFcnJvciA7CiAKICAgICAgIC8qIEVuYWJsZSB0aGUgRE1BIHN0cmVhbSAqLwotICAgICAgaWYgKEhBTF9ETUFfU3RhcnRfSVQoaHRpbS0+aGRtYVtUSU1fRE1BX0lEX0NDMl0sICh1aW50MzJfdCkmaHRpbS0+SW5zdGFuY2UtPkNDUjIsICh1aW50MzJfdClwRGF0YTIsIExlbmd0aCkgIT0gSEFMX09LKQorICAgICAgaWYgKEhBTF9ETUFfU3RhcnRfSVQoaHRpbS0+aGRtYVtUSU1fRE1BX0lEX0NDMl0sICh1aW50MzJfdCkmaHRpbS0+SW5zdGFuY2UtPkNDUjIsICh1aW50MzJfdClwRGF0YTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBMZW5ndGgpICE9IEhBTF9PSykKICAgICAgIHsKICAgICAgICAgLyogUmV0dXJuIGVycm9yIHN0YXR1cyAqLwogICAgICAgICByZXR1cm4gSEFMX0VSUk9SOwogICAgICAgfQotICAgICAgLyogRW5hYmxlIHRoZSBQZXJpcGhlcmFsICovCi0gICAgICBfX0hBTF9USU1fRU5BQkxFKGh0aW0pOwotCi0gICAgICAvKiBFbmFibGUgdGhlIENhcHR1cmUgY29tcGFyZSBjaGFubmVsICovCi0gICAgICBUSU1fQ0N4Q2hhbm5lbENtZChodGltLT5JbnN0YW5jZSwgVElNX0NIQU5ORUxfMSwgVElNX0NDeF9FTkFCTEUpOwotICAgICAgVElNX0NDeENoYW5uZWxDbWQoaHRpbS0+SW5zdGFuY2UsIFRJTV9DSEFOTkVMXzIsIFRJTV9DQ3hfRU5BQkxFKTsKIAogICAgICAgLyogRW5hYmxlIHRoZSBUSU0gSW5wdXQgQ2FwdHVyZSAgRE1BIHJlcXVlc3QgKi8KICAgICAgIF9fSEFMX1RJTV9FTkFCTEVfRE1BKGh0aW0sIFRJTV9ETUFfQ0MxKTsKICAgICAgIC8qIEVuYWJsZSB0aGUgVElNIElucHV0IENhcHR1cmUgIERNQSByZXF1ZXN0ICovCiAgICAgICBfX0hBTF9USU1fRU5BQkxFX0RNQShodGltLCBUSU1fRE1BX0NDMik7CisKKyAgICAgIC8qIEVuYWJsZSB0aGUgQ2FwdHVyZSBjb21wYXJlIGNoYW5uZWwgKi8KKyAgICAgIFRJTV9DQ3hDaGFubmVsQ21kKGh0aW0tPkluc3RhbmNlLCBUSU1fQ0hBTk5FTF8xLCBUSU1fQ0N4X0VOQUJMRSk7CisgICAgICBUSU1fQ0N4Q2hhbm5lbENtZChodGltLT5JbnN0YW5jZSwgVElNX0NIQU5ORUxfMiwgVElNX0NDeF9FTkFCTEUpOworCisgICAgICAvKiBFbmFibGUgdGhlIFBlcmlwaGVyYWwgKi8KKyAgICAgIF9fSEFMX1RJTV9FTkFCTEUoaHRpbSk7CisKICAgICAgIGJyZWFrOwogICAgIH0KLQotICAgIGRlZmF1bHQ6Ci0gICAgICBicmVhazsKICAgfQogCiAgIC8qIFJldHVybiBmdW5jdGlvbiBzdGF0dXMgKi8KQEAgLTM5NzIsNiArNDA1Nyw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVElNX09DX0luaXRUeXBlRGVmICpzQ29uZmlnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IENoYW5uZWwpCiB7CisgIEhBTF9TdGF0dXNUeXBlRGVmIHN0YXR1cyA9IEhBTF9PSzsKKwogICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLwogICBhc3NlcnRfcGFyYW0oSVNfVElNX0NIQU5ORUxTKENoYW5uZWwpKTsKICAgYXNzZXJ0X3BhcmFtKElTX1RJTV9PQ19NT0RFKHNDb25maWctPk9DTW9kZSkpOwpAQCAtNDA0MywxMiArNDEzMCwxMyBAQAogICAgIH0KIAogICAgIGRlZmF1bHQ6CisgICAgICBzdGF0dXMgPSBIQUxfRVJST1I7CiAgICAgICBicmVhazsKICAgfQogCiAgIF9fSEFMX1VOTE9DSyhodGltKTsKIAotICByZXR1cm4gSEFMX09LOworICByZXR1cm4gc3RhdHVzOwogfQogCiAvKioKQEAgLTQwNjYsNiArNDE1NCw4IEBACiAgICovCiBIQUxfU3RhdHVzVHlwZURlZiBIQUxfVElNX0lDX0NvbmZpZ0NoYW5uZWwoVElNX0hhbmRsZVR5cGVEZWYgKmh0aW0sIFRJTV9JQ19Jbml0VHlwZURlZiAqc0NvbmZpZywgdWludDMyX3QgQ2hhbm5lbCkKIHsKKyAgSEFMX1N0YXR1c1R5cGVEZWYgc3RhdHVzID0gSEFMX09LOworCiAgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCiAgIGFzc2VydF9wYXJhbShJU19USU1fQ0MxX0lOU1RBTkNFKGh0aW0tPkluc3RhbmNlKSk7CiAgIGFzc2VydF9wYXJhbShJU19USU1fSUNfUE9MQVJJVFkoc0NvbmZpZy0+SUNQb2xhcml0eSkpOwpAQCAtNDEyMiw3ICs0MjEyLDcgQEAKICAgICAvKiBTZXQgdGhlIElDM1BTQyB2YWx1ZSAqLwogICAgIGh0aW0tPkluc3RhbmNlLT5DQ01SMiB8PSBzQ29uZmlnLT5JQ1ByZXNjYWxlcjsKICAgfQotICBlbHNlCisgIGVsc2UgaWYgKENoYW5uZWwgPT0gVElNX0NIQU5ORUxfNCkKICAgewogICAgIC8qIFRJNCBDb25maWd1cmF0aW9uICovCiAgICAgYXNzZXJ0X3BhcmFtKElTX1RJTV9DQzRfSU5TVEFOQ0UoaHRpbS0+SW5zdGFuY2UpKTsKQEAgLTQxMzgsMTAgKzQyMjgsMTQgQEAKICAgICAvKiBTZXQgdGhlIElDNFBTQyB2YWx1ZSAqLwogICAgIGh0aW0tPkluc3RhbmNlLT5DQ01SMiB8PSAoc0NvbmZpZy0+SUNQcmVzY2FsZXIgPDwgOFUpOwogICB9CisgIGVsc2UKKyAgeworICAgIHN0YXR1cyA9IEhBTF9FUlJPUjsKKyAgfQogCiAgIF9fSEFMX1VOTE9DSyhodGltKTsKIAotICByZXR1cm4gSEFMX09LOworICByZXR1cm4gc3RhdHVzOwogfQogCiAvKioKQEAgLTQxNjMsNiArNDI1Nyw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJTV9PQ19Jbml0VHlwZURlZiAqc0NvbmZpZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgQ2hhbm5lbCkKIHsKKyAgSEFMX1N0YXR1c1R5cGVEZWYgc3RhdHVzID0gSEFMX09LOworCiAgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCiAgIGFzc2VydF9wYXJhbShJU19USU1fQ0hBTk5FTFMoQ2hhbm5lbCkpOwogICBhc3NlcnRfcGFyYW0oSVNfVElNX1BXTV9NT0RFKHNDb25maWctPk9DTW9kZSkpOwpAQCAtNDI3NywxMiArNDM3MywxMyBAQAogICAgIH0KIAogICAgIGRlZmF1bHQ6CisgICAgICBzdGF0dXMgPSBIQUxfRVJST1I7CiAgICAgICBicmVhazsKICAgfQogCiAgIF9fSEFMX1VOTE9DSyhodGltKTsKIAotICByZXR1cm4gSEFMX09LOworICByZXR1cm4gc3RhdHVzOwogfQogCiAvKioKQEAgLTQzMDcsNiArNDQwNCw3IEBACiBIQUxfU3RhdHVzVHlwZURlZiBIQUxfVElNX09uZVB1bHNlX0NvbmZpZ0NoYW5uZWwoVElNX0hhbmRsZVR5cGVEZWYgKmh0aW0sICBUSU1fT25lUHVsc2VfSW5pdFR5cGVEZWYgKnNDb25maWcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgT3V0cHV0Q2hhbm5lbCwgIHVpbnQzMl90IElucHV0Q2hhbm5lbCkKIHsKKyAgSEFMX1N0YXR1c1R5cGVEZWYgc3RhdHVzID0gSEFMX09LOwogICBUSU1fT0NfSW5pdFR5cGVEZWYgdGVtcDE7CiAKICAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8KQEAgLTQzMzcsNiArNDQzNSw3IEBACiAgICAgICAgIFRJTV9PQzFfU2V0Q29uZmlnKGh0aW0tPkluc3RhbmNlLCAmdGVtcDEpOwogICAgICAgICBicmVhazsKICAgICAgIH0KKwogICAgICAgY2FzZSBUSU1fQ0hBTk5FTF8yOgogICAgICAgewogICAgICAgICBhc3NlcnRfcGFyYW0oSVNfVElNX0NDMl9JTlNUQU5DRShodGltLT5JbnN0YW5jZSkpOwpAQCAtNDM0NCw2MCArNDQ0Myw2NyBAQAogICAgICAgICBUSU1fT0MyX1NldENvbmZpZyhodGltLT5JbnN0YW5jZSwgJnRlbXAxKTsKICAgICAgICAgYnJlYWs7CiAgICAgICB9CisKICAgICAgIGRlZmF1bHQ6CisgICAgICAgIHN0YXR1cyA9IEhBTF9FUlJPUjsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgc3dpdGNoIChJbnB1dENoYW5uZWwpCisgICAgaWYgKHN0YXR1cyA9PSBIQUxfT0spCiAgICAgewotICAgICAgY2FzZSBUSU1fQ0hBTk5FTF8xOgorICAgICAgc3dpdGNoIChJbnB1dENoYW5uZWwpCiAgICAgICB7Ci0gICAgICAgIGFzc2VydF9wYXJhbShJU19USU1fQ0MxX0lOU1RBTkNFKGh0aW0tPkluc3RhbmNlKSk7CisgICAgICAgIGNhc2UgVElNX0NIQU5ORUxfMToKKyAgICAgICAgeworICAgICAgICAgIGFzc2VydF9wYXJhbShJU19USU1fQ0MxX0lOU1RBTkNFKGh0aW0tPkluc3RhbmNlKSk7CiAKLSAgICAgICAgVElNX1RJMV9TZXRDb25maWcoaHRpbS0+SW5zdGFuY2UsIHNDb25maWctPklDUG9sYXJpdHksCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHNDb25maWctPklDU2VsZWN0aW9uLCBzQ29uZmlnLT5JQ0ZpbHRlcik7CisgICAgICAgICAgVElNX1RJMV9TZXRDb25maWcoaHRpbS0+SW5zdGFuY2UsIHNDb25maWctPklDUG9sYXJpdHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc0NvbmZpZy0+SUNTZWxlY3Rpb24sIHNDb25maWctPklDRmlsdGVyKTsKIAotICAgICAgICAvKiBSZXNldCB0aGUgSUMxUFNDIEJpdHMgKi8KLSAgICAgICAgaHRpbS0+SW5zdGFuY2UtPkNDTVIxICY9IH5USU1fQ0NNUjFfSUMxUFNDOworICAgICAgICAgIC8qIFJlc2V0IHRoZSBJQzFQU0MgQml0cyAqLworICAgICAgICAgIGh0aW0tPkluc3RhbmNlLT5DQ01SMSAmPSB+VElNX0NDTVIxX0lDMVBTQzsKIAotICAgICAgICAvKiBTZWxlY3QgdGhlIFRyaWdnZXIgc291cmNlICovCi0gICAgICAgIGh0aW0tPkluc3RhbmNlLT5TTUNSICY9IH5USU1fU01DUl9UUzsKLSAgICAgICAgaHRpbS0+SW5zdGFuY2UtPlNNQ1IgfD0gVElNX1RTX1RJMUZQMTsKKyAgICAgICAgICAvKiBTZWxlY3QgdGhlIFRyaWdnZXIgc291cmNlICovCisgICAgICAgICAgaHRpbS0+SW5zdGFuY2UtPlNNQ1IgJj0gflRJTV9TTUNSX1RTOworICAgICAgICAgIGh0aW0tPkluc3RhbmNlLT5TTUNSIHw9IFRJTV9UU19USTFGUDE7CiAKLSAgICAgICAgLyogU2VsZWN0IHRoZSBTbGF2ZSBNb2RlICovCi0gICAgICAgIGh0aW0tPkluc3RhbmNlLT5TTUNSICY9IH5USU1fU01DUl9TTVM7Ci0gICAgICAgIGh0aW0tPkluc3RhbmNlLT5TTUNSIHw9IFRJTV9TTEFWRU1PREVfVFJJR0dFUjsKLSAgICAgICAgYnJlYWs7CisgICAgICAgICAgLyogU2VsZWN0IHRoZSBTbGF2ZSBNb2RlICovCisgICAgICAgICAgaHRpbS0+SW5zdGFuY2UtPlNNQ1IgJj0gflRJTV9TTUNSX1NNUzsKKyAgICAgICAgICBodGltLT5JbnN0YW5jZS0+U01DUiB8PSBUSU1fU0xBVkVNT0RFX1RSSUdHRVI7CisgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBjYXNlIFRJTV9DSEFOTkVMXzI6CisgICAgICAgIHsKKyAgICAgICAgICBhc3NlcnRfcGFyYW0oSVNfVElNX0NDMl9JTlNUQU5DRShodGltLT5JbnN0YW5jZSkpOworCisgICAgICAgICAgVElNX1RJMl9TZXRDb25maWcoaHRpbS0+SW5zdGFuY2UsIHNDb25maWctPklDUG9sYXJpdHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc0NvbmZpZy0+SUNTZWxlY3Rpb24sIHNDb25maWctPklDRmlsdGVyKTsKKworICAgICAgICAgIC8qIFJlc2V0IHRoZSBJQzJQU0MgQml0cyAqLworICAgICAgICAgIGh0aW0tPkluc3RhbmNlLT5DQ01SMSAmPSB+VElNX0NDTVIxX0lDMlBTQzsKKworICAgICAgICAgIC8qIFNlbGVjdCB0aGUgVHJpZ2dlciBzb3VyY2UgKi8KKyAgICAgICAgICBodGltLT5JbnN0YW5jZS0+U01DUiAmPSB+VElNX1NNQ1JfVFM7CisgICAgICAgICAgaHRpbS0+SW5zdGFuY2UtPlNNQ1IgfD0gVElNX1RTX1RJMkZQMjsKKworICAgICAgICAgIC8qIFNlbGVjdCB0aGUgU2xhdmUgTW9kZSAqLworICAgICAgICAgIGh0aW0tPkluc3RhbmNlLT5TTUNSICY9IH5USU1fU01DUl9TTVM7CisgICAgICAgICAgaHRpbS0+SW5zdGFuY2UtPlNNQ1IgfD0gVElNX1NMQVZFTU9ERV9UUklHR0VSOworICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICBzdGF0dXMgPSBIQUxfRVJST1I7CisgICAgICAgICAgYnJlYWs7CiAgICAgICB9Ci0gICAgICBjYXNlIFRJTV9DSEFOTkVMXzI6Ci0gICAgICB7Ci0gICAgICAgIGFzc2VydF9wYXJhbShJU19USU1fQ0MyX0lOU1RBTkNFKGh0aW0tPkluc3RhbmNlKSk7Ci0KLSAgICAgICAgVElNX1RJMl9TZXRDb25maWcoaHRpbS0+SW5zdGFuY2UsIHNDb25maWctPklDUG9sYXJpdHksCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHNDb25maWctPklDU2VsZWN0aW9uLCBzQ29uZmlnLT5JQ0ZpbHRlcik7Ci0KLSAgICAgICAgLyogUmVzZXQgdGhlIElDMlBTQyBCaXRzICovCi0gICAgICAgIGh0aW0tPkluc3RhbmNlLT5DQ01SMSAmPSB+VElNX0NDTVIxX0lDMlBTQzsKLQotICAgICAgICAvKiBTZWxlY3QgdGhlIFRyaWdnZXIgc291cmNlICovCi0gICAgICAgIGh0aW0tPkluc3RhbmNlLT5TTUNSICY9IH5USU1fU01DUl9UUzsKLSAgICAgICAgaHRpbS0+SW5zdGFuY2UtPlNNQ1IgfD0gVElNX1RTX1RJMkZQMjsKLQotICAgICAgICAvKiBTZWxlY3QgdGhlIFNsYXZlIE1vZGUgKi8KLSAgICAgICAgaHRpbS0+SW5zdGFuY2UtPlNNQ1IgJj0gflRJTV9TTUNSX1NNUzsKLSAgICAgICAgaHRpbS0+SW5zdGFuY2UtPlNNQ1IgfD0gVElNX1NMQVZFTU9ERV9UUklHR0VSOwotICAgICAgICBicmVhazsKLSAgICAgIH0KLQotICAgICAgZGVmYXVsdDoKLSAgICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAgaHRpbS0+U3RhdGUgPSBIQUxfVElNX1NUQVRFX1JFQURZOwogCiAgICAgX19IQUxfVU5MT0NLKGh0aW0pOwogCi0gICAgcmV0dXJuIEhBTF9PSzsKKyAgICByZXR1cm4gc3RhdHVzOwogICB9CiAgIGVsc2UKICAgewpAQCAtNDQyOSw5ICs0NTM1LDkgQEAKICAgKiAgICAgICAgICAgIEBhcmcgVElNX0RNQUJBU0VfQ0NSNAogICAqICAgICAgICAgICAgQGFyZyBUSU1fRE1BQkFTRV9CRFRSCiAgICogICAgICAgICAgICBAYXJnIFRJTV9ETUFCQVNFX09SCi0gICogICAgICAgICAgICBAYXJnIFRJTV9ETUFCQVNFX0NDTVIzIAotICAqICAgICAgICAgICAgQGFyZyBUSU1fRE1BQkFTRV9DQ1I1IAotICAqICAgICAgICAgICAgQGFyZyBUSU1fRE1BQkFTRV9DQ1I2IAorICAqICAgICAgICAgICAgQGFyZyBUSU1fRE1BQkFTRV9DQ01SMworICAqICAgICAgICAgICAgQGFyZyBUSU1fRE1BQkFTRV9DQ1I1CisgICogICAgICAgICAgICBAYXJnIFRJTV9ETUFCQVNFX0NDUjYKICAgKiAgICAgICAgICAgIEBhcmcgVElNX0RNQUJBU0VfQUYxICAoKikKICAgKiAgICAgICAgICAgIEBhcmcgVElNX0RNQUJBU0VfQUYyICAoKikKICAgKiAgICAgICAgICgqKSB2YWx1ZSBub3QgZGVmaW5lZCBpbiBhbGwgZGV2aWNlcwpAQCAtNDQ1Myw4ICs0NTU5LDE0IEBACiBIQUxfU3RhdHVzVHlwZURlZiBIQUxfVElNX0RNQUJ1cnN0X1dyaXRlU3RhcnQoVElNX0hhbmRsZVR5cGVEZWYgKmh0aW0sIHVpbnQzMl90IEJ1cnN0QmFzZUFkZHJlc3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgQnVyc3RSZXF1ZXN0U3JjLCB1aW50MzJfdCAqQnVyc3RCdWZmZXIsIHVpbnQzMl90ICBCdXJzdExlbmd0aCkKIHsKLSAgcmV0dXJuIEhBTF9USU1fRE1BQnVyc3RfTXVsdGlXcml0ZVN0YXJ0KGh0aW0sIEJ1cnN0QmFzZUFkZHJlc3MsIEJ1cnN0UmVxdWVzdFNyYywgQnVyc3RCdWZmZXIsIEJ1cnN0TGVuZ3RoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChCdXJzdExlbmd0aCkgPj4gOFUpICsgMVUpOworICBIQUxfU3RhdHVzVHlwZURlZiBzdGF0dXM7CisKKyAgc3RhdHVzID0gSEFMX1RJTV9ETUFCdXJzdF9NdWx0aVdyaXRlU3RhcnQoaHRpbSwgQnVyc3RCYXNlQWRkcmVzcywgQnVyc3RSZXF1ZXN0U3JjLCBCdXJzdEJ1ZmZlciwgQnVyc3RMZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoQnVyc3RMZW5ndGgpID4+IDhVKSArIDFVKTsKKworCisKKyAgcmV0dXJuIHN0YXR1czsKIH0KIAogLyoqCkBAIC00NDgxLDkgKzQ1OTMsOSBAQAogICAqICAgICAgICAgICAgQGFyZyBUSU1fRE1BQkFTRV9DQ1I0CiAgICogICAgICAgICAgICBAYXJnIFRJTV9ETUFCQVNFX0JEVFIKICAgKiAgICAgICAgICAgIEBhcmcgVElNX0RNQUJBU0VfT1IKLSAgKiAgICAgICAgICAgIEBhcmcgVElNX0RNQUJBU0VfQ0NNUjMgCi0gICogICAgICAgICAgICBAYXJnIFRJTV9ETUFCQVNFX0NDUjUgCi0gICogICAgICAgICAgICBAYXJnIFRJTV9ETUFCQVNFX0NDUjYgCisgICogICAgICAgICAgICBAYXJnIFRJTV9ETUFCQVNFX0NDTVIzCisgICogICAgICAgICAgICBAYXJnIFRJTV9ETUFCQVNFX0NDUjUKKyAgKiAgICAgICAgICAgIEBhcmcgVElNX0RNQUJBU0VfQ0NSNgogICAqICAgICAgICAgICAgQGFyZyBUSU1fRE1BQkFTRV9BRjEgICgqKQogICAqICAgICAgICAgICAgQGFyZyBUSU1fRE1BQkFTRV9BRjIgICgqKQogICAqICAgICAgICAgKCopIHZhbHVlIG5vdCBkZWZpbmVkIGluIGFsbCBkZXZpY2VzCkBAIC00NTA3LDYgKzQ2MTksOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgQnVyc3RSZXF1ZXN0U3JjLCB1aW50MzJfdCAqQnVyc3RCdWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCAgQnVyc3RMZW5ndGgsICB1aW50MzJfdCAgRGF0YUxlbmd0aCkKIHsKKyAgSEFMX1N0YXR1c1R5cGVEZWYgc3RhdHVzID0gSEFMX09LOworCiAgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCiAgIGFzc2VydF9wYXJhbShJU19USU1fRE1BQlVSU1RfSU5TVEFOQ0UoaHRpbS0+SW5zdGFuY2UpKTsKICAgYXNzZXJ0X3BhcmFtKElTX1RJTV9ETUFfQkFTRShCdXJzdEJhc2VBZGRyZXNzKSk7CkBAIC00NTMzLDYgKzQ2NDcsNyBAQAogICB7CiAgICAgLyogbm90aGluZyB0byBkbyAqLwogICB9CisKICAgc3dpdGNoIChCdXJzdFJlcXVlc3RTcmMpCiAgIHsKICAgICBjYXNlIFRJTV9ETUFfVVBEQVRFOgpAQCAtNDU0Niw3ICs0NjYxLDcgQEAKIAogICAgICAgLyogRW5hYmxlIHRoZSBETUEgc3RyZWFtICovCiAgICAgICBpZiAoSEFMX0RNQV9TdGFydF9JVChodGltLT5oZG1hW1RJTV9ETUFfSURfVVBEQVRFXSwgKHVpbnQzMl90KUJ1cnN0QnVmZmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICh1aW50MzJfdCkmaHRpbS0+SW5zdGFuY2UtPkRNQVIsIERhdGFMZW5ndGgpICE9IEhBTF9PSykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICh1aW50MzJfdCkmaHRpbS0+SW5zdGFuY2UtPkRNQVIsIERhdGFMZW5ndGgpICE9IEhBTF9PSykKICAgICAgIHsKICAgICAgICAgLyogUmV0dXJuIGVycm9yIHN0YXR1cyAqLwogICAgICAgICByZXR1cm4gSEFMX0VSUk9SOwpAQCAtNDU2NCw3ICs0Njc5LDcgQEAKIAogICAgICAgLyogRW5hYmxlIHRoZSBETUEgc3RyZWFtICovCiAgICAgICBpZiAoSEFMX0RNQV9TdGFydF9JVChodGltLT5oZG1hW1RJTV9ETUFfSURfQ0MxXSwgKHVpbnQzMl90KUJ1cnN0QnVmZmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICh1aW50MzJfdCkmaHRpbS0+SW5zdGFuY2UtPkRNQVIsIERhdGFMZW5ndGgpICE9IEhBTF9PSykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICh1aW50MzJfdCkmaHRpbS0+SW5zdGFuY2UtPkRNQVIsIERhdGFMZW5ndGgpICE9IEhBTF9PSykKICAgICAgIHsKICAgICAgICAgLyogUmV0dXJuIGVycm9yIHN0YXR1cyAqLwogICAgICAgICByZXR1cm4gSEFMX0VSUk9SOwpAQCAtNDU4Miw3ICs0Njk3LDcgQEAKIAogICAgICAgLyogRW5hYmxlIHRoZSBETUEgc3RyZWFtICovCiAgICAgICBpZiAoSEFMX0RNQV9TdGFydF9JVChodGltLT5oZG1hW1RJTV9ETUFfSURfQ0MyXSwgKHVpbnQzMl90KUJ1cnN0QnVmZmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICh1aW50MzJfdCkmaHRpbS0+SW5zdGFuY2UtPkRNQVIsIERhdGFMZW5ndGgpICE9IEhBTF9PSykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICh1aW50MzJfdCkmaHRpbS0+SW5zdGFuY2UtPkRNQVIsIERhdGFMZW5ndGgpICE9IEhBTF9PSykKICAgICAgIHsKICAgICAgICAgLyogUmV0dXJuIGVycm9yIHN0YXR1cyAqLwogICAgICAgICByZXR1cm4gSEFMX0VSUk9SOwpAQCAtNDYwMCw3ICs0NzE1LDcgQEAKIAogICAgICAgLyogRW5hYmxlIHRoZSBETUEgc3RyZWFtICovCiAgICAgICBpZiAoSEFMX0RNQV9TdGFydF9JVChodGltLT5oZG1hW1RJTV9ETUFfSURfQ0MzXSwgKHVpbnQzMl90KUJ1cnN0QnVmZmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICh1aW50MzJfdCkmaHRpbS0+SW5zdGFuY2UtPkRNQVIsIERhdGFMZW5ndGgpICE9IEhBTF9PSykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICh1aW50MzJfdCkmaHRpbS0+SW5zdGFuY2UtPkRNQVIsIERhdGFMZW5ndGgpICE9IEhBTF9PSykKICAgICAgIHsKICAgICAgICAgLyogUmV0dXJuIGVycm9yIHN0YXR1cyAqLwogICAgICAgICByZXR1cm4gSEFMX0VSUk9SOwpAQCAtNDYxOCw3ICs0NzMzLDcgQEAKIAogICAgICAgLyogRW5hYmxlIHRoZSBETUEgc3RyZWFtICovCiAgICAgICBpZiAoSEFMX0RNQV9TdGFydF9JVChodGltLT5oZG1hW1RJTV9ETUFfSURfQ0M0XSwgKHVpbnQzMl90KUJ1cnN0QnVmZmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICh1aW50MzJfdCkmaHRpbS0+SW5zdGFuY2UtPkRNQVIsIERhdGFMZW5ndGgpICE9IEhBTF9PSykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICh1aW50MzJfdCkmaHRpbS0+SW5zdGFuY2UtPkRNQVIsIERhdGFMZW5ndGgpICE9IEhBTF9PSykKICAgICAgIHsKICAgICAgICAgLyogUmV0dXJuIGVycm9yIHN0YXR1cyAqLwogICAgICAgICByZXR1cm4gSEFMX0VSUk9SOwpAQCAtNDYzNiw3ICs0NzUxLDcgQEAKIAogICAgICAgLyogRW5hYmxlIHRoZSBETUEgc3RyZWFtICovCiAgICAgICBpZiAoSEFMX0RNQV9TdGFydF9JVChodGltLT5oZG1hW1RJTV9ETUFfSURfQ09NTVVUQVRJT05dLCAodWludDMyX3QpQnVyc3RCdWZmZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgKHVpbnQzMl90KSZodGltLT5JbnN0YW5jZS0+RE1BUiwgRGF0YUxlbmd0aCkgIT0gSEFMX09LKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVpbnQzMl90KSZodGltLT5JbnN0YW5jZS0+RE1BUiwgRGF0YUxlbmd0aCkgIT0gSEFMX09LKQogICAgICAgewogICAgICAgICAvKiBSZXR1cm4gZXJyb3Igc3RhdHVzICovCiAgICAgICAgIHJldHVybiBIQUxfRVJST1I7CkBAIC00NjU0LDcgKzQ3NjksNyBAQAogCiAgICAgICAvKiBFbmFibGUgdGhlIERNQSBzdHJlYW0gKi8KICAgICAgIGlmIChIQUxfRE1BX1N0YXJ0X0lUKGh0aW0tPmhkbWFbVElNX0RNQV9JRF9UUklHR0VSXSwgKHVpbnQzMl90KUJ1cnN0QnVmZmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICh1aW50MzJfdCkmaHRpbS0+SW5zdGFuY2UtPkRNQVIsIERhdGFMZW5ndGgpICE9IEhBTF9PSykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICh1aW50MzJfdCkmaHRpbS0+SW5zdGFuY2UtPkRNQVIsIERhdGFMZW5ndGgpICE9IEhBTF9PSykKICAgICAgIHsKICAgICAgICAgLyogUmV0dXJuIGVycm9yIHN0YXR1cyAqLwogICAgICAgICByZXR1cm4gSEFMX0VSUk9SOwpAQCAtNDY2MiwxNiArNDc3NywyMCBAQAogICAgICAgYnJlYWs7CiAgICAgfQogICAgIGRlZmF1bHQ6CisgICAgICBzdGF0dXMgPSBIQUxfRVJST1I7CiAgICAgICBicmVhazsKICAgfQogCi0gIC8qIENvbmZpZ3VyZSB0aGUgRE1BIEJ1cnN0IE1vZGUgKi8KLSAgaHRpbS0+SW5zdGFuY2UtPkRDUiA9IChCdXJzdEJhc2VBZGRyZXNzIHwgQnVyc3RMZW5ndGgpOwotICAvKiBFbmFibGUgdGhlIFRJTSBETUEgUmVxdWVzdCAqLwotICBfX0hBTF9USU1fRU5BQkxFX0RNQShodGltLCBCdXJzdFJlcXVlc3RTcmMpOworICBpZiAoc3RhdHVzID09IEhBTF9PSykKKyAgeworICAgIC8qIENvbmZpZ3VyZSB0aGUgRE1BIEJ1cnN0IE1vZGUgKi8KKyAgICBodGltLT5JbnN0YW5jZS0+RENSID0gKEJ1cnN0QmFzZUFkZHJlc3MgfCBCdXJzdExlbmd0aCk7CisgICAgLyogRW5hYmxlIHRoZSBUSU0gRE1BIFJlcXVlc3QgKi8KKyAgICBfX0hBTF9USU1fRU5BQkxFX0RNQShodGltLCBCdXJzdFJlcXVlc3RTcmMpOworICB9CiAKICAgLyogUmV0dXJuIGZ1bmN0aW9uIHN0YXR1cyAqLwotICByZXR1cm4gSEFMX09LOworICByZXR1cm4gc3RhdHVzOwogfQogCiAvKioKQEAgLTQ2ODIsNiArNDgwMSw4IEBACiAgICovCiBIQUxfU3RhdHVzVHlwZURlZiBIQUxfVElNX0RNQUJ1cnN0X1dyaXRlU3RvcChUSU1fSGFuZGxlVHlwZURlZiAqaHRpbSwgdWludDMyX3QgQnVyc3RSZXF1ZXN0U3JjKQogeworICBIQUxfU3RhdHVzVHlwZURlZiBzdGF0dXMgPSBIQUxfT0s7CisKICAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8KICAgYXNzZXJ0X3BhcmFtKElTX1RJTV9ETUFfU09VUkNFKEJ1cnN0UmVxdWVzdFNyYykpOwogCkBAIC00NzI0LDE3ICs0ODQ1LDIxIEBACiAgICAgICBicmVhazsKICAgICB9CiAgICAgZGVmYXVsdDoKKyAgICAgIHN0YXR1cyA9IEhBTF9FUlJPUjsKICAgICAgIGJyZWFrOwogICB9CiAKLSAgLyogRGlzYWJsZSB0aGUgVElNIFVwZGF0ZSBETUEgcmVxdWVzdCAqLwotICBfX0hBTF9USU1fRElTQUJMRV9ETUEoaHRpbSwgQnVyc3RSZXF1ZXN0U3JjKTsKKyAgaWYgKHN0YXR1cyA9PSBIQUxfT0spCisgIHsKKyAgICAvKiBEaXNhYmxlIHRoZSBUSU0gVXBkYXRlIERNQSByZXF1ZXN0ICovCisgICAgX19IQUxfVElNX0RJU0FCTEVfRE1BKGh0aW0sIEJ1cnN0UmVxdWVzdFNyYyk7CiAKLSAgLyogQ2hhbmdlIHRoZSBETUEgYnVyc3Qgb3BlcmF0aW9uIHN0YXRlICovCi0gIGh0aW0tPkRNQUJ1cnN0U3RhdGUgPSBIQUxfRE1BX0JVUlNUX1NUQVRFX1JFQURZOworICAgIC8qIENoYW5nZSB0aGUgRE1BIGJ1cnN0IG9wZXJhdGlvbiBzdGF0ZSAqLworICAgIGh0aW0tPkRNQUJ1cnN0U3RhdGUgPSBIQUxfRE1BX0JVUlNUX1NUQVRFX1JFQURZOworICB9CiAKICAgLyogUmV0dXJuIGZ1bmN0aW9uIHN0YXR1cyAqLwotICByZXR1cm4gSEFMX09LOworICByZXR1cm4gc3RhdHVzOwogfQogCiAvKioKQEAgLTQ3NjEsOSArNDg4Niw5IEBACiAgICogICAgICAgICAgICBAYXJnIFRJTV9ETUFCQVNFX0NDUjQKICAgKiAgICAgICAgICAgIEBhcmcgVElNX0RNQUJBU0VfQkRUUgogICAqICAgICAgICAgICAgQGFyZyBUSU1fRE1BQkFTRV9PUgotICAqICAgICAgICAgICAgQGFyZyBUSU1fRE1BQkFTRV9DQ01SMyAKLSAgKiAgICAgICAgICAgIEBhcmcgVElNX0RNQUJBU0VfQ0NSNSAKLSAgKiAgICAgICAgICAgIEBhcmcgVElNX0RNQUJBU0VfQ0NSNiAKKyAgKiAgICAgICAgICAgIEBhcmcgVElNX0RNQUJBU0VfQ0NNUjMKKyAgKiAgICAgICAgICAgIEBhcmcgVElNX0RNQUJBU0VfQ0NSNQorICAqICAgICAgICAgICAgQGFyZyBUSU1fRE1BQkFTRV9DQ1I2CiAgICogICAgICAgICAgICBAYXJnIFRJTV9ETUFCQVNFX0FGMSAgKCopCiAgICogICAgICAgICAgICBAYXJnIFRJTV9ETUFCQVNFX0FGMiAgKCopCiAgICogICAgICAgICAoKikgdmFsdWUgbm90IGRlZmluZWQgaW4gYWxsIGRldmljZXMKQEAgLTQ3ODUsOCArNDkxMCwxMyBAQAogSEFMX1N0YXR1c1R5cGVEZWYgSEFMX1RJTV9ETUFCdXJzdF9SZWFkU3RhcnQoVElNX0hhbmRsZVR5cGVEZWYgKmh0aW0sIHVpbnQzMl90IEJ1cnN0QmFzZUFkZHJlc3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBCdXJzdFJlcXVlc3RTcmMsIHVpbnQzMl90ICAqQnVyc3RCdWZmZXIsIHVpbnQzMl90ICBCdXJzdExlbmd0aCkKIHsKLSAgcmV0dXJuIEhBTF9USU1fRE1BQnVyc3RfTXVsdGlSZWFkU3RhcnQoaHRpbSwgQnVyc3RCYXNlQWRkcmVzcywgQnVyc3RSZXF1ZXN0U3JjLCBCdXJzdEJ1ZmZlciwgQnVyc3RMZW5ndGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoQnVyc3RMZW5ndGgpID4+IDhVKSArIDFVKTsKKyAgSEFMX1N0YXR1c1R5cGVEZWYgc3RhdHVzOworCisgIHN0YXR1cyA9IEhBTF9USU1fRE1BQnVyc3RfTXVsdGlSZWFkU3RhcnQoaHRpbSwgQnVyc3RCYXNlQWRkcmVzcywgQnVyc3RSZXF1ZXN0U3JjLCBCdXJzdEJ1ZmZlciwgQnVyc3RMZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChCdXJzdExlbmd0aCkgPj4gOFUpICsgMVUpOworCisKKyAgcmV0dXJuIHN0YXR1czsKIH0KIAogLyoqCkBAIC00ODEzLDkgKzQ5NDMsOSBAQAogICAqICAgICAgICAgICAgQGFyZyBUSU1fRE1BQkFTRV9DQ1I0CiAgICogICAgICAgICAgICBAYXJnIFRJTV9ETUFCQVNFX0JEVFIKICAgKiAgICAgICAgICAgIEBhcmcgVElNX0RNQUJBU0VfT1IKLSAgKiAgICAgICAgICAgIEBhcmcgVElNX0RNQUJBU0VfQ0NNUjMgCi0gICogICAgICAgICAgICBAYXJnIFRJTV9ETUFCQVNFX0NDUjUgCi0gICogICAgICAgICAgICBAYXJnIFRJTV9ETUFCQVNFX0NDUjYgCisgICogICAgICAgICAgICBAYXJnIFRJTV9ETUFCQVNFX0NDTVIzCisgICogICAgICAgICAgICBAYXJnIFRJTV9ETUFCQVNFX0NDUjUKKyAgKiAgICAgICAgICAgIEBhcmcgVElNX0RNQUJBU0VfQ0NSNgogICAqICAgICAgICAgICAgQGFyZyBUSU1fRE1BQkFTRV9BRjEgICgqKQogICAqICAgICAgICAgICAgQGFyZyBUSU1fRE1BQkFTRV9BRjIgICgqKQogICAqICAgICAgICAgKCopIHZhbHVlIG5vdCBkZWZpbmVkIGluIGFsbCBkZXZpY2VzCkBAIC00ODM5LDYgKzQ5NjksOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBCdXJzdFJlcXVlc3RTcmMsIHVpbnQzMl90ICAqQnVyc3RCdWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90ICBCdXJzdExlbmd0aCwgdWludDMyX3QgIERhdGFMZW5ndGgpCiB7CisgIEhBTF9TdGF0dXNUeXBlRGVmIHN0YXR1cyA9IEhBTF9PSzsKKwogICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLwogICBhc3NlcnRfcGFyYW0oSVNfVElNX0RNQUJVUlNUX0lOU1RBTkNFKGh0aW0tPkluc3RhbmNlKSk7CiAgIGFzc2VydF9wYXJhbShJU19USU1fRE1BX0JBU0UoQnVyc3RCYXNlQWRkcmVzcykpOwpAQCAtNDg3OCw3ICs1MDEwLDcgQEAKIAogICAgICAgLyogRW5hYmxlIHRoZSBETUEgc3RyZWFtICovCiAgICAgICBpZiAoSEFMX0RNQV9TdGFydF9JVChodGltLT5oZG1hW1RJTV9ETUFfSURfVVBEQVRFXSwgKHVpbnQzMl90KSZodGltLT5JbnN0YW5jZS0+RE1BUiwgKHVpbnQzMl90KUJ1cnN0QnVmZmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgIERhdGFMZW5ndGgpICE9IEhBTF9PSykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGFMZW5ndGgpICE9IEhBTF9PSykKICAgICAgIHsKICAgICAgICAgLyogUmV0dXJuIGVycm9yIHN0YXR1cyAqLwogICAgICAgICByZXR1cm4gSEFMX0VSUk9SOwpAQCAtNDg5Niw3ICs1MDI4LDcgQEAKIAogICAgICAgLyogRW5hYmxlIHRoZSBETUEgc3RyZWFtICovCiAgICAgICBpZiAoSEFMX0RNQV9TdGFydF9JVChodGltLT5oZG1hW1RJTV9ETUFfSURfQ0MxXSwgKHVpbnQzMl90KSZodGltLT5JbnN0YW5jZS0+RE1BUiwgKHVpbnQzMl90KUJ1cnN0QnVmZmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgIERhdGFMZW5ndGgpICE9IEhBTF9PSykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGFMZW5ndGgpICE9IEhBTF9PSykKICAgICAgIHsKICAgICAgICAgLyogUmV0dXJuIGVycm9yIHN0YXR1cyAqLwogICAgICAgICByZXR1cm4gSEFMX0VSUk9SOwpAQCAtNDkxNCw3ICs1MDQ2LDcgQEAKIAogICAgICAgLyogRW5hYmxlIHRoZSBETUEgc3RyZWFtICovCiAgICAgICBpZiAoSEFMX0RNQV9TdGFydF9JVChodGltLT5oZG1hW1RJTV9ETUFfSURfQ0MyXSwgKHVpbnQzMl90KSZodGltLT5JbnN0YW5jZS0+RE1BUiwgKHVpbnQzMl90KUJ1cnN0QnVmZmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgIERhdGFMZW5ndGgpICE9IEhBTF9PSykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGFMZW5ndGgpICE9IEhBTF9PSykKICAgICAgIHsKICAgICAgICAgLyogUmV0dXJuIGVycm9yIHN0YXR1cyAqLwogICAgICAgICByZXR1cm4gSEFMX0VSUk9SOwpAQCAtNDkzMiw3ICs1MDY0LDcgQEAKIAogICAgICAgLyogRW5hYmxlIHRoZSBETUEgc3RyZWFtICovCiAgICAgICBpZiAoSEFMX0RNQV9TdGFydF9JVChodGltLT5oZG1hW1RJTV9ETUFfSURfQ0MzXSwgKHVpbnQzMl90KSZodGltLT5JbnN0YW5jZS0+RE1BUiwgKHVpbnQzMl90KUJ1cnN0QnVmZmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgIERhdGFMZW5ndGgpICE9IEhBTF9PSykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGFMZW5ndGgpICE9IEhBTF9PSykKICAgICAgIHsKICAgICAgICAgLyogUmV0dXJuIGVycm9yIHN0YXR1cyAqLwogICAgICAgICByZXR1cm4gSEFMX0VSUk9SOwpAQCAtNDk1MCw3ICs1MDgyLDcgQEAKIAogICAgICAgLyogRW5hYmxlIHRoZSBETUEgc3RyZWFtICovCiAgICAgICBpZiAoSEFMX0RNQV9TdGFydF9JVChodGltLT5oZG1hW1RJTV9ETUFfSURfQ0M0XSwgKHVpbnQzMl90KSZodGltLT5JbnN0YW5jZS0+RE1BUiwgKHVpbnQzMl90KUJ1cnN0QnVmZmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgIERhdGFMZW5ndGgpICE9IEhBTF9PSykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGFMZW5ndGgpICE9IEhBTF9PSykKICAgICAgIHsKICAgICAgICAgLyogUmV0dXJuIGVycm9yIHN0YXR1cyAqLwogICAgICAgICByZXR1cm4gSEFMX0VSUk9SOwpAQCAtNDk2OCw3ICs1MTAwLDcgQEAKIAogICAgICAgLyogRW5hYmxlIHRoZSBETUEgc3RyZWFtICovCiAgICAgICBpZiAoSEFMX0RNQV9TdGFydF9JVChodGltLT5oZG1hW1RJTV9ETUFfSURfQ09NTVVUQVRJT05dLCAodWludDMyX3QpJmh0aW0tPkluc3RhbmNlLT5ETUFSLCAodWludDMyX3QpQnVyc3RCdWZmZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgRGF0YUxlbmd0aCkgIT0gSEFMX09LKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0YUxlbmd0aCkgIT0gSEFMX09LKQogICAgICAgewogICAgICAgICAvKiBSZXR1cm4gZXJyb3Igc3RhdHVzICovCiAgICAgICAgIHJldHVybiBIQUxfRVJST1I7CkBAIC00OTg2LDcgKzUxMTgsNyBAQAogCiAgICAgICAvKiBFbmFibGUgdGhlIERNQSBzdHJlYW0gKi8KICAgICAgIGlmIChIQUxfRE1BX1N0YXJ0X0lUKGh0aW0tPmhkbWFbVElNX0RNQV9JRF9UUklHR0VSXSwgKHVpbnQzMl90KSZodGltLT5JbnN0YW5jZS0+RE1BUiwgKHVpbnQzMl90KUJ1cnN0QnVmZmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgIERhdGFMZW5ndGgpICE9IEhBTF9PSykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGFMZW5ndGgpICE9IEhBTF9PSykKICAgICAgIHsKICAgICAgICAgLyogUmV0dXJuIGVycm9yIHN0YXR1cyAqLwogICAgICAgICByZXR1cm4gSEFMX0VSUk9SOwpAQCAtNDk5NCwxNyArNTEyNiwyMSBAQAogICAgICAgYnJlYWs7CiAgICAgfQogICAgIGRlZmF1bHQ6CisgICAgICBzdGF0dXMgPSBIQUxfRVJST1I7CiAgICAgICBicmVhazsKICAgfQogCi0gIC8qIENvbmZpZ3VyZSB0aGUgRE1BIEJ1cnN0IE1vZGUgKi8KLSAgaHRpbS0+SW5zdGFuY2UtPkRDUiA9IChCdXJzdEJhc2VBZGRyZXNzIHwgQnVyc3RMZW5ndGgpOworICBpZiAoc3RhdHVzID09IEhBTF9PSykKKyAgeworICAgIC8qIENvbmZpZ3VyZSB0aGUgRE1BIEJ1cnN0IE1vZGUgKi8KKyAgICBodGltLT5JbnN0YW5jZS0+RENSID0gKEJ1cnN0QmFzZUFkZHJlc3MgfCBCdXJzdExlbmd0aCk7CiAKLSAgLyogRW5hYmxlIHRoZSBUSU0gRE1BIFJlcXVlc3QgKi8KLSAgX19IQUxfVElNX0VOQUJMRV9ETUEoaHRpbSwgQnVyc3RSZXF1ZXN0U3JjKTsKKyAgICAvKiBFbmFibGUgdGhlIFRJTSBETUEgUmVxdWVzdCAqLworICAgIF9fSEFMX1RJTV9FTkFCTEVfRE1BKGh0aW0sIEJ1cnN0UmVxdWVzdFNyYyk7CisgIH0KIAogICAvKiBSZXR1cm4gZnVuY3Rpb24gc3RhdHVzICovCi0gIHJldHVybiBIQUxfT0s7CisgIHJldHVybiBzdGF0dXM7CiB9CiAKIC8qKgpAQCAtNTAxNSw2ICs1MTUxLDggQEAKICAgKi8KIEhBTF9TdGF0dXNUeXBlRGVmIEhBTF9USU1fRE1BQnVyc3RfUmVhZFN0b3AoVElNX0hhbmRsZVR5cGVEZWYgKmh0aW0sIHVpbnQzMl90IEJ1cnN0UmVxdWVzdFNyYykKIHsKKyAgSEFMX1N0YXR1c1R5cGVEZWYgc3RhdHVzID0gSEFMX09LOworCiAgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCiAgIGFzc2VydF9wYXJhbShJU19USU1fRE1BX1NPVVJDRShCdXJzdFJlcXVlc3RTcmMpKTsKIApAQCAtNTA1NywxNyArNTE5NSwyMSBAQAogICAgICAgYnJlYWs7CiAgICAgfQogICAgIGRlZmF1bHQ6CisgICAgICBzdGF0dXMgPSBIQUxfRVJST1I7CiAgICAgICBicmVhazsKICAgfQogCi0gIC8qIERpc2FibGUgdGhlIFRJTSBVcGRhdGUgRE1BIHJlcXVlc3QgKi8KLSAgX19IQUxfVElNX0RJU0FCTEVfRE1BKGh0aW0sIEJ1cnN0UmVxdWVzdFNyYyk7CisgIGlmIChzdGF0dXMgPT0gSEFMX09LKQorICB7CisgICAgLyogRGlzYWJsZSB0aGUgVElNIFVwZGF0ZSBETUEgcmVxdWVzdCAqLworICAgIF9fSEFMX1RJTV9ESVNBQkxFX0RNQShodGltLCBCdXJzdFJlcXVlc3RTcmMpOwogCi0gIC8qIENoYW5nZSB0aGUgRE1BIGJ1cnN0IG9wZXJhdGlvbiBzdGF0ZSAqLwotICBodGltLT5ETUFCdXJzdFN0YXRlID0gSEFMX0RNQV9CVVJTVF9TVEFURV9SRUFEWTsKKyAgICAvKiBDaGFuZ2UgdGhlIERNQSBidXJzdCBvcGVyYXRpb24gc3RhdGUgKi8KKyAgICBodGltLT5ETUFCdXJzdFN0YXRlID0gSEFMX0RNQV9CVVJTVF9TVEFURV9SRUFEWTsKKyAgfQogCiAgIC8qIFJldHVybiBmdW5jdGlvbiBzdGF0dXMgKi8KLSAgcmV0dXJuIEhBTF9PSzsKKyAgcmV0dXJuIHN0YXR1czsKIH0KIAogLyoqCkBAIC01MTM0LDYgKzUyNzYsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJTV9DbGVhcklucHV0Q29uZmlnVHlwZURlZiAqc0NsZWFySW5wdXRDb25maWcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgQ2hhbm5lbCkKIHsKKyAgSEFMX1N0YXR1c1R5cGVEZWYgc3RhdHVzID0gSEFMX09LOworCiAgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCiAgIGFzc2VydF9wYXJhbShJU19USU1fT0NYUkVGX0NMRUFSX0lOU1RBTkNFKGh0aW0tPkluc3RhbmNlKSk7CiAgIGFzc2VydF9wYXJhbShJU19USU1fQ0xFQVJJTlBVVF9TT1VSQ0Uoc0NsZWFySW5wdXRDb25maWctPkNsZWFySW5wdXRTb3VyY2UpKTsKQEAgLTUxNzUsMTA0ICs1MzE5LDEwOCBAQAogICAgIH0KIAogICAgIGRlZmF1bHQ6CisgICAgICBzdGF0dXMgPSBIQUxfRVJST1I7CiAgICAgICBicmVhazsKICAgfQogCi0gIHN3aXRjaCAoQ2hhbm5lbCkKKyAgaWYgKHN0YXR1cyA9PSBIQUxfT0spCiAgIHsKLSAgICBjYXNlIFRJTV9DSEFOTkVMXzE6CisgICAgc3dpdGNoIChDaGFubmVsKQogICAgIHsKLSAgICAgIGlmIChzQ2xlYXJJbnB1dENvbmZpZy0+Q2xlYXJJbnB1dFN0YXRlICE9ICh1aW50MzJfdClESVNBQkxFKQorICAgICAgY2FzZSBUSU1fQ0hBTk5FTF8xOgogICAgICAgewotICAgICAgICAvKiBFbmFibGUgdGhlIE9DUkVGIGNsZWFyIGZlYXR1cmUgZm9yIENoYW5uZWwgMSAqLwotICAgICAgICBTRVRfQklUKGh0aW0tPkluc3RhbmNlLT5DQ01SMSwgVElNX0NDTVIxX09DMUNFKTsKKyAgICAgICAgaWYgKHNDbGVhcklucHV0Q29uZmlnLT5DbGVhcklucHV0U3RhdGUgIT0gKHVpbnQzMl90KURJU0FCTEUpCisgICAgICAgIHsKKyAgICAgICAgICAvKiBFbmFibGUgdGhlIE9DUkVGIGNsZWFyIGZlYXR1cmUgZm9yIENoYW5uZWwgMSAqLworICAgICAgICAgIFNFVF9CSVQoaHRpbS0+SW5zdGFuY2UtPkNDTVIxLCBUSU1fQ0NNUjFfT0MxQ0UpOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgIC8qIERpc2FibGUgdGhlIE9DUkVGIGNsZWFyIGZlYXR1cmUgZm9yIENoYW5uZWwgMSAqLworICAgICAgICAgIENMRUFSX0JJVChodGltLT5JbnN0YW5jZS0+Q0NNUjEsIFRJTV9DQ01SMV9PQzFDRSk7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CiAgICAgICB9Ci0gICAgICBlbHNlCisgICAgICBjYXNlIFRJTV9DSEFOTkVMXzI6CiAgICAgICB7Ci0gICAgICAgIC8qIERpc2FibGUgdGhlIE9DUkVGIGNsZWFyIGZlYXR1cmUgZm9yIENoYW5uZWwgMSAqLwotICAgICAgICBDTEVBUl9CSVQoaHRpbS0+SW5zdGFuY2UtPkNDTVIxLCBUSU1fQ0NNUjFfT0MxQ0UpOworICAgICAgICBpZiAoc0NsZWFySW5wdXRDb25maWctPkNsZWFySW5wdXRTdGF0ZSAhPSAodWludDMyX3QpRElTQUJMRSkKKyAgICAgICAgeworICAgICAgICAgIC8qIEVuYWJsZSB0aGUgT0NSRUYgY2xlYXIgZmVhdHVyZSBmb3IgQ2hhbm5lbCAyICovCisgICAgICAgICAgU0VUX0JJVChodGltLT5JbnN0YW5jZS0+Q0NNUjEsIFRJTV9DQ01SMV9PQzJDRSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgLyogRGlzYWJsZSB0aGUgT0NSRUYgY2xlYXIgZmVhdHVyZSBmb3IgQ2hhbm5lbCAyICovCisgICAgICAgICAgQ0xFQVJfQklUKGh0aW0tPkluc3RhbmNlLT5DQ01SMSwgVElNX0NDTVIxX09DMkNFKTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKICAgICAgIH0KLSAgICAgIGJyZWFrOworICAgICAgY2FzZSBUSU1fQ0hBTk5FTF8zOgorICAgICAgeworICAgICAgICBpZiAoc0NsZWFySW5wdXRDb25maWctPkNsZWFySW5wdXRTdGF0ZSAhPSAodWludDMyX3QpRElTQUJMRSkKKyAgICAgICAgeworICAgICAgICAgIC8qIEVuYWJsZSB0aGUgT0NSRUYgY2xlYXIgZmVhdHVyZSBmb3IgQ2hhbm5lbCAzICovCisgICAgICAgICAgU0VUX0JJVChodGltLT5JbnN0YW5jZS0+Q0NNUjIsIFRJTV9DQ01SMl9PQzNDRSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgLyogRGlzYWJsZSB0aGUgT0NSRUYgY2xlYXIgZmVhdHVyZSBmb3IgQ2hhbm5lbCAzICovCisgICAgICAgICAgQ0xFQVJfQklUKGh0aW0tPkluc3RhbmNlLT5DQ01SMiwgVElNX0NDTVIyX09DM0NFKTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICAgIH0KKyAgICAgIGNhc2UgVElNX0NIQU5ORUxfNDoKKyAgICAgIHsKKyAgICAgICAgaWYgKHNDbGVhcklucHV0Q29uZmlnLT5DbGVhcklucHV0U3RhdGUgIT0gKHVpbnQzMl90KURJU0FCTEUpCisgICAgICAgIHsKKyAgICAgICAgICAvKiBFbmFibGUgdGhlIE9DUkVGIGNsZWFyIGZlYXR1cmUgZm9yIENoYW5uZWwgNCAqLworICAgICAgICAgIFNFVF9CSVQoaHRpbS0+SW5zdGFuY2UtPkNDTVIyLCBUSU1fQ0NNUjJfT0M0Q0UpOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgIC8qIERpc2FibGUgdGhlIE9DUkVGIGNsZWFyIGZlYXR1cmUgZm9yIENoYW5uZWwgNCAqLworICAgICAgICAgIENMRUFSX0JJVChodGltLT5JbnN0YW5jZS0+Q0NNUjIsIFRJTV9DQ01SMl9PQzRDRSk7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgICB9CisgICAgICBjYXNlIFRJTV9DSEFOTkVMXzU6CisgICAgICB7CisgICAgICAgIGlmIChzQ2xlYXJJbnB1dENvbmZpZy0+Q2xlYXJJbnB1dFN0YXRlICE9ICh1aW50MzJfdClESVNBQkxFKQorICAgICAgICB7CisgICAgICAgICAgLyogRW5hYmxlIHRoZSBPQ1JFRiBjbGVhciBmZWF0dXJlIGZvciBDaGFubmVsIDUgKi8KKyAgICAgICAgICBTRVRfQklUKGh0aW0tPkluc3RhbmNlLT5DQ01SMywgVElNX0NDTVIzX09DNUNFKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAvKiBEaXNhYmxlIHRoZSBPQ1JFRiBjbGVhciBmZWF0dXJlIGZvciBDaGFubmVsIDUgKi8KKyAgICAgICAgICBDTEVBUl9CSVQoaHRpbS0+SW5zdGFuY2UtPkNDTVIzLCBUSU1fQ0NNUjNfT0M1Q0UpOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgICAgfQorICAgICAgY2FzZSBUSU1fQ0hBTk5FTF82OgorICAgICAgeworICAgICAgICBpZiAoc0NsZWFySW5wdXRDb25maWctPkNsZWFySW5wdXRTdGF0ZSAhPSAodWludDMyX3QpRElTQUJMRSkKKyAgICAgICAgeworICAgICAgICAgIC8qIEVuYWJsZSB0aGUgT0NSRUYgY2xlYXIgZmVhdHVyZSBmb3IgQ2hhbm5lbCA2ICovCisgICAgICAgICAgU0VUX0JJVChodGltLT5JbnN0YW5jZS0+Q0NNUjMsIFRJTV9DQ01SM19PQzZDRSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgLyogRGlzYWJsZSB0aGUgT0NSRUYgY2xlYXIgZmVhdHVyZSBmb3IgQ2hhbm5lbCA2ICovCisgICAgICAgICAgQ0xFQVJfQklUKGh0aW0tPkluc3RhbmNlLT5DQ01SMywgVElNX0NDTVIzX09DNkNFKTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICAgIH0KKyAgICAgIGRlZmF1bHQ6CisgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICBjYXNlIFRJTV9DSEFOTkVMXzI6Ci0gICAgewotICAgICAgaWYgKHNDbGVhcklucHV0Q29uZmlnLT5DbGVhcklucHV0U3RhdGUgIT0gKHVpbnQzMl90KURJU0FCTEUpCi0gICAgICB7Ci0gICAgICAgIC8qIEVuYWJsZSB0aGUgT0NSRUYgY2xlYXIgZmVhdHVyZSBmb3IgQ2hhbm5lbCAyICovCi0gICAgICAgIFNFVF9CSVQoaHRpbS0+SW5zdGFuY2UtPkNDTVIxLCBUSU1fQ0NNUjFfT0MyQ0UpOwotICAgICAgfQotICAgICAgZWxzZQotICAgICAgewotICAgICAgICAvKiBEaXNhYmxlIHRoZSBPQ1JFRiBjbGVhciBmZWF0dXJlIGZvciBDaGFubmVsIDIgKi8KLSAgICAgICAgQ0xFQVJfQklUKGh0aW0tPkluc3RhbmNlLT5DQ01SMSwgVElNX0NDTVIxX09DMkNFKTsKLSAgICAgIH0KLSAgICAgIGJyZWFrOwotICAgIH0KLSAgICBjYXNlIFRJTV9DSEFOTkVMXzM6Ci0gICAgewotICAgICAgaWYgKHNDbGVhcklucHV0Q29uZmlnLT5DbGVhcklucHV0U3RhdGUgIT0gKHVpbnQzMl90KURJU0FCTEUpCi0gICAgICB7Ci0gICAgICAgIC8qIEVuYWJsZSB0aGUgT0NSRUYgY2xlYXIgZmVhdHVyZSBmb3IgQ2hhbm5lbCAzICovCi0gICAgICAgIFNFVF9CSVQoaHRpbS0+SW5zdGFuY2UtPkNDTVIyLCBUSU1fQ0NNUjJfT0MzQ0UpOwotICAgICAgfQotICAgICAgZWxzZQotICAgICAgewotICAgICAgICAvKiBEaXNhYmxlIHRoZSBPQ1JFRiBjbGVhciBmZWF0dXJlIGZvciBDaGFubmVsIDMgKi8KLSAgICAgICAgQ0xFQVJfQklUKGh0aW0tPkluc3RhbmNlLT5DQ01SMiwgVElNX0NDTVIyX09DM0NFKTsKLSAgICAgIH0KLSAgICAgIGJyZWFrOwotICAgIH0KLSAgICBjYXNlIFRJTV9DSEFOTkVMXzQ6Ci0gICAgewotICAgICAgaWYgKHNDbGVhcklucHV0Q29uZmlnLT5DbGVhcklucHV0U3RhdGUgIT0gKHVpbnQzMl90KURJU0FCTEUpCi0gICAgICB7Ci0gICAgICAgIC8qIEVuYWJsZSB0aGUgT0NSRUYgY2xlYXIgZmVhdHVyZSBmb3IgQ2hhbm5lbCA0ICovCi0gICAgICAgIFNFVF9CSVQoaHRpbS0+SW5zdGFuY2UtPkNDTVIyLCBUSU1fQ0NNUjJfT0M0Q0UpOwotICAgICAgfQotICAgICAgZWxzZQotICAgICAgewotICAgICAgICAvKiBEaXNhYmxlIHRoZSBPQ1JFRiBjbGVhciBmZWF0dXJlIGZvciBDaGFubmVsIDQgKi8KLSAgICAgICAgQ0xFQVJfQklUKGh0aW0tPkluc3RhbmNlLT5DQ01SMiwgVElNX0NDTVIyX09DNENFKTsKLSAgICAgIH0KLSAgICAgIGJyZWFrOwotICAgIH0KLSAgICBjYXNlIFRJTV9DSEFOTkVMXzU6Ci0gICAgewotICAgICAgaWYgKHNDbGVhcklucHV0Q29uZmlnLT5DbGVhcklucHV0U3RhdGUgIT0gKHVpbnQzMl90KURJU0FCTEUpCi0gICAgICB7Ci0gICAgICAgIC8qIEVuYWJsZSB0aGUgT0NSRUYgY2xlYXIgZmVhdHVyZSBmb3IgQ2hhbm5lbCA1ICovCi0gICAgICAgIFNFVF9CSVQoaHRpbS0+SW5zdGFuY2UtPkNDTVIzLCBUSU1fQ0NNUjNfT0M1Q0UpOwotICAgICAgfQotICAgICAgZWxzZQotICAgICAgewotICAgICAgICAvKiBEaXNhYmxlIHRoZSBPQ1JFRiBjbGVhciBmZWF0dXJlIGZvciBDaGFubmVsIDUgKi8KLSAgICAgICAgQ0xFQVJfQklUKGh0aW0tPkluc3RhbmNlLT5DQ01SMywgVElNX0NDTVIzX09DNUNFKTsKLSAgICAgIH0KLSAgICAgIGJyZWFrOwotICAgIH0KLSAgICBjYXNlIFRJTV9DSEFOTkVMXzY6Ci0gICAgewotICAgICAgaWYgKHNDbGVhcklucHV0Q29uZmlnLT5DbGVhcklucHV0U3RhdGUgIT0gKHVpbnQzMl90KURJU0FCTEUpCi0gICAgICB7Ci0gICAgICAgIC8qIEVuYWJsZSB0aGUgT0NSRUYgY2xlYXIgZmVhdHVyZSBmb3IgQ2hhbm5lbCA2ICovCi0gICAgICAgIFNFVF9CSVQoaHRpbS0+SW5zdGFuY2UtPkNDTVIzLCBUSU1fQ0NNUjNfT0M2Q0UpOwotICAgICAgfQotICAgICAgZWxzZQotICAgICAgewotICAgICAgICAvKiBEaXNhYmxlIHRoZSBPQ1JFRiBjbGVhciBmZWF0dXJlIGZvciBDaGFubmVsIDYgKi8KLSAgICAgICAgQ0xFQVJfQklUKGh0aW0tPkluc3RhbmNlLT5DQ01SMywgVElNX0NDTVIzX09DNkNFKTsKLSAgICAgIH0KLSAgICAgIGJyZWFrOwotICAgIH0KLSAgICBkZWZhdWx0OgotICAgICAgYnJlYWs7CiAgIH0KIAogICBodGltLT5TdGF0ZSA9IEhBTF9USU1fU1RBVEVfUkVBRFk7CiAKICAgX19IQUxfVU5MT0NLKGh0aW0pOwogCi0gIHJldHVybiBIQUxfT0s7CisgIHJldHVybiBzdGF0dXM7CiB9CiAKIC8qKgpAQCAtNTI4NCw2ICs1NDMyLDcgQEAKICAgKi8KIEhBTF9TdGF0dXNUeXBlRGVmIEhBTF9USU1fQ29uZmlnQ2xvY2tTb3VyY2UoVElNX0hhbmRsZVR5cGVEZWYgKmh0aW0sIFRJTV9DbG9ja0NvbmZpZ1R5cGVEZWYgKnNDbG9ja1NvdXJjZUNvbmZpZykKIHsKKyAgSEFMX1N0YXR1c1R5cGVEZWYgc3RhdHVzID0gSEFMX09LOwogICB1aW50MzJfdCB0bXBzbWNyOwogCiAgIC8qIFByb2Nlc3MgTG9ja2VkICovCkBAIC01NDA0LDIyICs1NTUzLDIzIEBACiAgICAgY2FzZSBUSU1fQ0xPQ0tTT1VSQ0VfSVRSMToKICAgICBjYXNlIFRJTV9DTE9DS1NPVVJDRV9JVFIyOgogICAgIGNhc2UgVElNX0NMT0NLU09VUkNFX0lUUjM6Ci0gICAgICB7Ci0gICAgICAgIC8qIENoZWNrIHdoZXRoZXIgb3Igbm90IHRoZSB0aW1lciBpbnN0YW5jZSBzdXBwb3J0cyBpbnRlcm5hbCB0cmlnZ2VyIGlucHV0ICovCi0gICAgICAgIGFzc2VydF9wYXJhbShJU19USU1fQ0xPQ0tTT1VSQ0VfSVRSWF9JTlNUQU5DRShodGltLT5JbnN0YW5jZSkpOworICAgIHsKKyAgICAgIC8qIENoZWNrIHdoZXRoZXIgb3Igbm90IHRoZSB0aW1lciBpbnN0YW5jZSBzdXBwb3J0cyBpbnRlcm5hbCB0cmlnZ2VyIGlucHV0ICovCisgICAgICBhc3NlcnRfcGFyYW0oSVNfVElNX0NMT0NLU09VUkNFX0lUUlhfSU5TVEFOQ0UoaHRpbS0+SW5zdGFuY2UpKTsKIAotICAgICAgICBUSU1fSVRSeF9TZXRDb25maWcoaHRpbS0+SW5zdGFuY2UsIHNDbG9ja1NvdXJjZUNvbmZpZy0+Q2xvY2tTb3VyY2UpOwotICAgICAgICBicmVhazsKLSAgICAgIH0KKyAgICAgIFRJTV9JVFJ4X1NldENvbmZpZyhodGltLT5JbnN0YW5jZSwgc0Nsb2NrU291cmNlQ29uZmlnLT5DbG9ja1NvdXJjZSk7CisgICAgICBicmVhazsKKyAgICB9CiAKICAgICBkZWZhdWx0OgorICAgICAgc3RhdHVzID0gSEFMX0VSUk9SOwogICAgICAgYnJlYWs7CiAgIH0KICAgaHRpbS0+U3RhdGUgPSBIQUxfVElNX1NUQVRFX1JFQURZOwogCiAgIF9fSEFMX1VOTE9DSyhodGltKTsKIAotICByZXR1cm4gSEFMX09LOworICByZXR1cm4gc3RhdHVzOwogfQogCiAvKioKQEAgLTU5NDUsNyArNjA5NSw3IEBACiAKICAgICAgIGRlZmF1bHQgOgogICAgICAgICAvKiBSZXR1cm4gZXJyb3Igc3RhdHVzICovCi0gICAgICAgIHN0YXR1cyA9ICBIQUxfRVJST1I7CisgICAgICAgIHN0YXR1cyA9IEhBTF9FUlJPUjsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICB9CkBAIC02MDExLDE0ICs2MTYxLDE0IEBACiAKICAgICAgIGRlZmF1bHQgOgogICAgICAgICAvKiBSZXR1cm4gZXJyb3Igc3RhdHVzICovCi0gICAgICAgIHN0YXR1cyA9ICBIQUxfRVJST1I7CisgICAgICAgIHN0YXR1cyA9IEhBTF9FUlJPUjsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICB9CiAgIGVsc2UKICAgewogICAgIC8qIFJldHVybiBlcnJvciBzdGF0dXMgKi8KLSAgICBzdGF0dXMgPSAgSEFMX0VSUk9SOworICAgIHN0YXR1cyA9IEhBTF9FUlJPUjsKICAgfQogCiAgIC8qIFJlbGVhc2UgTG9jayAqLwpAQCAtNjA3NSwxMjAgKzYyMjUsMTQ4IEBACiAgICAgc3dpdGNoIChDYWxsYmFja0lEKQogICAgIHsKICAgICAgIGNhc2UgSEFMX1RJTV9CQVNFX01TUElOSVRfQ0JfSUQgOgotICAgICAgICBodGltLT5CYXNlX01zcEluaXRDYWxsYmFjayAgICAgICAgICAgICAgPSBIQUxfVElNX0Jhc2VfTXNwSW5pdDsgICAgICAgICAgICAgICAgICAgICAgLyogTGVnYWN5IHdlYWsgQmFzZSBNc3BJbml0IENhbGxiYWNrICovCisgICAgICAgIC8qIExlZ2FjeSB3ZWFrIEJhc2UgTXNwSW5pdCBDYWxsYmFjayAqLworICAgICAgICBodGltLT5CYXNlX01zcEluaXRDYWxsYmFjayAgICAgICAgICAgICAgPSBIQUxfVElNX0Jhc2VfTXNwSW5pdDsKICAgICAgICAgYnJlYWs7CiAKICAgICAgIGNhc2UgSEFMX1RJTV9CQVNFX01TUERFSU5JVF9DQl9JRCA6Ci0gICAgICAgIGh0aW0tPkJhc2VfTXNwRGVJbml0Q2FsbGJhY2sgICAgICAgICAgICA9IEhBTF9USU1fQmFzZV9Nc3BEZUluaXQ7ICAgICAgICAgICAgICAgICAgICAvKiBMZWdhY3kgd2VhayBCYXNlIE1zcCBEZUluaXQgQ2FsbGJhY2sgKi8KKyAgICAgICAgLyogTGVnYWN5IHdlYWsgQmFzZSBNc3AgRGVJbml0IENhbGxiYWNrICovCisgICAgICAgIGh0aW0tPkJhc2VfTXNwRGVJbml0Q2FsbGJhY2sgICAgICAgICAgICA9IEhBTF9USU1fQmFzZV9Nc3BEZUluaXQ7CiAgICAgICAgIGJyZWFrOwogCiAgICAgICBjYXNlIEhBTF9USU1fSUNfTVNQSU5JVF9DQl9JRCA6Ci0gICAgICAgIGh0aW0tPklDX01zcEluaXRDYWxsYmFjayAgICAgICAgICAgICAgICA9IEhBTF9USU1fSUNfTXNwSW5pdDsgICAgICAgICAgICAgICAgICAgICAgICAvKiBMZWdhY3kgd2VhayBJQyBNc3AgSW5pdCBDYWxsYmFjayAqLworICAgICAgICAvKiBMZWdhY3kgd2VhayBJQyBNc3AgSW5pdCBDYWxsYmFjayAqLworICAgICAgICBodGltLT5JQ19Nc3BJbml0Q2FsbGJhY2sgICAgICAgICAgICAgICAgPSBIQUxfVElNX0lDX01zcEluaXQ7CiAgICAgICAgIGJyZWFrOwogCiAgICAgICBjYXNlIEhBTF9USU1fSUNfTVNQREVJTklUX0NCX0lEIDoKLSAgICAgICAgaHRpbS0+SUNfTXNwRGVJbml0Q2FsbGJhY2sgICAgICAgICAgICAgID0gSEFMX1RJTV9JQ19Nc3BEZUluaXQ7ICAgICAgICAgICAgICAgICAgICAgIC8qIExlZ2FjeSB3ZWFrIElDIE1zcCBEZUluaXQgQ2FsbGJhY2sgKi8KKyAgICAgICAgLyogTGVnYWN5IHdlYWsgSUMgTXNwIERlSW5pdCBDYWxsYmFjayAqLworICAgICAgICBodGltLT5JQ19Nc3BEZUluaXRDYWxsYmFjayAgICAgICAgICAgICAgPSBIQUxfVElNX0lDX01zcERlSW5pdDsKICAgICAgICAgYnJlYWs7CiAKICAgICAgIGNhc2UgSEFMX1RJTV9PQ19NU1BJTklUX0NCX0lEIDoKLSAgICAgICAgaHRpbS0+T0NfTXNwSW5pdENhbGxiYWNrICAgICAgICAgICAgICAgID0gSEFMX1RJTV9PQ19Nc3BJbml0OyAgICAgICAgICAgICAgICAgICAgICAgIC8qIExlZ2FjeSB3ZWFrIE9DIE1zcCBJbml0IENhbGxiYWNrICovCisgICAgICAgIC8qIExlZ2FjeSB3ZWFrIE9DIE1zcCBJbml0IENhbGxiYWNrICovCisgICAgICAgIGh0aW0tPk9DX01zcEluaXRDYWxsYmFjayAgICAgICAgICAgICAgICA9IEhBTF9USU1fT0NfTXNwSW5pdDsKICAgICAgICAgYnJlYWs7CiAKICAgICAgIGNhc2UgSEFMX1RJTV9PQ19NU1BERUlOSVRfQ0JfSUQgOgotICAgICAgICBodGltLT5PQ19Nc3BEZUluaXRDYWxsYmFjayAgICAgICAgICAgICAgPSBIQUxfVElNX09DX01zcERlSW5pdDsgICAgICAgICAgICAgICAgICAgICAgLyogTGVnYWN5IHdlYWsgT0MgTXNwIERlSW5pdCBDYWxsYmFjayAqLworICAgICAgICAvKiBMZWdhY3kgd2VhayBPQyBNc3AgRGVJbml0IENhbGxiYWNrICovCisgICAgICAgIGh0aW0tPk9DX01zcERlSW5pdENhbGxiYWNrICAgICAgICAgICAgICA9IEhBTF9USU1fT0NfTXNwRGVJbml0OwogICAgICAgICBicmVhazsKIAogICAgICAgY2FzZSBIQUxfVElNX1BXTV9NU1BJTklUX0NCX0lEIDoKLSAgICAgICAgaHRpbS0+UFdNX01zcEluaXRDYWxsYmFjayAgICAgICAgICAgICAgID0gSEFMX1RJTV9QV01fTXNwSW5pdDsgICAgICAgICAgICAgICAgICAgICAgIC8qIExlZ2FjeSB3ZWFrIFBXTSBNc3AgSW5pdCBDYWxsYmFjayAqLworICAgICAgICAvKiBMZWdhY3kgd2VhayBQV00gTXNwIEluaXQgQ2FsbGJhY2sgKi8KKyAgICAgICAgaHRpbS0+UFdNX01zcEluaXRDYWxsYmFjayAgICAgICAgICAgICAgID0gSEFMX1RJTV9QV01fTXNwSW5pdDsKICAgICAgICAgYnJlYWs7CiAKICAgICAgIGNhc2UgSEFMX1RJTV9QV01fTVNQREVJTklUX0NCX0lEIDoKLSAgICAgICAgaHRpbS0+UFdNX01zcERlSW5pdENhbGxiYWNrICAgICAgICAgICAgID0gSEFMX1RJTV9QV01fTXNwRGVJbml0OyAgICAgICAgICAgICAgICAgICAgIC8qIExlZ2FjeSB3ZWFrIFBXTSBNc3AgRGVJbml0IENhbGxiYWNrICovCisgICAgICAgIC8qIExlZ2FjeSB3ZWFrIFBXTSBNc3AgRGVJbml0IENhbGxiYWNrICovCisgICAgICAgIGh0aW0tPlBXTV9Nc3BEZUluaXRDYWxsYmFjayAgICAgICAgICAgICA9IEhBTF9USU1fUFdNX01zcERlSW5pdDsKICAgICAgICAgYnJlYWs7CiAKICAgICAgIGNhc2UgSEFMX1RJTV9PTkVfUFVMU0VfTVNQSU5JVF9DQl9JRCA6Ci0gICAgICAgIGh0aW0tPk9uZVB1bHNlX01zcEluaXRDYWxsYmFjayAgICAgICAgICA9IEhBTF9USU1fT25lUHVsc2VfTXNwSW5pdDsgICAgICAgICAgICAgICAgICAvKiBMZWdhY3kgd2VhayBPbmUgUHVsc2UgTXNwIEluaXQgQ2FsbGJhY2sgKi8KKyAgICAgICAgLyogTGVnYWN5IHdlYWsgT25lIFB1bHNlIE1zcCBJbml0IENhbGxiYWNrICovCisgICAgICAgIGh0aW0tPk9uZVB1bHNlX01zcEluaXRDYWxsYmFjayAgICAgICAgICA9IEhBTF9USU1fT25lUHVsc2VfTXNwSW5pdDsKICAgICAgICAgYnJlYWs7CiAKICAgICAgIGNhc2UgSEFMX1RJTV9PTkVfUFVMU0VfTVNQREVJTklUX0NCX0lEIDoKLSAgICAgICAgaHRpbS0+T25lUHVsc2VfTXNwRGVJbml0Q2FsbGJhY2sgICAgICAgID0gSEFMX1RJTV9PbmVQdWxzZV9Nc3BEZUluaXQ7ICAgICAgICAgICAgICAgIC8qIExlZ2FjeSB3ZWFrIE9uZSBQdWxzZSBNc3AgRGVJbml0IENhbGxiYWNrICovCisgICAgICAgIC8qIExlZ2FjeSB3ZWFrIE9uZSBQdWxzZSBNc3AgRGVJbml0IENhbGxiYWNrICovCisgICAgICAgIGh0aW0tPk9uZVB1bHNlX01zcERlSW5pdENhbGxiYWNrICAgICAgICA9IEhBTF9USU1fT25lUHVsc2VfTXNwRGVJbml0OwogICAgICAgICBicmVhazsKIAogICAgICAgY2FzZSBIQUxfVElNX0VOQ09ERVJfTVNQSU5JVF9DQl9JRCA6Ci0gICAgICAgIGh0aW0tPkVuY29kZXJfTXNwSW5pdENhbGxiYWNrICAgICAgICAgICA9IEhBTF9USU1fRW5jb2Rlcl9Nc3BJbml0OyAgICAgICAgICAgICAgICAgICAvKiBMZWdhY3kgd2VhayBFbmNvZGVyIE1zcCBJbml0IENhbGxiYWNrICovCisgICAgICAgIC8qIExlZ2FjeSB3ZWFrIEVuY29kZXIgTXNwIEluaXQgQ2FsbGJhY2sgKi8KKyAgICAgICAgaHRpbS0+RW5jb2Rlcl9Nc3BJbml0Q2FsbGJhY2sgICAgICAgICAgID0gSEFMX1RJTV9FbmNvZGVyX01zcEluaXQ7CiAgICAgICAgIGJyZWFrOwogCiAgICAgICBjYXNlIEhBTF9USU1fRU5DT0RFUl9NU1BERUlOSVRfQ0JfSUQgOgotICAgICAgICBodGltLT5FbmNvZGVyX01zcERlSW5pdENhbGxiYWNrICAgICAgICAgPSBIQUxfVElNX0VuY29kZXJfTXNwRGVJbml0OyAgICAgICAgICAgICAgICAgLyogTGVnYWN5IHdlYWsgRW5jb2RlciBNc3AgRGVJbml0IENhbGxiYWNrICovCisgICAgICAgIC8qIExlZ2FjeSB3ZWFrIEVuY29kZXIgTXNwIERlSW5pdCBDYWxsYmFjayAqLworICAgICAgICBodGltLT5FbmNvZGVyX01zcERlSW5pdENhbGxiYWNrICAgICAgICAgPSBIQUxfVElNX0VuY29kZXJfTXNwRGVJbml0OwogICAgICAgICBicmVhazsKIAogICAgICAgY2FzZSBIQUxfVElNX0hBTExfU0VOU09SX01TUElOSVRfQ0JfSUQgOgotICAgICAgICBodGltLT5IYWxsU2Vuc29yX01zcEluaXRDYWxsYmFjayAgICAgICAgPSBIQUxfVElNRXhfSGFsbFNlbnNvcl9Nc3BJbml0OyAgICAgICAgICAgICAgLyogTGVnYWN5IHdlYWsgSGFsbCBTZW5zb3IgTXNwIEluaXQgQ2FsbGJhY2sgKi8KKyAgICAgICAgLyogTGVnYWN5IHdlYWsgSGFsbCBTZW5zb3IgTXNwIEluaXQgQ2FsbGJhY2sgKi8KKyAgICAgICAgaHRpbS0+SGFsbFNlbnNvcl9Nc3BJbml0Q2FsbGJhY2sgICAgICAgID0gSEFMX1RJTUV4X0hhbGxTZW5zb3JfTXNwSW5pdDsKICAgICAgICAgYnJlYWs7CiAKICAgICAgIGNhc2UgSEFMX1RJTV9IQUxMX1NFTlNPUl9NU1BERUlOSVRfQ0JfSUQgOgotICAgICAgICBodGltLT5IYWxsU2Vuc29yX01zcERlSW5pdENhbGxiYWNrICAgICAgPSBIQUxfVElNRXhfSGFsbFNlbnNvcl9Nc3BEZUluaXQ7ICAgICAgICAgICAgLyogTGVnYWN5IHdlYWsgSGFsbCBTZW5zb3IgTXNwIERlSW5pdCBDYWxsYmFjayAqLworICAgICAgICAvKiBMZWdhY3kgd2VhayBIYWxsIFNlbnNvciBNc3AgRGVJbml0IENhbGxiYWNrICovCisgICAgICAgIGh0aW0tPkhhbGxTZW5zb3JfTXNwRGVJbml0Q2FsbGJhY2sgICAgICA9IEhBTF9USU1FeF9IYWxsU2Vuc29yX01zcERlSW5pdDsKICAgICAgICAgYnJlYWs7CiAKICAgICAgIGNhc2UgSEFMX1RJTV9QRVJJT0RfRUxBUFNFRF9DQl9JRCA6Ci0gICAgICAgIGh0aW0tPlBlcmlvZEVsYXBzZWRDYWxsYmFjayAgICAgICAgICAgICA9IEhBTF9USU1fUGVyaW9kRWxhcHNlZENhbGxiYWNrOyAgICAgICAgICAgICAvKiBMZWdhY3kgd2VhayBQZXJpb2QgRWxhcHNlZCBDYWxsYmFjayAqLworICAgICAgICAvKiBMZWdhY3kgd2VhayBQZXJpb2QgRWxhcHNlZCBDYWxsYmFjayAqLworICAgICAgICBodGltLT5QZXJpb2RFbGFwc2VkQ2FsbGJhY2sgICAgICAgICAgICAgPSBIQUxfVElNX1BlcmlvZEVsYXBzZWRDYWxsYmFjazsKICAgICAgICAgYnJlYWs7CiAKICAgICAgIGNhc2UgSEFMX1RJTV9QRVJJT0RfRUxBUFNFRF9IQUxGX0NCX0lEIDoKLSAgICAgICAgaHRpbS0+UGVyaW9kRWxhcHNlZEhhbGZDcGx0Q2FsbGJhY2sgICAgID0gSEFMX1RJTV9QZXJpb2RFbGFwc2VkSGFsZkNwbHRDYWxsYmFjazsgICAgIC8qIExlZ2FjeSB3ZWFrIFBlcmlvZCBFbGFwc2VkIGhhbGYgY29tcGxldGUgQ2FsbGJhY2sgKi8KKyAgICAgICAgLyogTGVnYWN5IHdlYWsgUGVyaW9kIEVsYXBzZWQgaGFsZiBjb21wbGV0ZSBDYWxsYmFjayAqLworICAgICAgICBodGltLT5QZXJpb2RFbGFwc2VkSGFsZkNwbHRDYWxsYmFjayAgICAgPSBIQUxfVElNX1BlcmlvZEVsYXBzZWRIYWxmQ3BsdENhbGxiYWNrOwogICAgICAgICBicmVhazsKIAogICAgICAgY2FzZSBIQUxfVElNX1RSSUdHRVJfQ0JfSUQgOgotICAgICAgICBodGltLT5UcmlnZ2VyQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgPSBIQUxfVElNX1RyaWdnZXJDYWxsYmFjazsgICAgICAgICAgICAgICAgICAgLyogTGVnYWN5IHdlYWsgVHJpZ2dlciBDYWxsYmFjayAqLworICAgICAgICAvKiBMZWdhY3kgd2VhayBUcmlnZ2VyIENhbGxiYWNrICovCisgICAgICAgIGh0aW0tPlRyaWdnZXJDYWxsYmFjayAgICAgICAgICAgICAgICAgICA9IEhBTF9USU1fVHJpZ2dlckNhbGxiYWNrOwogICAgICAgICBicmVhazsKIAogICAgICAgY2FzZSBIQUxfVElNX1RSSUdHRVJfSEFMRl9DQl9JRCA6Ci0gICAgICAgIGh0aW0tPlRyaWdnZXJIYWxmQ3BsdENhbGxiYWNrICAgICAgICAgICA9IEhBTF9USU1fVHJpZ2dlckhhbGZDcGx0Q2FsbGJhY2s7ICAgICAgICAgICAvKiBMZWdhY3kgd2VhayBUcmlnZ2VyIGhhbGYgY29tcGxldGUgQ2FsbGJhY2sgKi8KKyAgICAgICAgLyogTGVnYWN5IHdlYWsgVHJpZ2dlciBoYWxmIGNvbXBsZXRlIENhbGxiYWNrICovCisgICAgICAgIGh0aW0tPlRyaWdnZXJIYWxmQ3BsdENhbGxiYWNrICAgICAgICAgICA9IEhBTF9USU1fVHJpZ2dlckhhbGZDcGx0Q2FsbGJhY2s7CiAgICAgICAgIGJyZWFrOwogCiAgICAgICBjYXNlIEhBTF9USU1fSUNfQ0FQVFVSRV9DQl9JRCA6Ci0gICAgICAgIGh0aW0tPklDX0NhcHR1cmVDYWxsYmFjayAgICAgICAgICAgICAgICA9IEhBTF9USU1fSUNfQ2FwdHVyZUNhbGxiYWNrOyAgICAgICAgICAgICAgICAvKiBMZWdhY3kgd2VhayBJQyBDYXB0dXJlIENhbGxiYWNrICovCisgICAgICAgIC8qIExlZ2FjeSB3ZWFrIElDIENhcHR1cmUgQ2FsbGJhY2sgKi8KKyAgICAgICAgaHRpbS0+SUNfQ2FwdHVyZUNhbGxiYWNrICAgICAgICAgICAgICAgID0gSEFMX1RJTV9JQ19DYXB0dXJlQ2FsbGJhY2s7CiAgICAgICAgIGJyZWFrOwogCiAgICAgICBjYXNlIEhBTF9USU1fSUNfQ0FQVFVSRV9IQUxGX0NCX0lEIDoKLSAgICAgICAgaHRpbS0+SUNfQ2FwdHVyZUhhbGZDcGx0Q2FsbGJhY2sgICAgICAgID0gSEFMX1RJTV9JQ19DYXB0dXJlSGFsZkNwbHRDYWxsYmFjazsgICAgICAgIC8qIExlZ2FjeSB3ZWFrIElDIENhcHR1cmUgaGFsZiBjb21wbGV0ZSBDYWxsYmFjayAqLworICAgICAgICAvKiBMZWdhY3kgd2VhayBJQyBDYXB0dXJlIGhhbGYgY29tcGxldGUgQ2FsbGJhY2sgKi8KKyAgICAgICAgaHRpbS0+SUNfQ2FwdHVyZUhhbGZDcGx0Q2FsbGJhY2sgICAgICAgID0gSEFMX1RJTV9JQ19DYXB0dXJlSGFsZkNwbHRDYWxsYmFjazsKICAgICAgICAgYnJlYWs7CiAKICAgICAgIGNhc2UgSEFMX1RJTV9PQ19ERUxBWV9FTEFQU0VEX0NCX0lEIDoKLSAgICAgICAgaHRpbS0+T0NfRGVsYXlFbGFwc2VkQ2FsbGJhY2sgICAgICAgICAgID0gSEFMX1RJTV9PQ19EZWxheUVsYXBzZWRDYWxsYmFjazsgICAgICAgICAgIC8qIExlZ2FjeSB3ZWFrIE9DIERlbGF5IEVsYXBzZWQgQ2FsbGJhY2sgKi8KKyAgICAgICAgLyogTGVnYWN5IHdlYWsgT0MgRGVsYXkgRWxhcHNlZCBDYWxsYmFjayAqLworICAgICAgICBodGltLT5PQ19EZWxheUVsYXBzZWRDYWxsYmFjayAgICAgICAgICAgPSBIQUxfVElNX09DX0RlbGF5RWxhcHNlZENhbGxiYWNrOwogICAgICAgICBicmVhazsKIAogICAgICAgY2FzZSBIQUxfVElNX1BXTV9QVUxTRV9GSU5JU0hFRF9DQl9JRCA6Ci0gICAgICAgIGh0aW0tPlBXTV9QdWxzZUZpbmlzaGVkQ2FsbGJhY2sgICAgICAgICA9IEhBTF9USU1fUFdNX1B1bHNlRmluaXNoZWRDYWxsYmFjazsgICAgICAgICAvKiBMZWdhY3kgd2VhayBQV00gUHVsc2UgRmluaXNoZWQgQ2FsbGJhY2sgKi8KKyAgICAgICAgLyogTGVnYWN5IHdlYWsgUFdNIFB1bHNlIEZpbmlzaGVkIENhbGxiYWNrICovCisgICAgICAgIGh0aW0tPlBXTV9QdWxzZUZpbmlzaGVkQ2FsbGJhY2sgICAgICAgICA9IEhBTF9USU1fUFdNX1B1bHNlRmluaXNoZWRDYWxsYmFjazsKICAgICAgICAgYnJlYWs7CiAKICAgICAgIGNhc2UgSEFMX1RJTV9QV01fUFVMU0VfRklOSVNIRURfSEFMRl9DQl9JRCA6Ci0gICAgICAgIGh0aW0tPlBXTV9QdWxzZUZpbmlzaGVkSGFsZkNwbHRDYWxsYmFjayA9IEhBTF9USU1fUFdNX1B1bHNlRmluaXNoZWRIYWxmQ3BsdENhbGxiYWNrOyAvKiBMZWdhY3kgd2VhayBQV00gUHVsc2UgRmluaXNoZWQgaGFsZiBjb21wbGV0ZSBDYWxsYmFjayAqLworICAgICAgICAvKiBMZWdhY3kgd2VhayBQV00gUHVsc2UgRmluaXNoZWQgaGFsZiBjb21wbGV0ZSBDYWxsYmFjayAqLworICAgICAgICBodGltLT5QV01fUHVsc2VGaW5pc2hlZEhhbGZDcGx0Q2FsbGJhY2sgPSBIQUxfVElNX1BXTV9QdWxzZUZpbmlzaGVkSGFsZkNwbHRDYWxsYmFjazsKICAgICAgICAgYnJlYWs7CiAKICAgICAgIGNhc2UgSEFMX1RJTV9FUlJPUl9DQl9JRCA6Ci0gICAgICAgIGh0aW0tPkVycm9yQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICA9IEhBTF9USU1fRXJyb3JDYWxsYmFjazsgICAgICAgICAgICAgICAgICAgICAvKiBMZWdhY3kgd2VhayBFcnJvciBDYWxsYmFjayAqLworICAgICAgICAvKiBMZWdhY3kgd2VhayBFcnJvciBDYWxsYmFjayAqLworICAgICAgICBodGltLT5FcnJvckNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgPSBIQUxfVElNX0Vycm9yQ2FsbGJhY2s7CiAgICAgICAgIGJyZWFrOwogCiAgICAgICBjYXNlIEhBTF9USU1fQ09NTVVUQVRJT05fQ0JfSUQgOgotICAgICAgICBodGltLT5Db21tdXRhdGlvbkNhbGxiYWNrICAgICAgICAgICAgICAgPSBIQUxfVElNRXhfQ29tbXV0Q2FsbGJhY2s7ICAgICAgICAgICAgICAgICAgLyogTGVnYWN5IHdlYWsgQ29tbXV0YXRpb24gQ2FsbGJhY2sgKi8KKyAgICAgICAgLyogTGVnYWN5IHdlYWsgQ29tbXV0YXRpb24gQ2FsbGJhY2sgKi8KKyAgICAgICAgaHRpbS0+Q29tbXV0YXRpb25DYWxsYmFjayAgICAgICAgICAgICAgID0gSEFMX1RJTUV4X0NvbW11dENhbGxiYWNrOwogICAgICAgICBicmVhazsKIAogICAgICAgY2FzZSBIQUxfVElNX0NPTU1VVEFUSU9OX0hBTEZfQ0JfSUQgOgotICAgICAgICBodGltLT5Db21tdXRhdGlvbkhhbGZDcGx0Q2FsbGJhY2sgICAgICAgPSBIQUxfVElNRXhfQ29tbXV0SGFsZkNwbHRDYWxsYmFjazsgICAgICAgICAgLyogTGVnYWN5IHdlYWsgQ29tbXV0YXRpb24gaGFsZiBjb21wbGV0ZSBDYWxsYmFjayAqLworICAgICAgICAvKiBMZWdhY3kgd2VhayBDb21tdXRhdGlvbiBoYWxmIGNvbXBsZXRlIENhbGxiYWNrICovCisgICAgICAgIGh0aW0tPkNvbW11dGF0aW9uSGFsZkNwbHRDYWxsYmFjayAgICAgICA9IEhBTF9USU1FeF9Db21tdXRIYWxmQ3BsdENhbGxiYWNrOwogICAgICAgICBicmVhazsKIAogICAgICAgY2FzZSBIQUxfVElNX0JSRUFLX0NCX0lEIDoKLSAgICAgICAgaHRpbS0+QnJlYWtDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgID0gSEFMX1RJTUV4X0JyZWFrQ2FsbGJhY2s7ICAgICAgICAgICAgICAgICAgIC8qIExlZ2FjeSB3ZWFrIEJyZWFrIENhbGxiYWNrICovCisgICAgICAgIC8qIExlZ2FjeSB3ZWFrIEJyZWFrIENhbGxiYWNrICovCisgICAgICAgIGh0aW0tPkJyZWFrQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICA9IEhBTF9USU1FeF9CcmVha0NhbGxiYWNrOwogICAgICAgICBicmVhazsKIAogICAgICAgY2FzZSBIQUxfVElNX0JSRUFLMl9DQl9JRCA6Ci0gICAgICAgIGh0aW0tPkJyZWFrMkNhbGxiYWNrICAgICAgICAgICAgICAgICAgICA9IEhBTF9USU1FeF9CcmVhazJDYWxsYmFjazsgICAgICAgICAgICAgICAgICAvKiBMZWdhY3kgd2VhayBCcmVhazIgQ2FsbGJhY2sgKi8KKyAgICAgICAgLyogTGVnYWN5IHdlYWsgQnJlYWsyIENhbGxiYWNrICovCisgICAgICAgIGh0aW0tPkJyZWFrMkNhbGxiYWNrICAgICAgICAgICAgICAgICAgICA9IEhBTF9USU1FeF9CcmVhazJDYWxsYmFjazsKICAgICAgICAgYnJlYWs7CiAKICAgICAgIGRlZmF1bHQgOgogICAgICAgICAvKiBSZXR1cm4gZXJyb3Igc3RhdHVzICovCi0gICAgICAgIHN0YXR1cyA9ICBIQUxfRVJST1I7CisgICAgICAgIHN0YXR1cyA9IEhBTF9FUlJPUjsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICB9CkBAIC02MTk3LDcxICs2Mzc1LDg1IEBACiAgICAgc3dpdGNoIChDYWxsYmFja0lEKQogICAgIHsKICAgICAgIGNhc2UgSEFMX1RJTV9CQVNFX01TUElOSVRfQ0JfSUQgOgotICAgICAgICBodGltLT5CYXNlX01zcEluaXRDYWxsYmFjayAgICAgICAgID0gSEFMX1RJTV9CYXNlX01zcEluaXQ7ICAgICAgICAgICAgICAvKiBMZWdhY3kgd2VhayBCYXNlIE1zcEluaXQgQ2FsbGJhY2sgKi8KKyAgICAgICAgLyogTGVnYWN5IHdlYWsgQmFzZSBNc3BJbml0IENhbGxiYWNrICovCisgICAgICAgIGh0aW0tPkJhc2VfTXNwSW5pdENhbGxiYWNrICAgICAgICAgPSBIQUxfVElNX0Jhc2VfTXNwSW5pdDsKICAgICAgICAgYnJlYWs7CiAKICAgICAgIGNhc2UgSEFMX1RJTV9CQVNFX01TUERFSU5JVF9DQl9JRCA6Ci0gICAgICAgIGh0aW0tPkJhc2VfTXNwRGVJbml0Q2FsbGJhY2sgICAgICAgPSBIQUxfVElNX0Jhc2VfTXNwRGVJbml0OyAgICAgICAgICAgIC8qIExlZ2FjeSB3ZWFrIEJhc2UgTXNwIERlSW5pdCBDYWxsYmFjayAqLworICAgICAgICAvKiBMZWdhY3kgd2VhayBCYXNlIE1zcCBEZUluaXQgQ2FsbGJhY2sgKi8KKyAgICAgICAgaHRpbS0+QmFzZV9Nc3BEZUluaXRDYWxsYmFjayAgICAgICA9IEhBTF9USU1fQmFzZV9Nc3BEZUluaXQ7CiAgICAgICAgIGJyZWFrOwogCiAgICAgICBjYXNlIEhBTF9USU1fSUNfTVNQSU5JVF9DQl9JRCA6Ci0gICAgICAgIGh0aW0tPklDX01zcEluaXRDYWxsYmFjayAgICAgICAgICAgPSBIQUxfVElNX0lDX01zcEluaXQ7ICAgICAgICAgICAgICAgIC8qIExlZ2FjeSB3ZWFrIElDIE1zcCBJbml0IENhbGxiYWNrICovCisgICAgICAgIC8qIExlZ2FjeSB3ZWFrIElDIE1zcCBJbml0IENhbGxiYWNrICovCisgICAgICAgIGh0aW0tPklDX01zcEluaXRDYWxsYmFjayAgICAgICAgICAgPSBIQUxfVElNX0lDX01zcEluaXQ7CiAgICAgICAgIGJyZWFrOwogCiAgICAgICBjYXNlIEhBTF9USU1fSUNfTVNQREVJTklUX0NCX0lEIDoKLSAgICAgICAgaHRpbS0+SUNfTXNwRGVJbml0Q2FsbGJhY2sgICAgICAgICA9IEhBTF9USU1fSUNfTXNwRGVJbml0OyAgICAgICAgICAgICAgLyogTGVnYWN5IHdlYWsgSUMgTXNwIERlSW5pdCBDYWxsYmFjayAqLworICAgICAgICAvKiBMZWdhY3kgd2VhayBJQyBNc3AgRGVJbml0IENhbGxiYWNrICovCisgICAgICAgIGh0aW0tPklDX01zcERlSW5pdENhbGxiYWNrICAgICAgICAgPSBIQUxfVElNX0lDX01zcERlSW5pdDsKICAgICAgICAgYnJlYWs7CiAKICAgICAgIGNhc2UgSEFMX1RJTV9PQ19NU1BJTklUX0NCX0lEIDoKLSAgICAgICAgaHRpbS0+T0NfTXNwSW5pdENhbGxiYWNrICAgICAgICAgICA9IEhBTF9USU1fT0NfTXNwSW5pdDsgICAgICAgICAgICAgICAgLyogTGVnYWN5IHdlYWsgT0MgTXNwIEluaXQgQ2FsbGJhY2sgKi8KKyAgICAgICAgLyogTGVnYWN5IHdlYWsgT0MgTXNwIEluaXQgQ2FsbGJhY2sgKi8KKyAgICAgICAgaHRpbS0+T0NfTXNwSW5pdENhbGxiYWNrICAgICAgICAgICA9IEhBTF9USU1fT0NfTXNwSW5pdDsKICAgICAgICAgYnJlYWs7CiAKICAgICAgIGNhc2UgSEFMX1RJTV9PQ19NU1BERUlOSVRfQ0JfSUQgOgotICAgICAgICBodGltLT5PQ19Nc3BEZUluaXRDYWxsYmFjayAgICAgICAgID0gSEFMX1RJTV9PQ19Nc3BEZUluaXQ7ICAgICAgICAgICAgICAvKiBMZWdhY3kgd2VhayBPQyBNc3AgRGVJbml0IENhbGxiYWNrICovCisgICAgICAgIC8qIExlZ2FjeSB3ZWFrIE9DIE1zcCBEZUluaXQgQ2FsbGJhY2sgKi8KKyAgICAgICAgaHRpbS0+T0NfTXNwRGVJbml0Q2FsbGJhY2sgICAgICAgICA9IEhBTF9USU1fT0NfTXNwRGVJbml0OwogICAgICAgICBicmVhazsKIAogICAgICAgY2FzZSBIQUxfVElNX1BXTV9NU1BJTklUX0NCX0lEIDoKLSAgICAgICAgaHRpbS0+UFdNX01zcEluaXRDYWxsYmFjayAgICAgICAgICA9IEhBTF9USU1fUFdNX01zcEluaXQ7ICAgICAgICAgICAgICAgLyogTGVnYWN5IHdlYWsgUFdNIE1zcCBJbml0IENhbGxiYWNrICovCisgICAgICAgIC8qIExlZ2FjeSB3ZWFrIFBXTSBNc3AgSW5pdCBDYWxsYmFjayAqLworICAgICAgICBodGltLT5QV01fTXNwSW5pdENhbGxiYWNrICAgICAgICAgID0gSEFMX1RJTV9QV01fTXNwSW5pdDsKICAgICAgICAgYnJlYWs7CiAKICAgICAgIGNhc2UgSEFMX1RJTV9QV01fTVNQREVJTklUX0NCX0lEIDoKLSAgICAgICAgaHRpbS0+UFdNX01zcERlSW5pdENhbGxiYWNrICAgICAgICA9IEhBTF9USU1fUFdNX01zcERlSW5pdDsgICAgICAgICAgICAgLyogTGVnYWN5IHdlYWsgUFdNIE1zcCBEZUluaXQgQ2FsbGJhY2sgKi8KKyAgICAgICAgLyogTGVnYWN5IHdlYWsgUFdNIE1zcCBEZUluaXQgQ2FsbGJhY2sgKi8KKyAgICAgICAgaHRpbS0+UFdNX01zcERlSW5pdENhbGxiYWNrICAgICAgICA9IEhBTF9USU1fUFdNX01zcERlSW5pdDsKICAgICAgICAgYnJlYWs7CiAKICAgICAgIGNhc2UgSEFMX1RJTV9PTkVfUFVMU0VfTVNQSU5JVF9DQl9JRCA6Ci0gICAgICAgIGh0aW0tPk9uZVB1bHNlX01zcEluaXRDYWxsYmFjayAgICAgPSBIQUxfVElNX09uZVB1bHNlX01zcEluaXQ7ICAgICAgICAgIC8qIExlZ2FjeSB3ZWFrIE9uZSBQdWxzZSBNc3AgSW5pdCBDYWxsYmFjayAqLworICAgICAgICAvKiBMZWdhY3kgd2VhayBPbmUgUHVsc2UgTXNwIEluaXQgQ2FsbGJhY2sgKi8KKyAgICAgICAgaHRpbS0+T25lUHVsc2VfTXNwSW5pdENhbGxiYWNrICAgICA9IEhBTF9USU1fT25lUHVsc2VfTXNwSW5pdDsKICAgICAgICAgYnJlYWs7CiAKICAgICAgIGNhc2UgSEFMX1RJTV9PTkVfUFVMU0VfTVNQREVJTklUX0NCX0lEIDoKLSAgICAgICAgaHRpbS0+T25lUHVsc2VfTXNwRGVJbml0Q2FsbGJhY2sgICA9IEhBTF9USU1fT25lUHVsc2VfTXNwRGVJbml0OyAgICAgICAgLyogTGVnYWN5IHdlYWsgT25lIFB1bHNlIE1zcCBEZUluaXQgQ2FsbGJhY2sgKi8KKyAgICAgICAgLyogTGVnYWN5IHdlYWsgT25lIFB1bHNlIE1zcCBEZUluaXQgQ2FsbGJhY2sgKi8KKyAgICAgICAgaHRpbS0+T25lUHVsc2VfTXNwRGVJbml0Q2FsbGJhY2sgICA9IEhBTF9USU1fT25lUHVsc2VfTXNwRGVJbml0OwogICAgICAgICBicmVhazsKIAogICAgICAgY2FzZSBIQUxfVElNX0VOQ09ERVJfTVNQSU5JVF9DQl9JRCA6Ci0gICAgICAgIGh0aW0tPkVuY29kZXJfTXNwSW5pdENhbGxiYWNrICAgICAgPSBIQUxfVElNX0VuY29kZXJfTXNwSW5pdDsgICAgICAgICAgIC8qIExlZ2FjeSB3ZWFrIEVuY29kZXIgTXNwIEluaXQgQ2FsbGJhY2sgKi8KKyAgICAgICAgLyogTGVnYWN5IHdlYWsgRW5jb2RlciBNc3AgSW5pdCBDYWxsYmFjayAqLworICAgICAgICBodGltLT5FbmNvZGVyX01zcEluaXRDYWxsYmFjayAgICAgID0gSEFMX1RJTV9FbmNvZGVyX01zcEluaXQ7CiAgICAgICAgIGJyZWFrOwogCiAgICAgICBjYXNlIEhBTF9USU1fRU5DT0RFUl9NU1BERUlOSVRfQ0JfSUQgOgotICAgICAgICBodGltLT5FbmNvZGVyX01zcERlSW5pdENhbGxiYWNrICAgID0gSEFMX1RJTV9FbmNvZGVyX01zcERlSW5pdDsgICAgICAgICAvKiBMZWdhY3kgd2VhayBFbmNvZGVyIE1zcCBEZUluaXQgQ2FsbGJhY2sgKi8KKyAgICAgICAgLyogTGVnYWN5IHdlYWsgRW5jb2RlciBNc3AgRGVJbml0IENhbGxiYWNrICovCisgICAgICAgIGh0aW0tPkVuY29kZXJfTXNwRGVJbml0Q2FsbGJhY2sgICAgPSBIQUxfVElNX0VuY29kZXJfTXNwRGVJbml0OwogICAgICAgICBicmVhazsKIAogICAgICAgY2FzZSBIQUxfVElNX0hBTExfU0VOU09SX01TUElOSVRfQ0JfSUQgOgotICAgICAgICBodGltLT5IYWxsU2Vuc29yX01zcEluaXRDYWxsYmFjayAgID0gSEFMX1RJTUV4X0hhbGxTZW5zb3JfTXNwSW5pdDsgICAgICAvKiBMZWdhY3kgd2VhayBIYWxsIFNlbnNvciBNc3AgSW5pdCBDYWxsYmFjayAqLworICAgICAgICAvKiBMZWdhY3kgd2VhayBIYWxsIFNlbnNvciBNc3AgSW5pdCBDYWxsYmFjayAqLworICAgICAgICBodGltLT5IYWxsU2Vuc29yX01zcEluaXRDYWxsYmFjayAgID0gSEFMX1RJTUV4X0hhbGxTZW5zb3JfTXNwSW5pdDsKICAgICAgICAgYnJlYWs7CiAKICAgICAgIGNhc2UgSEFMX1RJTV9IQUxMX1NFTlNPUl9NU1BERUlOSVRfQ0JfSUQgOgotICAgICAgICBodGltLT5IYWxsU2Vuc29yX01zcERlSW5pdENhbGxiYWNrID0gSEFMX1RJTUV4X0hhbGxTZW5zb3JfTXNwRGVJbml0OyAgICAvKiBMZWdhY3kgd2VhayBIYWxsIFNlbnNvciBNc3AgRGVJbml0IENhbGxiYWNrICovCisgICAgICAgIC8qIExlZ2FjeSB3ZWFrIEhhbGwgU2Vuc29yIE1zcCBEZUluaXQgQ2FsbGJhY2sgKi8KKyAgICAgICAgaHRpbS0+SGFsbFNlbnNvcl9Nc3BEZUluaXRDYWxsYmFjayA9IEhBTF9USU1FeF9IYWxsU2Vuc29yX01zcERlSW5pdDsKICAgICAgICAgYnJlYWs7CiAKICAgICAgIGRlZmF1bHQgOgogICAgICAgICAvKiBSZXR1cm4gZXJyb3Igc3RhdHVzICovCi0gICAgICAgIHN0YXR1cyA9ICBIQUxfRVJST1I7CisgICAgICAgIHN0YXR1cyA9IEhBTF9FUlJPUjsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICB9CiAgIGVsc2UKICAgewogICAgIC8qIFJldHVybiBlcnJvciBzdGF0dXMgKi8KLSAgICBzdGF0dXMgPSAgSEFMX0VSUk9SOworICAgIHN0YXR1cyA9IEhBTF9FUlJPUjsKICAgfQogCiAgIC8qIFJlbGVhc2UgTG9jayAqLwpAQCAtNzE3Niw2ICs3MzY4LDcgQEAKIHN0YXRpYyBIQUxfU3RhdHVzVHlwZURlZiBUSU1fU2xhdmVUaW1lcl9TZXRDb25maWcoVElNX0hhbmRsZVR5cGVEZWYgKmh0aW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJTV9TbGF2ZUNvbmZpZ1R5cGVEZWYgKnNTbGF2ZUNvbmZpZykKIHsKKyAgSEFMX1N0YXR1c1R5cGVEZWYgc3RhdHVzID0gSEFMX09LOwogICB1aW50MzJfdCB0bXBzbWNyOwogICB1aW50MzJfdCB0bXBjY21yMTsKICAgdWludDMyX3QgdG1wY2NlcjsKQEAgLTcyNzIsMTYgKzc0NjUsMTggQEAKICAgICBjYXNlIFRJTV9UU19JVFIxOgogICAgIGNhc2UgVElNX1RTX0lUUjI6CiAgICAgY2FzZSBUSU1fVFNfSVRSMzoKLSAgICAgIHsKLSAgICAgICAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlciAqLwotICAgICAgICBhc3NlcnRfcGFyYW0oSVNfVElNX0NDMl9JTlNUQU5DRShodGltLT5JbnN0YW5jZSkpOwotICAgICAgICBicmVhazsKLSAgICAgIH0KKyAgICB7CisgICAgICAvKiBDaGVjayB0aGUgcGFyYW1ldGVyICovCisgICAgICBhc3NlcnRfcGFyYW0oSVNfVElNX0NDMl9JTlNUQU5DRShodGltLT5JbnN0YW5jZSkpOworICAgICAgYnJlYWs7CisgICAgfQogCiAgICAgZGVmYXVsdDoKKyAgICAgIHN0YXR1cyA9IEhBTF9FUlJPUjsKICAgICAgIGJyZWFrOwogICB9Ci0gIHJldHVybiBIQUxfT0s7CisKKyAgcmV0dXJuIHN0YXR1czsKIH0KIAogLyoqCkBAIC03NjU3LDIwICs3ODUyLDIwIEBACiB2b2lkIFRJTV9SZXNldENhbGxiYWNrKFRJTV9IYW5kbGVUeXBlRGVmICpodGltKQogewogICAvKiBSZXNldCB0aGUgVElNIGNhbGxiYWNrIHRvIHRoZSBsZWdhY3kgd2VhayBjYWxsYmFja3MgKi8KLSAgaHRpbS0+UGVyaW9kRWxhcHNlZENhbGxiYWNrICAgICAgICAgICAgID0gSEFMX1RJTV9QZXJpb2RFbGFwc2VkQ2FsbGJhY2s7ICAgICAgICAgICAgIC8qIExlZ2FjeSB3ZWFrIFBlcmlvZEVsYXBzZWRDYWxsYmFjayAgICAgICAgICAgICAqLwotICBodGltLT5QZXJpb2RFbGFwc2VkSGFsZkNwbHRDYWxsYmFjayAgICAgPSBIQUxfVElNX1BlcmlvZEVsYXBzZWRIYWxmQ3BsdENhbGxiYWNrOyAgICAgLyogTGVnYWN5IHdlYWsgUGVyaW9kRWxhcHNlZEhhbGZDcGx0Q2FsbGJhY2sgICAgICovCi0gIGh0aW0tPlRyaWdnZXJDYWxsYmFjayAgICAgICAgICAgICAgICAgICA9IEhBTF9USU1fVHJpZ2dlckNhbGxiYWNrOyAgICAgICAgICAgICAgICAgICAvKiBMZWdhY3kgd2VhayBUcmlnZ2VyQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgKi8KLSAgaHRpbS0+VHJpZ2dlckhhbGZDcGx0Q2FsbGJhY2sgICAgICAgICAgID0gSEFMX1RJTV9UcmlnZ2VySGFsZkNwbHRDYWxsYmFjazsgICAgICAgICAgIC8qIExlZ2FjeSB3ZWFrIFRyaWdnZXJIYWxmQ3BsdENhbGxiYWNrICAgICAgICAgICAqLwotICBodGltLT5JQ19DYXB0dXJlQ2FsbGJhY2sgICAgICAgICAgICAgICAgPSBIQUxfVElNX0lDX0NhcHR1cmVDYWxsYmFjazsgICAgICAgICAgICAgICAgLyogTGVnYWN5IHdlYWsgSUNfQ2FwdHVyZUNhbGxiYWNrICAgICAgICAgICAgICAgICovCi0gIGh0aW0tPklDX0NhcHR1cmVIYWxmQ3BsdENhbGxiYWNrICAgICAgICA9IEhBTF9USU1fSUNfQ2FwdHVyZUhhbGZDcGx0Q2FsbGJhY2s7ICAgICAgICAvKiBMZWdhY3kgd2VhayBJQ19DYXB0dXJlSGFsZkNwbHRDYWxsYmFjayAgICAgICAgKi8KLSAgaHRpbS0+T0NfRGVsYXlFbGFwc2VkQ2FsbGJhY2sgICAgICAgICAgID0gSEFMX1RJTV9PQ19EZWxheUVsYXBzZWRDYWxsYmFjazsgICAgICAgICAgIC8qIExlZ2FjeSB3ZWFrIE9DX0RlbGF5RWxhcHNlZENhbGxiYWNrICAgICAgICAgICAqLwotICBodGltLT5QV01fUHVsc2VGaW5pc2hlZENhbGxiYWNrICAgICAgICAgPSBIQUxfVElNX1BXTV9QdWxzZUZpbmlzaGVkQ2FsbGJhY2s7ICAgICAgICAgLyogTGVnYWN5IHdlYWsgUFdNX1B1bHNlRmluaXNoZWRDYWxsYmFjayAgICAgICAgICovCi0gIGh0aW0tPlBXTV9QdWxzZUZpbmlzaGVkSGFsZkNwbHRDYWxsYmFjayA9IEhBTF9USU1fUFdNX1B1bHNlRmluaXNoZWRIYWxmQ3BsdENhbGxiYWNrOyAvKiBMZWdhY3kgd2VhayBQV01fUHVsc2VGaW5pc2hlZEhhbGZDcGx0Q2FsbGJhY2sgKi8KLSAgaHRpbS0+RXJyb3JDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgID0gSEFMX1RJTV9FcnJvckNhbGxiYWNrOyAgICAgICAgICAgICAgICAgICAgIC8qIExlZ2FjeSB3ZWFrIEVycm9yQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAqLwotICBodGltLT5Db21tdXRhdGlvbkNhbGxiYWNrICAgICAgICAgICAgICAgPSBIQUxfVElNRXhfQ29tbXV0Q2FsbGJhY2s7ICAgICAgICAgICAgICAgICAgLyogTGVnYWN5IHdlYWsgQ29tbXV0YXRpb25DYWxsYmFjayAgICAgICAgICAgICAgICovCi0gIGh0aW0tPkNvbW11dGF0aW9uSGFsZkNwbHRDYWxsYmFjayAgICAgICA9IEhBTF9USU1FeF9Db21tdXRIYWxmQ3BsdENhbGxiYWNrOyAgICAgICAgICAvKiBMZWdhY3kgd2VhayBDb21tdXRhdGlvbkhhbGZDcGx0Q2FsbGJhY2sgICAgICAgKi8KLSAgaHRpbS0+QnJlYWtDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgID0gSEFMX1RJTUV4X0JyZWFrQ2FsbGJhY2s7ICAgICAgICAgICAgICAgICAgIC8qIExlZ2FjeSB3ZWFrIEJyZWFrQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAqLwotICBodGltLT5CcmVhazJDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgPSBIQUxfVElNRXhfQnJlYWsyQ2FsbGJhY2s7ICAgICAgICAgICAgICAgICAgLyogTGVnYWN5IHdlYWsgQnJlYWsyQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICovCisgIGh0aW0tPlBlcmlvZEVsYXBzZWRDYWxsYmFjayAgICAgICAgICAgICA9IEhBTF9USU1fUGVyaW9kRWxhcHNlZENhbGxiYWNrOworICBodGltLT5QZXJpb2RFbGFwc2VkSGFsZkNwbHRDYWxsYmFjayAgICAgPSBIQUxfVElNX1BlcmlvZEVsYXBzZWRIYWxmQ3BsdENhbGxiYWNrOworICBodGltLT5UcmlnZ2VyQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgPSBIQUxfVElNX1RyaWdnZXJDYWxsYmFjazsKKyAgaHRpbS0+VHJpZ2dlckhhbGZDcGx0Q2FsbGJhY2sgICAgICAgICAgID0gSEFMX1RJTV9UcmlnZ2VySGFsZkNwbHRDYWxsYmFjazsKKyAgaHRpbS0+SUNfQ2FwdHVyZUNhbGxiYWNrICAgICAgICAgICAgICAgID0gSEFMX1RJTV9JQ19DYXB0dXJlQ2FsbGJhY2s7CisgIGh0aW0tPklDX0NhcHR1cmVIYWxmQ3BsdENhbGxiYWNrICAgICAgICA9IEhBTF9USU1fSUNfQ2FwdHVyZUhhbGZDcGx0Q2FsbGJhY2s7CisgIGh0aW0tPk9DX0RlbGF5RWxhcHNlZENhbGxiYWNrICAgICAgICAgICA9IEhBTF9USU1fT0NfRGVsYXlFbGFwc2VkQ2FsbGJhY2s7CisgIGh0aW0tPlBXTV9QdWxzZUZpbmlzaGVkQ2FsbGJhY2sgICAgICAgICA9IEhBTF9USU1fUFdNX1B1bHNlRmluaXNoZWRDYWxsYmFjazsKKyAgaHRpbS0+UFdNX1B1bHNlRmluaXNoZWRIYWxmQ3BsdENhbGxiYWNrID0gSEFMX1RJTV9QV01fUHVsc2VGaW5pc2hlZEhhbGZDcGx0Q2FsbGJhY2s7CisgIGh0aW0tPkVycm9yQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICA9IEhBTF9USU1fRXJyb3JDYWxsYmFjazsKKyAgaHRpbS0+Q29tbXV0YXRpb25DYWxsYmFjayAgICAgICAgICAgICAgID0gSEFMX1RJTUV4X0NvbW11dENhbGxiYWNrOworICBodGltLT5Db21tdXRhdGlvbkhhbGZDcGx0Q2FsbGJhY2sgICAgICAgPSBIQUxfVElNRXhfQ29tbXV0SGFsZkNwbHRDYWxsYmFjazsKKyAgaHRpbS0+QnJlYWtDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgID0gSEFMX1RJTUV4X0JyZWFrQ2FsbGJhY2s7CisgIGh0aW0tPkJyZWFrMkNhbGxiYWNrICAgICAgICAgICAgICAgICAgICA9IEhBTF9USU1FeF9CcmVhazJDYWxsYmFjazsKIH0KICNlbmRpZiAvKiBVU0VfSEFMX1RJTV9SRUdJU1RFUl9DQUxMQkFDS1MgKi8KIApAQCAtNzY4Niw0ICs3ODgxLDMgQEAKIC8qKgogICAqIEB9CiAgICovCi0vKioqKioqKioqKioqKioqKioqKioqKioqIChDKSBDT1BZUklHSFQgU1RNaWNyb2VsZWN0cm9uaWNzICoqKioqRU5EIE9GIEZJTEUqKioqLwpkaWZmIC0tZ2l0IGEvU3JjL3N0bTMyZjd4eF9oYWxfdGltX2V4LmMgYi9TcmMvc3RtMzJmN3h4X2hhbF90aW1fZXguYwppbmRleCBhNWFlOTE4Li4yMTM1YWY2IDEwMDY0NAotLS0gYS9TcmMvc3RtMzJmN3h4X2hhbF90aW1fZXguYworKysgYi9TcmMvc3RtMzJmN3h4X2hhbF90aW1fZXguYwpAQCAtMTEsNiArMTEsMTcgQEAKICAgKiAgICAgICAgICAgKyBUaW1lIE1hc3RlciBhbmQgU2xhdmUgc3luY2hyb25pemF0aW9uIGNvbmZpZ3VyYXRpb24KICAgKiAgICAgICAgICAgKyBUaW1lIE91dHB1dCBDb21wYXJlL1BXTSBDaGFubmVsIENvbmZpZ3VyYXRpb24gKGZvciBjaGFubmVscyA1IGFuZCA2KQogICAqICAgICAgICAgICArIFRpbWVyIHJlbWFwcGluZyBjYXBhYmlsaXRpZXMgY29uZmlndXJhdGlvbgorICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgKiBAYXR0ZW50aW9uCisgICoKKyAgKiBDb3B5cmlnaHQgKGMpIDIwMTcgU1RNaWNyb2VsZWN0cm9uaWNzLgorICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgICoKKyAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIHVuZGVyIHRlcm1zIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUKKyAgKiBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb2Z0d2FyZSBjb21wb25lbnQuCisgICogSWYgbm8gTElDRU5TRSBmaWxlIGNvbWVzIHdpdGggdGhpcyBzb2Z0d2FyZSwgaXQgaXMgcHJvdmlkZWQgQVMtSVMuCisgICoKKyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgIEB2ZXJiYXRpbQogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgICAgICAgICAgICAgICAgICAgICAjIyMjIyBUSU1FUiBFeHRlbmRlZCBmZWF0dXJlcyAjIyMjIwpAQCAtNTUsMjQgKzY2LDE2IEBACiAgICAgICAgICAgICAgICB0aGUgY29tbXV0YXRpb24gZXZlbnQpLgogCiAgICAgICgjKSBBY3RpdmF0ZSB0aGUgVElNIHBlcmlwaGVyYWwgdXNpbmcgb25lIG9mIHRoZSBzdGFydCBmdW5jdGlvbnM6Ci0gICAgICAgICAgICgrKykgQ29tcGxlbWVudGFyeSBPdXRwdXQgQ29tcGFyZSA6IEhBTF9USU1FeF9PQ05fU3RhcnQoKSwgSEFMX1RJTUV4X09DTl9TdGFydF9ETUEoKSwgSEFMX1RJTUV4X09DTl9TdGFydF9JVCgpCi0gICAgICAgICAgICgrKykgQ29tcGxlbWVudGFyeSBQV00gZ2VuZXJhdGlvbiA6IEhBTF9USU1FeF9QV01OX1N0YXJ0KCksIEhBTF9USU1FeF9QV01OX1N0YXJ0X0RNQSgpLCBIQUxfVElNRXhfUFdNTl9TdGFydF9JVCgpCisgICAgICAgICAgICgrKykgQ29tcGxlbWVudGFyeSBPdXRwdXQgQ29tcGFyZSA6IEhBTF9USU1FeF9PQ05fU3RhcnQoKSwgSEFMX1RJTUV4X09DTl9TdGFydF9ETUEoKSwKKyAgICAgICAgICAgICAgICBIQUxfVElNRXhfT0NOX1N0YXJ0X0lUKCkKKyAgICAgICAgICAgKCsrKSBDb21wbGVtZW50YXJ5IFBXTSBnZW5lcmF0aW9uIDogSEFMX1RJTUV4X1BXTU5fU3RhcnQoKSwgSEFMX1RJTUV4X1BXTU5fU3RhcnRfRE1BKCksCisgICAgICAgICAgICAgICAgSEFMX1RJTUV4X1BXTU5fU3RhcnRfSVQoKQogICAgICAgICAgICAoKyspIENvbXBsZW1lbnRhcnkgT25lLXB1bHNlIG1vZGUgb3V0cHV0IDogSEFMX1RJTUV4X09uZVB1bHNlTl9TdGFydCgpLCBIQUxfVElNRXhfT25lUHVsc2VOX1N0YXJ0X0lUKCkKLSAgICAgICAgICAgKCsrKSBIYWxsIFNlbnNvciBvdXRwdXQgOiBIQUxfVElNRXhfSGFsbFNlbnNvcl9TdGFydCgpLCBIQUxfVElNRXhfSGFsbFNlbnNvcl9TdGFydF9ETUEoKSwgSEFMX1RJTUV4X0hhbGxTZW5zb3JfU3RhcnRfSVQoKS4KKyAgICAgICAgICAgKCsrKSBIYWxsIFNlbnNvciBvdXRwdXQgOiBIQUxfVElNRXhfSGFsbFNlbnNvcl9TdGFydCgpLCBIQUxfVElNRXhfSGFsbFNlbnNvcl9TdGFydF9ETUEoKSwKKyAgICAgICAgICAgICAgICBIQUxfVElNRXhfSGFsbFNlbnNvcl9TdGFydF9JVCgpLgogCiAgIEBlbmR2ZXJiYXRpbQogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAgKiBAYXR0ZW50aW9uCi0gICoKLSAgKiA8aDI+PGNlbnRlcj4mY29weTsgQ29weXJpZ2h0IChjKSAyMDE3IFNUTWljcm9lbGVjdHJvbmljcy4KLSAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLjwvY2VudGVyPjwvaDI+Ci0gICoKLSAgKiBUaGlzIHNvZnR3YXJlIGNvbXBvbmVudCBpcyBsaWNlbnNlZCBieSBTVCB1bmRlciBCU0QgMy1DbGF1c2UgbGljZW5zZSwKLSAgKiB0aGUgIkxpY2Vuc2UiOyBZb3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlCi0gICogTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0OgotICAqICAgICAgICAgICAgICAgICAgICAgICAgb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvQlNELTMtQ2xhdXNlCi0gICoKLSAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgICovCiAKIC8qIEluY2x1ZGVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCkBAIC0zMzYsNyArMzM5LDggQEAKICAgVElNX0NIQU5ORUxfTl9TVEFURV9TRVQoaHRpbSwgVElNX0NIQU5ORUxfMiwgSEFMX1RJTV9DSEFOTkVMX1NUQVRFX0JVU1kpOwogCiAgIC8qIEVuYWJsZSB0aGUgSW5wdXQgQ2FwdHVyZSBjaGFubmVsIDEKLSAgKGluIHRoZSBIYWxsIFNlbnNvciBJbnRlcmZhY2UgdGhlIHRocmVlIHBvc3NpYmxlIGNoYW5uZWxzIHRoYXQgY2FuIGJlIHVzZWQgYXJlIFRJTV9DSEFOTkVMXzEsIFRJTV9DSEFOTkVMXzIgYW5kIFRJTV9DSEFOTkVMXzMpICovCisgIChpbiB0aGUgSGFsbCBTZW5zb3IgSW50ZXJmYWNlIHRoZSB0aHJlZSBwb3NzaWJsZSBjaGFubmVscyB0aGF0IGNhbiBiZSB1c2VkIGFyZSBUSU1fQ0hBTk5FTF8xLAorICBUSU1fQ0hBTk5FTF8yIGFuZCBUSU1fQ0hBTk5FTF8zKSAqLwogICBUSU1fQ0N4Q2hhbm5lbENtZChodGltLT5JbnN0YW5jZSwgVElNX0NIQU5ORUxfMSwgVElNX0NDeF9FTkFCTEUpOwogCiAgIC8qIEVuYWJsZSB0aGUgUGVyaXBoZXJhbCwgZXhjZXB0IGluIHRyaWdnZXIgbW9kZSB3aGVyZSBlbmFibGUgaXMgYXV0b21hdGljYWxseSBkb25lIHdpdGggdHJpZ2dlciAqLwpAQCAtMzY4LDcgKzM3Miw4IEBACiAgIGFzc2VydF9wYXJhbShJU19USU1fSEFMTF9TRU5TT1JfSU5URVJGQUNFX0lOU1RBTkNFKGh0aW0tPkluc3RhbmNlKSk7CiAKICAgLyogRGlzYWJsZSB0aGUgSW5wdXQgQ2FwdHVyZSBjaGFubmVscyAxLCAyIGFuZCAzCi0gICAgKGluIHRoZSBIYWxsIFNlbnNvciBJbnRlcmZhY2UgdGhlIHRocmVlIHBvc3NpYmxlIGNoYW5uZWxzIHRoYXQgY2FuIGJlIHVzZWQgYXJlIFRJTV9DSEFOTkVMXzEsIFRJTV9DSEFOTkVMXzIgYW5kIFRJTV9DSEFOTkVMXzMpICovCisgIChpbiB0aGUgSGFsbCBTZW5zb3IgSW50ZXJmYWNlIHRoZSB0aHJlZSBwb3NzaWJsZSBjaGFubmVscyB0aGF0IGNhbiBiZSB1c2VkIGFyZSBUSU1fQ0hBTk5FTF8xLAorICBUSU1fQ0hBTk5FTF8yIGFuZCBUSU1fQ0hBTk5FTF8zKSAqLwogICBUSU1fQ0N4Q2hhbm5lbENtZChodGltLT5JbnN0YW5jZSwgVElNX0NIQU5ORUxfMSwgVElNX0NDeF9ESVNBQkxFKTsKIAogICAvKiBEaXNhYmxlIHRoZSBQZXJpcGhlcmFsICovCkBAIC00MTksNyArNDI0LDggQEAKICAgX19IQUxfVElNX0VOQUJMRV9JVChodGltLCBUSU1fSVRfQ0MxKTsKIAogICAvKiBFbmFibGUgdGhlIElucHV0IENhcHR1cmUgY2hhbm5lbCAxCi0gICAgKGluIHRoZSBIYWxsIFNlbnNvciBJbnRlcmZhY2UgdGhlIHRocmVlIHBvc3NpYmxlIGNoYW5uZWxzIHRoYXQgY2FuIGJlIHVzZWQgYXJlIFRJTV9DSEFOTkVMXzEsIFRJTV9DSEFOTkVMXzIgYW5kIFRJTV9DSEFOTkVMXzMpICovCisgIChpbiB0aGUgSGFsbCBTZW5zb3IgSW50ZXJmYWNlIHRoZSB0aHJlZSBwb3NzaWJsZSBjaGFubmVscyB0aGF0IGNhbiBiZSB1c2VkIGFyZSBUSU1fQ0hBTk5FTF8xLAorICBUSU1fQ0hBTk5FTF8yIGFuZCBUSU1fQ0hBTk5FTF8zKSAqLwogICBUSU1fQ0N4Q2hhbm5lbENtZChodGltLT5JbnN0YW5jZSwgVElNX0NIQU5ORUxfMSwgVElNX0NDeF9FTkFCTEUpOwogCiAgIC8qIEVuYWJsZSB0aGUgUGVyaXBoZXJhbCwgZXhjZXB0IGluIHRyaWdnZXIgbW9kZSB3aGVyZSBlbmFibGUgaXMgYXV0b21hdGljYWxseSBkb25lIHdpdGggdHJpZ2dlciAqLwpAQCAtNDUxLDcgKzQ1Nyw4IEBACiAgIGFzc2VydF9wYXJhbShJU19USU1fSEFMTF9TRU5TT1JfSU5URVJGQUNFX0lOU1RBTkNFKGh0aW0tPkluc3RhbmNlKSk7CiAKICAgLyogRGlzYWJsZSB0aGUgSW5wdXQgQ2FwdHVyZSBjaGFubmVsIDEKLSAgICAoaW4gdGhlIEhhbGwgU2Vuc29yIEludGVyZmFjZSB0aGUgdGhyZWUgcG9zc2libGUgY2hhbm5lbHMgdGhhdCBjYW4gYmUgdXNlZCBhcmUgVElNX0NIQU5ORUxfMSwgVElNX0NIQU5ORUxfMiBhbmQgVElNX0NIQU5ORUxfMykgKi8KKyAgKGluIHRoZSBIYWxsIFNlbnNvciBJbnRlcmZhY2UgdGhlIHRocmVlIHBvc3NpYmxlIGNoYW5uZWxzIHRoYXQgY2FuIGJlIHVzZWQgYXJlIFRJTV9DSEFOTkVMXzEsCisgIFRJTV9DSEFOTkVMXzIgYW5kIFRJTV9DSEFOTkVMXzMpICovCiAgIFRJTV9DQ3hDaGFubmVsQ21kKGh0aW0tPkluc3RhbmNlLCBUSU1fQ0hBTk5FTF8xLCBUSU1fQ0N4X0RJU0FCTEUpOwogCiAgIC8qIERpc2FibGUgdGhlIGNhcHR1cmUgY29tcGFyZSBJbnRlcnJ1cHRzIGV2ZW50ICovCkBAIC01MTEsNyArNTE4LDggQEAKICAgfQogCiAgIC8qIEVuYWJsZSB0aGUgSW5wdXQgQ2FwdHVyZSBjaGFubmVsIDEKLSAgICAoaW4gdGhlIEhhbGwgU2Vuc29yIEludGVyZmFjZSB0aGUgdGhyZWUgcG9zc2libGUgY2hhbm5lbHMgdGhhdCBjYW4gYmUgdXNlZCBhcmUgVElNX0NIQU5ORUxfMSwgVElNX0NIQU5ORUxfMiBhbmQgVElNX0NIQU5ORUxfMykgKi8KKyAgKGluIHRoZSBIYWxsIFNlbnNvciBJbnRlcmZhY2UgdGhlIHRocmVlIHBvc3NpYmxlIGNoYW5uZWxzIHRoYXQgY2FuIGJlIHVzZWQgYXJlIFRJTV9DSEFOTkVMXzEsCisgIFRJTV9DSEFOTkVMXzIgYW5kIFRJTV9DSEFOTkVMXzMpICovCiAgIFRJTV9DQ3hDaGFubmVsQ21kKGh0aW0tPkluc3RhbmNlLCBUSU1fQ0hBTk5FTF8xLCBUSU1fQ0N4X0VOQUJMRSk7CiAKICAgLyogU2V0IHRoZSBETUEgSW5wdXQgQ2FwdHVyZSAxIENhbGxiYWNrcyAqLwpAQCAtNTU4LDcgKzU2Niw4IEBACiAgIGFzc2VydF9wYXJhbShJU19USU1fSEFMTF9TRU5TT1JfSU5URVJGQUNFX0lOU1RBTkNFKGh0aW0tPkluc3RhbmNlKSk7CiAKICAgLyogRGlzYWJsZSB0aGUgSW5wdXQgQ2FwdHVyZSBjaGFubmVsIDEKLSAgICAoaW4gdGhlIEhhbGwgU2Vuc29yIEludGVyZmFjZSB0aGUgdGhyZWUgcG9zc2libGUgY2hhbm5lbHMgdGhhdCBjYW4gYmUgdXNlZCBhcmUgVElNX0NIQU5ORUxfMSwgVElNX0NIQU5ORUxfMiBhbmQgVElNX0NIQU5ORUxfMykgKi8KKyAgKGluIHRoZSBIYWxsIFNlbnNvciBJbnRlcmZhY2UgdGhlIHRocmVlIHBvc3NpYmxlIGNoYW5uZWxzIHRoYXQgY2FuIGJlIHVzZWQgYXJlIFRJTV9DSEFOTkVMXzEsCisgIFRJTV9DSEFOTkVMXzIgYW5kIFRJTV9DSEFOTkVMXzMpICovCiAgIFRJTV9DQ3hDaGFubmVsQ21kKGh0aW0tPkluc3RhbmNlLCBUSU1fQ0hBTk5FTF8xLCBUSU1fQ0N4X0RJU0FCTEUpOwogCiAKQEAgLTY5OCw2ICs3MDcsNyBAQAogICAqLwogSEFMX1N0YXR1c1R5cGVEZWYgSEFMX1RJTUV4X09DTl9TdGFydF9JVChUSU1fSGFuZGxlVHlwZURlZiAqaHRpbSwgdWludDMyX3QgQ2hhbm5lbCkKIHsKKyAgSEFMX1N0YXR1c1R5cGVEZWYgc3RhdHVzID0gSEFMX09LOwogICB1aW50MzJfdCB0bXBzbWNyOwogCiAgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCkBAIC03MzcsMzQgKzc0NywzOCBAQAogCiAKICAgICBkZWZhdWx0OgorICAgICAgc3RhdHVzID0gSEFMX0VSUk9SOwogICAgICAgYnJlYWs7CiAgIH0KIAotICAvKiBFbmFibGUgdGhlIFRJTSBCcmVhayBpbnRlcnJ1cHQgKi8KLSAgX19IQUxfVElNX0VOQUJMRV9JVChodGltLCBUSU1fSVRfQlJFQUspOwotCi0gIC8qIEVuYWJsZSB0aGUgQ2FwdHVyZSBjb21wYXJlIGNoYW5uZWwgTiAqLwotICBUSU1fQ0N4TkNoYW5uZWxDbWQoaHRpbS0+SW5zdGFuY2UsIENoYW5uZWwsIFRJTV9DQ3hOX0VOQUJMRSk7Ci0KLSAgLyogRW5hYmxlIHRoZSBNYWluIE91dHB1dCAqLwotICBfX0hBTF9USU1fTU9FX0VOQUJMRShodGltKTsKLQotICAvKiBFbmFibGUgdGhlIFBlcmlwaGVyYWwsIGV4Y2VwdCBpbiB0cmlnZ2VyIG1vZGUgd2hlcmUgZW5hYmxlIGlzIGF1dG9tYXRpY2FsbHkgZG9uZSB3aXRoIHRyaWdnZXIgKi8KLSAgaWYgKElTX1RJTV9TTEFWRV9JTlNUQU5DRShodGltLT5JbnN0YW5jZSkpCisgIGlmIChzdGF0dXMgPT0gSEFMX09LKQogICB7Ci0gICAgdG1wc21jciA9IGh0aW0tPkluc3RhbmNlLT5TTUNSICYgVElNX1NNQ1JfU01TOwotICAgIGlmICghSVNfVElNX1NMQVZFTU9ERV9UUklHR0VSX0VOQUJMRUQodG1wc21jcikpCisgICAgLyogRW5hYmxlIHRoZSBUSU0gQnJlYWsgaW50ZXJydXB0ICovCisgICAgX19IQUxfVElNX0VOQUJMRV9JVChodGltLCBUSU1fSVRfQlJFQUspOworCisgICAgLyogRW5hYmxlIHRoZSBDYXB0dXJlIGNvbXBhcmUgY2hhbm5lbCBOICovCisgICAgVElNX0NDeE5DaGFubmVsQ21kKGh0aW0tPkluc3RhbmNlLCBDaGFubmVsLCBUSU1fQ0N4Tl9FTkFCTEUpOworCisgICAgLyogRW5hYmxlIHRoZSBNYWluIE91dHB1dCAqLworICAgIF9fSEFMX1RJTV9NT0VfRU5BQkxFKGh0aW0pOworCisgICAgLyogRW5hYmxlIHRoZSBQZXJpcGhlcmFsLCBleGNlcHQgaW4gdHJpZ2dlciBtb2RlIHdoZXJlIGVuYWJsZSBpcyBhdXRvbWF0aWNhbGx5IGRvbmUgd2l0aCB0cmlnZ2VyICovCisgICAgaWYgKElTX1RJTV9TTEFWRV9JTlNUQU5DRShodGltLT5JbnN0YW5jZSkpCisgICAgeworICAgICAgdG1wc21jciA9IGh0aW0tPkluc3RhbmNlLT5TTUNSICYgVElNX1NNQ1JfU01TOworICAgICAgaWYgKCFJU19USU1fU0xBVkVNT0RFX1RSSUdHRVJfRU5BQkxFRCh0bXBzbWNyKSkKKyAgICAgIHsKKyAgICAgICAgX19IQUxfVElNX0VOQUJMRShodGltKTsKKyAgICAgIH0KKyAgICB9CisgICAgZWxzZQogICAgIHsKICAgICAgIF9fSEFMX1RJTV9FTkFCTEUoaHRpbSk7CiAgICAgfQogICB9Ci0gIGVsc2UKLSAgewotICAgIF9fSEFMX1RJTV9FTkFCTEUoaHRpbSk7Ci0gIH0KIAogICAvKiBSZXR1cm4gZnVuY3Rpb24gc3RhdHVzICovCi0gIHJldHVybiBIQUxfT0s7CisgIHJldHVybiBzdGF0dXM7CiB9CiAKIC8qKgpAQCAtNzgwLDcgKzc5NCw5IEBACiAgICovCiBIQUxfU3RhdHVzVHlwZURlZiBIQUxfVElNRXhfT0NOX1N0b3BfSVQoVElNX0hhbmRsZVR5cGVEZWYgKmh0aW0sIHVpbnQzMl90IENoYW5uZWwpCiB7CisgIEhBTF9TdGF0dXNUeXBlRGVmIHN0YXR1cyA9IEhBTF9PSzsKICAgdWludDMyX3QgdG1wY2NlcjsKKwogICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLwogICBhc3NlcnRfcGFyYW0oSVNfVElNX0NDWE5fSU5TVEFOQ0UoaHRpbS0+SW5zdGFuY2UsIENoYW5uZWwpKTsKIApAQCAtODA4LDMwICs4MjQsMzQgQEAKICAgICB9CiAKICAgICBkZWZhdWx0OgorICAgICAgc3RhdHVzID0gSEFMX0VSUk9SOwogICAgICAgYnJlYWs7CiAgIH0KIAotICAvKiBEaXNhYmxlIHRoZSBDYXB0dXJlIGNvbXBhcmUgY2hhbm5lbCBOICovCi0gIFRJTV9DQ3hOQ2hhbm5lbENtZChodGltLT5JbnN0YW5jZSwgQ2hhbm5lbCwgVElNX0NDeE5fRElTQUJMRSk7Ci0KLSAgLyogRGlzYWJsZSB0aGUgVElNIEJyZWFrIGludGVycnVwdCAob25seSBpZiBubyBtb3JlIGNoYW5uZWwgaXMgYWN0aXZlKSAqLwotICB0bXBjY2VyID0gaHRpbS0+SW5zdGFuY2UtPkNDRVI7Ci0gIGlmICgodG1wY2NlciAmIChUSU1fQ0NFUl9DQzFORSB8IFRJTV9DQ0VSX0NDMk5FIHwgVElNX0NDRVJfQ0MzTkUpKSA9PSAodWludDMyX3QpUkVTRVQpCisgIGlmIChzdGF0dXMgPT0gSEFMX09LKQogICB7Ci0gICAgX19IQUxfVElNX0RJU0FCTEVfSVQoaHRpbSwgVElNX0lUX0JSRUFLKTsKKyAgICAvKiBEaXNhYmxlIHRoZSBDYXB0dXJlIGNvbXBhcmUgY2hhbm5lbCBOICovCisgICAgVElNX0NDeE5DaGFubmVsQ21kKGh0aW0tPkluc3RhbmNlLCBDaGFubmVsLCBUSU1fQ0N4Tl9ESVNBQkxFKTsKKworICAgIC8qIERpc2FibGUgdGhlIFRJTSBCcmVhayBpbnRlcnJ1cHQgKG9ubHkgaWYgbm8gbW9yZSBjaGFubmVsIGlzIGFjdGl2ZSkgKi8KKyAgICB0bXBjY2VyID0gaHRpbS0+SW5zdGFuY2UtPkNDRVI7CisgICAgaWYgKCh0bXBjY2VyICYgKFRJTV9DQ0VSX0NDMU5FIHwgVElNX0NDRVJfQ0MyTkUgfCBUSU1fQ0NFUl9DQzNORSkpID09ICh1aW50MzJfdClSRVNFVCkKKyAgICB7CisgICAgICBfX0hBTF9USU1fRElTQUJMRV9JVChodGltLCBUSU1fSVRfQlJFQUspOworICAgIH0KKworICAgIC8qIERpc2FibGUgdGhlIE1haW4gT3V0cHV0ICovCisgICAgX19IQUxfVElNX01PRV9ESVNBQkxFKGh0aW0pOworCisgICAgLyogRGlzYWJsZSB0aGUgUGVyaXBoZXJhbCAqLworICAgIF9fSEFMX1RJTV9ESVNBQkxFKGh0aW0pOworCisgICAgLyogU2V0IHRoZSBUSU0gY29tcGxlbWVudGFyeSBjaGFubmVsIHN0YXRlICovCisgICAgVElNX0NIQU5ORUxfTl9TVEFURV9TRVQoaHRpbSwgQ2hhbm5lbCwgSEFMX1RJTV9DSEFOTkVMX1NUQVRFX1JFQURZKTsKICAgfQogCi0gIC8qIERpc2FibGUgdGhlIE1haW4gT3V0cHV0ICovCi0gIF9fSEFMX1RJTV9NT0VfRElTQUJMRShodGltKTsKLQotICAvKiBEaXNhYmxlIHRoZSBQZXJpcGhlcmFsICovCi0gIF9fSEFMX1RJTV9ESVNBQkxFKGh0aW0pOwotCi0gIC8qIFNldCB0aGUgVElNIGNvbXBsZW1lbnRhcnkgY2hhbm5lbCBzdGF0ZSAqLwotICBUSU1fQ0hBTk5FTF9OX1NUQVRFX1NFVChodGltLCBDaGFubmVsLCBIQUxfVElNX0NIQU5ORUxfU1RBVEVfUkVBRFkpOwotCiAgIC8qIFJldHVybiBmdW5jdGlvbiBzdGF0dXMgKi8KLSAgcmV0dXJuIEhBTF9PSzsKKyAgcmV0dXJuIHN0YXR1czsKIH0KIAogLyoqCkBAIC04NDksNiArODY5LDcgQEAKICAgKi8KIEhBTF9TdGF0dXNUeXBlRGVmIEhBTF9USU1FeF9PQ05fU3RhcnRfRE1BKFRJTV9IYW5kbGVUeXBlRGVmICpodGltLCB1aW50MzJfdCBDaGFubmVsLCB1aW50MzJfdCAqcERhdGEsIHVpbnQxNl90IExlbmd0aCkKIHsKKyAgSEFMX1N0YXR1c1R5cGVEZWYgc3RhdHVzID0gSEFMX09LOwogICB1aW50MzJfdCB0bXBzbWNyOwogCiAgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCkBAIC04ODcsNyArOTA4LDggQEAKICAgICAgIGh0aW0tPmhkbWFbVElNX0RNQV9JRF9DQzFdLT5YZmVyRXJyb3JDYWxsYmFjayA9IFRJTV9ETUFFcnJvckNDeE4gOwogCiAgICAgICAvKiBFbmFibGUgdGhlIERNQSBzdHJlYW0gKi8KLSAgICAgIGlmIChIQUxfRE1BX1N0YXJ0X0lUKGh0aW0tPmhkbWFbVElNX0RNQV9JRF9DQzFdLCAodWludDMyX3QpcERhdGEsICh1aW50MzJfdCkmaHRpbS0+SW5zdGFuY2UtPkNDUjEsIExlbmd0aCkgIT0gSEFMX09LKQorICAgICAgaWYgKEhBTF9ETUFfU3RhcnRfSVQoaHRpbS0+aGRtYVtUSU1fRE1BX0lEX0NDMV0sICh1aW50MzJfdClwRGF0YSwgKHVpbnQzMl90KSZodGltLT5JbnN0YW5jZS0+Q0NSMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIExlbmd0aCkgIT0gSEFMX09LKQogICAgICAgewogICAgICAgICAvKiBSZXR1cm4gZXJyb3Igc3RhdHVzICovCiAgICAgICAgIHJldHVybiBIQUxfRVJST1I7CkBAIC05MDcsNyArOTI5LDggQEAKICAgICAgIGh0aW0tPmhkbWFbVElNX0RNQV9JRF9DQzJdLT5YZmVyRXJyb3JDYWxsYmFjayA9IFRJTV9ETUFFcnJvckNDeE4gOwogCiAgICAgICAvKiBFbmFibGUgdGhlIERNQSBzdHJlYW0gKi8KLSAgICAgIGlmIChIQUxfRE1BX1N0YXJ0X0lUKGh0aW0tPmhkbWFbVElNX0RNQV9JRF9DQzJdLCAodWludDMyX3QpcERhdGEsICh1aW50MzJfdCkmaHRpbS0+SW5zdGFuY2UtPkNDUjIsIExlbmd0aCkgIT0gSEFMX09LKQorICAgICAgaWYgKEhBTF9ETUFfU3RhcnRfSVQoaHRpbS0+aGRtYVtUSU1fRE1BX0lEX0NDMl0sICh1aW50MzJfdClwRGF0YSwgKHVpbnQzMl90KSZodGltLT5JbnN0YW5jZS0+Q0NSMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIExlbmd0aCkgIT0gSEFMX09LKQogICAgICAgewogICAgICAgICAvKiBSZXR1cm4gZXJyb3Igc3RhdHVzICovCiAgICAgICAgIHJldHVybiBIQUxfRVJST1I7CkBAIC05MjcsNyArOTUwLDggQEAKICAgICAgIGh0aW0tPmhkbWFbVElNX0RNQV9JRF9DQzNdLT5YZmVyRXJyb3JDYWxsYmFjayA9IFRJTV9ETUFFcnJvckNDeE4gOwogCiAgICAgICAvKiBFbmFibGUgdGhlIERNQSBzdHJlYW0gKi8KLSAgICAgIGlmIChIQUxfRE1BX1N0YXJ0X0lUKGh0aW0tPmhkbWFbVElNX0RNQV9JRF9DQzNdLCAodWludDMyX3QpcERhdGEsICh1aW50MzJfdCkmaHRpbS0+SW5zdGFuY2UtPkNDUjMsIExlbmd0aCkgIT0gSEFMX09LKQorICAgICAgaWYgKEhBTF9ETUFfU3RhcnRfSVQoaHRpbS0+aGRtYVtUSU1fRE1BX0lEX0NDM10sICh1aW50MzJfdClwRGF0YSwgKHVpbnQzMl90KSZodGltLT5JbnN0YW5jZS0+Q0NSMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIExlbmd0aCkgIT0gSEFMX09LKQogICAgICAgewogICAgICAgICAvKiBSZXR1cm4gZXJyb3Igc3RhdHVzICovCiAgICAgICAgIHJldHVybiBIQUxfRVJST1I7CkBAIC05MzgsMzEgKzk2MiwzNSBAQAogICAgIH0KIAogICAgIGRlZmF1bHQ6CisgICAgICBzdGF0dXMgPSBIQUxfRVJST1I7CiAgICAgICBicmVhazsKICAgfQogCi0gIC8qIEVuYWJsZSB0aGUgQ2FwdHVyZSBjb21wYXJlIGNoYW5uZWwgTiAqLwotICBUSU1fQ0N4TkNoYW5uZWxDbWQoaHRpbS0+SW5zdGFuY2UsIENoYW5uZWwsIFRJTV9DQ3hOX0VOQUJMRSk7Ci0KLSAgLyogRW5hYmxlIHRoZSBNYWluIE91dHB1dCAqLwotICBfX0hBTF9USU1fTU9FX0VOQUJMRShodGltKTsKLQotICAvKiBFbmFibGUgdGhlIFBlcmlwaGVyYWwsIGV4Y2VwdCBpbiB0cmlnZ2VyIG1vZGUgd2hlcmUgZW5hYmxlIGlzIGF1dG9tYXRpY2FsbHkgZG9uZSB3aXRoIHRyaWdnZXIgKi8KLSAgaWYgKElTX1RJTV9TTEFWRV9JTlNUQU5DRShodGltLT5JbnN0YW5jZSkpCisgIGlmIChzdGF0dXMgPT0gSEFMX09LKQogICB7Ci0gICAgdG1wc21jciA9IGh0aW0tPkluc3RhbmNlLT5TTUNSICYgVElNX1NNQ1JfU01TOwotICAgIGlmICghSVNfVElNX1NMQVZFTU9ERV9UUklHR0VSX0VOQUJMRUQodG1wc21jcikpCisgICAgLyogRW5hYmxlIHRoZSBDYXB0dXJlIGNvbXBhcmUgY2hhbm5lbCBOICovCisgICAgVElNX0NDeE5DaGFubmVsQ21kKGh0aW0tPkluc3RhbmNlLCBDaGFubmVsLCBUSU1fQ0N4Tl9FTkFCTEUpOworCisgICAgLyogRW5hYmxlIHRoZSBNYWluIE91dHB1dCAqLworICAgIF9fSEFMX1RJTV9NT0VfRU5BQkxFKGh0aW0pOworCisgICAgLyogRW5hYmxlIHRoZSBQZXJpcGhlcmFsLCBleGNlcHQgaW4gdHJpZ2dlciBtb2RlIHdoZXJlIGVuYWJsZSBpcyBhdXRvbWF0aWNhbGx5IGRvbmUgd2l0aCB0cmlnZ2VyICovCisgICAgaWYgKElTX1RJTV9TTEFWRV9JTlNUQU5DRShodGltLT5JbnN0YW5jZSkpCisgICAgeworICAgICAgdG1wc21jciA9IGh0aW0tPkluc3RhbmNlLT5TTUNSICYgVElNX1NNQ1JfU01TOworICAgICAgaWYgKCFJU19USU1fU0xBVkVNT0RFX1RSSUdHRVJfRU5BQkxFRCh0bXBzbWNyKSkKKyAgICAgIHsKKyAgICAgICAgX19IQUxfVElNX0VOQUJMRShodGltKTsKKyAgICAgIH0KKyAgICB9CisgICAgZWxzZQogICAgIHsKICAgICAgIF9fSEFMX1RJTV9FTkFCTEUoaHRpbSk7CiAgICAgfQogICB9Ci0gIGVsc2UKLSAgewotICAgIF9fSEFMX1RJTV9FTkFCTEUoaHRpbSk7Ci0gIH0KIAogICAvKiBSZXR1cm4gZnVuY3Rpb24gc3RhdHVzICovCi0gIHJldHVybiBIQUxfT0s7CisgIHJldHVybiBzdGF0dXM7CiB9CiAKIC8qKgpAQCAtOTc4LDYgKzEwMDYsOCBAQAogICAqLwogSEFMX1N0YXR1c1R5cGVEZWYgSEFMX1RJTUV4X09DTl9TdG9wX0RNQShUSU1fSGFuZGxlVHlwZURlZiAqaHRpbSwgdWludDMyX3QgQ2hhbm5lbCkKIHsKKyAgSEFMX1N0YXR1c1R5cGVEZWYgc3RhdHVzID0gSEFMX09LOworCiAgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCiAgIGFzc2VydF9wYXJhbShJU19USU1fQ0NYTl9JTlNUQU5DRShodGltLT5JbnN0YW5jZSwgQ2hhbm5lbCkpOwogCkBAIC0xMDA4LDIzICsxMDM4LDI3IEBACiAgICAgfQogCiAgICAgZGVmYXVsdDoKKyAgICAgIHN0YXR1cyA9IEhBTF9FUlJPUjsKICAgICAgIGJyZWFrOwogICB9CiAKLSAgLyogRGlzYWJsZSB0aGUgQ2FwdHVyZSBjb21wYXJlIGNoYW5uZWwgTiAqLwotICBUSU1fQ0N4TkNoYW5uZWxDbWQoaHRpbS0+SW5zdGFuY2UsIENoYW5uZWwsIFRJTV9DQ3hOX0RJU0FCTEUpOworICBpZiAoc3RhdHVzID09IEhBTF9PSykKKyAgeworICAgIC8qIERpc2FibGUgdGhlIENhcHR1cmUgY29tcGFyZSBjaGFubmVsIE4gKi8KKyAgICBUSU1fQ0N4TkNoYW5uZWxDbWQoaHRpbS0+SW5zdGFuY2UsIENoYW5uZWwsIFRJTV9DQ3hOX0RJU0FCTEUpOwogCi0gIC8qIERpc2FibGUgdGhlIE1haW4gT3V0cHV0ICovCi0gIF9fSEFMX1RJTV9NT0VfRElTQUJMRShodGltKTsKKyAgICAvKiBEaXNhYmxlIHRoZSBNYWluIE91dHB1dCAqLworICAgIF9fSEFMX1RJTV9NT0VfRElTQUJMRShodGltKTsKIAotICAvKiBEaXNhYmxlIHRoZSBQZXJpcGhlcmFsICovCi0gIF9fSEFMX1RJTV9ESVNBQkxFKGh0aW0pOworICAgIC8qIERpc2FibGUgdGhlIFBlcmlwaGVyYWwgKi8KKyAgICBfX0hBTF9USU1fRElTQUJMRShodGltKTsKIAotICAvKiBTZXQgdGhlIFRJTSBjb21wbGVtZW50YXJ5IGNoYW5uZWwgc3RhdGUgKi8KLSAgVElNX0NIQU5ORUxfTl9TVEFURV9TRVQoaHRpbSwgQ2hhbm5lbCwgSEFMX1RJTV9DSEFOTkVMX1NUQVRFX1JFQURZKTsKKyAgICAvKiBTZXQgdGhlIFRJTSBjb21wbGVtZW50YXJ5IGNoYW5uZWwgc3RhdGUgKi8KKyAgICBUSU1fQ0hBTk5FTF9OX1NUQVRFX1NFVChodGltLCBDaGFubmVsLCBIQUxfVElNX0NIQU5ORUxfU1RBVEVfUkVBRFkpOworICB9CiAKICAgLyogUmV0dXJuIGZ1bmN0aW9uIHN0YXR1cyAqLwotICByZXR1cm4gSEFMX09LOworICByZXR1cm4gc3RhdHVzOwogfQogCiAvKioKQEAgLTExNTUsNiArMTE4OSw3IEBACiAgICovCiBIQUxfU3RhdHVzVHlwZURlZiBIQUxfVElNRXhfUFdNTl9TdGFydF9JVChUSU1fSGFuZGxlVHlwZURlZiAqaHRpbSwgdWludDMyX3QgQ2hhbm5lbCkKIHsKKyAgSEFMX1N0YXR1c1R5cGVEZWYgc3RhdHVzID0gSEFMX09LOwogICB1aW50MzJfdCB0bXBzbWNyOwogCiAgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCkBAIC0xMTkzLDM0ICsxMjI4LDM4IEBACiAgICAgfQogCiAgICAgZGVmYXVsdDoKKyAgICAgIHN0YXR1cyA9IEhBTF9FUlJPUjsKICAgICAgIGJyZWFrOwogICB9CiAKLSAgLyogRW5hYmxlIHRoZSBUSU0gQnJlYWsgaW50ZXJydXB0ICovCi0gIF9fSEFMX1RJTV9FTkFCTEVfSVQoaHRpbSwgVElNX0lUX0JSRUFLKTsKLQotICAvKiBFbmFibGUgdGhlIGNvbXBsZW1lbnRhcnkgUFdNIG91dHB1dCAgKi8KLSAgVElNX0NDeE5DaGFubmVsQ21kKGh0aW0tPkluc3RhbmNlLCBDaGFubmVsLCBUSU1fQ0N4Tl9FTkFCTEUpOwotCi0gIC8qIEVuYWJsZSB0aGUgTWFpbiBPdXRwdXQgKi8KLSAgX19IQUxfVElNX01PRV9FTkFCTEUoaHRpbSk7Ci0KLSAgLyogRW5hYmxlIHRoZSBQZXJpcGhlcmFsLCBleGNlcHQgaW4gdHJpZ2dlciBtb2RlIHdoZXJlIGVuYWJsZSBpcyBhdXRvbWF0aWNhbGx5IGRvbmUgd2l0aCB0cmlnZ2VyICovCi0gIGlmIChJU19USU1fU0xBVkVfSU5TVEFOQ0UoaHRpbS0+SW5zdGFuY2UpKQorICBpZiAoc3RhdHVzID09IEhBTF9PSykKICAgewotICAgIHRtcHNtY3IgPSBodGltLT5JbnN0YW5jZS0+U01DUiAmIFRJTV9TTUNSX1NNUzsKLSAgICBpZiAoIUlTX1RJTV9TTEFWRU1PREVfVFJJR0dFUl9FTkFCTEVEKHRtcHNtY3IpKQorICAgIC8qIEVuYWJsZSB0aGUgVElNIEJyZWFrIGludGVycnVwdCAqLworICAgIF9fSEFMX1RJTV9FTkFCTEVfSVQoaHRpbSwgVElNX0lUX0JSRUFLKTsKKworICAgIC8qIEVuYWJsZSB0aGUgY29tcGxlbWVudGFyeSBQV00gb3V0cHV0ICAqLworICAgIFRJTV9DQ3hOQ2hhbm5lbENtZChodGltLT5JbnN0YW5jZSwgQ2hhbm5lbCwgVElNX0NDeE5fRU5BQkxFKTsKKworICAgIC8qIEVuYWJsZSB0aGUgTWFpbiBPdXRwdXQgKi8KKyAgICBfX0hBTF9USU1fTU9FX0VOQUJMRShodGltKTsKKworICAgIC8qIEVuYWJsZSB0aGUgUGVyaXBoZXJhbCwgZXhjZXB0IGluIHRyaWdnZXIgbW9kZSB3aGVyZSBlbmFibGUgaXMgYXV0b21hdGljYWxseSBkb25lIHdpdGggdHJpZ2dlciAqLworICAgIGlmIChJU19USU1fU0xBVkVfSU5TVEFOQ0UoaHRpbS0+SW5zdGFuY2UpKQorICAgIHsKKyAgICAgIHRtcHNtY3IgPSBodGltLT5JbnN0YW5jZS0+U01DUiAmIFRJTV9TTUNSX1NNUzsKKyAgICAgIGlmICghSVNfVElNX1NMQVZFTU9ERV9UUklHR0VSX0VOQUJMRUQodG1wc21jcikpCisgICAgICB7CisgICAgICAgIF9fSEFMX1RJTV9FTkFCTEUoaHRpbSk7CisgICAgICB9CisgICAgfQorICAgIGVsc2UKICAgICB7CiAgICAgICBfX0hBTF9USU1fRU5BQkxFKGh0aW0pOwogICAgIH0KICAgfQotICBlbHNlCi0gIHsKLSAgICBfX0hBTF9USU1fRU5BQkxFKGh0aW0pOwotICB9CiAKICAgLyogUmV0dXJuIGZ1bmN0aW9uIHN0YXR1cyAqLwotICByZXR1cm4gSEFMX09LOworICByZXR1cm4gc3RhdHVzOwogfQogCiAvKioKQEAgLTEyMzYsNiArMTI3NSw3IEBACiAgICovCiBIQUxfU3RhdHVzVHlwZURlZiBIQUxfVElNRXhfUFdNTl9TdG9wX0lUKFRJTV9IYW5kbGVUeXBlRGVmICpodGltLCB1aW50MzJfdCBDaGFubmVsKQogeworICBIQUxfU3RhdHVzVHlwZURlZiBzdGF0dXMgPSBIQUxfT0s7CiAgIHVpbnQzMl90IHRtcGNjZXI7CiAKICAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8KQEAgLTEyNjUsMzAgKzEzMDUsMzQgQEAKICAgICB9CiAKICAgICBkZWZhdWx0OgorICAgICAgc3RhdHVzID0gSEFMX0VSUk9SOwogICAgICAgYnJlYWs7CiAgIH0KIAotICAvKiBEaXNhYmxlIHRoZSBjb21wbGVtZW50YXJ5IFBXTSBvdXRwdXQgICovCi0gIFRJTV9DQ3hOQ2hhbm5lbENtZChodGltLT5JbnN0YW5jZSwgQ2hhbm5lbCwgVElNX0NDeE5fRElTQUJMRSk7Ci0KLSAgLyogRGlzYWJsZSB0aGUgVElNIEJyZWFrIGludGVycnVwdCAob25seSBpZiBubyBtb3JlIGNoYW5uZWwgaXMgYWN0aXZlKSAqLwotICB0bXBjY2VyID0gaHRpbS0+SW5zdGFuY2UtPkNDRVI7Ci0gIGlmICgodG1wY2NlciAmIChUSU1fQ0NFUl9DQzFORSB8IFRJTV9DQ0VSX0NDMk5FIHwgVElNX0NDRVJfQ0MzTkUpKSA9PSAodWludDMyX3QpUkVTRVQpCisgIGlmIChzdGF0dXMgPT0gSEFMX09LKQogICB7Ci0gICAgX19IQUxfVElNX0RJU0FCTEVfSVQoaHRpbSwgVElNX0lUX0JSRUFLKTsKKyAgICAvKiBEaXNhYmxlIHRoZSBjb21wbGVtZW50YXJ5IFBXTSBvdXRwdXQgICovCisgICAgVElNX0NDeE5DaGFubmVsQ21kKGh0aW0tPkluc3RhbmNlLCBDaGFubmVsLCBUSU1fQ0N4Tl9ESVNBQkxFKTsKKworICAgIC8qIERpc2FibGUgdGhlIFRJTSBCcmVhayBpbnRlcnJ1cHQgKG9ubHkgaWYgbm8gbW9yZSBjaGFubmVsIGlzIGFjdGl2ZSkgKi8KKyAgICB0bXBjY2VyID0gaHRpbS0+SW5zdGFuY2UtPkNDRVI7CisgICAgaWYgKCh0bXBjY2VyICYgKFRJTV9DQ0VSX0NDMU5FIHwgVElNX0NDRVJfQ0MyTkUgfCBUSU1fQ0NFUl9DQzNORSkpID09ICh1aW50MzJfdClSRVNFVCkKKyAgICB7CisgICAgICBfX0hBTF9USU1fRElTQUJMRV9JVChodGltLCBUSU1fSVRfQlJFQUspOworICAgIH0KKworICAgIC8qIERpc2FibGUgdGhlIE1haW4gT3V0cHV0ICovCisgICAgX19IQUxfVElNX01PRV9ESVNBQkxFKGh0aW0pOworCisgICAgLyogRGlzYWJsZSB0aGUgUGVyaXBoZXJhbCAqLworICAgIF9fSEFMX1RJTV9ESVNBQkxFKGh0aW0pOworCisgICAgLyogU2V0IHRoZSBUSU0gY29tcGxlbWVudGFyeSBjaGFubmVsIHN0YXRlICovCisgICAgVElNX0NIQU5ORUxfTl9TVEFURV9TRVQoaHRpbSwgQ2hhbm5lbCwgSEFMX1RJTV9DSEFOTkVMX1NUQVRFX1JFQURZKTsKICAgfQogCi0gIC8qIERpc2FibGUgdGhlIE1haW4gT3V0cHV0ICovCi0gIF9fSEFMX1RJTV9NT0VfRElTQUJMRShodGltKTsKLQotICAvKiBEaXNhYmxlIHRoZSBQZXJpcGhlcmFsICovCi0gIF9fSEFMX1RJTV9ESVNBQkxFKGh0aW0pOwotCi0gIC8qIFNldCB0aGUgVElNIGNvbXBsZW1lbnRhcnkgY2hhbm5lbCBzdGF0ZSAqLwotICBUSU1fQ0hBTk5FTF9OX1NUQVRFX1NFVChodGltLCBDaGFubmVsLCBIQUxfVElNX0NIQU5ORUxfU1RBVEVfUkVBRFkpOwotCiAgIC8qIFJldHVybiBmdW5jdGlvbiBzdGF0dXMgKi8KLSAgcmV0dXJuIEhBTF9PSzsKKyAgcmV0dXJuIHN0YXR1czsKIH0KIAogLyoqCkBAIC0xMzA2LDYgKzEzNTAsNyBAQAogICAqLwogSEFMX1N0YXR1c1R5cGVEZWYgSEFMX1RJTUV4X1BXTU5fU3RhcnRfRE1BKFRJTV9IYW5kbGVUeXBlRGVmICpodGltLCB1aW50MzJfdCBDaGFubmVsLCB1aW50MzJfdCAqcERhdGEsIHVpbnQxNl90IExlbmd0aCkKIHsKKyAgSEFMX1N0YXR1c1R5cGVEZWYgc3RhdHVzID0gSEFMX09LOwogICB1aW50MzJfdCB0bXBzbWNyOwogCiAgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCkBAIC0xMzQ0LDcgKzEzODksOCBAQAogICAgICAgaHRpbS0+aGRtYVtUSU1fRE1BX0lEX0NDMV0tPlhmZXJFcnJvckNhbGxiYWNrID0gVElNX0RNQUVycm9yQ0N4TiA7CiAKICAgICAgIC8qIEVuYWJsZSB0aGUgRE1BIHN0cmVhbSAqLwotICAgICAgaWYgKEhBTF9ETUFfU3RhcnRfSVQoaHRpbS0+aGRtYVtUSU1fRE1BX0lEX0NDMV0sICh1aW50MzJfdClwRGF0YSwgKHVpbnQzMl90KSZodGltLT5JbnN0YW5jZS0+Q0NSMSwgTGVuZ3RoKSAhPSBIQUxfT0spCisgICAgICBpZiAoSEFMX0RNQV9TdGFydF9JVChodGltLT5oZG1hW1RJTV9ETUFfSURfQ0MxXSwgKHVpbnQzMl90KXBEYXRhLCAodWludDMyX3QpJmh0aW0tPkluc3RhbmNlLT5DQ1IxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgTGVuZ3RoKSAhPSBIQUxfT0spCiAgICAgICB7CiAgICAgICAgIC8qIFJldHVybiBlcnJvciBzdGF0dXMgKi8KICAgICAgICAgcmV0dXJuIEhBTF9FUlJPUjsKQEAgLTEzNjQsNyArMTQxMCw4IEBACiAgICAgICBodGltLT5oZG1hW1RJTV9ETUFfSURfQ0MyXS0+WGZlckVycm9yQ2FsbGJhY2sgPSBUSU1fRE1BRXJyb3JDQ3hOIDsKIAogICAgICAgLyogRW5hYmxlIHRoZSBETUEgc3RyZWFtICovCi0gICAgICBpZiAoSEFMX0RNQV9TdGFydF9JVChodGltLT5oZG1hW1RJTV9ETUFfSURfQ0MyXSwgKHVpbnQzMl90KXBEYXRhLCAodWludDMyX3QpJmh0aW0tPkluc3RhbmNlLT5DQ1IyLCBMZW5ndGgpICE9IEhBTF9PSykKKyAgICAgIGlmIChIQUxfRE1BX1N0YXJ0X0lUKGh0aW0tPmhkbWFbVElNX0RNQV9JRF9DQzJdLCAodWludDMyX3QpcERhdGEsICh1aW50MzJfdCkmaHRpbS0+SW5zdGFuY2UtPkNDUjIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBMZW5ndGgpICE9IEhBTF9PSykKICAgICAgIHsKICAgICAgICAgLyogUmV0dXJuIGVycm9yIHN0YXR1cyAqLwogICAgICAgICByZXR1cm4gSEFMX0VSUk9SOwpAQCAtMTM4NCw3ICsxNDMxLDggQEAKICAgICAgIGh0aW0tPmhkbWFbVElNX0RNQV9JRF9DQzNdLT5YZmVyRXJyb3JDYWxsYmFjayA9IFRJTV9ETUFFcnJvckNDeE4gOwogCiAgICAgICAvKiBFbmFibGUgdGhlIERNQSBzdHJlYW0gKi8KLSAgICAgIGlmIChIQUxfRE1BX1N0YXJ0X0lUKGh0aW0tPmhkbWFbVElNX0RNQV9JRF9DQzNdLCAodWludDMyX3QpcERhdGEsICh1aW50MzJfdCkmaHRpbS0+SW5zdGFuY2UtPkNDUjMsIExlbmd0aCkgIT0gSEFMX09LKQorICAgICAgaWYgKEhBTF9ETUFfU3RhcnRfSVQoaHRpbS0+aGRtYVtUSU1fRE1BX0lEX0NDM10sICh1aW50MzJfdClwRGF0YSwgKHVpbnQzMl90KSZodGltLT5JbnN0YW5jZS0+Q0NSMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIExlbmd0aCkgIT0gSEFMX09LKQogICAgICAgewogICAgICAgICAvKiBSZXR1cm4gZXJyb3Igc3RhdHVzICovCiAgICAgICAgIHJldHVybiBIQUxfRVJST1I7CkBAIC0xMzk1LDMxICsxNDQzLDM1IEBACiAgICAgfQogCiAgICAgZGVmYXVsdDoKKyAgICAgIHN0YXR1cyA9IEhBTF9FUlJPUjsKICAgICAgIGJyZWFrOwogICB9CiAKLSAgLyogRW5hYmxlIHRoZSBjb21wbGVtZW50YXJ5IFBXTSBvdXRwdXQgICovCi0gIFRJTV9DQ3hOQ2hhbm5lbENtZChodGltLT5JbnN0YW5jZSwgQ2hhbm5lbCwgVElNX0NDeE5fRU5BQkxFKTsKLQotICAvKiBFbmFibGUgdGhlIE1haW4gT3V0cHV0ICovCi0gIF9fSEFMX1RJTV9NT0VfRU5BQkxFKGh0aW0pOwotCi0gIC8qIEVuYWJsZSB0aGUgUGVyaXBoZXJhbCwgZXhjZXB0IGluIHRyaWdnZXIgbW9kZSB3aGVyZSBlbmFibGUgaXMgYXV0b21hdGljYWxseSBkb25lIHdpdGggdHJpZ2dlciAqLwotICBpZiAoSVNfVElNX1NMQVZFX0lOU1RBTkNFKGh0aW0tPkluc3RhbmNlKSkKKyAgaWYgKHN0YXR1cyA9PSBIQUxfT0spCiAgIHsKLSAgICB0bXBzbWNyID0gaHRpbS0+SW5zdGFuY2UtPlNNQ1IgJiBUSU1fU01DUl9TTVM7Ci0gICAgaWYgKCFJU19USU1fU0xBVkVNT0RFX1RSSUdHRVJfRU5BQkxFRCh0bXBzbWNyKSkKKyAgICAvKiBFbmFibGUgdGhlIGNvbXBsZW1lbnRhcnkgUFdNIG91dHB1dCAgKi8KKyAgICBUSU1fQ0N4TkNoYW5uZWxDbWQoaHRpbS0+SW5zdGFuY2UsIENoYW5uZWwsIFRJTV9DQ3hOX0VOQUJMRSk7CisKKyAgICAvKiBFbmFibGUgdGhlIE1haW4gT3V0cHV0ICovCisgICAgX19IQUxfVElNX01PRV9FTkFCTEUoaHRpbSk7CisKKyAgICAvKiBFbmFibGUgdGhlIFBlcmlwaGVyYWwsIGV4Y2VwdCBpbiB0cmlnZ2VyIG1vZGUgd2hlcmUgZW5hYmxlIGlzIGF1dG9tYXRpY2FsbHkgZG9uZSB3aXRoIHRyaWdnZXIgKi8KKyAgICBpZiAoSVNfVElNX1NMQVZFX0lOU1RBTkNFKGh0aW0tPkluc3RhbmNlKSkKKyAgICB7CisgICAgICB0bXBzbWNyID0gaHRpbS0+SW5zdGFuY2UtPlNNQ1IgJiBUSU1fU01DUl9TTVM7CisgICAgICBpZiAoIUlTX1RJTV9TTEFWRU1PREVfVFJJR0dFUl9FTkFCTEVEKHRtcHNtY3IpKQorICAgICAgeworICAgICAgICBfX0hBTF9USU1fRU5BQkxFKGh0aW0pOworICAgICAgfQorICAgIH0KKyAgICBlbHNlCiAgICAgewogICAgICAgX19IQUxfVElNX0VOQUJMRShodGltKTsKICAgICB9CiAgIH0KLSAgZWxzZQotICB7Ci0gICAgX19IQUxfVElNX0VOQUJMRShodGltKTsKLSAgfQogCiAgIC8qIFJldHVybiBmdW5jdGlvbiBzdGF0dXMgKi8KLSAgcmV0dXJuIEhBTF9PSzsKKyAgcmV0dXJuIHN0YXR1czsKIH0KIAogLyoqCkBAIC0xNDM1LDYgKzE0ODcsOCBAQAogICAqLwogSEFMX1N0YXR1c1R5cGVEZWYgSEFMX1RJTUV4X1BXTU5fU3RvcF9ETUEoVElNX0hhbmRsZVR5cGVEZWYgKmh0aW0sIHVpbnQzMl90IENoYW5uZWwpCiB7CisgIEhBTF9TdGF0dXNUeXBlRGVmIHN0YXR1cyA9IEhBTF9PSzsKKwogICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLwogICBhc3NlcnRfcGFyYW0oSVNfVElNX0NDWE5fSU5TVEFOQ0UoaHRpbS0+SW5zdGFuY2UsIENoYW5uZWwpKTsKIApAQCAtMTQ2NSwyMyArMTUxOSwyNyBAQAogICAgIH0KIAogICAgIGRlZmF1bHQ6CisgICAgICBzdGF0dXMgPSBIQUxfRVJST1I7CiAgICAgICBicmVhazsKICAgfQogCi0gIC8qIERpc2FibGUgdGhlIGNvbXBsZW1lbnRhcnkgUFdNIG91dHB1dCAqLwotICBUSU1fQ0N4TkNoYW5uZWxDbWQoaHRpbS0+SW5zdGFuY2UsIENoYW5uZWwsIFRJTV9DQ3hOX0RJU0FCTEUpOworICBpZiAoc3RhdHVzID09IEhBTF9PSykKKyAgeworICAgIC8qIERpc2FibGUgdGhlIGNvbXBsZW1lbnRhcnkgUFdNIG91dHB1dCAqLworICAgIFRJTV9DQ3hOQ2hhbm5lbENtZChodGltLT5JbnN0YW5jZSwgQ2hhbm5lbCwgVElNX0NDeE5fRElTQUJMRSk7CiAKLSAgLyogRGlzYWJsZSB0aGUgTWFpbiBPdXRwdXQgKi8KLSAgX19IQUxfVElNX01PRV9ESVNBQkxFKGh0aW0pOworICAgIC8qIERpc2FibGUgdGhlIE1haW4gT3V0cHV0ICovCisgICAgX19IQUxfVElNX01PRV9ESVNBQkxFKGh0aW0pOwogCi0gIC8qIERpc2FibGUgdGhlIFBlcmlwaGVyYWwgKi8KLSAgX19IQUxfVElNX0RJU0FCTEUoaHRpbSk7CisgICAgLyogRGlzYWJsZSB0aGUgUGVyaXBoZXJhbCAqLworICAgIF9fSEFMX1RJTV9ESVNBQkxFKGh0aW0pOwogCi0gIC8qIFNldCB0aGUgVElNIGNvbXBsZW1lbnRhcnkgY2hhbm5lbCBzdGF0ZSAqLwotICBUSU1fQ0hBTk5FTF9OX1NUQVRFX1NFVChodGltLCBDaGFubmVsLCBIQUxfVElNX0NIQU5ORUxfU1RBVEVfUkVBRFkpOworICAgIC8qIFNldCB0aGUgVElNIGNvbXBsZW1lbnRhcnkgY2hhbm5lbCBzdGF0ZSAqLworICAgIFRJTV9DSEFOTkVMX05fU1RBVEVfU0VUKGh0aW0sIENoYW5uZWwsIEhBTF9USU1fQ0hBTk5FTF9TVEFURV9SRUFEWSk7CisgIH0KIAogICAvKiBSZXR1cm4gZnVuY3Rpb24gc3RhdHVzICovCi0gIHJldHVybiBIQUxfT0s7CisgIHJldHVybiBzdGF0dXM7CiB9CiAKIC8qKgpAQCAtMTUwOSw4ICsxNTY3LDggQEAKIC8qKgogICAqIEBicmllZiAgU3RhcnRzIHRoZSBUSU0gT25lIFB1bHNlIHNpZ25hbCBnZW5lcmF0aW9uIG9uIHRoZSBjb21wbGVtZW50YXJ5CiAgICogICAgICAgICBvdXRwdXQuCi0gICogQG5vdGUgT3V0cHV0Q2hhbm5lbCBtdXN0IG1hdGNoIHRoZSBwdWxzZSBvdXRwdXQgY2hhbm5lbCBjaG9zZW4gd2hlbiBjYWxsaW5nIAotICAqICAgICAgIEByZWYgSEFMX1RJTV9PbmVQdWxzZV9Db25maWdDaGFubmVsKCkuIAorICAqIEBub3RlIE91dHB1dENoYW5uZWwgbXVzdCBtYXRjaCB0aGUgcHVsc2Ugb3V0cHV0IGNoYW5uZWwgY2hvc2VuIHdoZW4gY2FsbGluZworICAqICAgICAgIEByZWYgSEFMX1RJTV9PbmVQdWxzZV9Db25maWdDaGFubmVsKCkuCiAgICogQHBhcmFtICBodGltIFRJTSBPbmUgUHVsc2UgaGFuZGxlCiAgICogQHBhcmFtICBPdXRwdXRDaGFubmVsIHB1bHNlIG91dHB1dCBjaGFubmVsIHRvIGVuYWJsZQogICAqICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6CkBAIC0xNTMwLDcgKzE1ODgsNyBAQAogICBhc3NlcnRfcGFyYW0oSVNfVElNX0NDWE5fSU5TVEFOQ0UoaHRpbS0+SW5zdGFuY2UsIE91dHB1dENoYW5uZWwpKTsKIAogICAvKiBDaGVjayB0aGUgVElNIGNoYW5uZWxzIHN0YXRlICovCi0gICBpZiAoKGNoYW5uZWxfMV9zdGF0ZSAhPSBIQUxfVElNX0NIQU5ORUxfU1RBVEVfUkVBRFkpCisgIGlmICgoY2hhbm5lbF8xX3N0YXRlICE9IEhBTF9USU1fQ0hBTk5FTF9TVEFURV9SRUFEWSkKICAgICAgIHx8IChjaGFubmVsXzJfc3RhdGUgIT0gSEFMX1RJTV9DSEFOTkVMX1NUQVRFX1JFQURZKQogICAgICAgfHwgKGNvbXBsZW1lbnRhcnlfY2hhbm5lbF8xX3N0YXRlICE9IEhBTF9USU1fQ0hBTk5FTF9TVEFURV9SRUFEWSkKICAgICAgIHx8IChjb21wbGVtZW50YXJ5X2NoYW5uZWxfMl9zdGF0ZSAhPSBIQUxfVElNX0NIQU5ORUxfU1RBVEVfUkVBRFkpKQpAQCAtMTU1OCw4ICsxNjE2LDggQEAKIC8qKgogICAqIEBicmllZiAgU3RvcHMgdGhlIFRJTSBPbmUgUHVsc2Ugc2lnbmFsIGdlbmVyYXRpb24gb24gdGhlIGNvbXBsZW1lbnRhcnkKICAgKiAgICAgICAgIG91dHB1dC4KLSAgKiBAbm90ZSBPdXRwdXRDaGFubmVsIG11c3QgbWF0Y2ggdGhlIHB1bHNlIG91dHB1dCBjaGFubmVsIGNob3NlbiB3aGVuIGNhbGxpbmcgCi0gICogICAgICAgQHJlZiBIQUxfVElNX09uZVB1bHNlX0NvbmZpZ0NoYW5uZWwoKS4gCisgICogQG5vdGUgT3V0cHV0Q2hhbm5lbCBtdXN0IG1hdGNoIHRoZSBwdWxzZSBvdXRwdXQgY2hhbm5lbCBjaG9zZW4gd2hlbiBjYWxsaW5nCisgICogICAgICAgQHJlZiBIQUxfVElNX09uZVB1bHNlX0NvbmZpZ0NoYW5uZWwoKS4KICAgKiBAcGFyYW0gIGh0aW0gVElNIE9uZSBQdWxzZSBoYW5kbGUKICAgKiBAcGFyYW0gIE91dHB1dENoYW5uZWwgcHVsc2Ugb3V0cHV0IGNoYW5uZWwgdG8gZGlzYWJsZQogICAqICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6CkBAIC0xNTk3LDggKzE2NTUsOCBAQAogLyoqCiAgICogQGJyaWVmICBTdGFydHMgdGhlIFRJTSBPbmUgUHVsc2Ugc2lnbmFsIGdlbmVyYXRpb24gaW4gaW50ZXJydXB0IG1vZGUgb24gdGhlCiAgICogICAgICAgICBjb21wbGVtZW50YXJ5IGNoYW5uZWwuCi0gICogQG5vdGUgT3V0cHV0Q2hhbm5lbCBtdXN0IG1hdGNoIHRoZSBwdWxzZSBvdXRwdXQgY2hhbm5lbCBjaG9zZW4gd2hlbiBjYWxsaW5nIAotICAqICAgICAgIEByZWYgSEFMX1RJTV9PbmVQdWxzZV9Db25maWdDaGFubmVsKCkuIAorICAqIEBub3RlIE91dHB1dENoYW5uZWwgbXVzdCBtYXRjaCB0aGUgcHVsc2Ugb3V0cHV0IGNoYW5uZWwgY2hvc2VuIHdoZW4gY2FsbGluZworICAqICAgICAgIEByZWYgSEFMX1RJTV9PbmVQdWxzZV9Db25maWdDaGFubmVsKCkuCiAgICogQHBhcmFtICBodGltIFRJTSBPbmUgUHVsc2UgaGFuZGxlCiAgICogQHBhcmFtICBPdXRwdXRDaGFubmVsIHB1bHNlIG91dHB1dCBjaGFubmVsIHRvIGVuYWJsZQogICAqICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6CkBAIC0xNjE4LDcgKzE2NzYsNyBAQAogICBhc3NlcnRfcGFyYW0oSVNfVElNX0NDWE5fSU5TVEFOQ0UoaHRpbS0+SW5zdGFuY2UsIE91dHB1dENoYW5uZWwpKTsKIAogICAvKiBDaGVjayB0aGUgVElNIGNoYW5uZWxzIHN0YXRlICovCi0gICBpZiAoKGNoYW5uZWxfMV9zdGF0ZSAhPSBIQUxfVElNX0NIQU5ORUxfU1RBVEVfUkVBRFkpCisgIGlmICgoY2hhbm5lbF8xX3N0YXRlICE9IEhBTF9USU1fQ0hBTk5FTF9TVEFURV9SRUFEWSkKICAgICAgIHx8IChjaGFubmVsXzJfc3RhdGUgIT0gSEFMX1RJTV9DSEFOTkVMX1NUQVRFX1JFQURZKQogICAgICAgfHwgKGNvbXBsZW1lbnRhcnlfY2hhbm5lbF8xX3N0YXRlICE9IEhBTF9USU1fQ0hBTk5FTF9TVEFURV9SRUFEWSkKICAgICAgIHx8IChjb21wbGVtZW50YXJ5X2NoYW5uZWxfMl9zdGF0ZSAhPSBIQUxfVElNX0NIQU5ORUxfU1RBVEVfUkVBRFkpKQpAQCAtMTY1Miw4ICsxNzEwLDggQEAKIC8qKgogICAqIEBicmllZiAgU3RvcHMgdGhlIFRJTSBPbmUgUHVsc2Ugc2lnbmFsIGdlbmVyYXRpb24gaW4gaW50ZXJydXB0IG1vZGUgb24gdGhlCiAgICogICAgICAgICBjb21wbGVtZW50YXJ5IGNoYW5uZWwuCi0gICogQG5vdGUgT3V0cHV0Q2hhbm5lbCBtdXN0IG1hdGNoIHRoZSBwdWxzZSBvdXRwdXQgY2hhbm5lbCBjaG9zZW4gd2hlbiBjYWxsaW5nIAotICAqICAgICAgIEByZWYgSEFMX1RJTV9PbmVQdWxzZV9Db25maWdDaGFubmVsKCkuIAorICAqIEBub3RlIE91dHB1dENoYW5uZWwgbXVzdCBtYXRjaCB0aGUgcHVsc2Ugb3V0cHV0IGNoYW5uZWwgY2hvc2VuIHdoZW4gY2FsbGluZworICAqICAgICAgIEByZWYgSEFMX1RJTV9PbmVQdWxzZV9Db25maWdDaGFubmVsKCkuCiAgICogQHBhcmFtICBodGltIFRJTSBPbmUgUHVsc2UgaGFuZGxlCiAgICogQHBhcmFtICBPdXRwdXRDaGFubmVsIHB1bHNlIG91dHB1dCBjaGFubmVsIHRvIGRpc2FibGUKICAgKiAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOgpAQCAtMjA0Niw2ICsyMTA0LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJTUV4X0JyZWFrSW5wdXRDb25maWdUeXBlRGVmICpzQnJlYWtJbnB1dENvbmZpZykKIAogeworICBIQUxfU3RhdHVzVHlwZURlZiBzdGF0dXMgPSBIQUxfT0s7CiAgIHVpbnQzMl90IHRtcG9yeDsKICAgdWludDMyX3QgYmtpbl9lbmFibGVfbWFzazsKICAgdWludDMyX3QgYmtpbl9wb2xhcml0eV9tYXNrOwpAQCAtMjA3NCwyMCArMjEzMywyMSBAQAogICAgIGNhc2UgVElNX0JSRUFLSU5QVVRTT1VSQ0VfQktJTjoKICAgICB7CiAgICAgICBia2luX2VuYWJsZV9tYXNrID0gVElNMV9BRjFfQktJTkU7Ci0gICAgICBia2luX2VuYWJsZV9iaXRwb3MgPSAwOworICAgICAgYmtpbl9lbmFibGVfYml0cG9zID0gVElNMV9BRjFfQktJTkVfUG9zOwogICAgICAgYmtpbl9wb2xhcml0eV9tYXNrID0gVElNMV9BRjFfQktJTlA7Ci0gICAgICBia2luX3BvbGFyaXR5X2JpdHBvcyA9IDk7CisgICAgICBia2luX3BvbGFyaXR5X2JpdHBvcyA9IFRJTTFfQUYxX0JLSU5QX1BvczsKICAgICAgIGJyZWFrOwogICAgIH0KLQorI2lmIGRlZmluZWQoREZTRE0xX0NoYW5uZWwwKQogICAgIGNhc2UgVElNX0JSRUFLSU5QVVRTT1VSQ0VfREZTRE0xOgogICAgIHsKICAgICAgIGJraW5fZW5hYmxlX21hc2sgPSBUSU0xX0FGMV9CS0RGMUJLRTsKLSAgICAgIGJraW5fZW5hYmxlX2JpdHBvcyA9IDg7CisgICAgICBia2luX2VuYWJsZV9iaXRwb3MgPSBUSU0xX0FGMV9CS0RGMUJLRV9Qb3M7CiAgICAgICBia2luX3BvbGFyaXR5X21hc2sgPSAwVTsKICAgICAgIGJraW5fcG9sYXJpdHlfYml0cG9zID0gMFU7CiAgICAgICBicmVhazsKICAgICB9CisjZW5kaWYgLyogREZTRE0xX0NoYW5uZWwwICovCiAKICAgICBkZWZhdWx0OgogICAgIHsKQEAgLTIxMTQsMTAgKzIxNzQsMTAgQEAKICNpZiBkZWZpbmVkKERGU0RNMV9DaGFubmVsMCkKICAgICAgIGlmIChzQnJlYWtJbnB1dENvbmZpZy0+U291cmNlICE9IFRJTV9CUkVBS0lOUFVUU09VUkNFX0RGU0RNMSkKICNlbmRpZiAvKiBERlNETTFfQ2hhbm5lbDAgKi8KLSAgICAgICAgewotICAgICAgICAgIHRtcG9yeCAmPSB+Ymtpbl9wb2xhcml0eV9tYXNrOwotICAgICAgICAgIHRtcG9yeCB8PSAoc0JyZWFrSW5wdXRDb25maWctPlBvbGFyaXR5IDw8IGJraW5fcG9sYXJpdHlfYml0cG9zKSAmIGJraW5fcG9sYXJpdHlfbWFzazsKLSAgICAgICAgfQorICAgICAgeworICAgICAgICB0bXBvcnggJj0gfmJraW5fcG9sYXJpdHlfbWFzazsKKyAgICAgICAgdG1wb3J4IHw9IChzQnJlYWtJbnB1dENvbmZpZy0+UG9sYXJpdHkgPDwgYmtpbl9wb2xhcml0eV9iaXRwb3MpICYgYmtpbl9wb2xhcml0eV9tYXNrOworICAgICAgfQogCiAgICAgICAvKiBTZXQgVElNeF9BRjEgKi8KICAgICAgIGh0aW0tPkluc3RhbmNlLT5BRjEgPSB0bXBvcng7CkBAIC0yMTM2LDIyICsyMTk2LDIzIEBACiAjaWYgZGVmaW5lZChERlNETTFfQ2hhbm5lbDApCiAgICAgICBpZiAoc0JyZWFrSW5wdXRDb25maWctPlNvdXJjZSAhPSBUSU1fQlJFQUtJTlBVVFNPVVJDRV9ERlNETTEpCiAjZW5kaWYgLyogREZTRE0xX0NoYW5uZWwwICovCi0gICAgICAgIHsKLSAgICAgICAgICB0bXBvcnggJj0gfmJraW5fcG9sYXJpdHlfbWFzazsKLSAgICAgICAgICB0bXBvcnggfD0gKHNCcmVha0lucHV0Q29uZmlnLT5Qb2xhcml0eSA8PCBia2luX3BvbGFyaXR5X2JpdHBvcykgJiBia2luX3BvbGFyaXR5X21hc2s7Ci0gICAgICAgIH0KKyAgICAgIHsKKyAgICAgICAgdG1wb3J4ICY9IH5ia2luX3BvbGFyaXR5X21hc2s7CisgICAgICAgIHRtcG9yeCB8PSAoc0JyZWFrSW5wdXRDb25maWctPlBvbGFyaXR5IDw8IGJraW5fcG9sYXJpdHlfYml0cG9zKSAmIGJraW5fcG9sYXJpdHlfbWFzazsKKyAgICAgIH0KIAogICAgICAgLyogU2V0IFRJTXhfQUYyICovCiAgICAgICBodGltLT5JbnN0YW5jZS0+QUYyID0gdG1wb3J4OwogICAgICAgYnJlYWs7CiAgICAgfQogICAgIGRlZmF1bHQ6CisgICAgICBzdGF0dXMgPSBIQUxfRVJST1I7CiAgICAgICBicmVhazsKICAgfQogCiAgIF9fSEFMX1VOTE9DSyhodGltKTsKIAotICByZXR1cm4gSEFMX09LOworICByZXR1cm4gc3RhdHVzOwogfQogI2VuZGlmIC8qVElNX0JSRUFLX0lOUFVUX1NVUFBPUlQgKi8KIApAQCAtMjE3OCwxMiArMjIzOSwxMyBAQAogICAqLwogSEFMX1N0YXR1c1R5cGVEZWYgSEFMX1RJTUV4X1JlbWFwQ29uZmlnKFRJTV9IYW5kbGVUeXBlRGVmICpodGltLCB1aW50MzJfdCBSZW1hcCkKIHsKLSAgX19IQUxfTE9DSyhodGltKTsKIAogICAvKiBDaGVjayBwYXJhbWV0ZXJzICovCiAgIGFzc2VydF9wYXJhbShJU19USU1fUkVNQVBfSU5TVEFOQ0UoaHRpbS0+SW5zdGFuY2UpKTsKICAgYXNzZXJ0X3BhcmFtKElTX1RJTV9SRU1BUChSZW1hcCkpOwogCisgIF9fSEFMX0xPQ0soaHRpbSk7CisKICAgLyogU2V0IHRoZSBUaW1lciByZW1hcHBpbmcgY29uZmlndXJhdGlvbiAqLwogICBodGltLT5JbnN0YW5jZS0+T1IgPSBSZW1hcDsKIApAQCAtMjM2Nyw3ICsyNDI5LDcgQEAKICAgKi8KIAogLyogUHJpdmF0ZSBmdW5jdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLS8qKiBAZGVmZ3JvdXAgVElNRXhfUHJpdmF0ZV9GdW5jdGlvbnMgVElNRXggUHJpdmF0ZSBGdW5jdGlvbnMKKy8qKiBAZGVmZ3JvdXAgVElNRXhfUHJpdmF0ZV9GdW5jdGlvbnMgVElNIEV4dGVuZGVkIFByaXZhdGUgRnVuY3Rpb25zCiAgICogQHsKICAgKi8KIApAQCAtMjU0Myw1ICsyNjA1LDMgQEAKIC8qKgogICAqIEB9CiAgICovCi0KLS8qKioqKioqKioqKioqKioqKioqKioqKiogKEMpIENPUFlSSUdIVCBTVE1pY3JvZWxlY3Ryb25pY3MgKioqKipFTkQgT0YgRklMRSoqKiovCmRpZmYgLS1naXQgYS9TcmMvc3RtMzJmN3h4X2hhbF90aW1lYmFzZV9ydGNfYWxhcm1fdGVtcGxhdGUuYyBiL1NyYy9zdG0zMmY3eHhfaGFsX3RpbWViYXNlX3J0Y19hbGFybV90ZW1wbGF0ZS5jCmluZGV4IDVkMDZmYTYuLjk4YTljYzggMTAwNjQ0Ci0tLSBhL1NyYy9zdG0zMmY3eHhfaGFsX3RpbWViYXNlX3J0Y19hbGFybV90ZW1wbGF0ZS5jCisrKyBiL1NyYy9zdG0zMmY3eHhfaGFsX3RpbWViYXNlX3J0Y19hbGFybV90ZW1wbGF0ZS5jCkBAIC05LDcgKzksMTggQEAKICAgKiAgICAgICAgICAgKyBJbml0aWFsaXplcyB0aGUgUlRDIHBlcmlwaGVyYWwgdG8gaW5jcmVtZW50IHRoZSBzZWNvbmRzIHJlZ2lzdGVycyBlYWNoIDFtcwogICAqICAgICAgICAgICArIFRoZSBhbGFybSBpcyBjb25maWd1cmVkIHRvIGFzc2VydCBhbiBpbnRlcnJ1cHQgd2hlbiB0aGUgUlRDIHJlYWNoZXMgMW1zIAogICAqICAgICAgICAgICArIEhBTF9JbmNUaWNrIGlzIGNhbGxlZCBhdCBlYWNoIEFsYXJtIGV2ZW50IGFuZCB0aGUgdGltZSBpcyByZXNldCB0byAwMDowMDowMAotICAqICAgICAgICAgICArIEhTRSAoZGVmYXVsdCksIExTRSBvciBMU0kgY2FuIGJlIHNlbGVjdGVkIGFzIFJUQyBjbG9jayBzb3VyY2UgIAorICAqICAgICAgICAgICArIEhTRSAoZGVmYXVsdCksIExTRSBvciBMU0kgY2FuIGJlIHNlbGVjdGVkIGFzIFJUQyBjbG9jayBzb3VyY2UKKyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICogQGF0dGVudGlvbgorICAqCisgICogQ29weXJpZ2h0IChjKSAyMDE3IFNUTWljcm9lbGVjdHJvbmljcy4KKyAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICAqCisgICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCB1bmRlciB0ZXJtcyB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlCisgICogaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc29mdHdhcmUgY29tcG9uZW50LgorICAqIElmIG5vIExJQ0VOU0UgZmlsZSBjb21lcyB3aXRoIHRoaXMgc29mdHdhcmUsIGl0IGlzIHByb3ZpZGVkIEFTLUlTLgorICAqCisgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogIEB2ZXJiYXRpbQogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgICAgICAgICAgICAgICAgICAgICAgICMjIyMjIEhvdyB0byB1c2UgdGhpcyBkcml2ZXIgIyMjIyMKQEAgLTMwLDE3ICs0MSw2IEBACiAKICAgQGVuZHZlcmJhdGltCiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICAqIEBhdHRlbnRpb24KLSAgKgotICAqIDxoMj48Y2VudGVyPiZjb3B5OyBDb3B5cmlnaHQgKGMpIDIwMTcgU1RNaWNyb2VsZWN0cm9uaWNzLgotICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuPC9jZW50ZXI+PC9oMj4KLSAgKgotICAqIFRoaXMgc29mdHdhcmUgY29tcG9uZW50IGlzIGxpY2Vuc2VkIGJ5IFNUIHVuZGVyIEJTRCAzLUNsYXVzZSBsaWNlbnNlLAotICAqIHRoZSAiTGljZW5zZSI7IFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUKLSAgKiBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQ6Ci0gICogICAgICAgICAgICAgICAgICAgICAgICBvcGVuc291cmNlLm9yZy9saWNlbnNlcy9CU0QtMy1DbGF1c2UKLSAgKgotICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgKi8KIAogLyogSW5jbHVkZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KQEAgLTMxNCw0ICszMTQsNCBAQAogICAqIEB9CiAgICovCiAKLS8qKioqKioqKioqKioqKioqKioqKioqKiogKEMpIENPUFlSSUdIVCBTVE1pY3JvZWxlY3Ryb25pY3MgKioqKipFTkQgT0YgRklMRSoqKiovCisKZGlmZiAtLWdpdCBhL1NyYy9zdG0zMmY3eHhfaGFsX3RpbWViYXNlX3J0Y193YWtldXBfdGVtcGxhdGUuYyBiL1NyYy9zdG0zMmY3eHhfaGFsX3RpbWViYXNlX3J0Y193YWtldXBfdGVtcGxhdGUuYwppbmRleCBhZjRmODk2Li5mMTYyMzFmIDEwMDY0NAotLS0gYS9TcmMvc3RtMzJmN3h4X2hhbF90aW1lYmFzZV9ydGNfd2FrZXVwX3RlbXBsYXRlLmMKKysrIGIvU3JjL3N0bTMyZjd4eF9oYWxfdGltZWJhc2VfcnRjX3dha2V1cF90ZW1wbGF0ZS5jCkBAIC0xMSw2ICsxMSwxNyBAQAogICAqICAgICAgICAgICArIFRoZSB3YWtldXAgZmVhdHVyZSBpcyBjb25maWd1cmVkIHRvIGFzc2VydCBhbiBpbnRlcnJ1cHQgZWFjaCAxbXMgCiAgICogICAgICAgICAgICsgSEFMX0luY1RpY2sgaXMgY2FsbGVkIGluc2lkZSB0aGUgSEFMX1JUQ0V4X1dha2VVcFRpbWVyRXZlbnRDYWxsYmFjawogICAqICAgICAgICAgICArIEhTRSAoZGVmYXVsdCksIExTRSBvciBMU0kgY2FuIGJlIHNlbGVjdGVkIGFzIFJUQyBjbG9jayBzb3VyY2UKKyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICogQGF0dGVudGlvbgorICAqCisgICogQ29weXJpZ2h0IChjKSAyMDE3IFNUTWljcm9lbGVjdHJvbmljcy4KKyAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICAqCisgICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCB1bmRlciB0ZXJtcyB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlCisgICogaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc29mdHdhcmUgY29tcG9uZW50LgorICAqIElmIG5vIExJQ0VOU0UgZmlsZSBjb21lcyB3aXRoIHRoaXMgc29mdHdhcmUsIGl0IGlzIHByb3ZpZGVkIEFTLUlTLgorICAqCisgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogIEB2ZXJiYXRpbQogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgICAgICAgICAgICAgICAgICAgICAgICMjIyMjIEhvdyB0byB1c2UgdGhpcyBkcml2ZXIgIyMjIyMKQEAgLTMxLDE3ICs0Miw2IEBACiAKICAgQGVuZHZlcmJhdGltCiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICAqIEBhdHRlbnRpb24KLSAgKgotICAqIDxoMj48Y2VudGVyPiZjb3B5OyBDb3B5cmlnaHQgKGMpIDIwMTcgU1RNaWNyb2VsZWN0cm9uaWNzLgotICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuPC9jZW50ZXI+PC9oMj4KLSAgKgotICAqIFRoaXMgc29mdHdhcmUgY29tcG9uZW50IGlzIGxpY2Vuc2VkIGJ5IFNUIHVuZGVyIEJTRCAzLUNsYXVzZSBsaWNlbnNlLAotICAqIHRoZSAiTGljZW5zZSI7IFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUKLSAgKiBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQ6Ci0gICogICAgICAgICAgICAgICAgICAgICAgICBvcGVuc291cmNlLm9yZy9saWNlbnNlcy9CU0QtMy1DbGF1c2UKLSAgKgotICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgKi8KIAogLyogSW5jbHVkZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KQEAgLTI5MCw0ICsyOTAsNCBAQAogICAqIEB9CiAgICovCiAKLS8qKioqKioqKioqKioqKioqKioqKioqKiogKEMpIENPUFlSSUdIVCBTVE1pY3JvZWxlY3Ryb25pY3MgKioqKipFTkQgT0YgRklMRSoqKiovCisKZGlmZiAtLWdpdCBhL1NyYy9zdG0zMmY3eHhfaGFsX3RpbWViYXNlX3RpbV90ZW1wbGF0ZS5jIGIvU3JjL3N0bTMyZjd4eF9oYWxfdGltZWJhc2VfdGltX3RlbXBsYXRlLmMKaW5kZXggYzI4MmJkNi4uMDc1MzFiZCAxMDA2NDQKLS0tIGEvU3JjL3N0bTMyZjd4eF9oYWxfdGltZWJhc2VfdGltX3RlbXBsYXRlLmMKKysrIGIvU3JjL3N0bTMyZjd4eF9oYWxfdGltZWJhc2VfdGltX3RlbXBsYXRlLmMKQEAgLTgsMTcgKzgsMTYgQEAKICAgKiAgICAgICAgICB0aGUgVElNIHRpbWUgYmFzZToKICAgKiAgICAgICAgICAgKyBJbml0aWFsaXplcyB0aGUgVElNIHBlcmlwaGVyYWwgZ2VuZXJhdGUgYSBQZXJpb2QgZWxhcHNlZCBFdmVudCBlYWNoIDFtcwogICAqICAgICAgICAgICArIEhBTF9JbmNUaWNrIGlzIGNhbGxlZCBpbnNpZGUgSEFMX1RJTV9QZXJpb2RFbGFwc2VkQ2FsbGJhY2sgaWUgZWFjaCAxbXMKLSAgKiAKKyAgKgogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgKiBAYXR0ZW50aW9uCiAgICoKLSAgKiA8aDI+PGNlbnRlcj4mY29weTsgQ29weXJpZ2h0IChjKSAyMDE3IFNUTWljcm9lbGVjdHJvbmljcy4KLSAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLjwvY2VudGVyPjwvaDI+CisgICogQ29weXJpZ2h0IChjKSAyMDE3IFNUTWljcm9lbGVjdHJvbmljcy4KKyAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAqCi0gICogVGhpcyBzb2Z0d2FyZSBjb21wb25lbnQgaXMgbGljZW5zZWQgYnkgU1QgdW5kZXIgQlNEIDMtQ2xhdXNlIGxpY2Vuc2UsCi0gICogdGhlICJMaWNlbnNlIjsgWW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZQotICAqIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdDoKLSAgKiAgICAgICAgICAgICAgICAgICAgICAgIG9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0JTRC0zLUNsYXVzZQorICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgdW5kZXIgdGVybXMgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZQorICAqIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvZnR3YXJlIGNvbXBvbmVudC4KKyAgKiBJZiBubyBMSUNFTlNFIGZpbGUgY29tZXMgd2l0aCB0aGlzIHNvZnR3YXJlLCBpdCBpcyBwcm92aWRlZCBBUy1JUy4KICAgKgogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgKi8KQEAgLTE3NCw0ICsxNzMsNCBAQAogICAqIEB9CiAgICovIAogCi0vKioqKioqKioqKioqKioqKioqKioqKioqIChDKSBDT1BZUklHSFQgU1RNaWNyb2VsZWN0cm9uaWNzICoqKioqRU5EIE9GIEZJTEUqKioqLworCmRpZmYgLS1naXQgYS9TcmMvc3RtMzJmN3h4X2hhbF91YXJ0LmMgYi9TcmMvc3RtMzJmN3h4X2hhbF91YXJ0LmMKaW5kZXggNTQ5OGNlNy4uNzUxMzlkNCAxMDA2NDQKLS0tIGEvU3JjL3N0bTMyZjd4eF9oYWxfdWFydC5jCisrKyBiL1NyYy9zdG0zMmY3eHhfaGFsX3VhcnQuYwpAQCAtMTAsNiArMTAsMTcgQEAKICAgKiAgICAgICAgICAgKyBQZXJpcGhlcmFsIENvbnRyb2wgZnVuY3Rpb25zCiAgICoKICAgKgorICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgKiBAYXR0ZW50aW9uCisgICoKKyAgKiBDb3B5cmlnaHQgKGMpIDIwMTcgU1RNaWNyb2VsZWN0cm9uaWNzLgorICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgICoKKyAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIHVuZGVyIHRlcm1zIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUKKyAgKiBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb2Z0d2FyZSBjb21wb25lbnQuCisgICogSWYgbm8gTElDRU5TRSBmaWxlIGNvbWVzIHdpdGggdGhpcyBzb2Z0d2FyZSwgaXQgaXMgcHJvdmlkZWQgQVMtSVMuCisgICoKKyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgIEB2ZXJiYXRpbQogID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgICAgICAgICAgICAgICAgICAgICAgICMjIyMjIEhvdyB0byB1c2UgdGhpcyBkcml2ZXIgIyMjIyMKQEAgLTc2LDggKzg3LDggQEAKICAgICBhbGxvd3MgdGhlIHVzZXIgdG8gY29uZmlndXJlIGR5bmFtaWNhbGx5IHRoZSBkcml2ZXIgY2FsbGJhY2tzLgogCiAgICAgWy4uXQotICAgIFVzZSBGdW5jdGlvbiBAcmVmIEhBTF9VQVJUX1JlZ2lzdGVyQ2FsbGJhY2soKSB0byByZWdpc3RlciBhIHVzZXIgY2FsbGJhY2suCi0gICAgRnVuY3Rpb24gQHJlZiBIQUxfVUFSVF9SZWdpc3RlckNhbGxiYWNrKCkgYWxsb3dzIHRvIHJlZ2lzdGVyIGZvbGxvd2luZyBjYWxsYmFja3M6CisgICAgVXNlIEZ1bmN0aW9uIEhBTF9VQVJUX1JlZ2lzdGVyQ2FsbGJhY2soKSB0byByZWdpc3RlciBhIHVzZXIgY2FsbGJhY2suCisgICAgRnVuY3Rpb24gSEFMX1VBUlRfUmVnaXN0ZXJDYWxsYmFjaygpIGFsbG93cyB0byByZWdpc3RlciBmb2xsb3dpbmcgY2FsbGJhY2tzOgogICAgICgrKSBUeEhhbGZDcGx0Q2FsbGJhY2sgICAgICAgIDogVHggSGFsZiBDb21wbGV0ZSBDYWxsYmFjay4KICAgICAoKykgVHhDcGx0Q2FsbGJhY2sgICAgICAgICAgICA6IFR4IENvbXBsZXRlIENhbGxiYWNrLgogICAgICgrKSBSeEhhbGZDcGx0Q2FsbGJhY2sgICAgICAgIDogUnggSGFsZiBDb21wbGV0ZSBDYWxsYmFjay4KQEAgLTkzLDkgKzEwNCw5IEBACiAgICAgYW5kIGEgcG9pbnRlciB0byB0aGUgdXNlciBjYWxsYmFjayBmdW5jdGlvbi4KIAogICAgIFsuLl0KLSAgICBVc2UgZnVuY3Rpb24gQHJlZiBIQUxfVUFSVF9VblJlZ2lzdGVyQ2FsbGJhY2soKSB0byByZXNldCBhIGNhbGxiYWNrIHRvIHRoZSBkZWZhdWx0CisgICAgVXNlIGZ1bmN0aW9uIEhBTF9VQVJUX1VuUmVnaXN0ZXJDYWxsYmFjaygpIHRvIHJlc2V0IGEgY2FsbGJhY2sgdG8gdGhlIGRlZmF1bHQKICAgICB3ZWFrIChzdXJjaGFyZ2VkKSBmdW5jdGlvbi4KLSAgICBAcmVmIEhBTF9VQVJUX1VuUmVnaXN0ZXJDYWxsYmFjaygpIHRha2VzIGFzIHBhcmFtZXRlcnMgdGhlIEhBTCBwZXJpcGhlcmFsIGhhbmRsZSwKKyAgICBIQUxfVUFSVF9VblJlZ2lzdGVyQ2FsbGJhY2soKSB0YWtlcyBhcyBwYXJhbWV0ZXJzIHRoZSBIQUwgcGVyaXBoZXJhbCBoYW5kbGUsCiAgICAgYW5kIHRoZSBDYWxsYmFjayBJRC4KICAgICBUaGlzIGZ1bmN0aW9uIGFsbG93cyB0byByZXNldCBmb2xsb3dpbmcgY2FsbGJhY2tzOgogICAgICgrKSBUeEhhbGZDcGx0Q2FsbGJhY2sgICAgICAgIDogVHggSGFsZiBDb21wbGV0ZSBDYWxsYmFjay4KQEAgLTExMiwxNiArMTIzLDE2IEBACiAKICAgICBbLi5dCiAgICAgRm9yIHNwZWNpZmljIGNhbGxiYWNrIFJ4RXZlbnRDYWxsYmFjaywgdXNlIGRlZGljYXRlZCByZWdpc3RyYXRpb24vcmVzZXQgZnVuY3Rpb25zOgotICAgIHJlc3BlY3RpdmVseSBAcmVmIEhBTF9VQVJUX1JlZ2lzdGVyUnhFdmVudENhbGxiYWNrKCkgLCBAcmVmIEhBTF9VQVJUX1VuUmVnaXN0ZXJSeEV2ZW50Q2FsbGJhY2soKS4KKyAgICByZXNwZWN0aXZlbHkgSEFMX1VBUlRfUmVnaXN0ZXJSeEV2ZW50Q2FsbGJhY2soKSAsIEhBTF9VQVJUX1VuUmVnaXN0ZXJSeEV2ZW50Q2FsbGJhY2soKS4KIAogICAgIFsuLl0KLSAgICBCeSBkZWZhdWx0LCBhZnRlciB0aGUgQHJlZiBIQUxfVUFSVF9Jbml0KCkgYW5kIHdoZW4gdGhlIHN0YXRlIGlzIEhBTF9VQVJUX1NUQVRFX1JFU0VUCisgICAgQnkgZGVmYXVsdCwgYWZ0ZXIgdGhlIEhBTF9VQVJUX0luaXQoKSBhbmQgd2hlbiB0aGUgc3RhdGUgaXMgSEFMX1VBUlRfU1RBVEVfUkVTRVQKICAgICBhbGwgY2FsbGJhY2tzIGFyZSBzZXQgdG8gdGhlIGNvcnJlc3BvbmRpbmcgd2VhayAoc3VyY2hhcmdlZCkgZnVuY3Rpb25zOgotICAgIGV4YW1wbGVzIEByZWYgSEFMX1VBUlRfVHhDcGx0Q2FsbGJhY2soKSwgQHJlZiBIQUxfVUFSVF9SeEhhbGZDcGx0Q2FsbGJhY2soKS4KKyAgICBleGFtcGxlcyBIQUxfVUFSVF9UeENwbHRDYWxsYmFjaygpLCBIQUxfVUFSVF9SeEhhbGZDcGx0Q2FsbGJhY2soKS4KICAgICBFeGNlcHRpb24gZG9uZSBmb3IgTXNwSW5pdCBhbmQgTXNwRGVJbml0IGZ1bmN0aW9ucyB0aGF0IGFyZSByZXNwZWN0aXZlbHkKLSAgICByZXNldCB0byB0aGUgbGVnYWN5IHdlYWsgKHN1cmNoYXJnZWQpIGZ1bmN0aW9ucyBpbiB0aGUgQHJlZiBIQUxfVUFSVF9Jbml0KCkKLSAgICBhbmQgQHJlZiBIQUxfVUFSVF9EZUluaXQoKSBvbmx5IHdoZW4gdGhlc2UgY2FsbGJhY2tzIGFyZSBudWxsIChub3QgcmVnaXN0ZXJlZCBiZWZvcmVoYW5kKS4KLSAgICBJZiBub3QsIE1zcEluaXQgb3IgTXNwRGVJbml0IGFyZSBub3QgbnVsbCwgdGhlIEByZWYgSEFMX1VBUlRfSW5pdCgpIGFuZCBAcmVmIEhBTF9VQVJUX0RlSW5pdCgpCisgICAgcmVzZXQgdG8gdGhlIGxlZ2FjeSB3ZWFrIChzdXJjaGFyZ2VkKSBmdW5jdGlvbnMgaW4gdGhlIEhBTF9VQVJUX0luaXQoKQorICAgIGFuZCBIQUxfVUFSVF9EZUluaXQoKSBvbmx5IHdoZW4gdGhlc2UgY2FsbGJhY2tzIGFyZSBudWxsIChub3QgcmVnaXN0ZXJlZCBiZWZvcmVoYW5kKS4KKyAgICBJZiBub3QsIE1zcEluaXQgb3IgTXNwRGVJbml0IGFyZSBub3QgbnVsbCwgdGhlIEhBTF9VQVJUX0luaXQoKSBhbmQgSEFMX1VBUlRfRGVJbml0KCkKICAgICBrZWVwIGFuZCB1c2UgdGhlIHVzZXIgTXNwSW5pdC9Nc3BEZUluaXQgY2FsbGJhY2tzIChyZWdpc3RlcmVkIGJlZm9yZWhhbmQpLgogCiAgICAgWy4uXQpAQCAtMTMwLDggKzE0MSw4IEBACiAgICAgaW4gSEFMX1VBUlRfU1RBVEVfUkVBRFkgb3IgSEFMX1VBUlRfU1RBVEVfUkVTRVQgc3RhdGUsIHRodXMgcmVnaXN0ZXJlZCAodXNlcikKICAgICBNc3BJbml0L0RlSW5pdCBjYWxsYmFja3MgY2FuIGJlIHVzZWQgZHVyaW5nIHRoZSBJbml0L0RlSW5pdC4KICAgICBJbiB0aGF0IGNhc2UgZmlyc3QgcmVnaXN0ZXIgdGhlIE1zcEluaXQvTXNwRGVJbml0IHVzZXIgY2FsbGJhY2tzCi0gICAgdXNpbmcgQHJlZiBIQUxfVUFSVF9SZWdpc3RlckNhbGxiYWNrKCkgYmVmb3JlIGNhbGxpbmcgQHJlZiBIQUxfVUFSVF9EZUluaXQoKQotICAgIG9yIEByZWYgSEFMX1VBUlRfSW5pdCgpIGZ1bmN0aW9uLgorICAgIHVzaW5nIEhBTF9VQVJUX1JlZ2lzdGVyQ2FsbGJhY2soKSBiZWZvcmUgY2FsbGluZyBIQUxfVUFSVF9EZUluaXQoKQorICAgIG9yIEhBTF9VQVJUX0luaXQoKSBmdW5jdGlvbi4KIAogICAgIFsuLl0KICAgICBXaGVuIFRoZSBjb21waWxhdGlvbiBkZWZpbmUgVVNFX0hBTF9VQVJUX1JFR0lTVEVSX0NBTExCQUNLUyBpcyBzZXQgdG8gMCBvcgpAQCAtMTQxLDE3ICsxNTIsNiBAQAogCiAgIEBlbmR2ZXJiYXRpbQogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAgKiBAYXR0ZW50aW9uCi0gICoKLSAgKiA8aDI+PGNlbnRlcj4mY29weTsgQ29weXJpZ2h0IChjKSAyMDE3IFNUTWljcm9lbGVjdHJvbmljcy4KLSAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLjwvY2VudGVyPjwvaDI+Ci0gICoKLSAgKiBUaGlzIHNvZnR3YXJlIGNvbXBvbmVudCBpcyBsaWNlbnNlZCBieSBTVCB1bmRlciBCU0QgMy1DbGF1c2UgbGljZW5zZSwKLSAgKiB0aGUgIkxpY2Vuc2UiOyBZb3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlCi0gICogTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0OgotICAqICAgICAgICAgICAgICAgICAgICAgICAgb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvQlNELTMtQ2xhdXNlCi0gICoKLSAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgICovCiAKIC8qIEluY2x1ZGVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCkBAIC0xODcsNyArMTg3LDYgQEAKICAgKi8KIAogLyogUHJpdmF0ZSBtYWNyb3MgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLS8qIFByaXZhdGUgdmFyaWFibGVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAvKiBQcml2YXRlIGZ1bmN0aW9uIHByb3RvdHlwZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogLyoqIEBhZGR0b2dyb3VwIFVBUlRfUHJpdmF0ZV9GdW5jdGlvbnMKICAgKiBAewpAQCAtMjEzLDcgKzIxMiw4IEBACiAgICogQH0KICAgKi8KIAotCisvKiBQcml2YXRlIHZhcmlhYmxlcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworLyogRXhwb3J0ZWQgQ29uc3RhbnRzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KIC8qIEV4cG9ydGVkIGZ1bmN0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAKIC8qKiBAZGVmZ3JvdXAgVUFSVF9FeHBvcnRlZF9GdW5jdGlvbnMgVUFSVCBFeHBvcnRlZCBGdW5jdGlvbnMKQEAgLTEwOTAsMTAgKzEwOTAsMTAgQEAKICAgKiBAcGFyYW0gVGltZW91dCBUaW1lb3V0IGR1cmF0aW9uLgogICAqIEByZXR2YWwgSEFMIHN0YXR1cwogICAqLwotSEFMX1N0YXR1c1R5cGVEZWYgSEFMX1VBUlRfVHJhbnNtaXQoVUFSVF9IYW5kbGVUeXBlRGVmICpodWFydCwgdWludDhfdCAqcERhdGEsIHVpbnQxNl90IFNpemUsIHVpbnQzMl90IFRpbWVvdXQpCitIQUxfU3RhdHVzVHlwZURlZiBIQUxfVUFSVF9UcmFuc21pdChVQVJUX0hhbmRsZVR5cGVEZWYgKmh1YXJ0LCBjb25zdCB1aW50OF90ICpwRGF0YSwgdWludDE2X3QgU2l6ZSwgdWludDMyX3QgVGltZW91dCkKIHsKLSAgdWludDhfdCAgKnBkYXRhOGJpdHM7Ci0gIHVpbnQxNl90ICpwZGF0YTE2Yml0czsKKyAgY29uc3QgdWludDhfdCAgKnBkYXRhOGJpdHM7CisgIGNvbnN0IHVpbnQxNl90ICpwZGF0YTE2Yml0czsKICAgdWludDMyX3QgdGlja3N0YXJ0OwogCiAgIC8qIENoZWNrIHRoYXQgYSBUeCBwcm9jZXNzIGlzIG5vdCBhbHJlYWR5IG9uZ29pbmcgKi8KQEAgLTExMTksNyArMTExOSw3IEBACiAgICAgaWYgKChodWFydC0+SW5pdC5Xb3JkTGVuZ3RoID09IFVBUlRfV09SRExFTkdUSF85QikgJiYgKGh1YXJ0LT5Jbml0LlBhcml0eSA9PSBVQVJUX1BBUklUWV9OT05FKSkKICAgICB7CiAgICAgICBwZGF0YThiaXRzICA9IE5VTEw7Ci0gICAgICBwZGF0YTE2Yml0cyA9ICh1aW50MTZfdCAqKSBwRGF0YTsKKyAgICAgIHBkYXRhMTZiaXRzID0gKGNvbnN0IHVpbnQxNl90ICopIHBEYXRhOwogICAgIH0KICAgICBlbHNlCiAgICAgewpAQCAtMTI2MSw3ICsxMjYxLDcgQEAKICAgKiBAcGFyYW0gU2l6ZSAgQW1vdW50IG9mIGRhdGEgZWxlbWVudHMgKHU4IG9yIHUxNikgdG8gYmUgc2VudC4KICAgKiBAcmV0dmFsIEhBTCBzdGF0dXMKICAgKi8KLUhBTF9TdGF0dXNUeXBlRGVmIEhBTF9VQVJUX1RyYW5zbWl0X0lUKFVBUlRfSGFuZGxlVHlwZURlZiAqaHVhcnQsIHVpbnQ4X3QgKnBEYXRhLCB1aW50MTZfdCBTaXplKQorSEFMX1N0YXR1c1R5cGVEZWYgSEFMX1VBUlRfVHJhbnNtaXRfSVQoVUFSVF9IYW5kbGVUeXBlRGVmICpodWFydCwgY29uc3QgdWludDhfdCAqcERhdGEsIHVpbnQxNl90IFNpemUpCiB7CiAgIC8qIENoZWNrIHRoYXQgYSBUeCBwcm9jZXNzIGlzIG5vdCBhbHJlYWR5IG9uZ29pbmcgKi8KICAgaWYgKGh1YXJ0LT5nU3RhdGUgPT0gSEFMX1VBUlRfU1RBVEVfUkVBRFkpCkBAIC0xMjk0LDcgKzEyOTQsNyBAQAogICAgIF9fSEFMX1VOTE9DSyhodWFydCk7CiAKICAgICAvKiBFbmFibGUgdGhlIFRyYW5zbWl0IERhdGEgUmVnaXN0ZXIgRW1wdHkgaW50ZXJydXB0ICovCi0gICAgU0VUX0JJVChodWFydC0+SW5zdGFuY2UtPkNSMSwgVVNBUlRfQ1IxX1RYRUlFKTsKKyAgICBBVE9NSUNfU0VUX0JJVChodWFydC0+SW5zdGFuY2UtPkNSMSwgVVNBUlRfQ1IxX1RYRUlFKTsKIAogICAgIHJldHVybiBIQUxfT0s7CiAgIH0KQEAgLTEzMzMsNyArMTMzMyw3IEBACiAgICAgaWYgKFJFQURfQklUKGh1YXJ0LT5JbnN0YW5jZS0+Q1IyLCBVU0FSVF9DUjJfUlRPRU4pICE9IDBVKQogICAgIHsKICAgICAgIC8qIEVuYWJsZSB0aGUgVUFSVCBSZWNlaXZlciBUaW1lb3V0IEludGVycnVwdCAqLwotICAgICAgU0VUX0JJVChodWFydC0+SW5zdGFuY2UtPkNSMSwgVVNBUlRfQ1IxX1JUT0lFKTsKKyAgICAgIEFUT01JQ19TRVRfQklUKGh1YXJ0LT5JbnN0YW5jZS0+Q1IxLCBVU0FSVF9DUjFfUlRPSUUpOwogICAgIH0KIAogICAgIHJldHVybiAoVUFSVF9TdGFydF9SZWNlaXZlX0lUKGh1YXJ0LCBwRGF0YSwgU2l6ZSkpOwpAQCAtMTM1NCw3ICsxMzU0LDcgQEAKICAgKiBAcGFyYW0gU2l6ZSAgQW1vdW50IG9mIGRhdGEgZWxlbWVudHMgKHU4IG9yIHUxNikgdG8gYmUgc2VudC4KICAgKiBAcmV0dmFsIEhBTCBzdGF0dXMKICAgKi8KLUhBTF9TdGF0dXNUeXBlRGVmIEhBTF9VQVJUX1RyYW5zbWl0X0RNQShVQVJUX0hhbmRsZVR5cGVEZWYgKmh1YXJ0LCB1aW50OF90ICpwRGF0YSwgdWludDE2X3QgU2l6ZSkKK0hBTF9TdGF0dXNUeXBlRGVmIEhBTF9VQVJUX1RyYW5zbWl0X0RNQShVQVJUX0hhbmRsZVR5cGVEZWYgKmh1YXJ0LCBjb25zdCB1aW50OF90ICpwRGF0YSwgdWludDE2X3QgU2l6ZSkKIHsKICAgLyogQ2hlY2sgdGhhdCBhIFR4IHByb2Nlc3MgaXMgbm90IGFscmVhZHkgb25nb2luZyAqLwogICBpZiAoaHVhcnQtPmdTdGF0ZSA9PSBIQUxfVUFSVF9TVEFURV9SRUFEWSkKQEAgLTE0MDgsNyArMTQwOCw3IEBACiAKICAgICAvKiBFbmFibGUgdGhlIERNQSB0cmFuc2ZlciBmb3IgdHJhbnNtaXQgcmVxdWVzdCBieSBzZXR0aW5nIHRoZSBETUFUIGJpdAogICAgIGluIHRoZSBVQVJUIENSMyByZWdpc3RlciAqLwotICAgIFNFVF9CSVQoaHVhcnQtPkluc3RhbmNlLT5DUjMsIFVTQVJUX0NSM19ETUFUKTsKKyAgICBBVE9NSUNfU0VUX0JJVChodWFydC0+SW5zdGFuY2UtPkNSMywgVVNBUlRfQ1IzX0RNQVQpOwogCiAgICAgcmV0dXJuIEhBTF9PSzsKICAgfQpAQCAtMTQ0OSw3ICsxNDQ5LDcgQEAKICAgICBpZiAoUkVBRF9CSVQoaHVhcnQtPkluc3RhbmNlLT5DUjIsIFVTQVJUX0NSMl9SVE9FTikgIT0gMFUpCiAgICAgewogICAgICAgLyogRW5hYmxlIHRoZSBVQVJUIFJlY2VpdmVyIFRpbWVvdXQgSW50ZXJydXB0ICovCi0gICAgICBTRVRfQklUKGh1YXJ0LT5JbnN0YW5jZS0+Q1IxLCBVU0FSVF9DUjFfUlRPSUUpOworICAgICAgQVRPTUlDX1NFVF9CSVQoaHVhcnQtPkluc3RhbmNlLT5DUjEsIFVTQVJUX0NSMV9SVE9JRSk7CiAgICAgfQogCiAgICAgcmV0dXJuIChVQVJUX1N0YXJ0X1JlY2VpdmVfRE1BKGh1YXJ0LCBwRGF0YSwgU2l6ZSkpOwpAQCAtMTQ3NiwxNyArMTQ3NiwxNyBAQAogICAgICAgKGdzdGF0ZSA9PSBIQUxfVUFSVF9TVEFURV9CVVNZX1RYKSkKICAgewogICAgIC8qIERpc2FibGUgdGhlIFVBUlQgRE1BIFR4IHJlcXVlc3QgKi8KLSAgICBDTEVBUl9CSVQoaHVhcnQtPkluc3RhbmNlLT5DUjMsIFVTQVJUX0NSM19ETUFUKTsKKyAgICBBVE9NSUNfQ0xFQVJfQklUKGh1YXJ0LT5JbnN0YW5jZS0+Q1IzLCBVU0FSVF9DUjNfRE1BVCk7CiAgIH0KICAgaWYgKChIQUxfSVNfQklUX1NFVChodWFydC0+SW5zdGFuY2UtPkNSMywgVVNBUlRfQ1IzX0RNQVIpKSAmJgogICAgICAgKHJ4c3RhdGUgPT0gSEFMX1VBUlRfU1RBVEVfQlVTWV9SWCkpCiAgIHsKICAgICAvKiBEaXNhYmxlIFBFIGFuZCBFUlIgKEZyYW1lIGVycm9yLCBub2lzZSBlcnJvciwgb3ZlcnJ1biBlcnJvcikgaW50ZXJydXB0cyAqLwotICAgIENMRUFSX0JJVChodWFydC0+SW5zdGFuY2UtPkNSMSwgVVNBUlRfQ1IxX1BFSUUpOwotICAgIENMRUFSX0JJVChodWFydC0+SW5zdGFuY2UtPkNSMywgVVNBUlRfQ1IzX0VJRSk7CisgICAgQVRPTUlDX0NMRUFSX0JJVChodWFydC0+SW5zdGFuY2UtPkNSMSwgVVNBUlRfQ1IxX1BFSUUpOworICAgIEFUT01JQ19DTEVBUl9CSVQoaHVhcnQtPkluc3RhbmNlLT5DUjMsIFVTQVJUX0NSM19FSUUpOwogCiAgICAgLyogRGlzYWJsZSB0aGUgVUFSVCBETUEgUnggcmVxdWVzdCAqLwotICAgIENMRUFSX0JJVChodWFydC0+SW5zdGFuY2UtPkNSMywgVVNBUlRfQ1IzX0RNQVIpOworICAgIEFUT01JQ19DTEVBUl9CSVQoaHVhcnQtPkluc3RhbmNlLT5DUjMsIFVTQVJUX0NSM19ETUFSKTsKICAgfQogCiAgIF9fSEFMX1VOTE9DSyhodWFydCk7CkBAIC0xNTA2LDcgKzE1MDYsNyBAQAogICBpZiAoaHVhcnQtPmdTdGF0ZSA9PSBIQUxfVUFSVF9TVEFURV9CVVNZX1RYKQogICB7CiAgICAgLyogRW5hYmxlIHRoZSBVQVJUIERNQSBUeCByZXF1ZXN0ICovCi0gICAgU0VUX0JJVChodWFydC0+SW5zdGFuY2UtPkNSMywgVVNBUlRfQ1IzX0RNQVQpOworICAgIEFUT01JQ19TRVRfQklUKGh1YXJ0LT5JbnN0YW5jZS0+Q1IzLCBVU0FSVF9DUjNfRE1BVCk7CiAgIH0KICAgaWYgKGh1YXJ0LT5SeFN0YXRlID09IEhBTF9VQVJUX1NUQVRFX0JVU1lfUlgpCiAgIHsKQEAgLTE1MTQsMTEgKzE1MTQsMTQgQEAKICAgICBfX0hBTF9VQVJUX0NMRUFSX0ZMQUcoaHVhcnQsIFVBUlRfQ0xFQVJfT1JFRik7CiAKICAgICAvKiBSZS1lbmFibGUgUEUgYW5kIEVSUiAoRnJhbWUgZXJyb3IsIG5vaXNlIGVycm9yLCBvdmVycnVuIGVycm9yKSBpbnRlcnJ1cHRzICovCi0gICAgU0VUX0JJVChodWFydC0+SW5zdGFuY2UtPkNSMSwgVVNBUlRfQ1IxX1BFSUUpOwotICAgIFNFVF9CSVQoaHVhcnQtPkluc3RhbmNlLT5DUjMsIFVTQVJUX0NSM19FSUUpOworICAgIGlmIChodWFydC0+SW5pdC5QYXJpdHkgIT0gVUFSVF9QQVJJVFlfTk9ORSkKKyAgICB7ICAgIAorICAgICAgQVRPTUlDX1NFVF9CSVQoaHVhcnQtPkluc3RhbmNlLT5DUjEsIFVTQVJUX0NSMV9QRUlFKTsKKyAgICB9CisgICAgQVRPTUlDX1NFVF9CSVQoaHVhcnQtPkluc3RhbmNlLT5DUjMsIFVTQVJUX0NSM19FSUUpOwogCiAgICAgLyogRW5hYmxlIHRoZSBVQVJUIERNQSBSeCByZXF1ZXN0ICovCi0gICAgU0VUX0JJVChodWFydC0+SW5zdGFuY2UtPkNSMywgVVNBUlRfQ1IzX0RNQVIpOworICAgIEFUT01JQ19TRVRfQklUKGh1YXJ0LT5JbnN0YW5jZS0+Q1IzLCBVU0FSVF9DUjNfRE1BUik7CiAgIH0KIAogICBfX0hBTF9VTkxPQ0soaHVhcnQpOwpAQCAtMTU0Nyw3ICsxNTUwLDcgQEAKICAgaWYgKChIQUxfSVNfQklUX1NFVChodWFydC0+SW5zdGFuY2UtPkNSMywgVVNBUlRfQ1IzX0RNQVQpKSAmJgogICAgICAgKGdzdGF0ZSA9PSBIQUxfVUFSVF9TVEFURV9CVVNZX1RYKSkKICAgewotICAgIENMRUFSX0JJVChodWFydC0+SW5zdGFuY2UtPkNSMywgVVNBUlRfQ1IzX0RNQVQpOworICAgIEFUT01JQ19DTEVBUl9CSVQoaHVhcnQtPkluc3RhbmNlLT5DUjMsIFVTQVJUX0NSM19ETUFUKTsKIAogICAgIC8qIEFib3J0IHRoZSBVQVJUIERNQSBUeCBjaGFubmVsICovCiAgICAgaWYgKGh1YXJ0LT5oZG1hdHggIT0gTlVMTCkKQEAgLTE1NzEsNyArMTU3NCw3IEBACiAgIGlmICgoSEFMX0lTX0JJVF9TRVQoaHVhcnQtPkluc3RhbmNlLT5DUjMsIFVTQVJUX0NSM19ETUFSKSkgJiYKICAgICAgIChyeHN0YXRlID09IEhBTF9VQVJUX1NUQVRFX0JVU1lfUlgpKQogICB7Ci0gICAgQ0xFQVJfQklUKGh1YXJ0LT5JbnN0YW5jZS0+Q1IzLCBVU0FSVF9DUjNfRE1BUik7CisgICAgQVRPTUlDX0NMRUFSX0JJVChodWFydC0+SW5zdGFuY2UtPkNSMywgVVNBUlRfQ1IzX0RNQVIpOwogCiAgICAgLyogQWJvcnQgdGhlIFVBUlQgRE1BIFJ4IGNoYW5uZWwgKi8KICAgICBpZiAoaHVhcnQtPmhkbWFyeCAhPSBOVUxMKQpAQCAtMTYwOSwxOSArMTYxMiwyMCBAQAogSEFMX1N0YXR1c1R5cGVEZWYgSEFMX1VBUlRfQWJvcnQoVUFSVF9IYW5kbGVUeXBlRGVmICpodWFydCkKIHsKICAgLyogRGlzYWJsZSBUWEVJRSwgVENJRSwgUlhORSwgUEUgYW5kIEVSUiAoRnJhbWUgZXJyb3IsIG5vaXNlIGVycm9yLCBvdmVycnVuIGVycm9yKSBpbnRlcnJ1cHRzICovCi0gIENMRUFSX0JJVChodWFydC0+SW5zdGFuY2UtPkNSMSwgKFVTQVJUX0NSMV9SWE5FSUUgfCBVU0FSVF9DUjFfUEVJRSB8IFVTQVJUX0NSMV9UWEVJRSB8IFVTQVJUX0NSMV9UQ0lFKSk7Ci0gIENMRUFSX0JJVChodWFydC0+SW5zdGFuY2UtPkNSMywgVVNBUlRfQ1IzX0VJRSk7CisgIEFUT01JQ19DTEVBUl9CSVQoaHVhcnQtPkluc3RhbmNlLT5DUjEsIChVU0FSVF9DUjFfUlhORUlFIHwgVVNBUlRfQ1IxX1BFSUUgfCBVU0FSVF9DUjFfVFhFSUUgfCBVU0FSVF9DUjFfVENJRSkpOworICBBVE9NSUNfQ0xFQVJfQklUKGh1YXJ0LT5JbnN0YW5jZS0+Q1IzLCBVU0FSVF9DUjNfRUlFKTsKIAogICAvKiBJZiBSZWNlcHRpb24gdGlsbCBJRExFIGV2ZW50IHdhcyBvbmdvaW5nLCBkaXNhYmxlIElETEVJRSBpbnRlcnJ1cHQgKi8KICAgaWYgKGh1YXJ0LT5SZWNlcHRpb25UeXBlID09IEhBTF9VQVJUX1JFQ0VQVElPTl9UT0lETEUpCiAgIHsKLSAgICBDTEVBUl9CSVQoaHVhcnQtPkluc3RhbmNlLT5DUjEsIChVU0FSVF9DUjFfSURMRUlFKSk7CisgICAgQVRPTUlDX0NMRUFSX0JJVChodWFydC0+SW5zdGFuY2UtPkNSMSwgKFVTQVJUX0NSMV9JRExFSUUpKTsKICAgfQogCi0gIC8qIERpc2FibGUgdGhlIFVBUlQgRE1BIFR4IHJlcXVlc3QgaWYgZW5hYmxlZCAqLworICAvKiBBYm9ydCB0aGUgVUFSVCBETUEgVHggY2hhbm5lbCBpZiBlbmFibGVkICovCiAgIGlmIChIQUxfSVNfQklUX1NFVChodWFydC0+SW5zdGFuY2UtPkNSMywgVVNBUlRfQ1IzX0RNQVQpKQogICB7Ci0gICAgQ0xFQVJfQklUKGh1YXJ0LT5JbnN0YW5jZS0+Q1IzLCBVU0FSVF9DUjNfRE1BVCk7CisgICAgLyogRGlzYWJsZSB0aGUgVUFSVCBETUEgVHggcmVxdWVzdCBpZiBlbmFibGVkICovCisgICAgQVRPTUlDX0NMRUFSX0JJVChodWFydC0+SW5zdGFuY2UtPkNSMywgVVNBUlRfQ1IzX0RNQVQpOwogCiAgICAgLyogQWJvcnQgdGhlIFVBUlQgRE1BIFR4IGNoYW5uZWwgOiB1c2UgYmxvY2tpbmcgRE1BIEFib3J0IEFQSSAobm8gY2FsbGJhY2spICovCiAgICAgaWYgKGh1YXJ0LT5oZG1hdHggIT0gTlVMTCkKQEAgLTE2NDMsMTAgKzE2NDcsMTEgQEAKICAgICB9CiAgIH0KIAotICAvKiBEaXNhYmxlIHRoZSBVQVJUIERNQSBSeCByZXF1ZXN0IGlmIGVuYWJsZWQgKi8KKyAgLyogQWJvcnQgdGhlIFVBUlQgRE1BIFJ4IGNoYW5uZWwgaWYgZW5hYmxlZCAqLwogICBpZiAoSEFMX0lTX0JJVF9TRVQoaHVhcnQtPkluc3RhbmNlLT5DUjMsIFVTQVJUX0NSM19ETUFSKSkKICAgewotICAgIENMRUFSX0JJVChodWFydC0+SW5zdGFuY2UtPkNSMywgVVNBUlRfQ1IzX0RNQVIpOworICAgIC8qIERpc2FibGUgdGhlIFVBUlQgRE1BIFJ4IHJlcXVlc3QgaWYgZW5hYmxlZCAqLworICAgIEFUT01JQ19DTEVBUl9CSVQoaHVhcnQtPkluc3RhbmNlLT5DUjMsIFVTQVJUX0NSM19ETUFSKTsKIAogICAgIC8qIEFib3J0IHRoZSBVQVJUIERNQSBSeCBjaGFubmVsIDogdXNlIGJsb2NraW5nIERNQSBBYm9ydCBBUEkgKG5vIGNhbGxiYWNrKSAqLwogICAgIGlmIChodWFydC0+aGRtYXJ4ICE9IE5VTEwpCkBAIC0xNzA0LDEyICsxNzA5LDEzIEBACiBIQUxfU3RhdHVzVHlwZURlZiBIQUxfVUFSVF9BYm9ydFRyYW5zbWl0KFVBUlRfSGFuZGxlVHlwZURlZiAqaHVhcnQpCiB7CiAgIC8qIERpc2FibGUgVFhFSUUgYW5kIFRDSUUgaW50ZXJydXB0cyAqLwotICBDTEVBUl9CSVQoaHVhcnQtPkluc3RhbmNlLT5DUjEsIChVU0FSVF9DUjFfVFhFSUUgfCBVU0FSVF9DUjFfVENJRSkpOworICBBVE9NSUNfQ0xFQVJfQklUKGh1YXJ0LT5JbnN0YW5jZS0+Q1IxLCAoVVNBUlRfQ1IxX1RYRUlFIHwgVVNBUlRfQ1IxX1RDSUUpKTsKIAotICAvKiBEaXNhYmxlIHRoZSBVQVJUIERNQSBUeCByZXF1ZXN0IGlmIGVuYWJsZWQgKi8KKyAgLyogQWJvcnQgdGhlIFVBUlQgRE1BIFR4IGNoYW5uZWwgaWYgZW5hYmxlZCAqLwogICBpZiAoSEFMX0lTX0JJVF9TRVQoaHVhcnQtPkluc3RhbmNlLT5DUjMsIFVTQVJUX0NSM19ETUFUKSkKICAgewotICAgIENMRUFSX0JJVChodWFydC0+SW5zdGFuY2UtPkNSMywgVVNBUlRfQ1IzX0RNQVQpOworICAgIC8qIERpc2FibGUgdGhlIFVBUlQgRE1BIFR4IHJlcXVlc3QgaWYgZW5hYmxlZCAqLworICAgIEFUT01JQ19DTEVBUl9CSVQoaHVhcnQtPkluc3RhbmNlLT5DUjMsIFVTQVJUX0NSM19ETUFUKTsKIAogICAgIC8qIEFib3J0IHRoZSBVQVJUIERNQSBUeCBjaGFubmVsIDogdXNlIGJsb2NraW5nIERNQSBBYm9ydCBBUEkgKG5vIGNhbGxiYWNrKSAqLwogICAgIGlmIChodWFydC0+aGRtYXR4ICE9IE5VTEwpCkBAIC0xNzU2LDE5ICsxNzYyLDIwIEBACiBIQUxfU3RhdHVzVHlwZURlZiBIQUxfVUFSVF9BYm9ydFJlY2VpdmUoVUFSVF9IYW5kbGVUeXBlRGVmICpodWFydCkKIHsKICAgLyogRGlzYWJsZSBSWE5FLCBQRSBhbmQgRVJSIChGcmFtZSBlcnJvciwgbm9pc2UgZXJyb3IsIG92ZXJydW4gZXJyb3IpIGludGVycnVwdHMgKi8KLSAgQ0xFQVJfQklUKGh1YXJ0LT5JbnN0YW5jZS0+Q1IxLCAoVVNBUlRfQ1IxX1JYTkVJRSB8IFVTQVJUX0NSMV9QRUlFKSk7Ci0gIENMRUFSX0JJVChodWFydC0+SW5zdGFuY2UtPkNSMywgVVNBUlRfQ1IzX0VJRSk7CisgIEFUT01JQ19DTEVBUl9CSVQoaHVhcnQtPkluc3RhbmNlLT5DUjEsIChVU0FSVF9DUjFfUlhORUlFIHwgVVNBUlRfQ1IxX1BFSUUpKTsKKyAgQVRPTUlDX0NMRUFSX0JJVChodWFydC0+SW5zdGFuY2UtPkNSMywgVVNBUlRfQ1IzX0VJRSk7CiAKICAgLyogSWYgUmVjZXB0aW9uIHRpbGwgSURMRSBldmVudCB3YXMgb25nb2luZywgZGlzYWJsZSBJRExFSUUgaW50ZXJydXB0ICovCiAgIGlmIChodWFydC0+UmVjZXB0aW9uVHlwZSA9PSBIQUxfVUFSVF9SRUNFUFRJT05fVE9JRExFKQogICB7Ci0gICAgQ0xFQVJfQklUKGh1YXJ0LT5JbnN0YW5jZS0+Q1IxLCAoVVNBUlRfQ1IxX0lETEVJRSkpOworICAgIEFUT01JQ19DTEVBUl9CSVQoaHVhcnQtPkluc3RhbmNlLT5DUjEsIChVU0FSVF9DUjFfSURMRUlFKSk7CiAgIH0KIAotICAvKiBEaXNhYmxlIHRoZSBVQVJUIERNQSBSeCByZXF1ZXN0IGlmIGVuYWJsZWQgKi8KKyAgLyogQWJvcnQgdGhlIFVBUlQgRE1BIFJ4IGNoYW5uZWwgaWYgZW5hYmxlZCAqLwogICBpZiAoSEFMX0lTX0JJVF9TRVQoaHVhcnQtPkluc3RhbmNlLT5DUjMsIFVTQVJUX0NSM19ETUFSKSkKICAgewotICAgIENMRUFSX0JJVChodWFydC0+SW5zdGFuY2UtPkNSMywgVVNBUlRfQ1IzX0RNQVIpOworICAgIC8qIERpc2FibGUgdGhlIFVBUlQgRE1BIFJ4IHJlcXVlc3QgaWYgZW5hYmxlZCAqLworICAgIEFUT01JQ19DTEVBUl9CSVQoaHVhcnQtPkluc3RhbmNlLT5DUjMsIFVTQVJUX0NSM19ETUFSKTsKIAogICAgIC8qIEFib3J0IHRoZSBVQVJUIERNQSBSeCBjaGFubmVsIDogdXNlIGJsb2NraW5nIERNQSBBYm9ydCBBUEkgKG5vIGNhbGxiYWNrKSAqLwogICAgIGlmIChodWFydC0+aGRtYXJ4ICE9IE5VTEwpCkBAIC0xODI1LDEzICsxODMyLDEzIEBACiAgIHVpbnQzMl90IGFib3J0Y3BsdCA9IDFVOwogCiAgIC8qIERpc2FibGUgaW50ZXJydXB0cyAqLwotICBDTEVBUl9CSVQoaHVhcnQtPkluc3RhbmNlLT5DUjEsIChVU0FSVF9DUjFfUlhORUlFIHwgVVNBUlRfQ1IxX1BFSUUgfCBVU0FSVF9DUjFfVFhFSUUgfCBVU0FSVF9DUjFfVENJRSkpOwotICBDTEVBUl9CSVQoaHVhcnQtPkluc3RhbmNlLT5DUjMsIFVTQVJUX0NSM19FSUUpOworICBBVE9NSUNfQ0xFQVJfQklUKGh1YXJ0LT5JbnN0YW5jZS0+Q1IxLCAoVVNBUlRfQ1IxX1JYTkVJRSB8IFVTQVJUX0NSMV9QRUlFIHwgVVNBUlRfQ1IxX1RYRUlFIHwgVVNBUlRfQ1IxX1RDSUUpKTsKKyAgQVRPTUlDX0NMRUFSX0JJVChodWFydC0+SW5zdGFuY2UtPkNSMywgVVNBUlRfQ1IzX0VJRSk7CiAKICAgLyogSWYgUmVjZXB0aW9uIHRpbGwgSURMRSBldmVudCB3YXMgb25nb2luZywgZGlzYWJsZSBJRExFSUUgaW50ZXJydXB0ICovCiAgIGlmIChodWFydC0+UmVjZXB0aW9uVHlwZSA9PSBIQUxfVUFSVF9SRUNFUFRJT05fVE9JRExFKQogICB7Ci0gICAgQ0xFQVJfQklUKGh1YXJ0LT5JbnN0YW5jZS0+Q1IxLCAoVVNBUlRfQ1IxX0lETEVJRSkpOworICAgIEFUT01JQ19DTEVBUl9CSVQoaHVhcnQtPkluc3RhbmNlLT5DUjEsIChVU0FSVF9DUjFfSURMRUlFKSk7CiAgIH0KIAogICAvKiBJZiBETUEgVHggYW5kL29yIERNQSBSeCBIYW5kbGVzIGFyZSBhc3NvY2lhdGVkIHRvIFVBUlQgSGFuZGxlLCBETUEgQWJvcnQgY29tcGxldGUgY2FsbGJhY2tzIHNob3VsZCBiZSBpbml0aWFsaXNlZApAQCAtMTg2NSwxMSArMTg3MiwxMSBAQAogICAgIH0KICAgfQogCi0gIC8qIERpc2FibGUgdGhlIFVBUlQgRE1BIFR4IHJlcXVlc3QgaWYgZW5hYmxlZCAqLworICAvKiBBYm9ydCB0aGUgVUFSVCBETUEgVHggY2hhbm5lbCBpZiBlbmFibGVkICovCiAgIGlmIChIQUxfSVNfQklUX1NFVChodWFydC0+SW5zdGFuY2UtPkNSMywgVVNBUlRfQ1IzX0RNQVQpKQogICB7CiAgICAgLyogRGlzYWJsZSBETUEgVHggYXQgVUFSVCBsZXZlbCAqLwotICAgIENMRUFSX0JJVChodWFydC0+SW5zdGFuY2UtPkNSMywgVVNBUlRfQ1IzX0RNQVQpOworICAgIEFUT01JQ19DTEVBUl9CSVQoaHVhcnQtPkluc3RhbmNlLT5DUjMsIFVTQVJUX0NSM19ETUFUKTsKIAogICAgIC8qIEFib3J0IHRoZSBVQVJUIERNQSBUeCBjaGFubmVsIDogdXNlIG5vbiBibG9ja2luZyBETUEgQWJvcnQgQVBJIChjYWxsYmFjaykgKi8KICAgICBpZiAoaHVhcnQtPmhkbWF0eCAhPSBOVUxMKQpAQCAtMTg4OSwxMCArMTg5NiwxMSBAQAogICAgIH0KICAgfQogCi0gIC8qIERpc2FibGUgdGhlIFVBUlQgRE1BIFJ4IHJlcXVlc3QgaWYgZW5hYmxlZCAqLworICAvKiBBYm9ydCB0aGUgVUFSVCBETUEgUnggY2hhbm5lbCBpZiBlbmFibGVkICovCiAgIGlmIChIQUxfSVNfQklUX1NFVChodWFydC0+SW5zdGFuY2UtPkNSMywgVVNBUlRfQ1IzX0RNQVIpKQogICB7Ci0gICAgQ0xFQVJfQklUKGh1YXJ0LT5JbnN0YW5jZS0+Q1IzLCBVU0FSVF9DUjNfRE1BUik7CisgICAgLyogRGlzYWJsZSB0aGUgVUFSVCBETUEgUnggcmVxdWVzdCBpZiBlbmFibGVkICovCisgICAgQVRPTUlDX0NMRUFSX0JJVChodWFydC0+SW5zdGFuY2UtPkNSMywgVVNBUlRfQ1IzX0RNQVIpOwogCiAgICAgLyogQWJvcnQgdGhlIFVBUlQgRE1BIFJ4IGNoYW5uZWwgOiB1c2Ugbm9uIGJsb2NraW5nIERNQSBBYm9ydCBBUEkgKGNhbGxiYWNrKSAqLwogICAgIGlmIChodWFydC0+aGRtYXJ4ICE9IE5VTEwpCkBAIC0xOTY5LDEyICsxOTc3LDEzIEBACiBIQUxfU3RhdHVzVHlwZURlZiBIQUxfVUFSVF9BYm9ydFRyYW5zbWl0X0lUKFVBUlRfSGFuZGxlVHlwZURlZiAqaHVhcnQpCiB7CiAgIC8qIERpc2FibGUgaW50ZXJydXB0cyAqLwotICBDTEVBUl9CSVQoaHVhcnQtPkluc3RhbmNlLT5DUjEsIChVU0FSVF9DUjFfVFhFSUUgfCBVU0FSVF9DUjFfVENJRSkpOworICBBVE9NSUNfQ0xFQVJfQklUKGh1YXJ0LT5JbnN0YW5jZS0+Q1IxLCAoVVNBUlRfQ1IxX1RYRUlFIHwgVVNBUlRfQ1IxX1RDSUUpKTsKIAotICAvKiBEaXNhYmxlIHRoZSBVQVJUIERNQSBUeCByZXF1ZXN0IGlmIGVuYWJsZWQgKi8KKyAgLyogQWJvcnQgdGhlIFVBUlQgRE1BIFR4IGNoYW5uZWwgaWYgZW5hYmxlZCAqLwogICBpZiAoSEFMX0lTX0JJVF9TRVQoaHVhcnQtPkluc3RhbmNlLT5DUjMsIFVTQVJUX0NSM19ETUFUKSkKICAgewotICAgIENMRUFSX0JJVChodWFydC0+SW5zdGFuY2UtPkNSMywgVVNBUlRfQ1IzX0RNQVQpOworICAgIC8qIERpc2FibGUgdGhlIFVBUlQgRE1BIFR4IHJlcXVlc3QgaWYgZW5hYmxlZCAqLworICAgIEFUT01JQ19DTEVBUl9CSVQoaHVhcnQtPkluc3RhbmNlLT5DUjMsIFVTQVJUX0NSM19ETUFUKTsKIAogICAgIC8qIEFib3J0IHRoZSBVQVJUIERNQSBUeCBjaGFubmVsIDogdXNlIG5vbiBibG9ja2luZyBETUEgQWJvcnQgQVBJIChjYWxsYmFjaykgKi8KICAgICBpZiAoaHVhcnQtPmhkbWF0eCAhPSBOVUxMKQpAQCAtMjA1MywxOSArMjA2MiwyMCBAQAogSEFMX1N0YXR1c1R5cGVEZWYgSEFMX1VBUlRfQWJvcnRSZWNlaXZlX0lUKFVBUlRfSGFuZGxlVHlwZURlZiAqaHVhcnQpCiB7CiAgIC8qIERpc2FibGUgUlhORSwgUEUgYW5kIEVSUiAoRnJhbWUgZXJyb3IsIG5vaXNlIGVycm9yLCBvdmVycnVuIGVycm9yKSBpbnRlcnJ1cHRzICovCi0gIENMRUFSX0JJVChodWFydC0+SW5zdGFuY2UtPkNSMSwgKFVTQVJUX0NSMV9SWE5FSUUgfCBVU0FSVF9DUjFfUEVJRSkpOwotICBDTEVBUl9CSVQoaHVhcnQtPkluc3RhbmNlLT5DUjMsIFVTQVJUX0NSM19FSUUpOworICBBVE9NSUNfQ0xFQVJfQklUKGh1YXJ0LT5JbnN0YW5jZS0+Q1IxLCAoVVNBUlRfQ1IxX1JYTkVJRSB8IFVTQVJUX0NSMV9QRUlFKSk7CisgIEFUT01JQ19DTEVBUl9CSVQoaHVhcnQtPkluc3RhbmNlLT5DUjMsIFVTQVJUX0NSM19FSUUpOwogCiAgIC8qIElmIFJlY2VwdGlvbiB0aWxsIElETEUgZXZlbnQgd2FzIG9uZ29pbmcsIGRpc2FibGUgSURMRUlFIGludGVycnVwdCAqLwogICBpZiAoaHVhcnQtPlJlY2VwdGlvblR5cGUgPT0gSEFMX1VBUlRfUkVDRVBUSU9OX1RPSURMRSkKICAgewotICAgIENMRUFSX0JJVChodWFydC0+SW5zdGFuY2UtPkNSMSwgKFVTQVJUX0NSMV9JRExFSUUpKTsKKyAgICBBVE9NSUNfQ0xFQVJfQklUKGh1YXJ0LT5JbnN0YW5jZS0+Q1IxLCAoVVNBUlRfQ1IxX0lETEVJRSkpOwogICB9CiAKLSAgLyogRGlzYWJsZSB0aGUgVUFSVCBETUEgUnggcmVxdWVzdCBpZiBlbmFibGVkICovCisgIC8qIEFib3J0IHRoZSBVQVJUIERNQSBSeCBjaGFubmVsIGlmIGVuYWJsZWQgKi8KICAgaWYgKEhBTF9JU19CSVRfU0VUKGh1YXJ0LT5JbnN0YW5jZS0+Q1IzLCBVU0FSVF9DUjNfRE1BUikpCiAgIHsKLSAgICBDTEVBUl9CSVQoaHVhcnQtPkluc3RhbmNlLT5DUjMsIFVTQVJUX0NSM19ETUFSKTsKKyAgICAvKiBEaXNhYmxlIHRoZSBVQVJUIERNQSBSeCByZXF1ZXN0IGlmIGVuYWJsZWQgKi8KKyAgICBBVE9NSUNfQ0xFQVJfQklUKGh1YXJ0LT5JbnN0YW5jZS0+Q1IzLCBVU0FSVF9DUjNfRE1BUik7CiAKICAgICAvKiBBYm9ydCB0aGUgVUFSVCBETUEgUnggY2hhbm5lbCA6IHVzZSBub24gYmxvY2tpbmcgRE1BIEFib3J0IEFQSSAoY2FsbGJhY2spICovCiAgICAgaWYgKGh1YXJ0LT5oZG1hcnggIT0gTlVMTCkKQEAgLTIyNDEsMTAgKzIyNTEsMTEgQEAKICAgICAgICAgICAgRGlzYWJsZSBSeCBJbnRlcnJ1cHRzLCBhbmQgZGlzYWJsZSBSeCBETUEgcmVxdWVzdCwgaWYgb25nb2luZyAqLwogICAgICAgICBVQVJUX0VuZFJ4VHJhbnNmZXIoaHVhcnQpOwogCi0gICAgICAgIC8qIERpc2FibGUgdGhlIFVBUlQgRE1BIFJ4IHJlcXVlc3QgaWYgZW5hYmxlZCAqLworICAgICAgICAvKiBBYm9ydCB0aGUgVUFSVCBETUEgUnggY2hhbm5lbCBpZiBlbmFibGVkICovCiAgICAgICAgIGlmIChIQUxfSVNfQklUX1NFVChodWFydC0+SW5zdGFuY2UtPkNSMywgVVNBUlRfQ1IzX0RNQVIpKQogICAgICAgICB7Ci0gICAgICAgICAgQ0xFQVJfQklUKGh1YXJ0LT5JbnN0YW5jZS0+Q1IzLCBVU0FSVF9DUjNfRE1BUik7CisgICAgICAgICAgLyogRGlzYWJsZSB0aGUgVUFSVCBETUEgUnggcmVxdWVzdCBpZiBlbmFibGVkICovCisgICAgICAgICAgQVRPTUlDX0NMRUFSX0JJVChodWFydC0+SW5zdGFuY2UtPkNSMywgVVNBUlRfQ1IzX0RNQVIpOwogCiAgICAgICAgICAgLyogQWJvcnQgdGhlIFVBUlQgRE1BIFJ4IGNoYW5uZWwgKi8KICAgICAgICAgICBpZiAoaHVhcnQtPmhkbWFyeCAhPSBOVUxMKQpAQCAtMjMyOSwxOCArMjM0MCwxOCBAQAogICAgICAgICBpZiAoaHVhcnQtPmhkbWFyeC0+SW5pdC5Nb2RlICE9IERNQV9DSVJDVUxBUikKICAgICAgICAgewogICAgICAgICAgIC8qIERpc2FibGUgUEUgYW5kIEVSUiAoRnJhbWUgZXJyb3IsIG5vaXNlIGVycm9yLCBvdmVycnVuIGVycm9yKSBpbnRlcnJ1cHRzICovCi0gICAgICAgICAgQ0xFQVJfQklUKGh1YXJ0LT5JbnN0YW5jZS0+Q1IxLCBVU0FSVF9DUjFfUEVJRSk7Ci0gICAgICAgICAgQ0xFQVJfQklUKGh1YXJ0LT5JbnN0YW5jZS0+Q1IzLCBVU0FSVF9DUjNfRUlFKTsKKyAgICAgICAgICBBVE9NSUNfQ0xFQVJfQklUKGh1YXJ0LT5JbnN0YW5jZS0+Q1IxLCBVU0FSVF9DUjFfUEVJRSk7CisgICAgICAgICAgQVRPTUlDX0NMRUFSX0JJVChodWFydC0+SW5zdGFuY2UtPkNSMywgVVNBUlRfQ1IzX0VJRSk7CiAKICAgICAgICAgICAvKiBEaXNhYmxlIHRoZSBETUEgdHJhbnNmZXIgZm9yIHRoZSByZWNlaXZlciByZXF1ZXN0IGJ5IHJlc2V0dGluZyB0aGUgRE1BUiBiaXQKICAgICAgICAgICAgICBpbiB0aGUgVUFSVCBDUjMgcmVnaXN0ZXIgKi8KLSAgICAgICAgICBDTEVBUl9CSVQoaHVhcnQtPkluc3RhbmNlLT5DUjMsIFVTQVJUX0NSM19ETUFSKTsKKyAgICAgICAgICBBVE9NSUNfQ0xFQVJfQklUKGh1YXJ0LT5JbnN0YW5jZS0+Q1IzLCBVU0FSVF9DUjNfRE1BUik7CiAKICAgICAgICAgICAvKiBBdCBlbmQgb2YgUnggcHJvY2VzcywgcmVzdG9yZSBodWFydC0+UnhTdGF0ZSB0byBSZWFkeSAqLwogICAgICAgICAgIGh1YXJ0LT5SeFN0YXRlID0gSEFMX1VBUlRfU1RBVEVfUkVBRFk7CiAgICAgICAgICAgaHVhcnQtPlJlY2VwdGlvblR5cGUgPSBIQUxfVUFSVF9SRUNFUFRJT05fU1RBTkRBUkQ7CiAKLSAgICAgICAgICBDTEVBUl9CSVQoaHVhcnQtPkluc3RhbmNlLT5DUjEsIFVTQVJUX0NSMV9JRExFSUUpOworICAgICAgICAgIEFUT01JQ19DTEVBUl9CSVQoaHVhcnQtPkluc3RhbmNlLT5DUjEsIFVTQVJUX0NSMV9JRExFSUUpOwogCiAgICAgICAgICAgLyogTGFzdCBieXRlcyByZWNlaXZlZCwgc28gbm8gbmVlZCBhcyB0aGUgYWJvcnQgaXMgaW1tZWRpYXRlICovCiAgICAgICAgICAgKHZvaWQpSEFMX0RNQV9BYm9ydChodWFydC0+aGRtYXJ4KTsKQEAgLTIzNjUsMTAgKzIzNzYsMTAgQEAKICAgICAgICAgICAmJiAobmJfcnhfZGF0YSA+IDBVKSkKICAgICAgIHsKICAgICAgICAgLyogRGlzYWJsZSB0aGUgVUFSVCBQYXJpdHkgRXJyb3IgSW50ZXJydXB0IGFuZCBSWE5FIGludGVycnVwdHMgKi8KLSAgICAgICAgQ0xFQVJfQklUKGh1YXJ0LT5JbnN0YW5jZS0+Q1IxLCAoVVNBUlRfQ1IxX1JYTkVJRSB8IFVTQVJUX0NSMV9QRUlFKSk7CisgICAgICAgIEFUT01JQ19DTEVBUl9CSVQoaHVhcnQtPkluc3RhbmNlLT5DUjEsIChVU0FSVF9DUjFfUlhORUlFIHwgVVNBUlRfQ1IxX1BFSUUpKTsKIAogICAgICAgICAvKiBEaXNhYmxlIHRoZSBVQVJUIEVycm9yIEludGVycnVwdDogKEZyYW1lIGVycm9yLCBub2lzZSBlcnJvciwgb3ZlcnJ1biBlcnJvcikgKi8KLSAgICAgICAgQ0xFQVJfQklUKGh1YXJ0LT5JbnN0YW5jZS0+Q1IzLCBVU0FSVF9DUjNfRUlFKTsKKyAgICAgICAgQVRPTUlDX0NMRUFSX0JJVChodWFydC0+SW5zdGFuY2UtPkNSMywgVVNBUlRfQ1IzX0VJRSk7CiAKICAgICAgICAgLyogUnggcHJvY2VzcyBpcyBjb21wbGV0ZWQsIHJlc3RvcmUgaHVhcnQtPlJ4U3RhdGUgdG8gUmVhZHkgKi8KICAgICAgICAgaHVhcnQtPlJ4U3RhdGUgPSBIQUxfVUFSVF9TVEFURV9SRUFEWTsKQEAgLTIzNzcsNyArMjM4OCw3IEBACiAgICAgICAgIC8qIENsZWFyIFJ4SVNSIGZ1bmN0aW9uIHBvaW50ZXIgKi8KICAgICAgICAgaHVhcnQtPlJ4SVNSID0gTlVMTDsKIAotICAgICAgICBDTEVBUl9CSVQoaHVhcnQtPkluc3RhbmNlLT5DUjEsIFVTQVJUX0NSMV9JRExFSUUpOworICAgICAgICBBVE9NSUNfQ0xFQVJfQklUKGh1YXJ0LT5JbnN0YW5jZS0+Q1IxLCBVU0FSVF9DUjFfSURMRUlFKTsKICNpZiAoVVNFX0hBTF9VQVJUX1JFR0lTVEVSX0NBTExCQUNLUyA9PSAxKQogICAgICAgICAvKkNhbGwgcmVnaXN0ZXJlZCBSeCBjb21wbGV0ZSBjYWxsYmFjayovCiAgICAgICAgIGh1YXJ0LT5SeEV2ZW50Q2FsbGJhY2soaHVhcnQsIG5iX3J4X2RhdGEpOwpAQCAtMjcwNSw3ICsyNzE2LDcgQEAKICAgaHVhcnQtPmdTdGF0ZSA9IEhBTF9VQVJUX1NUQVRFX0JVU1k7CiAKICAgLyogRW5hYmxlIFVTQVJUIG11dGUgbW9kZSBieSBzZXR0aW5nIHRoZSBNTUUgYml0IGluIHRoZSBDUjEgcmVnaXN0ZXIgKi8KLSAgU0VUX0JJVChodWFydC0+SW5zdGFuY2UtPkNSMSwgVVNBUlRfQ1IxX01NRSk7CisgIEFUT01JQ19TRVRfQklUKGh1YXJ0LT5JbnN0YW5jZS0+Q1IxLCBVU0FSVF9DUjFfTU1FKTsKIAogICBodWFydC0+Z1N0YXRlID0gSEFMX1VBUlRfU1RBVEVfUkVBRFk7CiAKQEAgLTI3MjUsNyArMjczNiw3IEBACiAgIGh1YXJ0LT5nU3RhdGUgPSBIQUxfVUFSVF9TVEFURV9CVVNZOwogCiAgIC8qIERpc2FibGUgVVNBUlQgbXV0ZSBtb2RlIGJ5IGNsZWFyaW5nIHRoZSBNTUUgYml0IGluIHRoZSBDUjEgcmVnaXN0ZXIgKi8KLSAgQ0xFQVJfQklUKGh1YXJ0LT5JbnN0YW5jZS0+Q1IxLCBVU0FSVF9DUjFfTU1FKTsKKyAgQVRPTUlDX0NMRUFSX0JJVChodWFydC0+SW5zdGFuY2UtPkNSMSwgVVNBUlRfQ1IxX01NRSk7CiAKICAgaHVhcnQtPmdTdGF0ZSA9IEhBTF9VQVJUX1NUQVRFX1JFQURZOwogCkBAIC0yNzU0LDEwICsyNzY1LDEwIEBACiAgIGh1YXJ0LT5nU3RhdGUgPSBIQUxfVUFSVF9TVEFURV9CVVNZOwogCiAgIC8qIENsZWFyIFRFIGFuZCBSRSBiaXRzICovCi0gIENMRUFSX0JJVChodWFydC0+SW5zdGFuY2UtPkNSMSwgKFVTQVJUX0NSMV9URSB8IFVTQVJUX0NSMV9SRSkpOworICBBVE9NSUNfQ0xFQVJfQklUKGh1YXJ0LT5JbnN0YW5jZS0+Q1IxLCAoVVNBUlRfQ1IxX1RFIHwgVVNBUlRfQ1IxX1JFKSk7CiAKICAgLyogRW5hYmxlIHRoZSBVU0FSVCdzIHRyYW5zbWl0IGludGVyZmFjZSBieSBzZXR0aW5nIHRoZSBURSBiaXQgaW4gdGhlIFVTQVJUIENSMSByZWdpc3RlciAqLwotICBTRVRfQklUKGh1YXJ0LT5JbnN0YW5jZS0+Q1IxLCBVU0FSVF9DUjFfVEUpOworICBBVE9NSUNfU0VUX0JJVChodWFydC0+SW5zdGFuY2UtPkNSMSwgVVNBUlRfQ1IxX1RFKTsKIAogICBodWFydC0+Z1N0YXRlID0gSEFMX1VBUlRfU1RBVEVfUkVBRFk7CiAKQEAgLTI3NzcsMTAgKzI3ODgsMTAgQEAKICAgaHVhcnQtPmdTdGF0ZSA9IEhBTF9VQVJUX1NUQVRFX0JVU1k7CiAKICAgLyogQ2xlYXIgVEUgYW5kIFJFIGJpdHMgKi8KLSAgQ0xFQVJfQklUKGh1YXJ0LT5JbnN0YW5jZS0+Q1IxLCAoVVNBUlRfQ1IxX1RFIHwgVVNBUlRfQ1IxX1JFKSk7CisgIEFUT01JQ19DTEVBUl9CSVQoaHVhcnQtPkluc3RhbmNlLT5DUjEsIChVU0FSVF9DUjFfVEUgfCBVU0FSVF9DUjFfUkUpKTsKIAogICAvKiBFbmFibGUgdGhlIFVTQVJUJ3MgcmVjZWl2ZSBpbnRlcmZhY2UgYnkgc2V0dGluZyB0aGUgUkUgYml0IGluIHRoZSBVU0FSVCBDUjEgcmVnaXN0ZXIgKi8KLSAgU0VUX0JJVChodWFydC0+SW5zdGFuY2UtPkNSMSwgVVNBUlRfQ1IxX1JFKTsKKyAgQVRPTUlDX1NFVF9CSVQoaHVhcnQtPkluc3RhbmNlLT5DUjEsIFVTQVJUX0NSMV9SRSk7CiAKICAgaHVhcnQtPmdTdGF0ZSA9IEhBTF9VQVJUX1NUQVRFX1JFQURZOwogCkBAIC0yOTgyLDcgKzI5OTMsNyBAQAogICAgIC8qIFVTQVJURElWIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIDBkMTYgKi8KICAgICBpZiAocGNsayAhPSAwVSkKICAgICB7Ci0gICAgICB1c2FydGRpdiA9ICh1aW50MTZfdCkoVUFSVF9ESVZfU0FNUExJTkc4KHBjbGssIGh1YXJ0LT5Jbml0LkJhdWRSYXRlKSk7CisgICAgICB1c2FydGRpdiA9ICh1aW50MzJfdCkoVUFSVF9ESVZfU0FNUExJTkc4KHBjbGssIGh1YXJ0LT5Jbml0LkJhdWRSYXRlKSk7CiAgICAgICBpZiAoKHVzYXJ0ZGl2ID49IFVBUlRfQlJSX01JTikgJiYgKHVzYXJ0ZGl2IDw9IFVBUlRfQlJSX01BWCkpCiAgICAgICB7CiAgICAgICAgIGJycnRlbXAgPSAodWludDE2X3QpKHVzYXJ0ZGl2ICYgMHhGRkYwVSk7CkBAIC0zMDIzLDEwICszMDM0LDEwIEBACiAgICAgaWYgKHBjbGsgIT0gMFUpCiAgICAgewogICAgICAgLyogVVNBUlRESVYgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gMGQxNiAqLwotICAgICAgdXNhcnRkaXYgPSAodWludDE2X3QpKFVBUlRfRElWX1NBTVBMSU5HMTYocGNsaywgaHVhcnQtPkluaXQuQmF1ZFJhdGUpKTsKKyAgICAgIHVzYXJ0ZGl2ID0gKHVpbnQzMl90KShVQVJUX0RJVl9TQU1QTElORzE2KHBjbGssIGh1YXJ0LT5Jbml0LkJhdWRSYXRlKSk7CiAgICAgICBpZiAoKHVzYXJ0ZGl2ID49IFVBUlRfQlJSX01JTikgJiYgKHVzYXJ0ZGl2IDw9IFVBUlRfQlJSX01BWCkpCiAgICAgICB7Ci0gICAgICAgIGh1YXJ0LT5JbnN0YW5jZS0+QlJSID0gdXNhcnRkaXY7CisgICAgICAgIGh1YXJ0LT5JbnN0YW5jZS0+QlJSID0gKHVpbnQxNl90KXVzYXJ0ZGl2OwogICAgICAgfQogICAgICAgZWxzZQogICAgICAgewpAQCAtMzE2NywxMCArMzE3OCwxMSBAQAogfQogCiAvKioKLSAgKiBAYnJpZWYgIEhhbmRsZSBVQVJUIENvbW11bmljYXRpb24gVGltZW91dC4KKyAgKiBAYnJpZWYgIFRoaXMgZnVuY3Rpb24gaGFuZGxlcyBVQVJUIENvbW11bmljYXRpb24gVGltZW91dC4gSXQgd2FpdHMKKyAgKiAgICAgICAgICAgICAgICAgIHVudGlsIGEgZmxhZyBpcyBubyBsb25nZXIgaW4gdGhlIHNwZWNpZmllZCBzdGF0dXMuCiAgICogQHBhcmFtIGh1YXJ0ICAgICBVQVJUIGhhbmRsZS4KICAgKiBAcGFyYW0gRmxhZyAgICAgIFNwZWNpZmllcyB0aGUgVUFSVCBmbGFnIHRvIGNoZWNrCi0gICogQHBhcmFtIFN0YXR1cyAgICBGbGFnIHN0YXR1cyAoU0VUIG9yIFJFU0VUKQorICAqIEBwYXJhbSBTdGF0dXMgICAgVGhlIGFjdHVhbCBGbGFnIHN0YXR1cyAoU0VUIG9yIFJFU0VUKQogICAqIEBwYXJhbSBUaWNrc3RhcnQgVGljayBzdGFydCB2YWx1ZQogICAqIEBwYXJhbSBUaW1lb3V0ICAgVGltZW91dCBkdXJhdGlvbgogICAqIEByZXR2YWwgSEFMIHN0YXR1cwpAQCAtMzE4OCw4ICszMjAwLDggQEAKICAgICAgIHsKICAgICAgICAgLyogRGlzYWJsZSBUWEUsIFJYTkUsIFBFIGFuZCBFUlIgKEZyYW1lIGVycm9yLCBub2lzZSBlcnJvciwgb3ZlcnJ1biBlcnJvcikKICAgICAgICAgICAgaW50ZXJydXB0cyBmb3IgdGhlIGludGVycnVwdCBwcm9jZXNzICovCi0gICAgICAgIENMRUFSX0JJVChodWFydC0+SW5zdGFuY2UtPkNSMSwgKFVTQVJUX0NSMV9SWE5FSUUgfCBVU0FSVF9DUjFfUEVJRSB8IFVTQVJUX0NSMV9UWEVJRSkpOwotICAgICAgICBDTEVBUl9CSVQoaHVhcnQtPkluc3RhbmNlLT5DUjMsIFVTQVJUX0NSM19FSUUpOworICAgICAgICBBVE9NSUNfQ0xFQVJfQklUKGh1YXJ0LT5JbnN0YW5jZS0+Q1IxLCAoVVNBUlRfQ1IxX1JYTkVJRSB8IFVTQVJUX0NSMV9QRUlFIHwgVVNBUlRfQ1IxX1RYRUlFKSk7CisgICAgICAgIEFUT01JQ19DTEVBUl9CSVQoaHVhcnQtPkluc3RhbmNlLT5DUjMsIFVTQVJUX0NSM19FSUUpOwogCiAgICAgICAgIGh1YXJ0LT5nU3RhdGUgPSBIQUxfVUFSVF9TVEFURV9SRUFEWTsKICAgICAgICAgaHVhcnQtPlJ4U3RhdGUgPSBIQUxfVUFSVF9TVEFURV9SRUFEWTsKQEAgLTMyMDgsOCArMzIyMCw4IEBACiAKICAgICAgICAgICAvKiBEaXNhYmxlIFRYRSwgUlhORSwgUEUgYW5kIEVSUiAoRnJhbWUgZXJyb3IsIG5vaXNlIGVycm9yLCBvdmVycnVuIGVycm9yKQogICAgICAgICAgICAgIGludGVycnVwdHMgZm9yIHRoZSBpbnRlcnJ1cHQgcHJvY2VzcyAqLwotICAgICAgICAgIENMRUFSX0JJVChodWFydC0+SW5zdGFuY2UtPkNSMSwgKFVTQVJUX0NSMV9SWE5FSUUgfCBVU0FSVF9DUjFfUEVJRSB8IFVTQVJUX0NSMV9UWEVJRSkpOwotICAgICAgICAgIENMRUFSX0JJVChodWFydC0+SW5zdGFuY2UtPkNSMywgVVNBUlRfQ1IzX0VJRSk7CisgICAgICAgICAgQVRPTUlDX0NMRUFSX0JJVChodWFydC0+SW5zdGFuY2UtPkNSMSwgKFVTQVJUX0NSMV9SWE5FSUUgfCBVU0FSVF9DUjFfUEVJRSB8IFVTQVJUX0NSMV9UWEVJRSkpOworICAgICAgICAgIEFUT01JQ19DTEVBUl9CSVQoaHVhcnQtPkluc3RhbmNlLT5DUjMsIFVTQVJUX0NSM19FSUUpOwogCiAgICAgICAgICAgaHVhcnQtPmdTdGF0ZSA9IEhBTF9VQVJUX1NUQVRFX1JFQURZOwogICAgICAgICAgIGh1YXJ0LT5SeFN0YXRlID0gSEFMX1VBUlRfU1RBVEVfUkVBRFk7CkBAIC0zMjUxLDcgKzMyNjMsNyBAQAogICBodWFydC0+UnhTdGF0ZSA9IEhBTF9VQVJUX1NUQVRFX0JVU1lfUlg7CiAKICAgLyogRW5hYmxlIHRoZSBVQVJUIEVycm9yIEludGVycnVwdDogKEZyYW1lIGVycm9yLCBub2lzZSBlcnJvciwgb3ZlcnJ1biBlcnJvcikgKi8KLSAgU0VUX0JJVChodWFydC0+SW5zdGFuY2UtPkNSMywgVVNBUlRfQ1IzX0VJRSk7CisgIEFUT01JQ19TRVRfQklUKGh1YXJ0LT5JbnN0YW5jZS0+Q1IzLCBVU0FSVF9DUjNfRUlFKTsKIAogICAvKiBTZXQgdGhlIFJ4IElTUiBmdW5jdGlvbiBwb2ludGVyIGFjY29yZGluZyB0byB0aGUgZGF0YSB3b3JkIGxlbmd0aCAqLwogICBpZiAoKGh1YXJ0LT5Jbml0LldvcmRMZW5ndGggPT0gVUFSVF9XT1JETEVOR1RIXzlCKSAmJiAoaHVhcnQtPkluaXQuUGFyaXR5ID09IFVBUlRfUEFSSVRZX05PTkUpKQpAQCAtMzI2Niw3ICszMjc4LDE0IEBACiAgIF9fSEFMX1VOTE9DSyhodWFydCk7CiAKICAgLyogRW5hYmxlIHRoZSBVQVJUIFBhcml0eSBFcnJvciBpbnRlcnJ1cHQgYW5kIERhdGEgUmVnaXN0ZXIgTm90IEVtcHR5IGludGVycnVwdCAqLwotICBTRVRfQklUKGh1YXJ0LT5JbnN0YW5jZS0+Q1IxLCBVU0FSVF9DUjFfUEVJRSB8IFVTQVJUX0NSMV9SWE5FSUUpOworICBpZiAoaHVhcnQtPkluaXQuUGFyaXR5ICE9IFVBUlRfUEFSSVRZX05PTkUpCisgIHsgCisgICAgQVRPTUlDX1NFVF9CSVQoaHVhcnQtPkluc3RhbmNlLT5DUjEsIFVTQVJUX0NSMV9QRUlFIHwgVVNBUlRfQ1IxX1JYTkVJRSk7CisgIH0KKyAgZWxzZQorICB7CisgICAgQVRPTUlDX1NFVF9CSVQoaHVhcnQtPkluc3RhbmNlLT5DUjEsIFVTQVJUX0NSMV9SWE5FSUUpOworICB9CiAgIHJldHVybiBIQUxfT0s7CiB9CiAKQEAgLTMzMTEsOCArMzMzMCw4IEBACiAKICAgICAgIF9fSEFMX1VOTE9DSyhodWFydCk7CiAKLSAgICAgIC8qIFJlc3RvcmUgaHVhcnQtPmdTdGF0ZSB0byByZWFkeSAqLwotICAgICAgaHVhcnQtPmdTdGF0ZSA9IEhBTF9VQVJUX1NUQVRFX1JFQURZOworICAgICAgLyogUmVzdG9yZSBodWFydC0+UnhTdGF0ZSB0byByZWFkeSAqLworICAgICAgaHVhcnQtPlJ4U3RhdGUgPSBIQUxfVUFSVF9TVEFURV9SRUFEWTsKIAogICAgICAgcmV0dXJuIEhBTF9FUlJPUjsKICAgICB9CkBAIC0zMzIwLDE0ICszMzM5LDE3IEBACiAgIF9fSEFMX1VOTE9DSyhodWFydCk7CiAKICAgLyogRW5hYmxlIHRoZSBVQVJUIFBhcml0eSBFcnJvciBJbnRlcnJ1cHQgKi8KLSAgU0VUX0JJVChodWFydC0+SW5zdGFuY2UtPkNSMSwgVVNBUlRfQ1IxX1BFSUUpOworICBpZiAoaHVhcnQtPkluaXQuUGFyaXR5ICE9IFVBUlRfUEFSSVRZX05PTkUpCisgIHsKKyAgICBBVE9NSUNfU0VUX0JJVChodWFydC0+SW5zdGFuY2UtPkNSMSwgVVNBUlRfQ1IxX1BFSUUpOworICB9CiAKICAgLyogRW5hYmxlIHRoZSBVQVJUIEVycm9yIEludGVycnVwdDogKEZyYW1lIGVycm9yLCBub2lzZSBlcnJvciwgb3ZlcnJ1biBlcnJvcikgKi8KLSAgU0VUX0JJVChodWFydC0+SW5zdGFuY2UtPkNSMywgVVNBUlRfQ1IzX0VJRSk7CisgIEFUT01JQ19TRVRfQklUKGh1YXJ0LT5JbnN0YW5jZS0+Q1IzLCBVU0FSVF9DUjNfRUlFKTsKIAogICAvKiBFbmFibGUgdGhlIERNQSB0cmFuc2ZlciBmb3IgdGhlIHJlY2VpdmVyIHJlcXVlc3QgYnkgc2V0dGluZyB0aGUgRE1BUiBiaXQKICAgaW4gdGhlIFVBUlQgQ1IzIHJlZ2lzdGVyICovCi0gIFNFVF9CSVQoaHVhcnQtPkluc3RhbmNlLT5DUjMsIFVTQVJUX0NSM19ETUFSKTsKKyAgQVRPTUlDX1NFVF9CSVQoaHVhcnQtPkluc3RhbmNlLT5DUjMsIFVTQVJUX0NSM19ETUFSKTsKIAogICByZXR1cm4gSEFMX09LOwogfQpAQCAtMzM0MSw3ICszMzYzLDcgQEAKIHN0YXRpYyB2b2lkIFVBUlRfRW5kVHhUcmFuc2ZlcihVQVJUX0hhbmRsZVR5cGVEZWYgKmh1YXJ0KQogewogICAvKiBEaXNhYmxlIFRYRUlFIGFuZCBUQ0lFIGludGVycnVwdHMgKi8KLSAgQ0xFQVJfQklUKGh1YXJ0LT5JbnN0YW5jZS0+Q1IxLCAoVVNBUlRfQ1IxX1RYRUlFIHwgVVNBUlRfQ1IxX1RDSUUpKTsKKyAgQVRPTUlDX0NMRUFSX0JJVChodWFydC0+SW5zdGFuY2UtPkNSMSwgKFVTQVJUX0NSMV9UWEVJRSB8IFVTQVJUX0NSMV9UQ0lFKSk7CiAKICAgLyogQXQgZW5kIG9mIFR4IHByb2Nlc3MsIHJlc3RvcmUgaHVhcnQtPmdTdGF0ZSB0byBSZWFkeSAqLwogICBodWFydC0+Z1N0YXRlID0gSEFMX1VBUlRfU1RBVEVfUkVBRFk7CkBAIC0zMzU2LDEzICszMzc4LDEzIEBACiBzdGF0aWMgdm9pZCBVQVJUX0VuZFJ4VHJhbnNmZXIoVUFSVF9IYW5kbGVUeXBlRGVmICpodWFydCkKIHsKICAgLyogRGlzYWJsZSBSWE5FLCBQRSBhbmQgRVJSIChGcmFtZSBlcnJvciwgbm9pc2UgZXJyb3IsIG92ZXJydW4gZXJyb3IpIGludGVycnVwdHMgKi8KLSAgQ0xFQVJfQklUKGh1YXJ0LT5JbnN0YW5jZS0+Q1IxLCAoVVNBUlRfQ1IxX1JYTkVJRSB8IFVTQVJUX0NSMV9QRUlFKSk7Ci0gIENMRUFSX0JJVChodWFydC0+SW5zdGFuY2UtPkNSMywgVVNBUlRfQ1IzX0VJRSk7CisgIEFUT01JQ19DTEVBUl9CSVQoaHVhcnQtPkluc3RhbmNlLT5DUjEsIChVU0FSVF9DUjFfUlhORUlFIHwgVVNBUlRfQ1IxX1BFSUUpKTsKKyAgQVRPTUlDX0NMRUFSX0JJVChodWFydC0+SW5zdGFuY2UtPkNSMywgVVNBUlRfQ1IzX0VJRSk7CiAKICAgLyogSW4gY2FzZSBvZiByZWNlcHRpb24gd2FpdGluZyBmb3IgSURMRSBldmVudCwgZGlzYWJsZSBhbHNvIHRoZSBJRExFIElFIGludGVycnVwdCBzb3VyY2UgKi8KICAgaWYgKGh1YXJ0LT5SZWNlcHRpb25UeXBlID09IEhBTF9VQVJUX1JFQ0VQVElPTl9UT0lETEUpCiAgIHsKLSAgICBDTEVBUl9CSVQoaHVhcnQtPkluc3RhbmNlLT5DUjEsIFVTQVJUX0NSMV9JRExFSUUpOworICAgIEFUT01JQ19DTEVBUl9CSVQoaHVhcnQtPkluc3RhbmNlLT5DUjEsIFVTQVJUX0NSMV9JRExFSUUpOwogICB9CiAKICAgLyogQXQgZW5kIG9mIFJ4IHByb2Nlc3MsIHJlc3RvcmUgaHVhcnQtPlJ4U3RhdGUgdG8gUmVhZHkgKi8KQEAgLTMzOTAsMTAgKzM0MTIsMTAgQEAKIAogICAgIC8qIERpc2FibGUgdGhlIERNQSB0cmFuc2ZlciBmb3IgdHJhbnNtaXQgcmVxdWVzdCBieSByZXNldHRpbmcgdGhlIERNQVQgYml0CiAgICAgICAgaW4gdGhlIFVBUlQgQ1IzIHJlZ2lzdGVyICovCi0gICAgQ0xFQVJfQklUKGh1YXJ0LT5JbnN0YW5jZS0+Q1IzLCBVU0FSVF9DUjNfRE1BVCk7CisgICAgQVRPTUlDX0NMRUFSX0JJVChodWFydC0+SW5zdGFuY2UtPkNSMywgVVNBUlRfQ1IzX0RNQVQpOwogCiAgICAgLyogRW5hYmxlIHRoZSBVQVJUIFRyYW5zbWl0IENvbXBsZXRlIEludGVycnVwdCAqLwotICAgIFNFVF9CSVQoaHVhcnQtPkluc3RhbmNlLT5DUjEsIFVTQVJUX0NSMV9UQ0lFKTsKKyAgICBBVE9NSUNfU0VUX0JJVChodWFydC0+SW5zdGFuY2UtPkNSMSwgVVNBUlRfQ1IxX1RDSUUpOwogICB9CiAgIC8qIERNQSBDaXJjdWxhciBtb2RlICovCiAgIGVsc2UKQEAgLTM0NDEsMTIgKzM0NjMsMTIgQEAKICAgICBodWFydC0+UnhYZmVyQ291bnQgPSAwVTsKIAogICAgIC8qIERpc2FibGUgUEUgYW5kIEVSUiAoRnJhbWUgZXJyb3IsIG5vaXNlIGVycm9yLCBvdmVycnVuIGVycm9yKSBpbnRlcnJ1cHRzICovCi0gICAgQ0xFQVJfQklUKGh1YXJ0LT5JbnN0YW5jZS0+Q1IxLCBVU0FSVF9DUjFfUEVJRSk7Ci0gICAgQ0xFQVJfQklUKGh1YXJ0LT5JbnN0YW5jZS0+Q1IzLCBVU0FSVF9DUjNfRUlFKTsKKyAgICBBVE9NSUNfQ0xFQVJfQklUKGh1YXJ0LT5JbnN0YW5jZS0+Q1IxLCBVU0FSVF9DUjFfUEVJRSk7CisgICAgQVRPTUlDX0NMRUFSX0JJVChodWFydC0+SW5zdGFuY2UtPkNSMywgVVNBUlRfQ1IzX0VJRSk7CiAKICAgICAvKiBEaXNhYmxlIHRoZSBETUEgdHJhbnNmZXIgZm9yIHRoZSByZWNlaXZlciByZXF1ZXN0IGJ5IHJlc2V0dGluZyB0aGUgRE1BUiBiaXQKICAgICAgICBpbiB0aGUgVUFSVCBDUjMgcmVnaXN0ZXIgKi8KLSAgICBDTEVBUl9CSVQoaHVhcnQtPkluc3RhbmNlLT5DUjMsIFVTQVJUX0NSM19ETUFSKTsKKyAgICBBVE9NSUNfQ0xFQVJfQklUKGh1YXJ0LT5JbnN0YW5jZS0+Q1IzLCBVU0FSVF9DUjNfRE1BUik7CiAKICAgICAvKiBBdCBlbmQgb2YgUnggcHJvY2VzcywgcmVzdG9yZSBodWFydC0+UnhTdGF0ZSB0byBSZWFkeSAqLwogICAgIGh1YXJ0LT5SeFN0YXRlID0gSEFMX1VBUlRfU1RBVEVfUkVBRFk7CkBAIC0zNDU0LDcgKzM0NzYsNyBAQAogICAgIC8qIElmIFJlY2VwdGlvbiB0aWxsIElETEUgZXZlbnQgaGFzIGJlZW4gc2VsZWN0ZWQsIERpc2FibGUgSURMRSBJbnRlcnJ1cHQgKi8KICAgICBpZiAoaHVhcnQtPlJlY2VwdGlvblR5cGUgPT0gSEFMX1VBUlRfUkVDRVBUSU9OX1RPSURMRSkKICAgICB7Ci0gICAgICBDTEVBUl9CSVQoaHVhcnQtPkluc3RhbmNlLT5DUjEsIFVTQVJUX0NSMV9JRExFSUUpOworICAgICAgQVRPTUlDX0NMRUFSX0JJVChodWFydC0+SW5zdGFuY2UtPkNSMSwgVVNBUlRfQ1IxX0lETEVJRSk7CiAgICAgfQogICB9CiAKQEAgLTM3NTYsMTAgKzM3NzgsMTAgQEAKICAgICBpZiAoaHVhcnQtPlR4WGZlckNvdW50ID09IDBVKQogICAgIHsKICAgICAgIC8qIERpc2FibGUgdGhlIFVBUlQgVHJhbnNtaXQgRGF0YSBSZWdpc3RlciBFbXB0eSBJbnRlcnJ1cHQgKi8KLSAgICAgIENMRUFSX0JJVChodWFydC0+SW5zdGFuY2UtPkNSMSwgVVNBUlRfQ1IxX1RYRUlFKTsKKyAgICAgIEFUT01JQ19DTEVBUl9CSVQoaHVhcnQtPkluc3RhbmNlLT5DUjEsIFVTQVJUX0NSMV9UWEVJRSk7CiAKICAgICAgIC8qIEVuYWJsZSB0aGUgVUFSVCBUcmFuc21pdCBDb21wbGV0ZSBJbnRlcnJ1cHQgKi8KLSAgICAgIFNFVF9CSVQoaHVhcnQtPkluc3RhbmNlLT5DUjEsIFVTQVJUX0NSMV9UQ0lFKTsKKyAgICAgIEFUT01JQ19TRVRfQklUKGh1YXJ0LT5JbnN0YW5jZS0+Q1IxLCBVU0FSVF9DUjFfVENJRSk7CiAgICAgfQogICAgIGVsc2UKICAgICB7CkBAIC0zNzc5LDcgKzM4MDEsNyBAQAogICAqLwogc3RhdGljIHZvaWQgVUFSVF9UeElTUl8xNkJJVChVQVJUX0hhbmRsZVR5cGVEZWYgKmh1YXJ0KQogewotICB1aW50MTZfdCAqdG1wOworICBjb25zdCB1aW50MTZfdCAqdG1wOwogCiAgIC8qIENoZWNrIHRoYXQgYSBUeCBwcm9jZXNzIGlzIG9uZ29pbmcgKi8KICAgaWYgKGh1YXJ0LT5nU3RhdGUgPT0gSEFMX1VBUlRfU1RBVEVfQlVTWV9UWCkKQEAgLTM3ODcsMTQgKzM4MDksMTQgQEAKICAgICBpZiAoaHVhcnQtPlR4WGZlckNvdW50ID09IDBVKQogICAgIHsKICAgICAgIC8qIERpc2FibGUgdGhlIFVBUlQgVHJhbnNtaXQgRGF0YSBSZWdpc3RlciBFbXB0eSBJbnRlcnJ1cHQgKi8KLSAgICAgIENMRUFSX0JJVChodWFydC0+SW5zdGFuY2UtPkNSMSwgVVNBUlRfQ1IxX1RYRUlFKTsKKyAgICAgIEFUT01JQ19DTEVBUl9CSVQoaHVhcnQtPkluc3RhbmNlLT5DUjEsIFVTQVJUX0NSMV9UWEVJRSk7CiAKICAgICAgIC8qIEVuYWJsZSB0aGUgVUFSVCBUcmFuc21pdCBDb21wbGV0ZSBJbnRlcnJ1cHQgKi8KLSAgICAgIFNFVF9CSVQoaHVhcnQtPkluc3RhbmNlLT5DUjEsIFVTQVJUX0NSMV9UQ0lFKTsKKyAgICAgIEFUT01JQ19TRVRfQklUKGh1YXJ0LT5JbnN0YW5jZS0+Q1IxLCBVU0FSVF9DUjFfVENJRSk7CiAgICAgfQogICAgIGVsc2UKICAgICB7Ci0gICAgICB0bXAgPSAodWludDE2X3QgKikgaHVhcnQtPnBUeEJ1ZmZQdHI7CisgICAgICB0bXAgPSAoY29uc3QgdWludDE2X3QgKikgaHVhcnQtPnBUeEJ1ZmZQdHI7CiAgICAgICBodWFydC0+SW5zdGFuY2UtPlREUiA9ICgoKHVpbnQzMl90KSgqdG1wKSkgJiAweDAxRkZVTCk7CiAgICAgICBodWFydC0+cFR4QnVmZlB0ciArPSAyVTsKICAgICAgIGh1YXJ0LT5UeFhmZXJDb3VudC0tOwpAQCAtMzgxMiw3ICszODM0LDcgQEAKIHN0YXRpYyB2b2lkIFVBUlRfRW5kVHJhbnNtaXRfSVQoVUFSVF9IYW5kbGVUeXBlRGVmICpodWFydCkKIHsKICAgLyogRGlzYWJsZSB0aGUgVUFSVCBUcmFuc21pdCBDb21wbGV0ZSBJbnRlcnJ1cHQgKi8KLSAgQ0xFQVJfQklUKGh1YXJ0LT5JbnN0YW5jZS0+Q1IxLCBVU0FSVF9DUjFfVENJRSk7CisgIEFUT01JQ19DTEVBUl9CSVQoaHVhcnQtPkluc3RhbmNlLT5DUjEsIFVTQVJUX0NSMV9UQ0lFKTsKIAogICAvKiBUeCBwcm9jZXNzIGlzIGVuZGVkLCByZXN0b3JlIGh1YXJ0LT5nU3RhdGUgdG8gUmVhZHkgKi8KICAgaHVhcnQtPmdTdGF0ZSA9IEhBTF9VQVJUX1NUQVRFX1JFQURZOwpAQCAtMzg1MCwxMCArMzg3MiwxMCBAQAogICAgIGlmIChodWFydC0+UnhYZmVyQ291bnQgPT0gMFUpCiAgICAgewogICAgICAgLyogRGlzYWJsZSB0aGUgVUFSVCBQYXJpdHkgRXJyb3IgSW50ZXJydXB0IGFuZCBSWE5FIGludGVycnVwdHMgKi8KLSAgICAgIENMRUFSX0JJVChodWFydC0+SW5zdGFuY2UtPkNSMSwgKFVTQVJUX0NSMV9SWE5FSUUgfCBVU0FSVF9DUjFfUEVJRSkpOworICAgICAgQVRPTUlDX0NMRUFSX0JJVChodWFydC0+SW5zdGFuY2UtPkNSMSwgKFVTQVJUX0NSMV9SWE5FSUUgfCBVU0FSVF9DUjFfUEVJRSkpOwogCiAgICAgICAvKiBEaXNhYmxlIHRoZSBVQVJUIEVycm9yIEludGVycnVwdDogKEZyYW1lIGVycm9yLCBub2lzZSBlcnJvciwgb3ZlcnJ1biBlcnJvcikgKi8KLSAgICAgIENMRUFSX0JJVChodWFydC0+SW5zdGFuY2UtPkNSMywgVVNBUlRfQ1IzX0VJRSk7CisgICAgICBBVE9NSUNfQ0xFQVJfQklUKGh1YXJ0LT5JbnN0YW5jZS0+Q1IzLCBVU0FSVF9DUjNfRUlFKTsKIAogICAgICAgLyogUnggcHJvY2VzcyBpcyBjb21wbGV0ZWQsIHJlc3RvcmUgaHVhcnQtPlJ4U3RhdGUgdG8gUmVhZHkgKi8KICAgICAgIGh1YXJ0LT5SeFN0YXRlID0gSEFMX1VBUlRfU1RBVEVfUkVBRFk7CkBAIC0zODY1LDkgKzM4ODcsMTcgQEAKICAgICAgICAgIElmIFJlY2VwdGlvbiB0aWxsIElETEUgZXZlbnQgaGFzIGJlZW4gc2VsZWN0ZWQgOiAqLwogICAgICAgaWYgKGh1YXJ0LT5SZWNlcHRpb25UeXBlID09IEhBTF9VQVJUX1JFQ0VQVElPTl9UT0lETEUpCiAgICAgICB7Ci0gICAgICAgIC8qIERpc2FibGUgSURMRSBpbnRlcnJ1cHQgKi8KLSAgICAgICAgQ0xFQVJfQklUKGh1YXJ0LT5JbnN0YW5jZS0+Q1IxLCBVU0FSVF9DUjFfSURMRUlFKTsKKyAgICAgICAgLyogU2V0IHJlY2VwdGlvbiB0eXBlIHRvIFN0YW5kYXJkICovCisgICAgICAgIGh1YXJ0LT5SZWNlcHRpb25UeXBlID0gSEFMX1VBUlRfUkVDRVBUSU9OX1NUQU5EQVJEOwogCisgICAgICAgIC8qIERpc2FibGUgSURMRSBpbnRlcnJ1cHQgKi8KKyAgICAgICAgQVRPTUlDX0NMRUFSX0JJVChodWFydC0+SW5zdGFuY2UtPkNSMSwgVVNBUlRfQ1IxX0lETEVJRSk7CisKKyAgICAgICAgaWYgKF9fSEFMX1VBUlRfR0VUX0ZMQUcoaHVhcnQsIFVBUlRfRkxBR19JRExFKSA9PSBTRVQpCisgICAgICAgIHsKKyAgICAgICAgICAvKiBDbGVhciBJRExFIEZsYWcgKi8KKyAgICAgICAgICBfX0hBTF9VQVJUX0NMRUFSX0ZMQUcoaHVhcnQsIFVBUlRfQ0xFQVJfSURMRUYpOworICAgICAgICB9CiAjaWYgKFVTRV9IQUxfVUFSVF9SRUdJU1RFUl9DQUxMQkFDS1MgPT0gMSkKICAgICAgICAgLypDYWxsIHJlZ2lzdGVyZWQgUnggRXZlbnQgY2FsbGJhY2sqLwogICAgICAgICBodWFydC0+UnhFdmVudENhbGxiYWNrKGh1YXJ0LCBodWFydC0+UnhYZmVyU2l6ZSk7CkBAIC0zODg3LDcgKzM5MTcsNiBAQAogICAgICAgICBIQUxfVUFSVF9SeENwbHRDYWxsYmFjayhodWFydCk7CiAjZW5kaWYgLyogVVNFX0hBTF9VQVJUX1JFR0lTVEVSX0NBTExCQUNLUyAqLwogICAgICAgfQotICAgICAgaHVhcnQtPlJlY2VwdGlvblR5cGUgPSBIQUxfVUFSVF9SRUNFUFRJT05fU1RBTkRBUkQ7CiAgICAgfQogICB9CiAgIGVsc2UKQEAgLTM5MjIsMTAgKzM5NTEsMTAgQEAKICAgICBpZiAoaHVhcnQtPlJ4WGZlckNvdW50ID09IDBVKQogICAgIHsKICAgICAgIC8qIERpc2FibGUgdGhlIFVBUlQgUGFyaXR5IEVycm9yIEludGVycnVwdCBhbmQgUlhORSBpbnRlcnJ1cHQqLwotICAgICAgQ0xFQVJfQklUKGh1YXJ0LT5JbnN0YW5jZS0+Q1IxLCAoVVNBUlRfQ1IxX1JYTkVJRSB8IFVTQVJUX0NSMV9QRUlFKSk7CisgICAgICBBVE9NSUNfQ0xFQVJfQklUKGh1YXJ0LT5JbnN0YW5jZS0+Q1IxLCAoVVNBUlRfQ1IxX1JYTkVJRSB8IFVTQVJUX0NSMV9QRUlFKSk7CiAKICAgICAgIC8qIERpc2FibGUgdGhlIFVBUlQgRXJyb3IgSW50ZXJydXB0OiAoRnJhbWUgZXJyb3IsIG5vaXNlIGVycm9yLCBvdmVycnVuIGVycm9yKSAqLwotICAgICAgQ0xFQVJfQklUKGh1YXJ0LT5JbnN0YW5jZS0+Q1IzLCBVU0FSVF9DUjNfRUlFKTsKKyAgICAgIEFUT01JQ19DTEVBUl9CSVQoaHVhcnQtPkluc3RhbmNlLT5DUjMsIFVTQVJUX0NSM19FSUUpOwogCiAgICAgICAvKiBSeCBwcm9jZXNzIGlzIGNvbXBsZXRlZCwgcmVzdG9yZSBodWFydC0+UnhTdGF0ZSB0byBSZWFkeSAqLwogICAgICAgaHVhcnQtPlJ4U3RhdGUgPSBIQUxfVUFSVF9TVEFURV9SRUFEWTsKQEAgLTM5MzcsOSArMzk2NiwxNyBAQAogICAgICAgICAgSWYgUmVjZXB0aW9uIHRpbGwgSURMRSBldmVudCBoYXMgYmVlbiBzZWxlY3RlZCA6ICovCiAgICAgICBpZiAoaHVhcnQtPlJlY2VwdGlvblR5cGUgPT0gSEFMX1VBUlRfUkVDRVBUSU9OX1RPSURMRSkKICAgICAgIHsKLSAgICAgICAgLyogRGlzYWJsZSBJRExFIGludGVycnVwdCAqLwotICAgICAgICBDTEVBUl9CSVQoaHVhcnQtPkluc3RhbmNlLT5DUjEsIFVTQVJUX0NSMV9JRExFSUUpOworICAgICAgICAvKiBTZXQgcmVjZXB0aW9uIHR5cGUgdG8gU3RhbmRhcmQgKi8KKyAgICAgICAgaHVhcnQtPlJlY2VwdGlvblR5cGUgPSBIQUxfVUFSVF9SRUNFUFRJT05fU1RBTkRBUkQ7CiAKKyAgICAgICAgLyogRGlzYWJsZSBJRExFIGludGVycnVwdCAqLworICAgICAgICBBVE9NSUNfQ0xFQVJfQklUKGh1YXJ0LT5JbnN0YW5jZS0+Q1IxLCBVU0FSVF9DUjFfSURMRUlFKTsKKworICAgICAgICBpZiAoX19IQUxfVUFSVF9HRVRfRkxBRyhodWFydCwgVUFSVF9GTEFHX0lETEUpID09IFNFVCkKKyAgICAgICAgeworICAgICAgICAgIC8qIENsZWFyIElETEUgRmxhZyAqLworICAgICAgICAgIF9fSEFMX1VBUlRfQ0xFQVJfRkxBRyhodWFydCwgVUFSVF9DTEVBUl9JRExFRik7CisgICAgICAgIH0KICNpZiAoVVNFX0hBTF9VQVJUX1JFR0lTVEVSX0NBTExCQUNLUyA9PSAxKQogICAgICAgICAvKkNhbGwgcmVnaXN0ZXJlZCBSeCBFdmVudCBjYWxsYmFjayovCiAgICAgICAgIGh1YXJ0LT5SeEV2ZW50Q2FsbGJhY2soaHVhcnQsIGh1YXJ0LT5SeFhmZXJTaXplKTsKQEAgLTM5NTksNyArMzk5Niw2IEBACiAgICAgICAgIEhBTF9VQVJUX1J4Q3BsdENhbGxiYWNrKGh1YXJ0KTsKICNlbmRpZiAvKiBVU0VfSEFMX1VBUlRfUkVHSVNURVJfQ0FMTEJBQ0tTICovCiAgICAgICB9Ci0gICAgICBodWFydC0+UmVjZXB0aW9uVHlwZSA9IEhBTF9VQVJUX1JFQ0VQVElPTl9TVEFOREFSRDsKICAgICB9CiAgIH0KICAgZWxzZQpAQCAtMzk4Myw0ICs0MDE5LDMgQEAKICAgKiBAfQogICAqLwogCi0vKioqKioqKioqKioqKioqKioqKioqKioqIChDKSBDT1BZUklHSFQgU1RNaWNyb2VsZWN0cm9uaWNzICoqKioqRU5EIE9GIEZJTEUqKioqLwpkaWZmIC0tZ2l0IGEvU3JjL3N0bTMyZjd4eF9oYWxfdWFydF9leC5jIGIvU3JjL3N0bTMyZjd4eF9oYWxfdWFydF9leC5jCmluZGV4IDc1NjU0ZTYuLmQ0MjI5YzEgMTAwNjQ0Ci0tLSBhL1NyYy9zdG0zMmY3eHhfaGFsX3VhcnRfZXguYworKysgYi9TcmMvc3RtMzJmN3h4X2hhbF91YXJ0X2V4LmMKQEAgLTksNiArOSwxNyBAQAogICAqICAgICAgICAgICArIFBlcmlwaGVyYWwgQ29udHJvbCBmdW5jdGlvbnMKICAgKgogICAqCisgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAqIEBhdHRlbnRpb24KKyAgKgorICAqIENvcHlyaWdodCAoYykgMjAxNyBTVE1pY3JvZWxlY3Ryb25pY3MuCisgICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAgKgorICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgdW5kZXIgdGVybXMgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZQorICAqIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvZnR3YXJlIGNvbXBvbmVudC4KKyAgKiBJZiBubyBMSUNFTlNFIGZpbGUgY29tZXMgd2l0aCB0aGlzIHNvZnR3YXJlLCBpdCBpcyBwcm92aWRlZCBBUy1JUy4KKyAgKgorICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgQHZlcmJhdGltCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICAgICAgICAgICAgICAgIyMjIyMgVUFSVCBwZXJpcGhlcmFsIGV4dGVuZGVkIGZlYXR1cmVzICAjIyMjIwpAQCAtMjEsMTcgKzMyLDYgQEAKIAogICBAZW5kdmVyYmF0aW0KICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gICogQGF0dGVudGlvbgotICAqCi0gICogPGgyPjxjZW50ZXI+JmNvcHk7IENvcHlyaWdodCAoYykgMjAxNyBTVE1pY3JvZWxlY3Ryb25pY3MuCi0gICogQWxsIHJpZ2h0cyByZXNlcnZlZC48L2NlbnRlcj48L2gyPgotICAqCi0gICogVGhpcyBzb2Z0d2FyZSBjb21wb25lbnQgaXMgbGljZW5zZWQgYnkgU1QgdW5kZXIgQlNEIDMtQ2xhdXNlIGxpY2Vuc2UsCi0gICogdGhlICJMaWNlbnNlIjsgWW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZQotICAqIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdDoKLSAgKiAgICAgICAgICAgICAgICAgICAgICAgIG9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0JTRC0zLUNsYXVzZQotICAqCi0gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAqLwogCiAvKiBJbmNsdWRlcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwpAQCAtMzAzLDcgKzMwMyw3IEBACiAgIF9fSEFMX0xPQ0soaHVhcnQpOwogCiAgIC8qIFNldCBVQ0VTTSBiaXQgKi8KLSAgU0VUX0JJVChodWFydC0+SW5zdGFuY2UtPkNSMywgVVNBUlRfQ1IzX1VDRVNNKTsKKyAgQVRPTUlDX1NFVF9CSVQoaHVhcnQtPkluc3RhbmNlLT5DUjMsIFVTQVJUX0NSM19VQ0VTTSk7CiAKICAgLyogUHJvY2VzcyBVbmxvY2tlZCAqLwogICBfX0hBTF9VTkxPQ0soaHVhcnQpOwpAQCAtMzIyLDcgKzMyMiw3IEBACiAgIF9fSEFMX0xPQ0soaHVhcnQpOwogCiAgIC8qIENsZWFyIFVDRVNNIGJpdCAqLwotICBDTEVBUl9CSVQoaHVhcnQtPkluc3RhbmNlLT5DUjMsIFVTQVJUX0NSM19VQ0VTTSk7CisgIEFUT01JQ19DTEVBUl9CSVQoaHVhcnQtPkluc3RhbmNlLT5DUjMsIFVTQVJUX0NSM19VQ0VTTSk7CiAKICAgLyogUHJvY2VzcyBVbmxvY2tlZCAqLwogICBfX0hBTF9VTkxPQ0soaHVhcnQpOwpAQCAtNDQ2LDcgKzQ0Niw3IEBACiAgIF9fSEFMX0xPQ0soaHVhcnQpOwogCiAgIC8qIFNldCBVRVNNIGJpdCAqLwotICBTRVRfQklUKGh1YXJ0LT5JbnN0YW5jZS0+Q1IxLCBVU0FSVF9DUjFfVUVTTSk7CisgIEFUT01JQ19TRVRfQklUKGh1YXJ0LT5JbnN0YW5jZS0+Q1IxLCBVU0FSVF9DUjFfVUVTTSk7CiAKICAgLyogUHJvY2VzcyBVbmxvY2tlZCAqLwogICBfX0hBTF9VTkxPQ0soaHVhcnQpOwpAQCAtNDY1LDcgKzQ2NSw3IEBACiAgIF9fSEFMX0xPQ0soaHVhcnQpOwogCiAgIC8qIENsZWFyIFVFU00gYml0ICovCi0gIENMRUFSX0JJVChodWFydC0+SW5zdGFuY2UtPkNSMSwgVVNBUlRfQ1IxX1VFU00pOworICBBVE9NSUNfQ0xFQVJfQklUKGh1YXJ0LT5JbnN0YW5jZS0+Q1IxLCBVU0FSVF9DUjFfVUVTTSk7CiAKICAgLyogUHJvY2VzcyBVbmxvY2tlZCAqLwogICBfX0hBTF9VTkxPQ0soaHVhcnQpOwpAQCAtNjQxLDcgKzY0MSw3IEBACiAgICAgICBpZiAoaHVhcnQtPlJlY2VwdGlvblR5cGUgPT0gSEFMX1VBUlRfUkVDRVBUSU9OX1RPSURMRSkKICAgICAgIHsKICAgICAgICAgX19IQUxfVUFSVF9DTEVBUl9GTEFHKGh1YXJ0LCBVQVJUX0NMRUFSX0lETEVGKTsKLSAgICAgICAgU0VUX0JJVChodWFydC0+SW5zdGFuY2UtPkNSMSwgVVNBUlRfQ1IxX0lETEVJRSk7CisgICAgICAgIEFUT01JQ19TRVRfQklUKGh1YXJ0LT5JbnN0YW5jZS0+Q1IxLCBVU0FSVF9DUjFfSURMRUlFKTsKICAgICAgIH0KICAgICAgIGVsc2UKICAgICAgIHsKQEAgLTcwMyw3ICs3MDMsNyBAQAogICAgICAgaWYgKGh1YXJ0LT5SZWNlcHRpb25UeXBlID09IEhBTF9VQVJUX1JFQ0VQVElPTl9UT0lETEUpCiAgICAgICB7CiAgICAgICAgIF9fSEFMX1VBUlRfQ0xFQVJfRkxBRyhodWFydCwgVUFSVF9DTEVBUl9JRExFRik7Ci0gICAgICAgIFNFVF9CSVQoaHVhcnQtPkluc3RhbmNlLT5DUjEsIFVTQVJUX0NSMV9JRExFSUUpOworICAgICAgICBBVE9NSUNfU0VUX0JJVChodWFydC0+SW5zdGFuY2UtPkNSMSwgVVNBUlRfQ1IxX0lETEVJRSk7CiAgICAgICB9CiAgICAgICBlbHNlCiAgICAgICB7CkBAIC03NjgsNCArNzY4LDMgQEAKICAgKiBAfQogICAqLwogCi0vKioqKioqKioqKioqKioqKioqKioqKioqIChDKSBDT1BZUklHSFQgU1RNaWNyb2VsZWN0cm9uaWNzICoqKioqRU5EIE9GIEZJTEUqKioqLwpkaWZmIC0tZ2l0IGEvU3JjL3N0bTMyZjd4eF9oYWxfdXNhcnQuYyBiL1NyYy9zdG0zMmY3eHhfaGFsX3VzYXJ0LmMKaW5kZXggMWZjNTkxZS4uMTdmZmU0OSAxMDA2NDQKLS0tIGEvU3JjL3N0bTMyZjd4eF9oYWxfdXNhcnQuYworKysgYi9TcmMvc3RtMzJmN3h4X2hhbF91c2FydC5jCkBAIC0xMSw2ICsxMSwxNyBAQAogICAqICAgICAgICAgICArIFBlcmlwaGVyYWwgQ29udHJvbCBmdW5jdGlvbnMKICAgKiAgICAgICAgICAgKyBQZXJpcGhlcmFsIFN0YXRlIGFuZCBFcnJvciBmdW5jdGlvbnMKICAgKgorICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgKiBAYXR0ZW50aW9uCisgICoKKyAgKiBDb3B5cmlnaHQgKGMpIDIwMTcgU1RNaWNyb2VsZWN0cm9uaWNzLgorICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgICoKKyAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIHVuZGVyIHRlcm1zIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUKKyAgKiBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb2Z0d2FyZSBjb21wb25lbnQuCisgICogSWYgbm8gTElDRU5TRSBmaWxlIGNvbWVzIHdpdGggdGhpcyBzb2Z0d2FyZSwgaXQgaXMgcHJvdmlkZWQgQVMtSVMuCisgICoKKyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgIEB2ZXJiYXRpbQogID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgICAgICAgICAgICAgICAgICAgICAgICMjIyMjIEhvdyB0byB1c2UgdGhpcyBkcml2ZXIgIyMjIyMKQEAgLTYyLDggKzczLDggQEAKICAgICBhbGxvd3MgdGhlIHVzZXIgdG8gY29uZmlndXJlIGR5bmFtaWNhbGx5IHRoZSBkcml2ZXIgY2FsbGJhY2tzLgogCiAgICAgWy4uXQotICAgIFVzZSBGdW5jdGlvbiBAcmVmIEhBTF9VU0FSVF9SZWdpc3RlckNhbGxiYWNrKCkgdG8gcmVnaXN0ZXIgYSB1c2VyIGNhbGxiYWNrLgotICAgIEZ1bmN0aW9uIEByZWYgSEFMX1VTQVJUX1JlZ2lzdGVyQ2FsbGJhY2soKSBhbGxvd3MgdG8gcmVnaXN0ZXIgZm9sbG93aW5nIGNhbGxiYWNrczoKKyAgICBVc2UgRnVuY3Rpb24gSEFMX1VTQVJUX1JlZ2lzdGVyQ2FsbGJhY2soKSB0byByZWdpc3RlciBhIHVzZXIgY2FsbGJhY2suCisgICAgRnVuY3Rpb24gSEFMX1VTQVJUX1JlZ2lzdGVyQ2FsbGJhY2soKSBhbGxvd3MgdG8gcmVnaXN0ZXIgZm9sbG93aW5nIGNhbGxiYWNrczoKICAgICAoKykgVHhIYWxmQ3BsdENhbGxiYWNrICAgICAgICA6IFR4IEhhbGYgQ29tcGxldGUgQ2FsbGJhY2suCiAgICAgKCspIFR4Q3BsdENhbGxiYWNrICAgICAgICAgICAgOiBUeCBDb21wbGV0ZSBDYWxsYmFjay4KICAgICAoKykgUnhIYWxmQ3BsdENhbGxiYWNrICAgICAgICA6IFJ4IEhhbGYgQ29tcGxldGUgQ2FsbGJhY2suCkBAIC03Nyw5ICs4OCw5IEBACiAgICAgYW5kIGEgcG9pbnRlciB0byB0aGUgdXNlciBjYWxsYmFjayBmdW5jdGlvbi4KIAogICAgIFsuLl0KLSAgICBVc2UgZnVuY3Rpb24gQHJlZiBIQUxfVVNBUlRfVW5SZWdpc3RlckNhbGxiYWNrKCkgdG8gcmVzZXQgYSBjYWxsYmFjayB0byB0aGUgZGVmYXVsdAorICAgIFVzZSBmdW5jdGlvbiBIQUxfVVNBUlRfVW5SZWdpc3RlckNhbGxiYWNrKCkgdG8gcmVzZXQgYSBjYWxsYmFjayB0byB0aGUgZGVmYXVsdAogICAgIHdlYWsgKHN1cmNoYXJnZWQpIGZ1bmN0aW9uLgotICAgIEByZWYgSEFMX1VTQVJUX1VuUmVnaXN0ZXJDYWxsYmFjaygpIHRha2VzIGFzIHBhcmFtZXRlcnMgdGhlIEhBTCBwZXJpcGhlcmFsIGhhbmRsZSwKKyAgICBIQUxfVVNBUlRfVW5SZWdpc3RlckNhbGxiYWNrKCkgdGFrZXMgYXMgcGFyYW1ldGVycyB0aGUgSEFMIHBlcmlwaGVyYWwgaGFuZGxlLAogICAgIGFuZCB0aGUgQ2FsbGJhY2sgSUQuCiAgICAgVGhpcyBmdW5jdGlvbiBhbGxvd3MgdG8gcmVzZXQgZm9sbG93aW5nIGNhbGxiYWNrczoKICAgICAoKykgVHhIYWxmQ3BsdENhbGxiYWNrICAgICAgICA6IFR4IEhhbGYgQ29tcGxldGUgQ2FsbGJhY2suCkBAIC05MywxMyArMTA0LDEzIEBACiAgICAgKCspIE1zcERlSW5pdENhbGxiYWNrICAgICAgICAgOiBVU0FSVCBNc3BEZUluaXQuCiAKICAgICBbLi5dCi0gICAgQnkgZGVmYXVsdCwgYWZ0ZXIgdGhlIEByZWYgSEFMX1VTQVJUX0luaXQoKSBhbmQgd2hlbiB0aGUgc3RhdGUgaXMgSEFMX1VTQVJUX1NUQVRFX1JFU0VUCisgICAgQnkgZGVmYXVsdCwgYWZ0ZXIgdGhlIEhBTF9VU0FSVF9Jbml0KCkgYW5kIHdoZW4gdGhlIHN0YXRlIGlzIEhBTF9VU0FSVF9TVEFURV9SRVNFVAogICAgIGFsbCBjYWxsYmFja3MgYXJlIHNldCB0byB0aGUgY29ycmVzcG9uZGluZyB3ZWFrIChzdXJjaGFyZ2VkKSBmdW5jdGlvbnM6Ci0gICAgZXhhbXBsZXMgQHJlZiBIQUxfVVNBUlRfVHhDcGx0Q2FsbGJhY2soKSwgQHJlZiBIQUxfVVNBUlRfUnhIYWxmQ3BsdENhbGxiYWNrKCkuCisgICAgZXhhbXBsZXMgSEFMX1VTQVJUX1R4Q3BsdENhbGxiYWNrKCksIEhBTF9VU0FSVF9SeEhhbGZDcGx0Q2FsbGJhY2soKS4KICAgICBFeGNlcHRpb24gZG9uZSBmb3IgTXNwSW5pdCBhbmQgTXNwRGVJbml0IGZ1bmN0aW9ucyB0aGF0IGFyZSByZXNwZWN0aXZlbHkKLSAgICByZXNldCB0byB0aGUgbGVnYWN5IHdlYWsgKHN1cmNoYXJnZWQpIGZ1bmN0aW9ucyBpbiB0aGUgQHJlZiBIQUxfVVNBUlRfSW5pdCgpCi0gICAgYW5kIEByZWYgSEFMX1VTQVJUX0RlSW5pdCgpIG9ubHkgd2hlbiB0aGVzZSBjYWxsYmFja3MgYXJlIG51bGwgKG5vdCByZWdpc3RlcmVkIGJlZm9yZWhhbmQpLgotICAgIElmIG5vdCwgTXNwSW5pdCBvciBNc3BEZUluaXQgYXJlIG5vdCBudWxsLCB0aGUgQHJlZiBIQUxfVVNBUlRfSW5pdCgpIGFuZCBAcmVmIEhBTF9VU0FSVF9EZUluaXQoKQorICAgIHJlc2V0IHRvIHRoZSBsZWdhY3kgd2VhayAoc3VyY2hhcmdlZCkgZnVuY3Rpb25zIGluIHRoZSBIQUxfVVNBUlRfSW5pdCgpCisgICAgYW5kIEhBTF9VU0FSVF9EZUluaXQoKSBvbmx5IHdoZW4gdGhlc2UgY2FsbGJhY2tzIGFyZSBudWxsIChub3QgcmVnaXN0ZXJlZCBiZWZvcmVoYW5kKS4KKyAgICBJZiBub3QsIE1zcEluaXQgb3IgTXNwRGVJbml0IGFyZSBub3QgbnVsbCwgdGhlIEhBTF9VU0FSVF9Jbml0KCkgYW5kIEhBTF9VU0FSVF9EZUluaXQoKQogICAgIGtlZXAgYW5kIHVzZSB0aGUgdXNlciBNc3BJbml0L01zcERlSW5pdCBjYWxsYmFja3MgKHJlZ2lzdGVyZWQgYmVmb3JlaGFuZCkuCiAKICAgICBbLi5dCkBAIC0xMDgsOCArMTE5LDggQEAKICAgICBpbiBIQUxfVVNBUlRfU1RBVEVfUkVBRFkgb3IgSEFMX1VTQVJUX1NUQVRFX1JFU0VUIHN0YXRlLCB0aHVzIHJlZ2lzdGVyZWQgKHVzZXIpCiAgICAgTXNwSW5pdC9EZUluaXQgY2FsbGJhY2tzIGNhbiBiZSB1c2VkIGR1cmluZyB0aGUgSW5pdC9EZUluaXQuCiAgICAgSW4gdGhhdCBjYXNlIGZpcnN0IHJlZ2lzdGVyIHRoZSBNc3BJbml0L01zcERlSW5pdCB1c2VyIGNhbGxiYWNrcwotICAgIHVzaW5nIEByZWYgSEFMX1VTQVJUX1JlZ2lzdGVyQ2FsbGJhY2soKSBiZWZvcmUgY2FsbGluZyBAcmVmIEhBTF9VU0FSVF9EZUluaXQoKQotICAgIG9yIEByZWYgSEFMX1VTQVJUX0luaXQoKSBmdW5jdGlvbi4KKyAgICB1c2luZyBIQUxfVVNBUlRfUmVnaXN0ZXJDYWxsYmFjaygpIGJlZm9yZSBjYWxsaW5nIEhBTF9VU0FSVF9EZUluaXQoKQorICAgIG9yIEhBTF9VU0FSVF9Jbml0KCkgZnVuY3Rpb24uCiAKICAgICBbLi5dCiAgICAgV2hlbiBUaGUgY29tcGlsYXRpb24gZGVmaW5lIFVTRV9IQUxfVVNBUlRfUkVHSVNURVJfQ0FMTEJBQ0tTIGlzIHNldCB0byAwIG9yCkBAIC0xMTksMTcgKzEzMCw2IEBACiAKICAgQGVuZHZlcmJhdGltCiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICAqIEBhdHRlbnRpb24KLSAgKgotICAqIDxoMj48Y2VudGVyPiZjb3B5OyBDb3B5cmlnaHQgKGMpIDIwMTcgU1RNaWNyb2VsZWN0cm9uaWNzLgotICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuPC9jZW50ZXI+PC9oMj4KLSAgKgotICAqIFRoaXMgc29mdHdhcmUgY29tcG9uZW50IGlzIGxpY2Vuc2VkIGJ5IFNUIHVuZGVyIEJTRCAzLUNsYXVzZSBsaWNlbnNlLAotICAqIHRoZSAiTGljZW5zZSI7IFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUKLSAgKiBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQ6Ci0gICogICAgICAgICAgICAgICAgICAgICAgICBvcGVuc291cmNlLm9yZy9saWNlbnNlcy9CU0QtMy1DbGF1c2UKLSAgKgotICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgKi8KIAogLyogSW5jbHVkZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KQEAgLTcxNywxMCArNzE3LDEwIEBACiAgICogQHBhcmFtICBUaW1lb3V0IFRpbWVvdXQgZHVyYXRpb24uCiAgICogQHJldHZhbCBIQUwgc3RhdHVzCiAgICovCi1IQUxfU3RhdHVzVHlwZURlZiBIQUxfVVNBUlRfVHJhbnNtaXQoVVNBUlRfSGFuZGxlVHlwZURlZiAqaHVzYXJ0LCB1aW50OF90ICpwVHhEYXRhLCB1aW50MTZfdCBTaXplLCB1aW50MzJfdCBUaW1lb3V0KQorSEFMX1N0YXR1c1R5cGVEZWYgSEFMX1VTQVJUX1RyYW5zbWl0KFVTQVJUX0hhbmRsZVR5cGVEZWYgKmh1c2FydCwgY29uc3QgdWludDhfdCAqcFR4RGF0YSwgdWludDE2X3QgU2l6ZSwgdWludDMyX3QgVGltZW91dCkKIHsKLSAgdWludDhfdCAgKnB0eGRhdGE4Yml0czsKLSAgdWludDE2X3QgKnB0eGRhdGExNmJpdHM7CisgIGNvbnN0IHVpbnQ4X3QgICpwdHhkYXRhOGJpdHM7CisgIGNvbnN0IHVpbnQxNl90ICpwdHhkYXRhMTZiaXRzOwogICB1aW50MzJfdCB0aWNrc3RhcnQ7CiAKICAgaWYgKGh1c2FydC0+U3RhdGUgPT0gSEFMX1VTQVJUX1NUQVRFX1JFQURZKQpAQCAtNzQ2LDcgKzc0Niw3IEBACiAgICAgaWYgKChodXNhcnQtPkluaXQuV29yZExlbmd0aCA9PSBVU0FSVF9XT1JETEVOR1RIXzlCKSAmJiAoaHVzYXJ0LT5Jbml0LlBhcml0eSA9PSBVU0FSVF9QQVJJVFlfTk9ORSkpCiAgICAgewogICAgICAgcHR4ZGF0YThiaXRzICA9IE5VTEw7Ci0gICAgICBwdHhkYXRhMTZiaXRzID0gKHVpbnQxNl90ICopIHBUeERhdGE7CisgICAgICBwdHhkYXRhMTZiaXRzID0gKGNvbnN0IHVpbnQxNl90ICopIHBUeERhdGE7CiAgICAgfQogICAgIGVsc2UKICAgICB7CkBAIC05MTksMTMgKzkxOSwxMyBAQAogICAqIEBwYXJhbSAgVGltZW91dCBUaW1lb3V0IGR1cmF0aW9uLgogICAqIEByZXR2YWwgSEFMIHN0YXR1cwogICAqLwotSEFMX1N0YXR1c1R5cGVEZWYgSEFMX1VTQVJUX1RyYW5zbWl0UmVjZWl2ZShVU0FSVF9IYW5kbGVUeXBlRGVmICpodXNhcnQsIHVpbnQ4X3QgKnBUeERhdGEsIHVpbnQ4X3QgKnBSeERhdGEsCitIQUxfU3RhdHVzVHlwZURlZiBIQUxfVVNBUlRfVHJhbnNtaXRSZWNlaXZlKFVTQVJUX0hhbmRsZVR5cGVEZWYgKmh1c2FydCwgY29uc3QgdWludDhfdCAqcFR4RGF0YSwgdWludDhfdCAqcFJ4RGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDE2X3QgU2l6ZSwgdWludDMyX3QgVGltZW91dCkKIHsKICAgdWludDhfdCAgKnByeGRhdGE4Yml0czsKICAgdWludDE2X3QgKnByeGRhdGExNmJpdHM7Ci0gIHVpbnQ4X3QgICpwdHhkYXRhOGJpdHM7Ci0gIHVpbnQxNl90ICpwdHhkYXRhMTZiaXRzOworICBjb25zdCB1aW50OF90ICAqcHR4ZGF0YThiaXRzOworICBjb25zdCB1aW50MTZfdCAqcHR4ZGF0YTE2Yml0czsKICAgdWludDE2X3QgdWhNYXNrOwogICB1aW50MTZfdCByeGRhdGFjb3VudDsKICAgdWludDMyX3QgdGlja3N0YXJ0OwpAQCAtOTYwLDcgKzk2MCw3IEBACiAgICAgewogICAgICAgcHJ4ZGF0YThiaXRzICA9IE5VTEw7CiAgICAgICBwdHhkYXRhOGJpdHMgID0gTlVMTDsKLSAgICAgIHB0eGRhdGExNmJpdHMgPSAodWludDE2X3QgKikgcFR4RGF0YTsKKyAgICAgIHB0eGRhdGExNmJpdHMgPSAoY29uc3QgdWludDE2X3QgKikgcFR4RGF0YTsKICAgICAgIHByeGRhdGExNmJpdHMgPSAodWludDE2X3QgKikgcFJ4RGF0YTsKICAgICB9CiAgICAgZWxzZQpAQCAtMTA2Niw3ICsxMDY2LDcgQEAKICAgKiBAcGFyYW0gIFNpemUgYW1vdW50IG9mIGRhdGEgZWxlbWVudHMgKHU4IG9yIHUxNikgdG8gYmUgc2VudC4KICAgKiBAcmV0dmFsIEhBTCBzdGF0dXMKICAgKi8KLUhBTF9TdGF0dXNUeXBlRGVmIEhBTF9VU0FSVF9UcmFuc21pdF9JVChVU0FSVF9IYW5kbGVUeXBlRGVmICpodXNhcnQsIHVpbnQ4X3QgKnBUeERhdGEsIHVpbnQxNl90IFNpemUpCitIQUxfU3RhdHVzVHlwZURlZiBIQUxfVVNBUlRfVHJhbnNtaXRfSVQoVVNBUlRfSGFuZGxlVHlwZURlZiAqaHVzYXJ0LCBjb25zdCB1aW50OF90ICpwVHhEYXRhLCB1aW50MTZfdCBTaXplKQogewogICBpZiAoaHVzYXJ0LT5TdGF0ZSA9PSBIQUxfVVNBUlRfU1RBVEVfUkVBRFkpCiAgIHsKQEAgLTExNzAsNyArMTE3MCwxNCBAQAogICAgICAgX19IQUxfVU5MT0NLKGh1c2FydCk7CiAKICAgICAgIC8qIEVuYWJsZSB0aGUgVVNBUlQgUGFyaXR5IEVycm9yIGFuZCBEYXRhIFJlZ2lzdGVyIG5vdCBlbXB0eSBJbnRlcnJ1cHRzICovCi0gICAgICBTRVRfQklUKGh1c2FydC0+SW5zdGFuY2UtPkNSMSwgVVNBUlRfQ1IxX1BFSUUgfCBVU0FSVF9DUjFfUlhORUlFKTsKKyAgICAgIGlmIChodXNhcnQtPkluaXQuUGFyaXR5ICE9IFVTQVJUX1BBUklUWV9OT05FKQorICAgICAgeyAgCisgICAgICAgIFNFVF9CSVQoaHVzYXJ0LT5JbnN0YW5jZS0+Q1IxLCBVU0FSVF9DUjFfUEVJRSB8IFVTQVJUX0NSMV9SWE5FSUUpOworICAgICAgfQorICAgICAgZWxzZQorICAgICAgeworICAgICAgICBTRVRfQklUKGh1c2FydC0+SW5zdGFuY2UtPkNSMSwgVVNBUlRfQ1IxX1JYTkVJRSk7CisgICAgICB9CiAgICAgfQogCiAgICAgewpAQCAtMTIwMCw3ICsxMjA3LDcgQEAKICAgKiBAcGFyYW0gIFNpemUgYW1vdW50IG9mIGRhdGEgZWxlbWVudHMgKHU4IG9yIHUxNikgdG8gYmUgc2VudCAoc2FtZSBhbW91bnQgdG8gYmUgcmVjZWl2ZWQpLgogICAqIEByZXR2YWwgSEFMIHN0YXR1cwogICAqLwotSEFMX1N0YXR1c1R5cGVEZWYgSEFMX1VTQVJUX1RyYW5zbWl0UmVjZWl2ZV9JVChVU0FSVF9IYW5kbGVUeXBlRGVmICpodXNhcnQsIHVpbnQ4X3QgKnBUeERhdGEsIHVpbnQ4X3QgKnBSeERhdGEsCitIQUxfU3RhdHVzVHlwZURlZiBIQUxfVVNBUlRfVHJhbnNtaXRSZWNlaXZlX0lUKFVTQVJUX0hhbmRsZVR5cGVEZWYgKmh1c2FydCwgY29uc3QgdWludDhfdCAqcFR4RGF0YSwgdWludDhfdCAqcFJ4RGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDE2X3QgU2l6ZSkKIHsKIApAQCAtMTI0Niw3ICsxMjUzLDE0IEBACiAgICAgICBTRVRfQklUKGh1c2FydC0+SW5zdGFuY2UtPkNSMywgVVNBUlRfQ1IzX0VJRSk7CiAKICAgICAgIC8qIEVuYWJsZSB0aGUgVVNBUlQgUGFyaXR5IEVycm9yIGFuZCBVU0FSVCBEYXRhIFJlZ2lzdGVyIG5vdCBlbXB0eSBJbnRlcnJ1cHRzICovCi0gICAgICBTRVRfQklUKGh1c2FydC0+SW5zdGFuY2UtPkNSMSwgVVNBUlRfQ1IxX1BFSUUgfCBVU0FSVF9DUjFfUlhORUlFKTsKKyAgICAgIGlmIChodXNhcnQtPkluaXQuUGFyaXR5ICE9IFVTQVJUX1BBUklUWV9OT05FKQorICAgICAgeyAgCisgICAgICAgIFNFVF9CSVQoaHVzYXJ0LT5JbnN0YW5jZS0+Q1IxLCBVU0FSVF9DUjFfUEVJRSB8IFVTQVJUX0NSMV9SWE5FSUUpOworICAgICAgfQorICAgICAgZWxzZQorICAgICAgeworICAgICAgICBTRVRfQklUKGh1c2FydC0+SW5zdGFuY2UtPkNSMSwgVVNBUlRfQ1IxX1JYTkVJRSk7CisgICAgICB9CiAKICAgICAgIC8qIEVuYWJsZSB0aGUgVVNBUlQgVHJhbnNtaXQgRGF0YSBSZWdpc3RlciBFbXB0eSBJbnRlcnJ1cHQgKi8KICAgICAgIFNFVF9CSVQoaHVzYXJ0LT5JbnN0YW5jZS0+Q1IxLCBVU0FSVF9DUjFfVFhFSUUpOwpAQCAtMTI3MCwxMCArMTI4NCwxMCBAQAogICAqIEBwYXJhbSAgU2l6ZSBhbW91bnQgb2YgZGF0YSBlbGVtZW50cyAodTggb3IgdTE2KSB0byBiZSBzZW50LgogICAqIEByZXR2YWwgSEFMIHN0YXR1cwogICAqLwotSEFMX1N0YXR1c1R5cGVEZWYgSEFMX1VTQVJUX1RyYW5zbWl0X0RNQShVU0FSVF9IYW5kbGVUeXBlRGVmICpodXNhcnQsIHVpbnQ4X3QgKnBUeERhdGEsIHVpbnQxNl90IFNpemUpCitIQUxfU3RhdHVzVHlwZURlZiBIQUxfVVNBUlRfVHJhbnNtaXRfRE1BKFVTQVJUX0hhbmRsZVR5cGVEZWYgKmh1c2FydCwgY29uc3QgdWludDhfdCAqcFR4RGF0YSwgdWludDE2X3QgU2l6ZSkKIHsKICAgSEFMX1N0YXR1c1R5cGVEZWYgc3RhdHVzID0gSEFMX09LOwotICB1aW50MzJfdCAqdG1wOworICBjb25zdCB1aW50MzJfdCAqdG1wOwogCiAgIGlmIChodXNhcnQtPlN0YXRlID09IEhBTF9VU0FSVF9TVEFURV9SRUFEWSkKICAgewpAQCAtMTMwNCw4ICsxMzE4LDggQEAKICAgICAgIGh1c2FydC0+aGRtYXR4LT5YZmVyRXJyb3JDYWxsYmFjayA9IFVTQVJUX0RNQUVycm9yOwogCiAgICAgICAvKiBFbmFibGUgdGhlIFVTQVJUIHRyYW5zbWl0IERNQSBjaGFubmVsICovCi0gICAgICB0bXAgPSAodWludDMyX3QgKikmcFR4RGF0YTsKLSAgICAgIHN0YXR1cyA9IEhBTF9ETUFfU3RhcnRfSVQoaHVzYXJ0LT5oZG1hdHgsICoodWludDMyX3QgKil0bXAsICh1aW50MzJfdCkmaHVzYXJ0LT5JbnN0YW5jZS0+VERSLCBTaXplKTsKKyAgICAgIHRtcCA9IChjb25zdCB1aW50MzJfdCAqKSZwVHhEYXRhOworICAgICAgc3RhdHVzID0gSEFMX0RNQV9TdGFydF9JVChodXNhcnQtPmhkbWF0eCwgKihjb25zdCB1aW50MzJfdCAqKXRtcCwgKHVpbnQzMl90KSZodXNhcnQtPkluc3RhbmNlLT5URFIsIFNpemUpOwogICAgIH0KIAogICAgIGlmIChzdGF0dXMgPT0gSEFMX09LKQpAQCAtMTQxNCw4ICsxNDI4LDExIEBACiAgICAgICAvKiBQcm9jZXNzIFVubG9ja2VkICovCiAgICAgICBfX0hBTF9VTkxPQ0soaHVzYXJ0KTsKIAotICAgICAgLyogRW5hYmxlIHRoZSBVU0FSVCBQYXJpdHkgRXJyb3IgSW50ZXJydXB0ICovCi0gICAgICBTRVRfQklUKGh1c2FydC0+SW5zdGFuY2UtPkNSMSwgVVNBUlRfQ1IxX1BFSUUpOworICAgICAgaWYgKGh1c2FydC0+SW5pdC5QYXJpdHkgIT0gVVNBUlRfUEFSSVRZX05PTkUpCisgICAgICB7CisgICAgICAgIC8qIEVuYWJsZSB0aGUgVVNBUlQgUGFyaXR5IEVycm9yIEludGVycnVwdCAqLworICAgICAgICBTRVRfQklUKGh1c2FydC0+SW5zdGFuY2UtPkNSMSwgVVNBUlRfQ1IxX1BFSUUpOworICAgICAgfQogCiAgICAgICAvKiBFbmFibGUgdGhlIFVTQVJUIEVycm9yIEludGVycnVwdDogKEZyYW1lIGVycm9yLCBub2lzZSBlcnJvciwgb3ZlcnJ1biBlcnJvcikgKi8KICAgICAgIFNFVF9CSVQoaHVzYXJ0LT5JbnN0YW5jZS0+Q1IzLCBVU0FSVF9DUjNfRUlFKTsKQEAgLTE0NzAsMTEgKzE0ODcsMTEgQEAKICAgKiBAcGFyYW0gIFNpemUgYW1vdW50IG9mIGRhdGEgZWxlbWVudHMgKHU4IG9yIHUxNikgdG8gYmUgcmVjZWl2ZWQvc2VudC4KICAgKiBAcmV0dmFsIEhBTCBzdGF0dXMKICAgKi8KLUhBTF9TdGF0dXNUeXBlRGVmIEhBTF9VU0FSVF9UcmFuc21pdFJlY2VpdmVfRE1BKFVTQVJUX0hhbmRsZVR5cGVEZWYgKmh1c2FydCwgdWludDhfdCAqcFR4RGF0YSwgdWludDhfdCAqcFJ4RGF0YSwKK0hBTF9TdGF0dXNUeXBlRGVmIEhBTF9VU0FSVF9UcmFuc21pdFJlY2VpdmVfRE1BKFVTQVJUX0hhbmRsZVR5cGVEZWYgKmh1c2FydCwgY29uc3QgdWludDhfdCAqcFR4RGF0YSwgdWludDhfdCAqcFJ4RGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQxNl90IFNpemUpCiB7CiAgIEhBTF9TdGF0dXNUeXBlRGVmIHN0YXR1czsKLSAgdWludDMyX3QgKnRtcDsKKyAgY29uc3QgdWludDMyX3QgKnRtcDsKIAogICBpZiAoaHVzYXJ0LT5TdGF0ZSA9PSBIQUxfVVNBUlRfU1RBVEVfUkVBRFkpCiAgIHsKQEAgLTE1MTYsMTMgKzE1MzMsMTMgQEAKIAogICAgICAgLyogRW5hYmxlIHRoZSBVU0FSVCByZWNlaXZlIERNQSBjaGFubmVsICovCiAgICAgICB0bXAgPSAodWludDMyX3QgKikmcFJ4RGF0YTsKLSAgICAgIHN0YXR1cyA9IEhBTF9ETUFfU3RhcnRfSVQoaHVzYXJ0LT5oZG1hcngsICh1aW50MzJfdCkmaHVzYXJ0LT5JbnN0YW5jZS0+UkRSLCAqKHVpbnQzMl90ICopdG1wLCBTaXplKTsKKyAgICAgIHN0YXR1cyA9IEhBTF9ETUFfU3RhcnRfSVQoaHVzYXJ0LT5oZG1hcngsICh1aW50MzJfdCkmaHVzYXJ0LT5JbnN0YW5jZS0+UkRSLCAqKGNvbnN0IHVpbnQzMl90ICopdG1wLCBTaXplKTsKIAogICAgICAgLyogRW5hYmxlIHRoZSBVU0FSVCB0cmFuc21pdCBETUEgY2hhbm5lbCAqLwogICAgICAgaWYgKHN0YXR1cyA9PSBIQUxfT0spCiAgICAgICB7Ci0gICAgICAgIHRtcCA9ICh1aW50MzJfdCAqKSZwVHhEYXRhOwotICAgICAgICBzdGF0dXMgPSBIQUxfRE1BX1N0YXJ0X0lUKGh1c2FydC0+aGRtYXR4LCAqKHVpbnQzMl90ICopdG1wLCAodWludDMyX3QpJmh1c2FydC0+SW5zdGFuY2UtPlREUiwgU2l6ZSk7CisgICAgICAgIHRtcCA9IChjb25zdCB1aW50MzJfdCAqKSZwVHhEYXRhOworICAgICAgICBzdGF0dXMgPSBIQUxfRE1BX1N0YXJ0X0lUKGh1c2FydC0+aGRtYXR4LCAqKGNvbnN0IHVpbnQzMl90ICopdG1wLCAodWludDMyX3QpJmh1c2FydC0+SW5zdGFuY2UtPlREUiwgU2l6ZSk7CiAgICAgICB9CiAgICAgfQogICAgIGVsc2UKQEAgLTE1MzUsOCArMTU1MiwxMSBAQAogICAgICAgLyogUHJvY2VzcyBVbmxvY2tlZCAqLwogICAgICAgX19IQUxfVU5MT0NLKGh1c2FydCk7CiAKLSAgICAgIC8qIEVuYWJsZSB0aGUgVVNBUlQgUGFyaXR5IEVycm9yIEludGVycnVwdCAqLwotICAgICAgU0VUX0JJVChodXNhcnQtPkluc3RhbmNlLT5DUjEsIFVTQVJUX0NSMV9QRUlFKTsKKyAgICAgIGlmIChodXNhcnQtPkluaXQuUGFyaXR5ICE9IFVTQVJUX1BBUklUWV9OT05FKQorICAgICAgeworICAgICAgICAvKiBFbmFibGUgdGhlIFVTQVJUIFBhcml0eSBFcnJvciBJbnRlcnJ1cHQgKi8KKyAgICAgICAgU0VUX0JJVChodXNhcnQtPkluc3RhbmNlLT5DUjEsIFVTQVJUX0NSMV9QRUlFKTsKKyAgICAgIH0KIAogICAgICAgLyogRW5hYmxlIHRoZSBVU0FSVCBFcnJvciBJbnRlcnJ1cHQ6IChGcmFtZSBlcnJvciwgbm9pc2UgZXJyb3IsIG92ZXJydW4gZXJyb3IpICovCiAgICAgICBTRVRfQklUKGh1c2FydC0+SW5zdGFuY2UtPkNSMywgVVNBUlRfQ1IzX0VJRSk7CkBAIC0xNjUzLDcgKzE2NzMsMTAgQEAKICAgICBfX0hBTF9VU0FSVF9DTEVBUl9GTEFHKGh1c2FydCwgVVNBUlRfQ0xFQVJfT1JFRik7CiAKICAgICAvKiBSZS1lbmFibGUgUEUgYW5kIEVSUiAoRnJhbWUgZXJyb3IsIG5vaXNlIGVycm9yLCBvdmVycnVuIGVycm9yKSBpbnRlcnJ1cHRzICovCi0gICAgU0VUX0JJVChodXNhcnQtPkluc3RhbmNlLT5DUjEsIFVTQVJUX0NSMV9QRUlFKTsKKyAgICBpZiAoaHVzYXJ0LT5Jbml0LlBhcml0eSAhPSBVU0FSVF9QQVJJVFlfTk9ORSkKKyAgICB7ICAgIAorICAgICAgU0VUX0JJVChodXNhcnQtPkluc3RhbmNlLT5DUjEsIFVTQVJUX0NSMV9QRUlFKTsKKyAgICB9CiAgICAgU0VUX0JJVChodXNhcnQtPkluc3RhbmNlLT5DUjMsIFVTQVJUX0NSM19FSUUpOwogCiAgICAgLyogRW5hYmxlIHRoZSBVU0FSVCBETUEgUnggcmVxdWVzdCAgYmVmb3JlIHRoZSBETUEgVHggcmVxdWVzdCAqLwpAQCAtMTc0Myw5ICsxNzY2LDEwIEBACiAgIENMRUFSX0JJVChodXNhcnQtPkluc3RhbmNlLT5DUjEsIChVU0FSVF9DUjFfUlhORUlFIHwgVVNBUlRfQ1IxX1BFSUUgfCBVU0FSVF9DUjFfVFhFSUUgfCBVU0FSVF9DUjFfVENJRSkpOwogICBDTEVBUl9CSVQoaHVzYXJ0LT5JbnN0YW5jZS0+Q1IzLCBVU0FSVF9DUjNfRUlFKTsKIAotICAvKiBEaXNhYmxlIHRoZSBVU0FSVCBETUEgVHggcmVxdWVzdCBpZiBlbmFibGVkICovCisgIC8qIEFib3J0IHRoZSBVU0FSVCBETUEgVHggY2hhbm5lbCBpZiBlbmFibGVkICovCiAgIGlmIChIQUxfSVNfQklUX1NFVChodXNhcnQtPkluc3RhbmNlLT5DUjMsIFVTQVJUX0NSM19ETUFUKSkKICAgeworICAgIC8qIERpc2FibGUgdGhlIFVTQVJUIERNQSBUeCByZXF1ZXN0IGlmIGVuYWJsZWQgKi8KICAgICBDTEVBUl9CSVQoaHVzYXJ0LT5JbnN0YW5jZS0+Q1IzLCBVU0FSVF9DUjNfRE1BVCk7CiAKICAgICAvKiBBYm9ydCB0aGUgVVNBUlQgRE1BIFR4IGNoYW5uZWwgOiB1c2UgYmxvY2tpbmcgRE1BIEFib3J0IEFQSSAobm8gY2FsbGJhY2spICovCkBAIC0xNzY4LDkgKzE3OTIsMTAgQEAKICAgICB9CiAgIH0KIAotICAvKiBEaXNhYmxlIHRoZSBVU0FSVCBETUEgUnggcmVxdWVzdCBpZiBlbmFibGVkICovCisgIC8qIEFib3J0IHRoZSBVU0FSVCBETUEgUnggY2hhbm5lbCBpZiBlbmFibGVkICovCiAgIGlmIChIQUxfSVNfQklUX1NFVChodXNhcnQtPkluc3RhbmNlLT5DUjMsIFVTQVJUX0NSM19ETUFSKSkKICAgeworICAgIC8qIERpc2FibGUgdGhlIFVTQVJUIERNQSBSeCByZXF1ZXN0IGlmIGVuYWJsZWQgKi8KICAgICBDTEVBUl9CSVQoaHVzYXJ0LT5JbnN0YW5jZS0+Q1IzLCBVU0FSVF9DUjNfRE1BUik7CiAKICAgICAvKiBBYm9ydCB0aGUgVVNBUlQgRE1BIFJ4IGNoYW5uZWwgOiB1c2UgYmxvY2tpbmcgRE1BIEFib3J0IEFQSSAobm8gY2FsbGJhY2spICovCkBAIC0xODY1LDcgKzE4OTAsNyBAQAogICAgIH0KICAgfQogCi0gIC8qIERpc2FibGUgdGhlIFVTQVJUIERNQSBUeCByZXF1ZXN0IGlmIGVuYWJsZWQgKi8KKyAgLyogQWJvcnQgdGhlIFVTQVJUIERNQSBUeCBjaGFubmVsIGlmIGVuYWJsZWQgKi8KICAgaWYgKEhBTF9JU19CSVRfU0VUKGh1c2FydC0+SW5zdGFuY2UtPkNSMywgVVNBUlRfQ1IzX0RNQVQpKQogICB7CiAgICAgLyogRGlzYWJsZSBETUEgVHggYXQgVVNBUlQgbGV2ZWwgKi8KQEAgLTE4ODksOSArMTkxNCwxMCBAQAogICAgIH0KICAgfQogCi0gIC8qIERpc2FibGUgdGhlIFVTQVJUIERNQSBSeCByZXF1ZXN0IGlmIGVuYWJsZWQgKi8KKyAgLyogQWJvcnQgdGhlIFVTQVJUIERNQSBSeCBjaGFubmVsIGlmIGVuYWJsZWQgKi8KICAgaWYgKEhBTF9JU19CSVRfU0VUKGh1c2FydC0+SW5zdGFuY2UtPkNSMywgVVNBUlRfQ1IzX0RNQVIpKQogICB7CisgICAgLyogRGlzYWJsZSB0aGUgVVNBUlQgRE1BIFJ4IHJlcXVlc3QgaWYgZW5hYmxlZCAqLwogICAgIENMRUFSX0JJVChodXNhcnQtPkluc3RhbmNlLT5DUjMsIFVTQVJUX0NSM19ETUFSKTsKIAogICAgIC8qIEFib3J0IHRoZSBVU0FSVCBETUEgUnggY2hhbm5lbCA6IHVzZSBub24gYmxvY2tpbmcgRE1BIEFib3J0IEFQSSAoY2FsbGJhY2spICovCkBAIC0yMDQ4LDkgKzIwNzQsMTAgQEAKICAgICAgICAgICAgRGlzYWJsZSBJbnRlcnJ1cHRzLCBhbmQgZGlzYWJsZSBETUEgcmVxdWVzdHMsIGlmIG9uZ29pbmcgKi8KICAgICAgICAgVVNBUlRfRW5kVHJhbnNmZXIoaHVzYXJ0KTsKIAotICAgICAgICAvKiBEaXNhYmxlIHRoZSBVU0FSVCBETUEgUnggcmVxdWVzdCBpZiBlbmFibGVkICovCisgICAgICAgIC8qIEFib3J0IHRoZSBVU0FSVCBETUEgUnggY2hhbm5lbCBpZiBlbmFibGVkICovCiAgICAgICAgIGlmIChIQUxfSVNfQklUX1NFVChodXNhcnQtPkluc3RhbmNlLT5DUjMsIFVTQVJUX0NSM19ETUFSKSkKICAgICAgICAgeworICAgICAgICAgIC8qIERpc2FibGUgdGhlIFVTQVJUIERNQSBSeCByZXF1ZXN0IGlmIGVuYWJsZWQgKi8KICAgICAgICAgICBDTEVBUl9CSVQoaHVzYXJ0LT5JbnN0YW5jZS0+Q1IzLCBVU0FSVF9DUjNfRE1BUiB8IFVTQVJUX0NSM19ETUFSKTsKIAogICAgICAgICAgIC8qIEFib3J0IHRoZSBVU0FSVCBETUEgVHggY2hhbm5lbCAqLwpAQCAtMjYyOCwxMCArMjY1NSwxMSBAQAogCiAKIC8qKgotICAqIEBicmllZiAgSGFuZGxlIFVTQVJUIENvbW11bmljYXRpb24gVGltZW91dC4KKyAgKiBAYnJpZWYgIEhhbmRsZSBVU0FSVCBDb21tdW5pY2F0aW9uIFRpbWVvdXQuIEl0IHdhaXRzCisgICogICAgICAgICB1bnRpbCBhIGZsYWcgaXMgbm8gbG9uZ2VyIGluIHRoZSBzcGVjaWZpZWQgc3RhdHVzLgogICAqIEBwYXJhbSAgaHVzYXJ0IFVTQVJUIGhhbmRsZS4KICAgKiBAcGFyYW0gIEZsYWcgU3BlY2lmaWVzIHRoZSBVU0FSVCBmbGFnIHRvIGNoZWNrLgotICAqIEBwYXJhbSAgU3RhdHVzIHRoZSBGbGFnIHN0YXR1cyAoU0VUIG9yIFJFU0VUKS4KKyAgKiBAcGFyYW0gIFN0YXR1cyB0aGUgYWN0dWFsIEZsYWcgc3RhdHVzIChTRVQgb3IgUkVTRVQpLgogICAqIEBwYXJhbSAgVGlja3N0YXJ0IFRpY2sgc3RhcnQgdmFsdWUKICAgKiBAcGFyYW0gIFRpbWVvdXQgdGltZW91dCBkdXJhdGlvbi4KICAgKiBAcmV0dmFsIEhBTCBzdGF0dXMKQEAgLTI4NDgsNyArMjg3Niw3IEBACiBzdGF0aWMgdm9pZCBVU0FSVF9UeElTUl8xNkJJVChVU0FSVF9IYW5kbGVUeXBlRGVmICpodXNhcnQpCiB7CiAgIGNvbnN0IEhBTF9VU0FSVF9TdGF0ZVR5cGVEZWYgc3RhdGUgPSBodXNhcnQtPlN0YXRlOwotICB1aW50MTZfdCAqdG1wOworICBjb25zdCB1aW50MTZfdCAqdG1wOwogCiAgIGlmICgoc3RhdGUgPT0gSEFMX1VTQVJUX1NUQVRFX0JVU1lfVFgpIHx8CiAgICAgICAoc3RhdGUgPT0gSEFMX1VTQVJUX1NUQVRFX0JVU1lfVFhfUlgpKQpAQCAtMjg2Myw3ICsyODkxLDcgQEAKICAgICB9CiAgICAgZWxzZQogICAgIHsKLSAgICAgIHRtcCA9ICh1aW50MTZfdCAqKSBodXNhcnQtPnBUeEJ1ZmZQdHI7CisgICAgICB0bXAgPSAoY29uc3QgdWludDE2X3QgKikgaHVzYXJ0LT5wVHhCdWZmUHRyOwogICAgICAgaHVzYXJ0LT5JbnN0YW5jZS0+VERSID0gKHVpbnQxNl90KSgqdG1wICYgMHgwMUZGVSk7CiAgICAgICBodXNhcnQtPnBUeEJ1ZmZQdHIgKz0gMlU7CiAgICAgICBodXNhcnQtPlR4WGZlckNvdW50LS07CkBAIC0zMTAyLDQgKzMxMzAsMyBAQAogICAqIEB9CiAgICovCiAKLS8qKioqKioqKioqKioqKioqKioqKioqKiogKEMpIENPUFlSSUdIVCBTVE1pY3JvZWxlY3Ryb25pY3MgKioqKipFTkQgT0YgRklMRSoqKiovCmRpZmYgLS1naXQgYS9TcmMvc3RtMzJmN3h4X2hhbF93d2RnLmMgYi9TcmMvc3RtMzJmN3h4X2hhbF93d2RnLmMKaW5kZXggNGYzYTk4NS4uODk2ZjYwYyAxMDA2NDQKLS0tIGEvU3JjL3N0bTMyZjd4eF9oYWxfd3dkZy5jCisrKyBiL1NyYy9zdG0zMmY3eHhfaGFsX3d3ZGcuYwpAQCAtNyw2ICs3LDE3IEBACiAgICogICAgICAgICAgZnVuY3Rpb25hbGl0aWVzIG9mIHRoZSBXaW5kb3cgV2F0Y2hkb2cgKFdXREcpIHBlcmlwaGVyYWw6CiAgICogICAgICAgICAgICsgSW5pdGlhbGl6YXRpb24gYW5kIENvbmZpZ3VyYXRpb24gZnVuY3Rpb25zCiAgICogICAgICAgICAgICsgSU8gb3BlcmF0aW9uIGZ1bmN0aW9ucworICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgKiBAYXR0ZW50aW9uCisgICoKKyAgKiBDb3B5cmlnaHQgKGMpIDIwMTcgU1RNaWNyb2VsZWN0cm9uaWNzLgorICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgICoKKyAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIHVuZGVyIHRlcm1zIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUKKyAgKiBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb2Z0d2FyZSBjb21wb25lbnQuCisgICogSWYgbm8gTElDRU5TRSBmaWxlIGNvbWVzIHdpdGggdGhpcyBzb2Z0d2FyZSwgaXQgaXMgcHJvdmlkZWQgQVMtSVMuCisgICoKKyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgIEB2ZXJiYXRpbQogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgICAgICAgICAgICAgICAgICAgICAjIyMjIyBXV0RHIFNwZWNpZmljIGZlYXR1cmVzICMjIyMjCkBAIC00MCw3ICs1MSw3IEBACiAgICAgICAgICgrKykgbWF4IHRpbWUgKG1TKSA9IDEwMDAgKiAoQ291bnRlciAtIDB4NDApIC8gV1dERyBjbG9jawogICAgICgrKSBUeXBpY2FsIHZhbHVlczoKICAgICAgICAgKCsrKSBDb3VudGVyIG1pbiAoVFs1OzBdID0gMHgwMCkgYXQgNTRNSHogKFBDTEsxKSB3aXRoIHplcm8gcHJlc2NhbGVyOgotICAgICAgICAgICAgIG1heCB0aW1lb3V0IGJlZm9yZSByZXNldDogYXBwcm94aW1hdGVseSA3NS44NbVzCisgICAgICAgICAgICAgbWF4IHRpbWVvdXQgYmVmb3JlIHJlc2V0OiBhcHByb3hpbWF0ZWx5IDc1Ljg1dXMKICAgICAgICAgKCsrKSBDb3VudGVyIG1heCAoVFs1OzBdID0gMHgzRikgYXQgNTRNSHogKFBDTEsxKSB3aXRoIHByZXNjYWxlcgogICAgICAgICAgICAgIGRpdmlkaW5nIGJ5IDg6CiAgICAgICAgICAgICAgbWF4IHRpbWVvdXQgYmVmb3JlIHJlc2V0OiBhcHByb3hpbWF0ZWx5IDM4LjgzbXMKQEAgLTU1LDcgKzY2LDcgQEAKICAgICAoKykgRW5hYmxlIFdXREcgQVBCMSBjbG9jayB1c2luZyBfX0hBTF9SQ0NfV1dER19DTEtfRU5BQkxFKCkuCiAgICAgKCspIENvbmZpZ3VyZSB0aGUgV1dERyBwcmVzY2FsZXIsIHJlZnJlc2ggd2luZG93IHZhbHVlLCBjb3VudGVyIHZhbHVlIGFuZCBlYXJseQogICAgICAgICBpbnRlcnJ1cHQgc3RhdHVzIHVzaW5nIEhBTF9XV0RHX0luaXQoKSBmdW5jdGlvbi4gVGhpcyB3aWxsIGF1dG9tYXRpY2FsbHkKLSAgICAgICAgZW5hYmxlIFdXREcgYW5kIHN0YXJ0IGl0cyBkb3duY291bnRlci4gVGltZSByZWZlcmVuY2UgY2FuIGJlIHRha2VuIGZyb20gCisgICAgICAgIGVuYWJsZSBXV0RHIGFuZCBzdGFydCBpdHMgZG93bmNvdW50ZXIuIFRpbWUgcmVmZXJlbmNlIGNhbiBiZSB0YWtlbiBmcm9tCiAgICAgICAgIGZ1bmN0aW9uIGV4aXQuIENhcmUgbXVzdCBiZSB0YWtlbiB0byBwcm92aWRlIGEgY291bnRlciB2YWx1ZQogICAgICAgICBncmVhdGVyIHRoYW4gMHg0MCB0byBwcmV2ZW50IGdlbmVyYXRpb24gb2YgaW1tZWRpYXRlIHJlc2V0LgogICAgICgrKSBJZiB0aGUgRWFybHkgV2FrZXVwIEludGVycnVwdCAoRVdJKSBmZWF0dXJlIGlzIGVuYWJsZWQsIGFuIGludGVycnVwdCBpcwpAQCAtMTEyLDE3ICsxMjMsNiBAQAogCiAgIEBlbmR2ZXJiYXRpbQogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAgKiBAYXR0ZW50aW9uCi0gICoKLSAgKiA8aDI+PGNlbnRlcj4mY29weTsgQ29weXJpZ2h0IChjKSAyMDE3IFNUTWljcm9lbGVjdHJvbmljcy4KLSAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLjwvY2VudGVyPjwvaDI+Ci0gICoKLSAgKiBUaGlzIHNvZnR3YXJlIGNvbXBvbmVudCBpcyBsaWNlbnNlZCBieSBTVCB1bmRlciBCU0QgMy1DbGF1c2UgbGljZW5zZSwKLSAgKiB0aGUgIkxpY2Vuc2UiOyBZb3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlCi0gICogTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0OgotICAqICAgICAgICAgICAgICAgICAgICAgICAgb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvQlNELTMtQ2xhdXNlCi0gICoKLSAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgICovCiAKIC8qIEluY2x1ZGVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCkBAIC00MTgsNSArNDE4LDMgQEAKIC8qKgogICAqIEB9CiAgICovCi0KLS8qKioqKioqKioqKioqKioqKioqKioqKiogKEMpIENPUFlSSUdIVCBTVE1pY3JvZWxlY3Ryb25pY3MgKioqKipFTkQgT0YgRklMRSoqKiovCmRpZmYgLS1naXQgYS9TcmMvc3RtMzJmN3h4X2xsX2FkYy5jIGIvU3JjL3N0bTMyZjd4eF9sbF9hZGMuYwppbmRleCAyYmNjMmM5Li4yYThjNDIwIDEwMDY0NAotLS0gYS9TcmMvc3RtMzJmN3h4X2xsX2FkYy5jCisrKyBiL1NyYy9zdG0zMmY3eHhfbGxfYWRjLmMKQEAgLTYsMTMgKzYsMTIgQEAKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgICogQGF0dGVudGlvbgogICAqCi0gICogPGgyPjxjZW50ZXI+JmNvcHk7IENvcHlyaWdodCAoYykgMjAxNyBTVE1pY3JvZWxlY3Ryb25pY3MuCi0gICogQWxsIHJpZ2h0cyByZXNlcnZlZC48L2NlbnRlcj48L2gyPgorICAqIENvcHlyaWdodCAoYykgMjAxNyBTVE1pY3JvZWxlY3Ryb25pY3MuCisgICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgKgotICAqIFRoaXMgc29mdHdhcmUgY29tcG9uZW50IGlzIGxpY2Vuc2VkIGJ5IFNUIHVuZGVyIEJTRCAzLUNsYXVzZSBsaWNlbnNlLAotICAqIHRoZSAiTGljZW5zZSI7IFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUKLSAgKiBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQ6Ci0gICogICAgICAgICAgICAgICAgICAgICAgICBvcGVuc291cmNlLm9yZy9saWNlbnNlcy9CU0QtMy1DbGF1c2UKKyAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIHVuZGVyIHRlcm1zIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUKKyAgKiBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb2Z0d2FyZSBjb21wb25lbnQuCisgICogSWYgbm8gTElDRU5TRSBmaWxlIGNvbWVzIHdpdGggdGhpcyBzb2Z0d2FyZSwgaXQgaXMgcHJvdmlkZWQgQVMtSVMuCiAgICoKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgICovCkBAIC01MTAsNiArNTA5LDExIEBACiAgICAgICAgICAgICAgICB8IEFEQ19TUVIyX1NROSB8IEFEQ19TUVIyX1NROCB8IEFEQ19TUVIyX1NRNykKICAgICAgICAgICAgICApOwogICAgIAorICAgIC8qIFJlc2V0IHJlZ2lzdGVyIFNRUjMgKi8KKyAgICBDTEVBUl9CSVQoQURDeC0+U1FSMywKKyAgICAgICAgICAgICAgKCAgQURDX1NRUjNfU1E2IHwgQURDX1NRUjNfU1E1IHwgQURDX1NRUjNfU1E0CisgICAgICAgICAgICAgICB8IEFEQ19TUVIzX1NRMyB8IEFEQ19TUVIzX1NRMiB8IEFEQ19TUVIzX1NRMSkKKyAgICAgICAgICAgICApOwogICAgIAogICAgIC8qIFJlc2V0IHJlZ2lzdGVyIEpTUVIgKi8KICAgICBDTEVBUl9CSVQoQURDeC0+SlNRUiwKQEAgLTkwNCw0ICs5MDgsMyBAQAogCiAjZW5kaWYgLyogVVNFX0ZVTExfTExfRFJJVkVSICovCiAKLS8qKioqKioqKioqKioqKioqKioqKioqKiogKEMpIENPUFlSSUdIVCBTVE1pY3JvZWxlY3Ryb25pY3MgKioqKipFTkQgT0YgRklMRSoqKiovCmRpZmYgLS1naXQgYS9TcmMvc3RtMzJmN3h4X2xsX2NyYy5jIGIvU3JjL3N0bTMyZjd4eF9sbF9jcmMuYwppbmRleCBkMGIyNjZiLi5lZjNkZTlkIDEwMDY0NAotLS0gYS9TcmMvc3RtMzJmN3h4X2xsX2NyYy5jCisrKyBiL1NyYy9zdG0zMmY3eHhfbGxfY3JjLmMKQEAgLTYsMTMgKzYsMTIgQEAKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgICogQGF0dGVudGlvbgogICAqCi0gICogPGgyPjxjZW50ZXI+JmNvcHk7IENvcHlyaWdodCAoYykgMjAxNyBTVE1pY3JvZWxlY3Ryb25pY3MuCi0gICogQWxsIHJpZ2h0cyByZXNlcnZlZC48L2NlbnRlcj48L2gyPgorICAqIENvcHlyaWdodCAoYykgMjAxNyBTVE1pY3JvZWxlY3Ryb25pY3MuCisgICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgKgotICAqIFRoaXMgc29mdHdhcmUgY29tcG9uZW50IGlzIGxpY2Vuc2VkIGJ5IFNUIHVuZGVyIEJTRCAzLUNsYXVzZSBsaWNlbnNlLAotICAqIHRoZSAiTGljZW5zZSI7IFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUKLSAgKiBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQ6Ci0gICogICAgICAgICAgICAgICAgICAgICAgICBvcGVuc291cmNlLm9yZy9saWNlbnNlcy9CU0QtMy1DbGF1c2UKKyAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIHVuZGVyIHRlcm1zIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUKKyAgKiBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb2Z0d2FyZSBjb21wb25lbnQuCisgICogSWYgbm8gTElDRU5TRSBmaWxlIGNvbWVzIHdpdGggdGhpcyBzb2Z0d2FyZSwgaXQgaXMgcHJvdmlkZWQgQVMtSVMuCiAgICoKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgICovCkBAIC0yNiw3ICsyNSw3IEBACiAjaW5jbHVkZSAic3RtMzJfYXNzZXJ0LmgiCiAjZWxzZQogI2RlZmluZSBhc3NlcnRfcGFyYW0oZXhwcikgKCh2b2lkKTBVKQotI2VuZGlmCisjZW5kaWYgLyogVVNFX0ZVTExfQVNTRVJUICovCiAKIC8qKiBAYWRkdG9ncm91cCBTVE0zMkY3eHhfTExfRHJpdmVyCiAgICogQHsKQEAgLTEwMiw2ICsxMDEsMyBAQAogICAqLwogCiAjZW5kaWYgLyogVVNFX0ZVTExfTExfRFJJVkVSICovCi0KLS8qKioqKioqKioqKioqKioqKioqKioqKiogKEMpIENPUFlSSUdIVCBTVE1pY3JvZWxlY3Ryb25pY3MgKioqKipFTkQgT0YgRklMRSoqKiovCi0KZGlmZiAtLWdpdCBhL1NyYy9zdG0zMmY3eHhfbGxfZGFjLmMgYi9TcmMvc3RtMzJmN3h4X2xsX2RhYy5jCmluZGV4IGYzYzhmNWIuLjlmYTkwMDcgMTAwNjQ0Ci0tLSBhL1NyYy9zdG0zMmY3eHhfbGxfZGFjLmMKKysrIGIvU3JjL3N0bTMyZjd4eF9sbF9kYWMuYwpAQCAtNiwxMyArNiwxMiBAQAogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgKiBAYXR0ZW50aW9uCiAgICoKLSAgKiA8aDI+PGNlbnRlcj4mY29weTsgQ29weXJpZ2h0IChjKSAyMDE3IFNUTWljcm9lbGVjdHJvbmljcy4KLSAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLjwvY2VudGVyPjwvaDI+CisgICogQ29weXJpZ2h0IChjKSAyMDE3IFNUTWljcm9lbGVjdHJvbmljcy4KKyAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAqCi0gICogVGhpcyBzb2Z0d2FyZSBjb21wb25lbnQgaXMgbGljZW5zZWQgYnkgU1QgdW5kZXIgQlNEIDMtQ2xhdXNlIGxpY2Vuc2UsCi0gICogdGhlICJMaWNlbnNlIjsgWW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZQotICAqIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdDoKLSAgKiAgICAgICAgICAgICAgICAgICAgICAgIG9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0JTRC0zLUNsYXVzZQorICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgdW5kZXIgdGVybXMgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZQorICAqIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvZnR3YXJlIGNvbXBvbmVudC4KKyAgKiBJZiBubyBMSUNFTlNFIGZpbGUgY29tZXMgd2l0aCB0aGlzIHNvZnR3YXJlLCBpdCBpcyBwcm92aWRlZCBBUy1JUy4KICAgKgogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgKi8KQEAgLTI2OSw0ICsyNjgsMyBAQAogCiAjZW5kaWYgLyogVVNFX0ZVTExfTExfRFJJVkVSICovCiAKLS8qKioqKioqKioqKioqKioqKioqKioqKiogKEMpIENPUFlSSUdIVCBTVE1pY3JvZWxlY3Ryb25pY3MgKioqKipFTkQgT0YgRklMRSoqKiovCmRpZmYgLS1naXQgYS9TcmMvc3RtMzJmN3h4X2xsX2RtYS5jIGIvU3JjL3N0bTMyZjd4eF9sbF9kbWEuYwppbmRleCA1ZThjMDY5Li43YjllNmE0IDEwMDY0NAotLS0gYS9TcmMvc3RtMzJmN3h4X2xsX2RtYS5jCisrKyBiL1NyYy9zdG0zMmY3eHhfbGxfZG1hLmMKQEAgLTYsMTMgKzYsMTIgQEAKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgICogQGF0dGVudGlvbgogICAqCi0gICogPGgyPjxjZW50ZXI+JmNvcHk7IENvcHlyaWdodCAoYykgMjAxNyBTVE1pY3JvZWxlY3Ryb25pY3MuCi0gICogQWxsIHJpZ2h0cyByZXNlcnZlZC48L2NlbnRlcj48L2gyPgorICAqIENvcHlyaWdodCAoYykgMjAxNyBTVE1pY3JvZWxlY3Ryb25pY3MuCisgICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgKgotICAqIFRoaXMgc29mdHdhcmUgY29tcG9uZW50IGlzIGxpY2Vuc2VkIGJ5IFNUIHVuZGVyIEJTRCAzLUNsYXVzZSBsaWNlbnNlLAotICAqIHRoZSAiTGljZW5zZSI7IFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUKLSAgKiBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQ6Ci0gICogICAgICAgICAgICAgICAgICAgICAgICBvcGVuc291cmNlLm9yZy9saWNlbnNlcy9CU0QtMy1DbGF1c2UKKyAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIHVuZGVyIHRlcm1zIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4KKyAgKiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb2Z0d2FyZSBjb21wb25lbnQuCisgICogSWYgbm8gTElDRU5TRSBmaWxlIGNvbWVzIHdpdGggdGhpcyBzb2Z0d2FyZSwgaXQgaXMgcHJvdmlkZWQgQVMtSVMuCiAgICoKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgICovCkBAIC00NDMsNCArNDQyLDMgQEAKIAogI2VuZGlmIC8qIFVTRV9GVUxMX0xMX0RSSVZFUiAqLwogCi0vKioqKioqKioqKioqKioqKioqKioqKioqIChDKSBDT1BZUklHSFQgU1RNaWNyb2VsZWN0cm9uaWNzICoqKioqRU5EIE9GIEZJTEUqKioqLwpkaWZmIC0tZ2l0IGEvU3JjL3N0bTMyZjd4eF9sbF9kbWEyZC5jIGIvU3JjL3N0bTMyZjd4eF9sbF9kbWEyZC5jCmluZGV4IDM0YjcxMWMuLjMwYTA0MDcgMTAwNjQ0Ci0tLSBhL1NyYy9zdG0zMmY3eHhfbGxfZG1hMmQuYworKysgYi9TcmMvc3RtMzJmN3h4X2xsX2RtYTJkLmMKQEAgLTYsMTMgKzYsMTIgQEAKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgICogQGF0dGVudGlvbgogICAqCi0gICogPGgyPjxjZW50ZXI+JmNvcHk7IENvcHlyaWdodCAoYykgMjAxNyBTVE1pY3JvZWxlY3Ryb25pY3MuCi0gICogQWxsIHJpZ2h0cyByZXNlcnZlZC48L2NlbnRlcj48L2gyPgorICAqIENvcHlyaWdodCAoYykgMjAxNyBTVE1pY3JvZWxlY3Ryb25pY3MuCisgICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgKgotICAqIFRoaXMgc29mdHdhcmUgY29tcG9uZW50IGlzIGxpY2Vuc2VkIGJ5IFNUIHVuZGVyIEJTRCAzLUNsYXVzZSBsaWNlbnNlLAotICAqIHRoZSAiTGljZW5zZSI7IFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUKLSAgKiBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQ6Ci0gICogICAgICAgICAgICAgICAgICAgICAgICBvcGVuc291cmNlLm9yZy9saWNlbnNlcy9CU0QtMy1DbGF1c2UKKyAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIHVuZGVyIHRlcm1zIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUKKyAgKiBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb2Z0d2FyZSBjb21wb25lbnQuCisgICogSWYgbm8gTElDRU5TRSBmaWxlIGNvbWVzIHdpdGggdGhpcyBzb2Z0d2FyZSwgaXQgaXMgcHJvdmlkZWQgQVMtSVMuCiAgICoKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgICovCkBAIC02NDQsNiArNjQzLDMgQEAKICAgKi8KIAogI2VuZGlmIC8qIFVTRV9GVUxMX0xMX0RSSVZFUiAqLwotCi0vKioqKioqKioqKioqKioqKioqKioqKioqIChDKSBDT1BZUklHSFQgU1RNaWNyb2VsZWN0cm9uaWNzICoqKioqRU5EIE9GIEZJTEUqKioqLwotCmRpZmYgLS1naXQgYS9TcmMvc3RtMzJmN3h4X2xsX2V4dGkuYyBiL1NyYy9zdG0zMmY3eHhfbGxfZXh0aS5jCmluZGV4IDU2NjM4NzQuLjVkYTE5NWQgMTAwNjQ0Ci0tLSBhL1NyYy9zdG0zMmY3eHhfbGxfZXh0aS5jCisrKyBiL1NyYy9zdG0zMmY3eHhfbGxfZXh0aS5jCkBAIC02LDEzICs2LDEyIEBACiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAqIEBhdHRlbnRpb24KICAgKgotICAqIDxoMj48Y2VudGVyPiZjb3B5OyBDb3B5cmlnaHQgKGMpIDIwMTcgU1RNaWNyb2VsZWN0cm9uaWNzLgotICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuPC9jZW50ZXI+PC9oMj4KKyAgKiBDb3B5cmlnaHQgKGMpIDIwMTcgU1RNaWNyb2VsZWN0cm9uaWNzLgorICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICoKLSAgKiBUaGlzIHNvZnR3YXJlIGNvbXBvbmVudCBpcyBsaWNlbnNlZCBieSBTVCB1bmRlciBCU0QgMy1DbGF1c2UgbGljZW5zZSwKLSAgKiB0aGUgIkxpY2Vuc2UiOyBZb3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlCi0gICogTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0OgotICAqICAgICAgICAgICAgICAgICAgICAgICAgb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvQlNELTMtQ2xhdXNlCisgICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCB1bmRlciB0ZXJtcyB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlCisgICogaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc29mdHdhcmUgY29tcG9uZW50LgorICAqIElmIG5vIExJQ0VOU0UgZmlsZSBjb21lcyB3aXRoIHRoaXMgc29mdHdhcmUsIGl0IGlzIHByb3ZpZGVkIEFTLUlTLgogICAqCiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAqLwpAQCAtMjExLDQgKzIxMCwzIEBACiAKICNlbmRpZiAvKiBVU0VfRlVMTF9MTF9EUklWRVIgKi8KIAotLyoqKioqKioqKioqKioqKioqKioqKioqKiAoQykgQ09QWVJJR0hUIFNUTWljcm9lbGVjdHJvbmljcyAqKioqKkVORCBPRiBGSUxFKioqKi8KZGlmZiAtLWdpdCBhL1NyYy9zdG0zMmY3eHhfbGxfZm1jLmMgYi9TcmMvc3RtMzJmN3h4X2xsX2ZtYy5jCmluZGV4IDY4MGNjZjQuLjI4MTRmOTEgMTAwNjQ0Ci0tLSBhL1NyYy9zdG0zMmY3eHhfbGxfZm1jLmMKKysrIGIvU3JjL3N0bTMyZjd4eF9sbF9mbWMuYwpAQCAtMywyNyArMywzOCBAQAogICAqIEBmaWxlICAgIHN0bTMyZjd4eF9sbF9mbWMuYwogICAqIEBhdXRob3IgIE1DRCBBcHBsaWNhdGlvbiBUZWFtCiAgICogQGJyaWVmICAgRk1DIExvdyBMYXllciBIQUwgbW9kdWxlIGRyaXZlci4KLSAgKiAgICAKLSAgKiAgICAgICAgICBUaGlzIGZpbGUgcHJvdmlkZXMgZmlybXdhcmUgZnVuY3Rpb25zIHRvIG1hbmFnZSB0aGUgZm9sbG93aW5nIAorICAqCisgICogICAgICAgICAgVGhpcyBmaWxlIHByb3ZpZGVzIGZpcm13YXJlIGZ1bmN0aW9ucyB0byBtYW5hZ2UgdGhlIGZvbGxvd2luZwogICAqICAgICAgICAgIGZ1bmN0aW9uYWxpdGllcyBvZiB0aGUgRmxleGlibGUgTWVtb3J5IENvbnRyb2xsZXIgKEZNQykgcGVyaXBoZXJhbCBtZW1vcmllczoKICAgKiAgICAgICAgICAgKyBJbml0aWFsaXphdGlvbi9kZS1pbml0aWFsaXphdGlvbiBmdW5jdGlvbnMKLSAgKiAgICAgICAgICAgKyBQZXJpcGhlcmFsIENvbnRyb2wgZnVuY3Rpb25zIAorICAqICAgICAgICAgICArIFBlcmlwaGVyYWwgQ29udHJvbCBmdW5jdGlvbnMKICAgKiAgICAgICAgICAgKyBQZXJpcGhlcmFsIFN0YXRlIGZ1bmN0aW9ucwotICAqICAgICAgICAgCisgICoKKyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICogQGF0dGVudGlvbgorICAqCisgICogQ29weXJpZ2h0IChjKSAyMDE3IFNUTWljcm9lbGVjdHJvbmljcy4KKyAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICAqCisgICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCB1bmRlciB0ZXJtcyB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlCisgICogaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc29mdHdhcmUgY29tcG9uZW50LgorICAqIElmIG5vIExJQ0VOU0UgZmlsZSBjb21lcyB3aXRoIHRoaXMgc29mdHdhcmUsIGl0IGlzIHByb3ZpZGVkIEFTLUlTLgorICAqCisgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICBAdmVyYmF0aW0KICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgICAgICAgICAgICAgICAgICAgICAgICAjIyMjIyBGTUMgcGVyaXBoZXJhbCBmZWF0dXJlcyAjIyMjIwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLSAgWy4uXSBUaGUgRmxleGlibGUgbWVtb3J5IGNvbnRyb2xsZXIgKEZNQykgaW5jbHVkZXMgdGhyZWUgbWVtb3J5IGNvbnRyb2xsZXJzOgorICBbLi5dIFRoZSBGbGV4aWJsZSBtZW1vcnkgY29udHJvbGxlciAoRk1DKSBpbmNsdWRlcyBmb2xsb3dpbmcgbWVtb3J5IGNvbnRyb2xsZXJzOgogICAgICAgICgrKSBUaGUgTk9SL1BTUkFNIG1lbW9yeSBjb250cm9sbGVyCi0gICAgICAgKCspIFRoZSBOQU5EIG1lbW9yeSBjb250cm9sbGVyCi0gICAgICAgKCspIFRoZSBTeW5jaHJvbm91cyBEUkFNIChTRFJBTSkgY29udHJvbGxlciAKLSAgICAgICAKKyAgICAgKCspIFRoZSBOQU5EIG1lbW9yeSBjb250cm9sbGVyCisgICAgICAgKCspIFRoZSBTeW5jaHJvbm91cyBEUkFNIChTRFJBTSkgY29udHJvbGxlcgorCiAgIFsuLl0gVGhlIEZNQyBmdW5jdGlvbmFsIGJsb2NrIG1ha2VzIHRoZSBpbnRlcmZhY2Ugd2l0aCBzeW5jaHJvbm91cyBhbmQgYXN5bmNocm9ub3VzIHN0YXRpYwotICAgICAgIG1lbW9yaWVzLCBTRFJBTSBtZW1vcmllcywgYW5kIDE2LWJpdCBQQyBtZW1vcnkgY2FyZHMuIEl0cyBtYWluIHB1cnBvc2VzIGFyZToKKyAgICAgICBtZW1vcmllcyBhbmQgU0RSQU0gbWVtb3JpZXMuIEl0cyBtYWluIHB1cnBvc2VzIGFyZToKICAgICAgICAoKykgdG8gdHJhbnNsYXRlIEFIQiB0cmFuc2FjdGlvbnMgaW50byB0aGUgYXBwcm9wcmlhdGUgZXh0ZXJuYWwgZGV2aWNlIHByb3RvY29sCiAgICAgICAgKCspIHRvIG1lZXQgdGhlIGFjY2VzcyB0aW1lIHJlcXVpcmVtZW50cyBvZiB0aGUgZXh0ZXJuYWwgbWVtb3J5IGRldmljZXMKLSAgIAorCiAgIFsuLl0gQWxsIGV4dGVybmFsIG1lbW9yaWVzIHNoYXJlIHRoZSBhZGRyZXNzZXMsIGRhdGEgYW5kIGNvbnRyb2wgc2lnbmFscyB3aXRoIHRoZSBjb250cm9sbGVyLgogICAgICAgIEVhY2ggZXh0ZXJuYWwgZGV2aWNlIGlzIGFjY2Vzc2VkIGJ5IG1lYW5zIG9mIGEgdW5pcXVlIENoaXAgU2VsZWN0LiBUaGUgRk1DIHBlcmZvcm1zCiAgICAgICAgb25seSBvbmUgYWNjZXNzIGF0IGEgdGltZSB0byBhbiBleHRlcm5hbCBkZXZpY2UuCkBAIC0zMywyNyArNDQsMTUgQEAKICAgICAgICAgICAgKCsrKSBSZWFkLW9ubHkgbWVtb3J5IChST00pCiAgICAgICAgICAgICgrKykgTk9SIEZsYXNoIG1lbW9yeS9PbmVOQU5EIEZsYXNoIG1lbW9yeQogICAgICAgICAgICAoKyspIFBTUkFNICg0IG1lbW9yeSBiYW5rcykKLSAgICAgICAgICAgKCsrKSAxNi1iaXQgUEMgQ2FyZCBjb21wYXRpYmxlIGRldmljZXMKICAgICAgICAgICAgKCsrKSBUd28gYmFua3Mgb2YgTkFORCBGbGFzaCBtZW1vcnkgd2l0aCBFQ0MgaGFyZHdhcmUgdG8gY2hlY2sgdXAgdG8gOCBLYnl0ZXMgb2YKICAgICAgICAgICAgICAgICBkYXRhCiAgICAgICAgICgrKSBJbnRlcmZhY2Ugd2l0aCBzeW5jaHJvbm91cyBEUkFNIChTRFJBTSkgbWVtb3JpZXMKICAgICAgICAgKCspIEluZGVwZW5kZW50IENoaXAgU2VsZWN0IGNvbnRyb2wgZm9yIGVhY2ggbWVtb3J5IGJhbmsKICAgICAgICAgKCspIEluZGVwZW5kZW50IGNvbmZpZ3VyYXRpb24gZm9yIGVhY2ggbWVtb3J5IGJhbmsKLSAgICAgICAgICAgICAgICAgICAgCisKICAgQGVuZHZlcmJhdGltCiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICAqIEBhdHRlbnRpb24KLSAgKgotICAqIDxoMj48Y2VudGVyPiZjb3B5OyBDb3B5cmlnaHQgKGMpIDIwMTcgU1RNaWNyb2VsZWN0cm9uaWNzLgotICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuPC9jZW50ZXI+PC9oMj4KLSAgKgotICAqIFRoaXMgc29mdHdhcmUgY29tcG9uZW50IGlzIGxpY2Vuc2VkIGJ5IFNUIHVuZGVyIEJTRCAzLUNsYXVzZSBsaWNlbnNlLAotICAqIHRoZSAiTGljZW5zZSI7IFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUKLSAgKiBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQ6Ci0gICogICAgICAgICAgICAgICAgICAgICAgICBvcGVuc291cmNlLm9yZy9saWNlbnNlcy9CU0QtMy1DbGF1c2UKLSAgKgotICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAgKi8gCisgICovCiAKIC8qIEluY2x1ZGVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAjaW5jbHVkZSAic3RtMzJmN3h4X2hhbC5oIgpAQCAtNjEsMTYgKzYwLDc0IEBACiAvKiogQGFkZHRvZ3JvdXAgU1RNMzJGN3h4X0hBTF9Ecml2ZXIKICAgKiBAewogICAqLworI2lmIGRlZmluZWQoSEFMX05PUl9NT0RVTEVfRU5BQkxFRCkgfHwgZGVmaW5lZChIQUxfU1JBTV9NT0RVTEVfRU5BQkxFRCkgfHwgZGVmaW5lZChIQUxfTkFORF9NT0RVTEVfRU5BQkxFRCkgfHwgZGVmaW5lZChIQUxfU0RSQU1fTU9EVUxFX0VOQUJMRUQpCiAKIC8qKiBAZGVmZ3JvdXAgRk1DX0xMICBGTUMgTG93IExheWVyCiAgICogQGJyaWVmIEZNQyBkcml2ZXIgbW9kdWxlcwogICAqIEB7CiAgICovCiAKLSNpZiBkZWZpbmVkIChIQUxfU1JBTV9NT0RVTEVfRU5BQkxFRCkgfHwgZGVmaW5lZChIQUxfTk9SX01PRFVMRV9FTkFCTEVEKSB8fCBkZWZpbmVkKEhBTF9OQU5EX01PRFVMRV9FTkFCTEVEKSB8fCBkZWZpbmVkKEhBTF9TRFJBTV9NT0RVTEVfRU5BQkxFRCkKLQogLyogUHJpdmF0ZSB0eXBlZGVmIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KIC8qIFByaXZhdGUgZGVmaW5lIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisKKy8qKiBAZGVmZ3JvdXAgRk1DX0xMX1ByaXZhdGVfQ29uc3RhbnRzIEZNQyBMb3cgTGF5ZXIgUHJpdmF0ZSBDb25zdGFudHMKKyAgKiBAeworICAqLworCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBGTUMgcmVnaXN0ZXJzIGJpdCBtYXNrIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCisvKiAtLS0gQkNSIFJlZ2lzdGVyIC0tLSovCisvKiBCQ1IgcmVnaXN0ZXIgY2xlYXIgbWFzayAqLworCisvKiAtLS0gQlRSIFJlZ2lzdGVyIC0tLSovCisvKiBCVFIgcmVnaXN0ZXIgY2xlYXIgbWFzayAqLworI2RlZmluZSBCVFJfQ0xFQVJfTUFTSyAgICAoKHVpbnQzMl90KShGTUNfQlRSMV9BRERTRVQgfCBGTUNfQlRSMV9BRERITEQgIHxcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZNQ19CVFIxX0RBVEFTVCB8IEZNQ19CVFIxX0JVU1RVUk4gfFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRk1DX0JUUjFfQ0xLRElWIHwgRk1DX0JUUjFfREFUTEFUICB8XAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGTUNfQlRSMV9BQ0NNT0QpKQorCisvKiAtLS0gQldUUiBSZWdpc3RlciAtLS0qLworLyogQldUUiByZWdpc3RlciBjbGVhciBtYXNrICovCisjZGVmaW5lIEJXVFJfQ0xFQVJfTUFTSyAgICgodWludDMyX3QpKEZNQ19CV1RSMV9BRERTRVQgfCBGTUNfQldUUjFfQURESExEICB8XAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGTUNfQldUUjFfREFUQVNUIHwgRk1DX0JXVFIxX0JVU1RVUk4gfFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRk1DX0JXVFIxX0FDQ01PRCkpCisKKy8qIC0tLSBQQ1IgUmVnaXN0ZXIgLS0tKi8KKy8qIFBDUiByZWdpc3RlciBjbGVhciBtYXNrICovCisjZGVmaW5lIFBDUl9DTEVBUl9NQVNLICAgICgodWludDMyX3QpKEZNQ19QQ1JfUFdBSVRFTiB8IEZNQ19QQ1JfUEJLRU4gIHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGTUNfUENSX1BUWVAgICAgfCBGTUNfUENSX1BXSUQgICB8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRk1DX1BDUl9FQ0NFTiAgIHwgRk1DX1BDUl9UQ0xSICAgfCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZNQ19QQ1JfVEFSICAgICB8IEZNQ19QQ1JfRUNDUFMpKQorLyogLS0tIFBNRU0gUmVnaXN0ZXIgLS0tKi8KKy8qIFBNRU0gcmVnaXN0ZXIgY2xlYXIgbWFzayAqLworI2RlZmluZSBQTUVNX0NMRUFSX01BU0sgICAoKHVpbnQzMl90KShGTUNfUE1FTV9NRU1TRVQzICB8IEZNQ19QTUVNX01FTVdBSVQzIHxcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZNQ19QTUVNX01FTUhPTEQzIHwgRk1DX1BNRU1fTUVNSElaMykpCisKKy8qIC0tLSBQQVRUIFJlZ2lzdGVyIC0tLSovCisvKiBQQVRUIHJlZ2lzdGVyIGNsZWFyIG1hc2sgKi8KKyNkZWZpbmUgUEFUVF9DTEVBUl9NQVNLICAgKCh1aW50MzJfdCkoRk1DX1BBVFRfQVRUU0VUMyAgfCBGTUNfUEFUVF9BVFRXQUlUMyB8XAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGTUNfUEFUVF9BVFRIT0xEMyB8IEZNQ19QQVRUX0FUVEhJWjMpKQorCisKKy8qIC0tLSBTRENSIFJlZ2lzdGVyIC0tLSovCisvKiBTRENSIHJlZ2lzdGVyIGNsZWFyIG1hc2sgKi8KKyNkZWZpbmUgU0RDUl9DTEVBUl9NQVNLICAgKCh1aW50MzJfdCkoRk1DX1NEQ1IxX05DICAgIHwgRk1DX1NEQ1IxX05SICAgICB8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRk1DX1NEQ1IxX01XSUQgIHwgRk1DX1NEQ1IxX05CICAgICB8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRk1DX1NEQ1IxX0NBUyAgIHwgRk1DX1NEQ1IxX1dQICAgICB8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRk1DX1NEQ1IxX1NEQ0xLIHwgRk1DX1NEQ1IxX1JCVVJTVCB8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRk1DX1NEQ1IxX1JQSVBFKSkKKworLyogLS0tIFNEVFIgUmVnaXN0ZXIgLS0tKi8KKy8qIFNEVFIgcmVnaXN0ZXIgY2xlYXIgbWFzayAqLworI2RlZmluZSBTRFRSX0NMRUFSX01BU0sgICAoKHVpbnQzMl90KShGTUNfU0RUUjFfVE1SRCAgfCBGTUNfU0RUUjFfVFhTUiAgIHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGTUNfU0RUUjFfVFJBUyAgfCBGTUNfU0RUUjFfVFJDICAgIHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGTUNfU0RUUjFfVFdSICAgfCBGTUNfU0RUUjFfVFJQICAgIHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGTUNfU0RUUjFfVFJDRCkpCisKKy8qKgorICAqIEB9CisgICovCisKIC8qIFByaXZhdGUgbWFjcm8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAvKiBQcml2YXRlIHZhcmlhYmxlcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogLyogUHJpdmF0ZSBmdW5jdGlvbiBwcm90b3R5cGVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KQEAgLTgwLDU5ICsxMzcsNjIgQEAKICAgKiBAewogICAqLwogCisKIC8qKiBAZGVmZ3JvdXAgRk1DX0xMX0V4cG9ydGVkX0Z1bmN0aW9uc19OT1JTUkFNIEZNQyBMb3cgTGF5ZXIgTk9SIFNSQU0gRXhwb3J0ZWQgRnVuY3Rpb25zCi0gICogQGJyaWVmICBOT1JTUkFNIENvbnRyb2xsZXIgZnVuY3Rpb25zIAorICAqIEBicmllZiAgTk9SU1JBTSBDb250cm9sbGVyIGZ1bmN0aW9ucwogICAqCi0gIEB2ZXJiYXRpbSAKLSAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICAgCisgIEB2ZXJiYXRpbQorICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgICAgICAgICAgICAgICAgICAjIyMjIyBIb3cgdG8gdXNlIE5PUlNSQU0gZGV2aWNlIGRyaXZlciAjIyMjIwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLSAKLSAgWy4uXSAKKworICBbLi5dCiAgICAgVGhpcyBkcml2ZXIgY29udGFpbnMgYSBzZXQgb2YgQVBJcyB0byBpbnRlcmZhY2Ugd2l0aCB0aGUgRk1DIE5PUlNSQU0gYmFua3MgaW4gb3JkZXIKICAgICB0byBydW4gdGhlIE5PUlNSQU0gZXh0ZXJuYWwgZGV2aWNlcy4KLSAgICAgIAotICAgICgrKSBGTUMgTk9SU1JBTSBiYW5rIHJlc2V0IHVzaW5nIHRoZSBmdW5jdGlvbiBGTUNfTk9SU1JBTV9EZUluaXQoKSAKKworICAgICgrKSBGTUMgTk9SU1JBTSBiYW5rIHJlc2V0IHVzaW5nIHRoZSBmdW5jdGlvbiBGTUNfTk9SU1JBTV9EZUluaXQoKQogICAgICgrKSBGTUMgTk9SU1JBTSBiYW5rIGNvbnRyb2wgY29uZmlndXJhdGlvbiB1c2luZyB0aGUgZnVuY3Rpb24gRk1DX05PUlNSQU1fSW5pdCgpCiAgICAgKCspIEZNQyBOT1JTUkFNIGJhbmsgdGltaW5nIGNvbmZpZ3VyYXRpb24gdXNpbmcgdGhlIGZ1bmN0aW9uIEZNQ19OT1JTUkFNX1RpbWluZ19Jbml0KCkKLSAgICAoKykgRk1DIE5PUlNSQU0gYmFuayBleHRlbmRlZCB0aW1pbmcgY29uZmlndXJhdGlvbiB1c2luZyB0aGUgZnVuY3Rpb24gCisgICAgKCspIEZNQyBOT1JTUkFNIGJhbmsgZXh0ZW5kZWQgdGltaW5nIGNvbmZpZ3VyYXRpb24gdXNpbmcgdGhlIGZ1bmN0aW9uCiAgICAgICAgIEZNQ19OT1JTUkFNX0V4dGVuZGVkX1RpbWluZ19Jbml0KCkKICAgICAoKykgRk1DIE5PUlNSQU0gYmFuayBlbmFibGUvZGlzYWJsZSB3cml0ZSBvcGVyYXRpb24gdXNpbmcgdGhlIGZ1bmN0aW9ucwogICAgICAgICBGTUNfTk9SU1JBTV9Xcml0ZU9wZXJhdGlvbl9FbmFibGUoKS9GTUNfTk9SU1JBTV9Xcml0ZU9wZXJhdGlvbl9EaXNhYmxlKCkKLSAgICAgICAgCiAKIEBlbmR2ZXJiYXRpbQogICAqIEB7CiAgICovCi0gICAgICAgCisKIC8qKiBAZGVmZ3JvdXAgRk1DX0xMX05PUlNSQU1fRXhwb3J0ZWRfRnVuY3Rpb25zX0dyb3VwMSBJbml0aWFsaXphdGlvbiBhbmQgZGUtaW5pdGlhbGl6YXRpb24gZnVuY3Rpb25zCi0gICogQGJyaWVmICAgIEluaXRpYWxpemF0aW9uIGFuZCBDb25maWd1cmF0aW9uIGZ1bmN0aW9ucyAKKyAgKiBAYnJpZWYgICAgSW5pdGlhbGl6YXRpb24gYW5kIENvbmZpZ3VyYXRpb24gZnVuY3Rpb25zCiAgICoKLSAgQHZlcmJhdGltICAgIAorICBAdmVyYmF0aW0KICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgICAgICAgICAgICAgICMjIyMjIEluaXRpYWxpemF0aW9uIGFuZCBkZV9pbml0aWFsaXphdGlvbiBmdW5jdGlvbnMgIyMjIyMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0gIFsuLl0gIAorICBbLi5dCiAgICAgVGhpcyBzZWN0aW9uIHByb3ZpZGVzIGZ1bmN0aW9ucyBhbGxvd2luZyB0bzoKICAgICAoKykgSW5pdGlhbGl6ZSBhbmQgY29uZmlndXJlIHRoZSBGTUMgTk9SU1JBTSBpbnRlcmZhY2UKLSAgICAoKykgRGUtaW5pdGlhbGl6ZSB0aGUgRk1DIE5PUlNSQU0gaW50ZXJmYWNlIAotICAgICgrKSBDb25maWd1cmUgdGhlIEZNQyBjbG9jayBhbmQgYXNzb2NpYXRlZCBHUElPcyAgICAKLSAKKyAgICAoKykgRGUtaW5pdGlhbGl6ZSB0aGUgRk1DIE5PUlNSQU0gaW50ZXJmYWNlCisgICAgKCspIENvbmZpZ3VyZSB0aGUgRk1DIGNsb2NrIGFuZCBhc3NvY2lhdGVkIEdQSU9zCisKIEBlbmR2ZXJiYXRpbQogICAqIEB7CiAgICovCi0gIAorCiAvKioKICAgKiBAYnJpZWYgIEluaXRpYWxpemUgdGhlIEZNQ19OT1JTUkFNIGRldmljZSBhY2NvcmRpbmcgdG8gdGhlIHNwZWNpZmllZAogICAqICAgICAgICAgY29udHJvbCBwYXJhbWV0ZXJzIGluIHRoZSBGTUNfTk9SU1JBTV9Jbml0VHlwZURlZgogICAqIEBwYXJhbSAgRGV2aWNlIFBvaW50ZXIgdG8gTk9SU1JBTSBkZXZpY2UgaW5zdGFuY2UKLSAgKiBAcGFyYW0gIEluaXQgUG9pbnRlciB0byBOT1JTUkFNIEluaXRpYWxpemF0aW9uIHN0cnVjdHVyZSAgIAorICAqIEBwYXJhbSAgSW5pdCBQb2ludGVyIHRvIE5PUlNSQU0gSW5pdGlhbGl6YXRpb24gc3RydWN0dXJlCiAgICogQHJldHZhbCBIQUwgc3RhdHVzCiAgICovCi1IQUxfU3RhdHVzVHlwZURlZiAgRk1DX05PUlNSQU1fSW5pdChGTUNfTk9SU1JBTV9UeXBlRGVmICpEZXZpY2UsIEZNQ19OT1JTUkFNX0luaXRUeXBlRGVmKiBJbml0KQoteyAKLSAgdWludDMyX3QgdG1wciA9IDA7Ci0gICAgCitIQUxfU3RhdHVzVHlwZURlZiAgRk1DX05PUlNSQU1fSW5pdChGTUNfTk9SU1JBTV9UeXBlRGVmICpEZXZpY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGTUNfTk9SU1JBTV9Jbml0VHlwZURlZiAqSW5pdCkKK3sKKyAgdWludDMyX3QgZmxhc2hhY2Nlc3M7CisgIHVpbnQzMl90IGJ0Y3JfcmVnOworICB1aW50MzJfdCBtYXNrOworCiAgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCiAgIGFzc2VydF9wYXJhbShJU19GTUNfTk9SU1JBTV9ERVZJQ0UoRGV2aWNlKSk7CiAgIGFzc2VydF9wYXJhbShJU19GTUNfTk9SU1JBTV9CQU5LKEluaXQtPk5TQmFuaykpOwpAQCAtMTQ3LDEwNiArMjA3LDEyNCBAQAogICBhc3NlcnRfcGFyYW0oSVNfRk1DX0VYVEVOREVEX01PREUoSW5pdC0+RXh0ZW5kZWRNb2RlKSk7CiAgIGFzc2VydF9wYXJhbShJU19GTUNfQVNZTldBSVQoSW5pdC0+QXN5bmNocm9ub3VzV2FpdCkpOwogICBhc3NlcnRfcGFyYW0oSVNfRk1DX1dSSVRFX0JVUlNUKEluaXQtPldyaXRlQnVyc3QpKTsKLSAgYXNzZXJ0X3BhcmFtKElTX0ZNQ19DT05USU5PVVNfQ0xPQ0soSW5pdC0+Q29udGludW91c0Nsb2NrKSk7IAorICBhc3NlcnRfcGFyYW0oSVNfRk1DX0NPTlRJTk9VU19DTE9DSyhJbml0LT5Db250aW51b3VzQ2xvY2spKTsKICAgYXNzZXJ0X3BhcmFtKElTX0ZNQ19XUklURV9GSUZPKEluaXQtPldyaXRlRmlmbykpOwogICBhc3NlcnRfcGFyYW0oSVNfRk1DX1BBR0VTSVpFKEluaXQtPlBhZ2VTaXplKSk7CiAKLSAgLyogR2V0IHRoZSBCVENSIHJlZ2lzdGVyIHZhbHVlICovCi0gIHRtcHIgPSBEZXZpY2UtPkJUQ1JbSW5pdC0+TlNCYW5rXTsKLSAgCi0gIC8qIENsZWFyIE1CS0VOLCBNVVhFTiwgTVRZUCwgTVdJRCwgRkFDQ0VOLCBCVVJTVEVOLCBXQUlUUE9MLCBXQUlUQ0ZHLCBXUkVOLAotICAgICAgICAgICBXQUlURU4sIEVYVE1PRCwgQVNZTkNXQUlULCBDQlVSU1RSVyBhbmQgQ0NMS0VOIGJpdHMgKi8KLSAgdG1wciAmPSAoKHVpbnQzMl90KX4oRk1DX0JDUjFfTUJLRU4gICAgIHwgRk1DX0JDUjFfTVVYRU4gICAgfCBGTUNfQkNSMV9NVFlQICAgICB8IFwKLSAgICAgICAgICAgICAgICAgICAgICAgRk1DX0JDUjFfTVdJRCAgICAgIHwgRk1DX0JDUjFfRkFDQ0VOICAgfCBGTUNfQkNSMV9CVVJTVEVOICB8IFwKLSAgICAgICAgICAgICAgICAgICAgICAgRk1DX0JDUjFfV0FJVFBPTCAgIHwgRk1DX0JDUjFfQ1BTSVpFICAgIHwgRk1DX0JDUjFfV0FJVENGRyAgfCBcCi0gICAgICAgICAgICAgICAgICAgICAgIEZNQ19CQ1IxX1dSRU4gICAgICB8IEZNQ19CQ1IxX1dBSVRFTiAgIHwgRk1DX0JDUjFfRVhUTU9EICAgfCBcCi0gICAgICAgICAgICAgICAgICAgICAgIEZNQ19CQ1IxX0FTWU5DV0FJVCB8IEZNQ19CQ1IxX0NCVVJTVFJXIHwgRk1DX0JDUjFfQ0NMS0VOIHwgRk1DX0JDUjFfV0ZESVMpKTsKLSAgCisgIC8qIERpc2FibGUgTk9SU1JBTSBEZXZpY2UgKi8KKyAgX19GTUNfTk9SU1JBTV9ESVNBQkxFKERldmljZSwgSW5pdC0+TlNCYW5rKTsKKwogICAvKiBTZXQgTk9SU1JBTSBkZXZpY2UgY29udHJvbCBwYXJhbWV0ZXJzICovCi0gIHRtcHIgfD0gKHVpbnQzMl90KShJbml0LT5EYXRhQWRkcmVzc011eCAgICAgICB8XAotICAgICAgICAgICAgICAgICAgICBJbml0LT5NZW1vcnlUeXBlICAgICAgICAgICB8XAotICAgICAgICAgICAgICAgICAgICBJbml0LT5NZW1vcnlEYXRhV2lkdGggICAgICB8XAotICAgICAgICAgICAgICAgICAgICBJbml0LT5CdXJzdEFjY2Vzc01vZGUgICAgICB8XAotICAgICAgICAgICAgICAgICAgICBJbml0LT5XYWl0U2lnbmFsUG9sYXJpdHkgICB8XAotICAgICAgICAgICAgICAgICAgICBJbml0LT5XYWl0U2lnbmFsQWN0aXZlICAgICB8XAotICAgICAgICAgICAgICAgICAgICBJbml0LT5Xcml0ZU9wZXJhdGlvbiAgICAgICB8XAotICAgICAgICAgICAgICAgICAgICBJbml0LT5XYWl0U2lnbmFsICAgICAgICAgICB8XAotICAgICAgICAgICAgICAgICAgICBJbml0LT5FeHRlbmRlZE1vZGUgICAgICAgICB8XAotICAgICAgICAgICAgICAgICAgICBJbml0LT5Bc3luY2hyb25vdXNXYWl0ICAgICB8XAotICAgICAgICAgICAgICAgICAgICBJbml0LT5Xcml0ZUJ1cnN0ICAgICAgICAgICB8XAotICAgICAgICAgICAgICAgICAgICBJbml0LT5Db250aW51b3VzQ2xvY2sgICAgICB8XAotICAgICAgICAgICAgICAgICAgICBJbml0LT5QYWdlU2l6ZSAgICAgICAgICAgICB8XAotICAgICAgICAgICAgICAgICAgICBJbml0LT5Xcml0ZUZpZm8pOwotICAgICAgICAgICAgICAgICAgICAKLSAgaWYoSW5pdC0+TWVtb3J5VHlwZSA9PSBGTUNfTUVNT1JZX1RZUEVfTk9SKQorICBpZiAoSW5pdC0+TWVtb3J5VHlwZSA9PSBGTUNfTUVNT1JZX1RZUEVfTk9SKQogICB7Ci0gICAgdG1wciB8PSAodWludDMyX3QpRk1DX05PUlNSQU1fRkxBU0hfQUNDRVNTX0VOQUJMRTsKKyAgICBmbGFzaGFjY2VzcyA9IEZNQ19OT1JTUkFNX0ZMQVNIX0FDQ0VTU19FTkFCTEU7CiAgIH0KLSAgCi0gIERldmljZS0+QlRDUltJbml0LT5OU0JhbmtdID0gdG1wcjsKKyAgZWxzZQorICB7CisgICAgZmxhc2hhY2Nlc3MgPSBGTUNfTk9SU1JBTV9GTEFTSF9BQ0NFU1NfRElTQUJMRTsKKyAgfQorCisgIGJ0Y3JfcmVnID0gKGZsYXNoYWNjZXNzICAgICAgICAgICAgICAgICAgIHwgXAorICAgICAgICAgICAgICBJbml0LT5EYXRhQWRkcmVzc011eCAgICAgICAgICB8IFwKKyAgICAgICAgICAgICAgSW5pdC0+TWVtb3J5VHlwZSAgICAgICAgICAgICAgfCBcCisgICAgICAgICAgICAgIEluaXQtPk1lbW9yeURhdGFXaWR0aCAgICAgICAgIHwgXAorICAgICAgICAgICAgICBJbml0LT5CdXJzdEFjY2Vzc01vZGUgICAgICAgICB8IFwKKyAgICAgICAgICAgICAgSW5pdC0+V2FpdFNpZ25hbFBvbGFyaXR5ICAgICAgfCBcCisgICAgICAgICAgICAgIEluaXQtPldhaXRTaWduYWxBY3RpdmUgICAgICAgIHwgXAorICAgICAgICAgICAgICBJbml0LT5Xcml0ZU9wZXJhdGlvbiAgICAgICAgICB8IFwKKyAgICAgICAgICAgICAgSW5pdC0+V2FpdFNpZ25hbCAgICAgICAgICAgICAgfCBcCisgICAgICAgICAgICAgIEluaXQtPkV4dGVuZGVkTW9kZSAgICAgICAgICAgIHwgXAorICAgICAgICAgICAgICBJbml0LT5Bc3luY2hyb25vdXNXYWl0ICAgICAgICB8IFwKKyAgICAgICAgICAgICAgSW5pdC0+V3JpdGVCdXJzdCk7CisKKyAgYnRjcl9yZWcgfD0gSW5pdC0+Q29udGludW91c0Nsb2NrOworICBidGNyX3JlZyB8PSBJbml0LT5Xcml0ZUZpZm87CisgIGJ0Y3JfcmVnIHw9IEluaXQtPlBhZ2VTaXplOworCisgIG1hc2sgPSAoRk1DX0JDUjFfTUJLRU4gICAgICAgICAgICAgICAgfAorICAgICAgICAgIEZNQ19CQ1IxX01VWEVOICAgICAgICAgICAgICAgIHwKKyAgICAgICAgICBGTUNfQkNSMV9NVFlQICAgICAgICAgICAgICAgICB8CisgICAgICAgICAgRk1DX0JDUjFfTVdJRCAgICAgICAgICAgICAgICAgfAorICAgICAgICAgIEZNQ19CQ1IxX0ZBQ0NFTiAgICAgICAgICAgICAgIHwKKyAgICAgICAgICBGTUNfQkNSMV9CVVJTVEVOICAgICAgICAgICAgICB8CisgICAgICAgICAgRk1DX0JDUjFfV0FJVFBPTCAgICAgICAgICAgICAgfAorICAgICAgICAgIEZNQ19CQ1IxX1dBSVRDRkcgICAgICAgICAgICAgIHwKKyAgICAgICAgICBGTUNfQkNSMV9XUkVOICAgICAgICAgICAgICAgICB8CisgICAgICAgICAgRk1DX0JDUjFfV0FJVEVOICAgICAgICAgICAgICAgfAorICAgICAgICAgIEZNQ19CQ1IxX0VYVE1PRCAgICAgICAgICAgICAgIHwKKyAgICAgICAgICBGTUNfQkNSMV9BU1lOQ1dBSVQgICAgICAgICAgICB8CisgICAgICAgICAgRk1DX0JDUjFfQ0JVUlNUUlcpOworCisgIG1hc2sgfD0gRk1DX0JDUjFfQ0NMS0VOOworICBtYXNrIHw9IEZNQ19CQ1IxX1dGRElTOworICBtYXNrIHw9IEZNQ19CQ1IxX0NQU0laRTsKKworICBNT0RJRllfUkVHKERldmljZS0+QlRDUltJbml0LT5OU0JhbmtdLCBtYXNrLCBidGNyX3JlZyk7CiAKICAgLyogQ29uZmlndXJlIHN5bmNocm9ub3VzIG1vZGUgd2hlbiBDb250aW51b3VzIGNsb2NrIGlzIGVuYWJsZWQgZm9yIGJhbmsyLi40ICovCi0gIGlmKChJbml0LT5Db250aW51b3VzQ2xvY2sgPT0gRk1DX0NPTlRJTlVPVVNfQ0xPQ0tfU1lOQ19BU1lOQykgJiYgKEluaXQtPk5TQmFuayAhPSBGTUNfTk9SU1JBTV9CQU5LMSkpCi0gIHsgCi0gICAgRGV2aWNlLT5CVENSW0ZNQ19OT1JTUkFNX0JBTksxXSB8PSAodWludDMyX3QpKEluaXQtPkNvbnRpbnVvdXNDbG9jayk7Ci0gIH0KLSAgaWYoSW5pdC0+TlNCYW5rICE9IEZNQ19OT1JTUkFNX0JBTksxKQorICBpZiAoKEluaXQtPkNvbnRpbnVvdXNDbG9jayA9PSBGTUNfQ09OVElOVU9VU19DTE9DS19TWU5DX0FTWU5DKSAmJiAoSW5pdC0+TlNCYW5rICE9IEZNQ19OT1JTUkFNX0JBTksxKSkKICAgewotICAgIERldmljZS0+QlRDUltGTUNfTk9SU1JBTV9CQU5LMV0gfD0gKHVpbnQzMl90KShJbml0LT5Xcml0ZUZpZm8pOyAgICAgICAgICAgICAgCisgICAgTU9ESUZZX1JFRyhEZXZpY2UtPkJUQ1JbRk1DX05PUlNSQU1fQkFOSzFdLCBGTUNfQkNSMV9DQ0xLRU4sIEluaXQtPkNvbnRpbnVvdXNDbG9jayk7CiAgIH0KLSAgCisKKyAgaWYgKEluaXQtPk5TQmFuayAhPSBGTUNfTk9SU1JBTV9CQU5LMSkKKyAgeworICAgIC8qIENvbmZpZ3VyZSBXcml0ZSBGSUZPIG1vZGUgd2hlbiBXcml0ZSBGaWZvIGlzIGVuYWJsZWQgZm9yIGJhbmsyLi40ICovCisgICAgU0VUX0JJVChEZXZpY2UtPkJUQ1JbRk1DX05PUlNSQU1fQkFOSzFdLCAodWludDMyX3QpKEluaXQtPldyaXRlRmlmbykpOworICB9CisKICAgcmV0dXJuIEhBTF9PSzsKIH0KIAotCiAvKioKLSAgKiBAYnJpZWYgIERlSW5pdGlhbGl6ZSB0aGUgRk1DX05PUlNSQU0gcGVyaXBoZXJhbCAKKyAgKiBAYnJpZWYgIERlSW5pdGlhbGl6ZSB0aGUgRk1DX05PUlNSQU0gcGVyaXBoZXJhbAogICAqIEBwYXJhbSAgRGV2aWNlIFBvaW50ZXIgdG8gTk9SU1JBTSBkZXZpY2UgaW5zdGFuY2UKLSAgKiBAcGFyYW0gIEV4RGV2aWNlIFBvaW50ZXIgdG8gTk9SU1JBTSBleHRlbmRlZCBtb2RlIGRldmljZSBpbnN0YW5jZSAgCi0gICogQHBhcmFtICBCYW5rIE5PUlNSQU0gYmFuayBudW1iZXIgIAorICAqIEBwYXJhbSAgRXhEZXZpY2UgUG9pbnRlciB0byBOT1JTUkFNIGV4dGVuZGVkIG1vZGUgZGV2aWNlIGluc3RhbmNlCisgICogQHBhcmFtICBCYW5rIE5PUlNSQU0gYmFuayBudW1iZXIKICAgKiBAcmV0dmFsIEhBTCBzdGF0dXMKICAgKi8KLUhBTF9TdGF0dXNUeXBlRGVmIEZNQ19OT1JTUkFNX0RlSW5pdChGTUNfTk9SU1JBTV9UeXBlRGVmICpEZXZpY2UsIEZNQ19OT1JTUkFNX0VYVEVOREVEX1R5cGVEZWYgKkV4RGV2aWNlLCB1aW50MzJfdCBCYW5rKQorSEFMX1N0YXR1c1R5cGVEZWYgRk1DX05PUlNSQU1fRGVJbml0KEZNQ19OT1JTUkFNX1R5cGVEZWYgKkRldmljZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGTUNfTk9SU1JBTV9FWFRFTkRFRF9UeXBlRGVmICpFeERldmljZSwgdWludDMyX3QgQmFuaykKIHsKICAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8KICAgYXNzZXJ0X3BhcmFtKElTX0ZNQ19OT1JTUkFNX0RFVklDRShEZXZpY2UpKTsKICAgYXNzZXJ0X3BhcmFtKElTX0ZNQ19OT1JTUkFNX0VYVEVOREVEX0RFVklDRShFeERldmljZSkpOwogICBhc3NlcnRfcGFyYW0oSVNfRk1DX05PUlNSQU1fQkFOSyhCYW5rKSk7Ci0gIAorCiAgIC8qIERpc2FibGUgdGhlIEZNQ19OT1JTUkFNIGRldmljZSAqLwogICBfX0ZNQ19OT1JTUkFNX0RJU0FCTEUoRGV2aWNlLCBCYW5rKTsKLSAgCisKICAgLyogRGUtaW5pdGlhbGl6ZSB0aGUgRk1DX05PUlNSQU0gZGV2aWNlICovCiAgIC8qIEZNQ19OT1JTUkFNX0JBTksxICovCi0gIGlmKEJhbmsgPT0gRk1DX05PUlNSQU1fQkFOSzEpCisgIGlmIChCYW5rID09IEZNQ19OT1JTUkFNX0JBTksxKQogICB7Ci0gICAgRGV2aWNlLT5CVENSW0JhbmtdID0gMHgwMDAwMzBEQjsgICAgCisgICAgRGV2aWNlLT5CVENSW0JhbmtdID0gMHgwMDAwMzBEQlU7CiAgIH0KICAgLyogRk1DX05PUlNSQU1fQkFOSzIsIEZNQ19OT1JTUkFNX0JBTkszIG9yIEZNQ19OT1JTUkFNX0JBTks0ICovCiAgIGVsc2UKLSAgeyAgIAotICAgIERldmljZS0+QlRDUltCYW5rXSA9IDB4MDAwMDMwRDI7IAorICB7CisgICAgRGV2aWNlLT5CVENSW0JhbmtdID0gMHgwMDAwMzBEMlU7CiAgIH0KLSAgCi0gIERldmljZS0+QlRDUltCYW5rICsgMV0gPSAweDBGRkZGRkZGOwotICBFeERldmljZS0+QldUUltCYW5rXSAgID0gMHgwRkZGRkZGRjsKLSAgIAorCisgIERldmljZS0+QlRDUltCYW5rICsgMVVdID0gMHgwRkZGRkZGRlU7CisgIEV4RGV2aWNlLT5CV1RSW0JhbmtdICAgPSAweDBGRkZGRkZGVTsKKwogICByZXR1cm4gSEFMX09LOwogfQogCi0KIC8qKgogICAqIEBicmllZiAgSW5pdGlhbGl6ZSB0aGUgRk1DX05PUlNSQU0gVGltaW5nIGFjY29yZGluZyB0byB0aGUgc3BlY2lmaWVkCiAgICogICAgICAgICBwYXJhbWV0ZXJzIGluIHRoZSBGTUNfTk9SU1JBTV9UaW1pbmdUeXBlRGVmCiAgICogQHBhcmFtICBEZXZpY2UgUG9pbnRlciB0byBOT1JTUkFNIGRldmljZSBpbnN0YW5jZQogICAqIEBwYXJhbSAgVGltaW5nIFBvaW50ZXIgdG8gTk9SU1JBTSBUaW1pbmcgc3RydWN0dXJlCi0gICogQHBhcmFtICBCYW5rIE5PUlNSQU0gYmFuayBudW1iZXIgIAorICAqIEBwYXJhbSAgQmFuayBOT1JTUkFNIGJhbmsgbnVtYmVyCiAgICogQHJldHZhbCBIQUwgc3RhdHVzCiAgICovCi1IQUxfU3RhdHVzVHlwZURlZiBGTUNfTk9SU1JBTV9UaW1pbmdfSW5pdChGTUNfTk9SU1JBTV9UeXBlRGVmICpEZXZpY2UsIEZNQ19OT1JTUkFNX1RpbWluZ1R5cGVEZWYgKlRpbWluZywgdWludDMyX3QgQmFuaykKK0hBTF9TdGF0dXNUeXBlRGVmIEZNQ19OT1JTUkFNX1RpbWluZ19Jbml0KEZNQ19OT1JTUkFNX1R5cGVEZWYgKkRldmljZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZNQ19OT1JTUkFNX1RpbWluZ1R5cGVEZWYgKlRpbWluZywgdWludDMyX3QgQmFuaykKIHsKLSAgdWludDMyX3QgdG1wciA9IDA7Ci0gIAorICB1aW50MzJfdCB0bXByOworCiAgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCiAgIGFzc2VydF9wYXJhbShJU19GTUNfTk9SU1JBTV9ERVZJQ0UoRGV2aWNlKSk7CiAgIGFzc2VydF9wYXJhbShJU19GTUNfQUREUkVTU19TRVRVUF9USU1FKFRpbWluZy0+QWRkcmVzc1NldHVwVGltZSkpOwpAQCAtMjU3LDM2ICszMzUsMjUgQEAKICAgYXNzZXJ0X3BhcmFtKElTX0ZNQ19EQVRBX0xBVEVOQ1koVGltaW5nLT5EYXRhTGF0ZW5jeSkpOwogICBhc3NlcnRfcGFyYW0oSVNfRk1DX0FDQ0VTU19NT0RFKFRpbWluZy0+QWNjZXNzTW9kZSkpOwogICBhc3NlcnRfcGFyYW0oSVNfRk1DX05PUlNSQU1fQkFOSyhCYW5rKSk7Ci0gIAotICAvKiBHZXQgdGhlIEJUQ1IgcmVnaXN0ZXIgdmFsdWUgKi8KLSAgdG1wciA9IERldmljZS0+QlRDUltCYW5rICsgMV07CiAKLSAgLyogQ2xlYXIgQUREU0VULCBBRERITEQsIERBVEFTVCwgQlVTVFVSTiwgQ0xLRElWLCBEQVRMQVQgYW5kIEFDQ01PRCBiaXRzICovCi0gIHRtcHIgJj0gKCh1aW50MzJfdCl+KEZNQ19CVFIxX0FERFNFVCAgfCBGTUNfQlRSMV9BRERITEQgfCBGTUNfQlRSMV9EQVRBU1QgfCBcCi0gICAgICAgICAgICAgICAgICAgICAgIEZNQ19CVFIxX0JVU1RVUk4gfCBGTUNfQlRSMV9DTEtESVYgfCBGTUNfQlRSMV9EQVRMQVQgfCBcCi0gICAgICAgICAgICAgICAgICAgICAgIEZNQ19CVFIxX0FDQ01PRCkpOwotICAKLSAgLyogU2V0IEZNQ19OT1JTUkFNIGRldmljZSB0aW1pbmcgcGFyYW1ldGVycyAqLyAgCi0gIHRtcHIgfD0gKHVpbnQzMl90KShUaW1pbmctPkFkZHJlc3NTZXR1cFRpbWUgICAgICAgICAgICAgICAgICB8XAotICAgICAgICAgICAgICAgICAgICgoVGltaW5nLT5BZGRyZXNzSG9sZFRpbWUpIDw8IDQpICAgICAgICAgIHxcCi0gICAgICAgICAgICAgICAgICAgKChUaW1pbmctPkRhdGFTZXR1cFRpbWUpIDw8IDgpICAgICAgICAgICAgfFwKLSAgICAgICAgICAgICAgICAgICAoKFRpbWluZy0+QnVzVHVybkFyb3VuZER1cmF0aW9uKSA8PCAxNikgICB8XAotICAgICAgICAgICAgICAgICAgICgoKFRpbWluZy0+Q0xLRGl2aXNpb24pLTEpIDw8IDIwKSAgICAgICAgIHxcCi0gICAgICAgICAgICAgICAgICAgKCgoVGltaW5nLT5EYXRhTGF0ZW5jeSktMikgPDwgMjQpICAgICAgICAgfFwKLSAgICAgICAgICAgICAgICAgICAgKFRpbWluZy0+QWNjZXNzTW9kZSkKLSAgICAgICAgICAgICAgICAgICAgKTsKLSAgCi0gIERldmljZS0+QlRDUltCYW5rICsgMV0gPSB0bXByOwotICAKKyAgLyogU2V0IEZNQ19OT1JTUkFNIGRldmljZSB0aW1pbmcgcGFyYW1ldGVycyAqLworICBNT0RJRllfUkVHKERldmljZS0+QlRDUltCYW5rICsgMVVdLCBCVFJfQ0xFQVJfTUFTSywgKFRpbWluZy0+QWRkcmVzc1NldHVwVGltZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChUaW1pbmctPkFkZHJlc3NIb2xkVGltZSkgICAgICAgIDw8IEZNQ19CVFIxX0FEREhMRF9Qb3MpICB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChUaW1pbmctPkRhdGFTZXR1cFRpbWUpICAgICAgICAgIDw8IEZNQ19CVFIxX0RBVEFTVF9Qb3MpICB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChUaW1pbmctPkJ1c1R1cm5Bcm91bmREdXJhdGlvbikgIDw8IEZNQ19CVFIxX0JVU1RVUk5fUG9zKSB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCgoVGltaW5nLT5DTEtEaXZpc2lvbikgLSAxVSkgICAgIDw8IEZNQ19CVFIxX0NMS0RJVl9Qb3MpICB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCgoVGltaW5nLT5EYXRhTGF0ZW5jeSkgLSAyVSkgICAgIDw8IEZNQ19CVFIxX0RBVExBVF9Qb3MpICB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFRpbWluZy0+QWNjZXNzTW9kZSkpKTsKKwogICAvKiBDb25maWd1cmUgQ2xvY2sgZGl2aXNpb24gdmFsdWUgKGluIE5PUlNSQU0gYmFuayAxKSB3aGVuIGNvbnRpbnVvdXMgY2xvY2sgaXMgZW5hYmxlZCAqLwotICBpZihIQUxfSVNfQklUX1NFVChEZXZpY2UtPkJUQ1JbRk1DX05PUlNSQU1fQkFOSzFdLCBGTUNfQkNSMV9DQ0xLRU4pKQorICBpZiAoSEFMX0lTX0JJVF9TRVQoRGV2aWNlLT5CVENSW0ZNQ19OT1JTUkFNX0JBTksxXSwgRk1DX0JDUjFfQ0NMS0VOKSkKICAgewotICAgIHRtcHIgPSAodWludDMyX3QpKERldmljZS0+QlRDUltGTUNfTk9SU1JBTV9CQU5LMSArIDFdICYgfigoKHVpbnQzMl90KTB4MEYpIDw8IDIwKSk7IAotICAgIHRtcHIgfD0gKHVpbnQzMl90KSgoKFRpbWluZy0+Q0xLRGl2aXNpb24pLTEpIDw8IDIwKTsKLSAgICBEZXZpY2UtPkJUQ1JbRk1DX05PUlNSQU1fQkFOSzEgKyAxXSA9IHRtcHI7Ci0gIH0gIAotICAKLSAgcmV0dXJuIEhBTF9PSzsgICAKKyAgICB0bXByID0gKHVpbnQzMl90KShEZXZpY2UtPkJUQ1JbRk1DX05PUlNSQU1fQkFOSzEgKyAxVV0gJiB+KCgweDBGVSkgPDwgRk1DX0JUUjFfQ0xLRElWX1BvcykpOworICAgIHRtcHIgfD0gKHVpbnQzMl90KSgoKFRpbWluZy0+Q0xLRGl2aXNpb24pIC0gMVUpIDw8IEZNQ19CVFIxX0NMS0RJVl9Qb3MpOworICAgIE1PRElGWV9SRUcoRGV2aWNlLT5CVENSW0ZNQ19OT1JTUkFNX0JBTksxICsgMVVdLCBGTUNfQlRSMV9DTEtESVYsIHRtcHIpOworICB9CisKKyAgcmV0dXJuIEhBTF9PSzsKIH0KIAogLyoqCkBAIC0yOTQsNjMgKzM2MSw1NyBAQAogICAqICAgICAgICAgcGFyYW1ldGVycyBpbiB0aGUgRk1DX05PUlNSQU1fVGltaW5nVHlwZURlZgogICAqIEBwYXJhbSAgRGV2aWNlIFBvaW50ZXIgdG8gTk9SU1JBTSBkZXZpY2UgaW5zdGFuY2UKICAgKiBAcGFyYW0gIFRpbWluZyBQb2ludGVyIHRvIE5PUlNSQU0gVGltaW5nIHN0cnVjdHVyZQotICAqIEBwYXJhbSAgQmFuayBOT1JTUkFNIGJhbmsgbnVtYmVyICAKKyAgKiBAcGFyYW0gIEJhbmsgTk9SU1JBTSBiYW5rIG51bWJlcgorICAqIEBwYXJhbSAgRXh0ZW5kZWRNb2RlIEZNQyBFeHRlbmRlZCBNb2RlCisgICogICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoKKyAgKiAgICAgICAgICAgIEBhcmcgRk1DX0VYVEVOREVEX01PREVfRElTQUJMRQorICAqICAgICAgICAgICAgQGFyZyBGTUNfRVhURU5ERURfTU9ERV9FTkFCTEUKICAgKiBAcmV0dmFsIEhBTCBzdGF0dXMKICAgKi8KLUhBTF9TdGF0dXNUeXBlRGVmICBGTUNfTk9SU1JBTV9FeHRlbmRlZF9UaW1pbmdfSW5pdChGTUNfTk9SU1JBTV9FWFRFTkRFRF9UeXBlRGVmICpEZXZpY2UsIEZNQ19OT1JTUkFNX1RpbWluZ1R5cGVEZWYgKlRpbWluZywgdWludDMyX3QgQmFuaywgdWludDMyX3QgRXh0ZW5kZWRNb2RlKQoteyAgCi0gIHVpbnQzMl90IHRtcHIgPSAwOwotIAorSEFMX1N0YXR1c1R5cGVEZWYgRk1DX05PUlNSQU1fRXh0ZW5kZWRfVGltaW5nX0luaXQoRk1DX05PUlNSQU1fRVhURU5ERURfVHlwZURlZiAqRGV2aWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRk1DX05PUlNSQU1fVGltaW5nVHlwZURlZiAqVGltaW5nLCB1aW50MzJfdCBCYW5rLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgRXh0ZW5kZWRNb2RlKQorewogICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLwogICBhc3NlcnRfcGFyYW0oSVNfRk1DX0VYVEVOREVEX01PREUoRXh0ZW5kZWRNb2RlKSk7Ci0gIAorCiAgIC8qIFNldCBOT1JTUkFNIGRldmljZSB0aW1pbmcgcmVnaXN0ZXIgZm9yIHdyaXRlIGNvbmZpZ3VyYXRpb24sIGlmIGV4dGVuZGVkIG1vZGUgaXMgdXNlZCAqLwotICBpZihFeHRlbmRlZE1vZGUgPT0gRk1DX0VYVEVOREVEX01PREVfRU5BQkxFKQorICBpZiAoRXh0ZW5kZWRNb2RlID09IEZNQ19FWFRFTkRFRF9NT0RFX0VOQUJMRSkKICAgewogICAgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCi0gICAgYXNzZXJ0X3BhcmFtKElTX0ZNQ19OT1JTUkFNX0VYVEVOREVEX0RFVklDRShEZXZpY2UpKTsgIAorICAgIGFzc2VydF9wYXJhbShJU19GTUNfTk9SU1JBTV9FWFRFTkRFRF9ERVZJQ0UoRGV2aWNlKSk7CiAgICAgYXNzZXJ0X3BhcmFtKElTX0ZNQ19BRERSRVNTX1NFVFVQX1RJTUUoVGltaW5nLT5BZGRyZXNzU2V0dXBUaW1lKSk7CiAgICAgYXNzZXJ0X3BhcmFtKElTX0ZNQ19BRERSRVNTX0hPTERfVElNRShUaW1pbmctPkFkZHJlc3NIb2xkVGltZSkpOwogICAgIGFzc2VydF9wYXJhbShJU19GTUNfREFUQVNFVFVQX1RJTUUoVGltaW5nLT5EYXRhU2V0dXBUaW1lKSk7CiAgICAgYXNzZXJ0X3BhcmFtKElTX0ZNQ19UVVJOQVJPVU5EX1RJTUUoVGltaW5nLT5CdXNUdXJuQXJvdW5kRHVyYXRpb24pKTsKLSAgICBhc3NlcnRfcGFyYW0oSVNfRk1DX0NMS19ESVYoVGltaW5nLT5DTEtEaXZpc2lvbikpOwotICAgIGFzc2VydF9wYXJhbShJU19GTUNfREFUQV9MQVRFTkNZKFRpbWluZy0+RGF0YUxhdGVuY3kpKTsKICAgICBhc3NlcnRfcGFyYW0oSVNfRk1DX0FDQ0VTU19NT0RFKFRpbWluZy0+QWNjZXNzTW9kZSkpOwotICAgIGFzc2VydF9wYXJhbShJU19GTUNfTk9SU1JBTV9CQU5LKEJhbmspKTsgIAotICAgIAotICAgIC8qIEdldCB0aGUgQldUUiByZWdpc3RlciB2YWx1ZSAqLwotICAgIHRtcHIgPSBEZXZpY2UtPkJXVFJbQmFua107CisgICAgYXNzZXJ0X3BhcmFtKElTX0ZNQ19OT1JTUkFNX0JBTksoQmFuaykpOwogCi0gICAgLyogQ2xlYXIgQUREU0VULCBBRERITEQsIERBVEFTVCwgQlVTVFVSTiwgQ0xLRElWLCBEQVRMQVQgYW5kIEFDQ01PRCBiaXRzICovCi0gICAgdG1wciAmPSAoKHVpbnQzMl90KX4oRk1DX0JXVFIxX0FERFNFVCAgfCBGTUNfQldUUjFfQURESExEIHwgRk1DX0JXVFIxX0RBVEFTVCB8IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICBGTUNfQldUUjFfQlVTVFVSTiB8IEZNQ19CV1RSMV9BQ0NNT0QpKTsKLSAgICAKLSAgICB0bXByIHw9ICh1aW50MzJfdCkoVGltaW5nLT5BZGRyZXNzU2V0dXBUaW1lICAgICAgICAgICAgICAgICB8XAotICAgICAgICAgICAgICAgICAgICAgICgoVGltaW5nLT5BZGRyZXNzSG9sZFRpbWUpIDw8IDQpICAgICAgICAgIHxcCi0gICAgICAgICAgICAgICAgICAgICAgKChUaW1pbmctPkRhdGFTZXR1cFRpbWUpIDw8IDgpICAgICAgICAgICAgfFwKLSAgICAgICAgICAgICAgICAgICAgICAoKFRpbWluZy0+QnVzVHVybkFyb3VuZER1cmF0aW9uKSA8PCAxNikgICB8XAotICAgICAgICAgICAgICAgICAgICAgIChUaW1pbmctPkFjY2Vzc01vZGUpKTsKLQotICAgIERldmljZS0+QldUUltCYW5rXSA9IHRtcHI7CisgICAgLyogU2V0IE5PUlNSQU0gZGV2aWNlIHRpbWluZyByZWdpc3RlciBmb3Igd3JpdGUgY29uZmlndXJhdGlvbiwgaWYgZXh0ZW5kZWQgbW9kZSBpcyB1c2VkICovCisgICAgTU9ESUZZX1JFRyhEZXZpY2UtPkJXVFJbQmFua10sIEJXVFJfQ0xFQVJfTUFTSywgKFRpbWluZy0+QWRkcmVzc1NldHVwVGltZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChUaW1pbmctPkFkZHJlc3NIb2xkVGltZSkgICAgICAgIDw8IEZNQ19CV1RSMV9BRERITERfUG9zKSAgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFRpbWluZy0+RGF0YVNldHVwVGltZSkgICAgICAgICAgPDwgRk1DX0JXVFIxX0RBVEFTVF9Qb3MpICB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbWluZy0+QWNjZXNzTW9kZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChUaW1pbmctPkJ1c1R1cm5Bcm91bmREdXJhdGlvbikgIDw8IEZNQ19CV1RSMV9CVVNUVVJOX1BvcykpKTsKICAgfQogICBlbHNlCiAgIHsKLSAgICBEZXZpY2UtPkJXVFJbQmFua10gPSAweDBGRkZGRkZGOwotICB9ICAgCi0gIAotICByZXR1cm4gSEFMX09LOyAgCisgICAgRGV2aWNlLT5CV1RSW0JhbmtdID0gMHgwRkZGRkZGRlU7CisgIH0KKworICByZXR1cm4gSEFMX09LOwogfQogLyoqCiAgICogQH0KICAgKi8KIAogLyoqIEBhZGR0b2dyb3VwIEZNQ19MTF9OT1JTUkFNX1ByaXZhdGVfRnVuY3Rpb25zX0dyb3VwMgotICogIEBicmllZiAgIG1hbmFnZW1lbnQgZnVuY3Rpb25zIAotICoKLUB2ZXJiYXRpbSAgIAorICAqICBAYnJpZWYgICBtYW5hZ2VtZW50IGZ1bmN0aW9ucworICAqCitAdmVyYmF0aW0KICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgICAgICAgICAgICAgICAgICAgICAgIyMjIyMgRk1DX05PUlNSQU0gQ29udHJvbCBmdW5jdGlvbnMgIyMjIyMKLSAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICAKKyAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIFsuLl0KICAgICBUaGlzIHN1YnNlY3Rpb24gcHJvdmlkZXMgYSBzZXQgb2YgZnVuY3Rpb25zIGFsbG93aW5nIHRvIGNvbnRyb2wgZHluYW1pY2FsbHkKICAgICB0aGUgRk1DIE5PUlNSQU0gaW50ZXJmYWNlLgpAQCAtMzYyLDcgKzQyMyw3IEBACiAvKioKICAgKiBAYnJpZWYgIEVuYWJsZXMgZHluYW1pY2FsbHkgRk1DX05PUlNSQU0gd3JpdGUgb3BlcmF0aW9uLgogICAqIEBwYXJhbSAgRGV2aWNlIFBvaW50ZXIgdG8gTk9SU1JBTSBkZXZpY2UgaW5zdGFuY2UKLSAgKiBAcGFyYW0gIEJhbmsgTk9SU1JBTSBiYW5rIG51bWJlciAgIAorICAqIEBwYXJhbSAgQmFuayBOT1JTUkFNIGJhbmsgbnVtYmVyCiAgICogQHJldHZhbCBIQUwgc3RhdHVzCiAgICovCiBIQUxfU3RhdHVzVHlwZURlZiBGTUNfTk9SU1JBTV9Xcml0ZU9wZXJhdGlvbl9FbmFibGUoRk1DX05PUlNSQU1fVHlwZURlZiAqRGV2aWNlLCB1aW50MzJfdCBCYW5rKQpAQCAtMzcwLDI5ICs0MzEsMjkgQEAKICAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8KICAgYXNzZXJ0X3BhcmFtKElTX0ZNQ19OT1JTUkFNX0RFVklDRShEZXZpY2UpKTsKICAgYXNzZXJ0X3BhcmFtKElTX0ZNQ19OT1JTUkFNX0JBTksoQmFuaykpOwotICAKLSAgLyogRW5hYmxlIHdyaXRlIG9wZXJhdGlvbiAqLwotICBEZXZpY2UtPkJUQ1JbQmFua10gfD0gRk1DX1dSSVRFX09QRVJBVElPTl9FTkFCTEU7IAogCi0gIHJldHVybiBIQUxfT0s7ICAKKyAgLyogRW5hYmxlIHdyaXRlIG9wZXJhdGlvbiAqLworICBTRVRfQklUKERldmljZS0+QlRDUltCYW5rXSwgRk1DX1dSSVRFX09QRVJBVElPTl9FTkFCTEUpOworCisgIHJldHVybiBIQUxfT0s7CiB9CiAKIC8qKgogICAqIEBicmllZiAgRGlzYWJsZXMgZHluYW1pY2FsbHkgRk1DX05PUlNSQU0gd3JpdGUgb3BlcmF0aW9uLgogICAqIEBwYXJhbSAgRGV2aWNlIFBvaW50ZXIgdG8gTk9SU1JBTSBkZXZpY2UgaW5zdGFuY2UKLSAgKiBAcGFyYW0gIEJhbmsgTk9SU1JBTSBiYW5rIG51bWJlciAgIAorICAqIEBwYXJhbSAgQmFuayBOT1JTUkFNIGJhbmsgbnVtYmVyCiAgICogQHJldHZhbCBIQUwgc3RhdHVzCiAgICovCiBIQUxfU3RhdHVzVHlwZURlZiBGTUNfTk9SU1JBTV9Xcml0ZU9wZXJhdGlvbl9EaXNhYmxlKEZNQ19OT1JTUkFNX1R5cGVEZWYgKkRldmljZSwgdWludDMyX3QgQmFuaykKLXsgCit7CiAgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCiAgIGFzc2VydF9wYXJhbShJU19GTUNfTk9SU1JBTV9ERVZJQ0UoRGV2aWNlKSk7CiAgIGFzc2VydF9wYXJhbShJU19GTUNfTk9SU1JBTV9CQU5LKEJhbmspKTsKLSAgICAKLSAgLyogRGlzYWJsZSB3cml0ZSBvcGVyYXRpb24gKi8KLSAgRGV2aWNlLT5CVENSW0JhbmtdICY9IH5GTUNfV1JJVEVfT1BFUkFUSU9OX0VOQUJMRTsgCiAKLSAgcmV0dXJuIEhBTF9PSzsgIAorICAvKiBEaXNhYmxlIHdyaXRlIG9wZXJhdGlvbiAqLworICBDTEVBUl9CSVQoRGV2aWNlLT5CVENSW0JhbmtdLCBGTUNfV1JJVEVfT1BFUkFUSU9OX0VOQUJMRSk7CisKKyAgcmV0dXJuIEhBTF9PSzsKIH0KIAogLyoqCkBAIC00MDMsNDQgKzQ2NCw0NSBAQAogICAqIEB9CiAgICovCiAKKwogLyoqIEBkZWZncm91cCBGTUNfTExfRXhwb3J0ZWRfRnVuY3Rpb25zX05BTkQgRk1DIExvdyBMYXllciBOQU5EIEV4cG9ydGVkIEZ1bmN0aW9ucwotICAqIEBicmllZiAgICBOQU5EIENvbnRyb2xsZXIgZnVuY3Rpb25zIAorICAqIEBicmllZiAgICBOQU5EIENvbnRyb2xsZXIgZnVuY3Rpb25zCiAgICoKLSAgQHZlcmJhdGltIAorICBAdmVyYmF0aW0KICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgICAgICAgICAgICAgICAgICAgICMjIyMjIEhvdyB0byB1c2UgTkFORCBkZXZpY2UgZHJpdmVyICMjIyMjCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBbLi5dCiAgICAgVGhpcyBkcml2ZXIgY29udGFpbnMgYSBzZXQgb2YgQVBJcyB0byBpbnRlcmZhY2Ugd2l0aCB0aGUgRk1DIE5BTkQgYmFua3MgaW4gb3JkZXIKICAgICB0byBydW4gdGhlIE5BTkQgZXh0ZXJuYWwgZGV2aWNlcy4KLSAgCi0gICAgKCspIEZNQyBOQU5EIGJhbmsgcmVzZXQgdXNpbmcgdGhlIGZ1bmN0aW9uIEZNQ19OQU5EX0RlSW5pdCgpIAorCisgICAgKCspIEZNQyBOQU5EIGJhbmsgcmVzZXQgdXNpbmcgdGhlIGZ1bmN0aW9uIEZNQ19OQU5EX0RlSW5pdCgpCiAgICAgKCspIEZNQyBOQU5EIGJhbmsgY29udHJvbCBjb25maWd1cmF0aW9uIHVzaW5nIHRoZSBmdW5jdGlvbiBGTUNfTkFORF9Jbml0KCkKLSAgICAoKykgRk1DIE5BTkQgYmFuayBjb21tb24gc3BhY2UgdGltaW5nIGNvbmZpZ3VyYXRpb24gdXNpbmcgdGhlIGZ1bmN0aW9uIAorICAgICgrKSBGTUMgTkFORCBiYW5rIGNvbW1vbiBzcGFjZSB0aW1pbmcgY29uZmlndXJhdGlvbiB1c2luZyB0aGUgZnVuY3Rpb24KICAgICAgICAgRk1DX05BTkRfQ29tbW9uU3BhY2VfVGltaW5nX0luaXQoKQotICAgICgrKSBGTUMgTkFORCBiYW5rIGF0dHJpYnV0ZSBzcGFjZSB0aW1pbmcgY29uZmlndXJhdGlvbiB1c2luZyB0aGUgZnVuY3Rpb24gCisgICAgKCspIEZNQyBOQU5EIGJhbmsgYXR0cmlidXRlIHNwYWNlIHRpbWluZyBjb25maWd1cmF0aW9uIHVzaW5nIHRoZSBmdW5jdGlvbgogICAgICAgICBGTUNfTkFORF9BdHRyaWJ1dGVTcGFjZV9UaW1pbmdfSW5pdCgpCiAgICAgKCspIEZNQyBOQU5EIGJhbmsgZW5hYmxlL2Rpc2FibGUgRUNDIGNvcnJlY3Rpb24gZmVhdHVyZSB1c2luZyB0aGUgZnVuY3Rpb25zCiAgICAgICAgIEZNQ19OQU5EX0VDQ19FbmFibGUoKS9GTUNfTkFORF9FQ0NfRGlzYWJsZSgpCi0gICAgKCspIEZNQyBOQU5EIGJhbmsgZ2V0IEVDQyBjb3JyZWN0aW9uIGNvZGUgdXNpbmcgdGhlIGZ1bmN0aW9uIEZNQ19OQU5EX0dldEVDQygpICAgIAorICAgICgrKSBGTUMgTkFORCBiYW5rIGdldCBFQ0MgY29ycmVjdGlvbiBjb2RlIHVzaW5nIHRoZSBmdW5jdGlvbiBGTUNfTkFORF9HZXRFQ0MoKQogCiBAZW5kdmVyYmF0aW0KICAgKiBAewogICAqLwogCiAvKiogQGRlZmdyb3VwIEZNQ19MTF9OQU5EX0V4cG9ydGVkX0Z1bmN0aW9uc19Hcm91cDEgSW5pdGlhbGl6YXRpb24gYW5kIGRlLWluaXRpYWxpemF0aW9uIGZ1bmN0aW9ucwotICogIEBicmllZiAgICBJbml0aWFsaXphdGlvbiBhbmQgQ29uZmlndXJhdGlvbiBmdW5jdGlvbnMgCi0gKgotQHZlcmJhdGltICAgIAorICAqICBAYnJpZWYgICAgSW5pdGlhbGl6YXRpb24gYW5kIENvbmZpZ3VyYXRpb24gZnVuY3Rpb25zCisgICoKK0B2ZXJiYXRpbQogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgICAgICAgICAgICAgIyMjIyMgSW5pdGlhbGl6YXRpb24gYW5kIGRlX2luaXRpYWxpemF0aW9uIGZ1bmN0aW9ucyAjIyMjIwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLSAgWy4uXSAgCisgIFsuLl0KICAgICBUaGlzIHNlY3Rpb24gcHJvdmlkZXMgZnVuY3Rpb25zIGFsbG93aW5nIHRvOgogICAgICgrKSBJbml0aWFsaXplIGFuZCBjb25maWd1cmUgdGhlIEZNQyBOQU5EIGludGVyZmFjZQotICAgICgrKSBEZS1pbml0aWFsaXplIHRoZSBGTUMgTkFORCBpbnRlcmZhY2UgCisgICAgKCspIERlLWluaXRpYWxpemUgdGhlIEZNQyBOQU5EIGludGVyZmFjZQogICAgICgrKSBDb25maWd1cmUgdGhlIEZNQyBjbG9jayBhbmQgYXNzb2NpYXRlZCBHUElPcwotICAgICAgICAKKwogQGVuZHZlcmJhdGltCiAgICogQHsKICAgKi8KQEAgLTQ1NCw4ICs1MTYsNiBAQAogICAqLwogSEFMX1N0YXR1c1R5cGVEZWYgRk1DX05BTkRfSW5pdChGTUNfTkFORF9UeXBlRGVmICpEZXZpY2UsIEZNQ19OQU5EX0luaXRUeXBlRGVmICpJbml0KQogewotICB1aW50MzJfdCB0bXByICA9IDA7IAotICAgIAogICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLwogICBhc3NlcnRfcGFyYW0oSVNfRk1DX05BTkRfREVWSUNFKERldmljZSkpOwogICBhc3NlcnRfcGFyYW0oSVNfRk1DX05BTkRfQkFOSyhJbml0LT5OYW5kQmFuaykpOwpAQCAtNDY0LDI5ICs1MjQsMTggQEAKICAgYXNzZXJ0X3BhcmFtKElTX0ZNQ19FQ0NfU1RBVEUoSW5pdC0+RWNjQ29tcHV0YXRpb24pKTsKICAgYXNzZXJ0X3BhcmFtKElTX0ZNQ19FQ0NQQUdFX1NJWkUoSW5pdC0+RUNDUGFnZVNpemUpKTsKICAgYXNzZXJ0X3BhcmFtKElTX0ZNQ19UQ0xSX1RJTUUoSW5pdC0+VENMUlNldHVwVGltZSkpOwotICBhc3NlcnRfcGFyYW0oSVNfRk1DX1RBUl9USU1FKEluaXQtPlRBUlNldHVwVGltZSkpOyAgIAorICBhc3NlcnRfcGFyYW0oSVNfRk1DX1RBUl9USU1FKEluaXQtPlRBUlNldHVwVGltZSkpOwogCi0gIC8qIEdldCB0aGUgTkFORCBiYW5rIDMgcmVnaXN0ZXIgdmFsdWUgKi8KLSAgdG1wciA9IERldmljZS0+UENSOworICAvKiBOQU5EIGJhbmsgMyByZWdpc3RlcnMgY29uZmlndXJhdGlvbiAqLworICBNT0RJRllfUkVHKERldmljZS0+UENSLCBQQ1JfQ0xFQVJfTUFTSywgKEluaXQtPldhaXRmZWF0dXJlICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGTUNfUENSX01FTU9SWV9UWVBFX05BTkQgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5pdC0+TWVtb3J5RGF0YVdpZHRoICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluaXQtPkVjY0NvbXB1dGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbml0LT5FQ0NQYWdlU2l6ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChJbml0LT5UQ0xSU2V0dXBUaW1lKSA8PCBGTUNfUENSX1RDTFJfUG9zKSAgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoSW5pdC0+VEFSU2V0dXBUaW1lKSAgPDwgRk1DX1BDUl9UQVJfUG9zKSkpOwogCi0gIC8qIENsZWFyIFBXQUlURU4sIFBCS0VOLCBQVFlQLCBQV0lELCBFQ0NFTiwgVENMUiwgVEFSIGFuZCBFQ0NQUyBiaXRzICovCi0gIHRtcHIgJj0gKCh1aW50MzJfdCl+KEZNQ19QQ1JfUFdBSVRFTiAgfCBGTUNfUENSX1BCS0VOIHwgRk1DX1BDUl9QVFlQIHwgXAotICAgICAgICAgICAgICAgICAgICAgICBGTUNfUENSX1BXSUQgfCBGTUNfUENSX0VDQ0VOIHwgRk1DX1BDUl9UQ0xSIHwgXAotICAgICAgICAgICAgICAgICAgICAgICBGTUNfUENSX1RBUiB8IEZNQ19QQ1JfRUNDUFMpKTsgIAotICAvKiBTZXQgTkFORCBkZXZpY2UgY29udHJvbCBwYXJhbWV0ZXJzICovCi0gIHRtcHIgfD0gKHVpbnQzMl90KShJbml0LT5XYWl0ZmVhdHVyZSAgICAgICAgICAgICAgICB8XAotICAgICAgICAgICAgICAgICAgICAgIEZNQ19QQ1JfTUVNT1JZX1RZUEVfTkFORCAgICAgICAgIHxcCi0gICAgICAgICAgICAgICAgICAgICAgSW5pdC0+TWVtb3J5RGF0YVdpZHRoICAgICAgICAgICAgfFwKLSAgICAgICAgICAgICAgICAgICAgICBJbml0LT5FY2NDb21wdXRhdGlvbiAgICAgICAgICAgICB8XAotICAgICAgICAgICAgICAgICAgICAgIEluaXQtPkVDQ1BhZ2VTaXplICAgICAgICAgICAgICAgIHxcCi0gICAgICAgICAgICAgICAgICAgICAgKChJbml0LT5UQ0xSU2V0dXBUaW1lKSA8PCA5KSAgICAgfFwKLSAgICAgICAgICAgICAgICAgICAgICAoKEluaXQtPlRBUlNldHVwVGltZSkgPDwgMTMpKTsgICAKLSAgCi0gICAgLyogTkFORCBiYW5rIDMgcmVnaXN0ZXJzIGNvbmZpZ3VyYXRpb24gKi8KLSAgICBEZXZpY2UtPlBDUiAgPSB0bXByOwotICAKICAgcmV0dXJuIEhBTF9PSzsKLQogfQogCiAvKioKQEAgLTQ5NCwxMyArNTQzLDEyIEBACiAgICogICAgICAgICBwYXJhbWV0ZXJzIGluIHRoZSBGTUNfTkFORF9QQ0NfVGltaW5nVHlwZURlZgogICAqIEBwYXJhbSAgRGV2aWNlIFBvaW50ZXIgdG8gTkFORCBkZXZpY2UgaW5zdGFuY2UKICAgKiBAcGFyYW0gIFRpbWluZyBQb2ludGVyIHRvIE5BTkQgdGltaW5nIHN0cnVjdHVyZQotICAqIEBwYXJhbSAgQmFuayBOQU5EIGJhbmsgbnVtYmVyICAgCisgICogQHBhcmFtICBCYW5rIE5BTkQgYmFuayBudW1iZXIKICAgKiBAcmV0dmFsIEhBTCBzdGF0dXMKICAgKi8KLUhBTF9TdGF0dXNUeXBlRGVmIEZNQ19OQU5EX0NvbW1vblNwYWNlX1RpbWluZ19Jbml0KEZNQ19OQU5EX1R5cGVEZWYgKkRldmljZSwgRk1DX05BTkRfUENDX1RpbWluZ1R5cGVEZWYgKlRpbWluZywgdWludDMyX3QgQmFuaykKK0hBTF9TdGF0dXNUeXBlRGVmIEZNQ19OQU5EX0NvbW1vblNwYWNlX1RpbWluZ19Jbml0KEZNQ19OQU5EX1R5cGVEZWYgKkRldmljZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZNQ19OQU5EX1BDQ19UaW1pbmdUeXBlRGVmICpUaW1pbmcsIHVpbnQzMl90IEJhbmspCiB7Ci0gIHVpbnQzMl90IHRtcHIgPSAwOyAgCi0gIAogICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLwogICBhc3NlcnRfcGFyYW0oSVNfRk1DX05BTkRfREVWSUNFKERldmljZSkpOwogICBhc3NlcnRfcGFyYW0oSVNfRk1DX1NFVFVQX1RJTUUoVGltaW5nLT5TZXR1cFRpbWUpKTsKQEAgLTUwOCwyNCArNTU2LDE3IEBACiAgIGFzc2VydF9wYXJhbShJU19GTUNfSE9MRF9USU1FKFRpbWluZy0+SG9sZFNldHVwVGltZSkpOwogICBhc3NlcnRfcGFyYW0oSVNfRk1DX0hJWl9USU1FKFRpbWluZy0+SGlaU2V0dXBUaW1lKSk7CiAgIGFzc2VydF9wYXJhbShJU19GTUNfTkFORF9CQU5LKEJhbmspKTsKLSAgCi0gIC8qIEdldCB0aGUgTkFORCBiYW5rIDMgcmVnaXN0ZXIgdmFsdWUgKi8KLSAgdG1wciA9IERldmljZS0+UE1FTTsKIAotICAvKiBDbGVhciBNRU1TRVR4LCBNRU1XQUlUeCwgTUVNSE9MRHggYW5kIE1FTUhJWnggYml0cyAqLwotICB0bXByICY9ICgodWludDMyX3QpfihGTUNfUE1FTV9NRU1TRVQzICB8IEZNQ19QTUVNX01FTVdBSVQzIHwgRk1DX1BNRU1fTUVNSE9MRDMgfCBcCi0gICAgICAgICAgICAgICAgICAgICAgIEZNQ19QTUVNX01FTUhJWjMpKTsgCi0gIC8qIFNldCBGTUNfTkFORCBkZXZpY2UgdGltaW5nIHBhcmFtZXRlcnMgKi8KLSAgdG1wciB8PSAodWludDMyX3QpKFRpbWluZy0+U2V0dXBUaW1lICAgICAgICAgICAgICAgICAgfFwKLSAgICAgICAgICAgICAgICAgICAgICAgKChUaW1pbmctPldhaXRTZXR1cFRpbWUpIDw8IDgpICAgICB8XAotICAgICAgICAgICAgICAgICAgICAgICAoKFRpbWluZy0+SG9sZFNldHVwVGltZSkgPDwgMTYpICAgIHxcCi0gICAgICAgICAgICAgICAgICAgICAgICgoVGltaW5nLT5IaVpTZXR1cFRpbWUpIDw8IDI0KQotICAgICAgICAgICAgICAgICAgICAgICApOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotICAgIC8qIE5BTkQgYmFuayAzIHJlZ2lzdGVycyBjb25maWd1cmF0aW9uICovCi0gICAgRGV2aWNlLT5QTUVNID0gdG1wcjsKLSAgCi0gIHJldHVybiBIQUxfT0s7ICAKKyAgLyogUHJldmVudCB1bnVzZWQgYXJndW1lbnQocykgY29tcGlsYXRpb24gd2FybmluZyBpZiBubyBhc3NlcnRfcGFyYW0gY2hlY2sgKi8KKyAgVU5VU0VEKEJhbmspOworCisgIC8qIE5BTkQgYmFuayAzIHJlZ2lzdGVycyBjb25maWd1cmF0aW9uICovCisgIE1PRElGWV9SRUcoRGV2aWNlLT5QTUVNLCBQTUVNX0NMRUFSX01BU0ssIChUaW1pbmctPlNldHVwVGltZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoVGltaW5nLT5XYWl0U2V0dXBUaW1lKSA8PCBGTUNfUE1FTV9NRU1XQUlUM19Qb3MpIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoVGltaW5nLT5Ib2xkU2V0dXBUaW1lKSA8PCBGTUNfUE1FTV9NRU1IT0xEM19Qb3MpIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoVGltaW5nLT5IaVpTZXR1cFRpbWUpICA8PCBGTUNfUE1FTV9NRU1ISVozX1BvcykpKTsKKworICByZXR1cm4gSEFMX09LOwogfQogCiAvKioKQEAgLTUzMyw2MCArNTc0LDU3IEBACiAgICogICAgICAgICBwYXJhbWV0ZXJzIGluIHRoZSBGTUNfTkFORF9QQ0NfVGltaW5nVHlwZURlZgogICAqIEBwYXJhbSAgRGV2aWNlIFBvaW50ZXIgdG8gTkFORCBkZXZpY2UgaW5zdGFuY2UKICAgKiBAcGFyYW0gIFRpbWluZyBQb2ludGVyIHRvIE5BTkQgdGltaW5nIHN0cnVjdHVyZQotICAqIEBwYXJhbSAgQmFuayBOQU5EIGJhbmsgbnVtYmVyIAorICAqIEBwYXJhbSAgQmFuayBOQU5EIGJhbmsgbnVtYmVyCiAgICogQHJldHZhbCBIQUwgc3RhdHVzCiAgICovCi1IQUxfU3RhdHVzVHlwZURlZiBGTUNfTkFORF9BdHRyaWJ1dGVTcGFjZV9UaW1pbmdfSW5pdChGTUNfTkFORF9UeXBlRGVmICpEZXZpY2UsIEZNQ19OQU5EX1BDQ19UaW1pbmdUeXBlRGVmICpUaW1pbmcsIHVpbnQzMl90IEJhbmspCitIQUxfU3RhdHVzVHlwZURlZiBGTUNfTkFORF9BdHRyaWJ1dGVTcGFjZV9UaW1pbmdfSW5pdChGTUNfTkFORF9UeXBlRGVmICpEZXZpY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGTUNfTkFORF9QQ0NfVGltaW5nVHlwZURlZiAqVGltaW5nLCB1aW50MzJfdCBCYW5rKQogewotICB1aW50MzJfdCB0bXByID0gMDsgIAotICAKLSAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8gCi0gIGFzc2VydF9wYXJhbShJU19GTUNfTkFORF9ERVZJQ0UoRGV2aWNlKSk7IAorICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLworICBhc3NlcnRfcGFyYW0oSVNfRk1DX05BTkRfREVWSUNFKERldmljZSkpOwogICBhc3NlcnRfcGFyYW0oSVNfRk1DX1NFVFVQX1RJTUUoVGltaW5nLT5TZXR1cFRpbWUpKTsKICAgYXNzZXJ0X3BhcmFtKElTX0ZNQ19XQUlUX1RJTUUoVGltaW5nLT5XYWl0U2V0dXBUaW1lKSk7CiAgIGFzc2VydF9wYXJhbShJU19GTUNfSE9MRF9USU1FKFRpbWluZy0+SG9sZFNldHVwVGltZSkpOwogICBhc3NlcnRfcGFyYW0oSVNfRk1DX0hJWl9USU1FKFRpbWluZy0+SGlaU2V0dXBUaW1lKSk7CiAgIGFzc2VydF9wYXJhbShJU19GTUNfTkFORF9CQU5LKEJhbmspKTsKLSAgCi0gIC8qIEdldCB0aGUgTkFORCBiYW5rIDMgcmVnaXN0ZXIgdmFsdWUgKi8KLSAgdG1wciA9IERldmljZS0+UEFUVDsKIAotICAvKiBDbGVhciBBVFRTRVR4LCBBVFRXQUlUeCwgQVRUSE9MRHggYW5kIEFUVEhJWnggYml0cyAqLwotICB0bXByICY9ICgodWludDMyX3QpfihGTUNfUEFUVF9BVFRTRVQzICB8IEZNQ19QQVRUX0FUVFdBSVQzIHwgRk1DX1BBVFRfQVRUSE9MRDMgfCBcCi0gICAgICAgICAgICAgICAgICAgICAgIEZNQ19QQVRUX0FUVEhJWjMpKTsKLSAgLyogU2V0IEZNQ19OQU5EIGRldmljZSB0aW1pbmcgcGFyYW1ldGVycyAqLwotICB0bXByIHw9ICh1aW50MzJfdCkoVGltaW5nLT5TZXR1cFRpbWUgICAgICAgICAgICAgICAgICB8XAotICAgICAgICAgICAgICAgICAgICgoVGltaW5nLT5XYWl0U2V0dXBUaW1lKSA8PCA4KSAgICAgfFwKLSAgICAgICAgICAgICAgICAgICAoKFRpbWluZy0+SG9sZFNldHVwVGltZSkgPDwgMTYpICAgIHxcCi0gICAgICAgICAgICAgICAgICAgKChUaW1pbmctPkhpWlNldHVwVGltZSkgPDwgMjQpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgLyogTkFORCBiYW5rIDMgcmVnaXN0ZXJzIGNvbmZpZ3VyYXRpb24gKi8KLSAgICBEZXZpY2UtPlBBVFQgPSB0bXByOwotICAKKyAgLyogUHJldmVudCB1bnVzZWQgYXJndW1lbnQocykgY29tcGlsYXRpb24gd2FybmluZyBpZiBubyBhc3NlcnRfcGFyYW0gY2hlY2sgKi8KKyAgVU5VU0VEKEJhbmspOworCisgIC8qIE5BTkQgYmFuayAzIHJlZ2lzdGVycyBjb25maWd1cmF0aW9uICovCisgIE1PRElGWV9SRUcoRGV2aWNlLT5QQVRULCBQQVRUX0NMRUFSX01BU0ssIChUaW1pbmctPlNldHVwVGltZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoVGltaW5nLT5XYWl0U2V0dXBUaW1lKSA8PCBGTUNfUEFUVF9BVFRXQUlUM19Qb3MpIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoVGltaW5nLT5Ib2xkU2V0dXBUaW1lKSA8PCBGTUNfUEFUVF9BVFRIT0xEM19Qb3MpIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoVGltaW5nLT5IaVpTZXR1cFRpbWUpICA8PCBGTUNfUEFUVF9BVFRISVozX1BvcykpKTsKKwogICByZXR1cm4gSEFMX09LOwogfQogCiAvKioKLSAgKiBAYnJpZWYgIERlSW5pdGlhbGl6ZXMgdGhlIEZNQ19OQU5EIGRldmljZSAKKyAgKiBAYnJpZWYgIERlSW5pdGlhbGl6ZXMgdGhlIEZNQ19OQU5EIGRldmljZQogICAqIEBwYXJhbSAgRGV2aWNlIFBvaW50ZXIgdG8gTkFORCBkZXZpY2UgaW5zdGFuY2UKICAgKiBAcGFyYW0gIEJhbmsgTkFORCBiYW5rIG51bWJlcgogICAqIEByZXR2YWwgSEFMIHN0YXR1cwogICAqLwogSEFMX1N0YXR1c1R5cGVEZWYgRk1DX05BTkRfRGVJbml0KEZNQ19OQU5EX1R5cGVEZWYgKkRldmljZSwgdWludDMyX3QgQmFuaykKIHsKLSAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8gCi0gIGFzc2VydF9wYXJhbShJU19GTUNfTkFORF9ERVZJQ0UoRGV2aWNlKSk7IAorICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLworICBhc3NlcnRfcGFyYW0oSVNfRk1DX05BTkRfREVWSUNFKERldmljZSkpOwogICBhc3NlcnRfcGFyYW0oSVNfRk1DX05BTkRfQkFOSyhCYW5rKSk7Ci0gICAgICAKKwogICAvKiBEaXNhYmxlIHRoZSBOQU5EIEJhbmsgKi8KLSAgX19GTUNfTkFORF9ESVNBQkxFKERldmljZSk7Ci0gCi0gICAgLyogU2V0IHRoZSBGTUNfTkFORF9CQU5LMyByZWdpc3RlcnMgdG8gdGhlaXIgcmVzZXQgdmFsdWVzICovCi0gICAgRGV2aWNlLT5QQ1IgID0gMHgwMDAwMDAxOFU7Ci0gICAgRGV2aWNlLT5TUiAgID0gMHgwMDAwMDA0MFU7Ci0gICAgRGV2aWNlLT5QTUVNID0gMHhGQ0ZDRkNGQ1U7Ci0gICAgRGV2aWNlLT5QQVRUID0gMHhGQ0ZDRkNGQ1U7IAotICAKKyAgX19GTUNfTkFORF9ESVNBQkxFKERldmljZSwgQmFuayk7CisKKyAgLyogRGUtaW5pdGlhbGl6ZSB0aGUgTkFORCBCYW5rICovCisgIC8qIFByZXZlbnQgdW51c2VkIGFyZ3VtZW50KHMpIGNvbXBpbGF0aW9uIHdhcm5pbmcgaWYgbm8gYXNzZXJ0X3BhcmFtIGNoZWNrICovCisgIFVOVVNFRChCYW5rKTsKKworICAvKiBTZXQgdGhlIEZNQ19OQU5EX0JBTkszIHJlZ2lzdGVycyB0byB0aGVpciByZXNldCB2YWx1ZXMgKi8KKyAgV1JJVEVfUkVHKERldmljZS0+UENSLCAgMHgwMDAwMDAxOFUpOworICBXUklURV9SRUcoRGV2aWNlLT5TUiwgICAweDAwMDAwMDQwVSk7CisgIFdSSVRFX1JFRyhEZXZpY2UtPlBNRU0sIDB4RkNGQ0ZDRkNVKTsKKyAgV1JJVEVfUkVHKERldmljZS0+UEFUVCwgMHhGQ0ZDRkNGQ1UpOworCiAgIHJldHVybiBIQUxfT0s7CiB9CiAKQEAgLTU5NCwzOCArNjMyLDQxIEBACiAgICogQH0KICAgKi8KIAotLyoqIEBkZWZncm91cCBIQUxfRk1DX05BTkRfR3JvdXAzIENvbnRyb2wgZnVuY3Rpb25zIAotICAqICBAYnJpZWYgICBtYW5hZ2VtZW50IGZ1bmN0aW9ucyAKKy8qKiBAZGVmZ3JvdXAgSEFMX0ZNQ19OQU5EX0dyb3VwMiBQZXJpcGhlcmFsIENvbnRyb2wgZnVuY3Rpb25zCisgICogIEBicmllZiAgIG1hbmFnZW1lbnQgZnVuY3Rpb25zCiAgICoKLUB2ZXJiYXRpbSAgIAorQHZlcmJhdGltCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICAgICAgICAgICAgICAgICAgICAgICAjIyMjIyBGTUNfTkFORCBDb250cm9sIGZ1bmN0aW9ucyAjIyMjIwotICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gIAorICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgWy4uXQogICAgIFRoaXMgc3Vic2VjdGlvbiBwcm92aWRlcyBhIHNldCBvZiBmdW5jdGlvbnMgYWxsb3dpbmcgdG8gY29udHJvbCBkeW5hbWljYWxseQogICAgIHRoZSBGTUMgTkFORCBpbnRlcmZhY2UuCiAKIEBlbmR2ZXJiYXRpbQogICAqIEB7Ci0gICovIAorICAqLwogCi0gICAgCisKIC8qKgogICAqIEBicmllZiAgRW5hYmxlcyBkeW5hbWljYWxseSBGTUNfTkFORCBFQ0MgZmVhdHVyZS4KICAgKiBAcGFyYW0gIERldmljZSBQb2ludGVyIHRvIE5BTkQgZGV2aWNlIGluc3RhbmNlCiAgICogQHBhcmFtICBCYW5rIE5BTkQgYmFuayBudW1iZXIKICAgKiBAcmV0dmFsIEhBTCBzdGF0dXMKLSAgKi8gICAgCisgICovCiBIQUxfU3RhdHVzVHlwZURlZiBGTUNfTkFORF9FQ0NfRW5hYmxlKEZNQ19OQU5EX1R5cGVEZWYgKkRldmljZSwgdWludDMyX3QgQmFuaykKIHsKLSAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8gCi0gIGFzc2VydF9wYXJhbShJU19GTUNfTkFORF9ERVZJQ0UoRGV2aWNlKSk7IAorICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLworICBhc3NlcnRfcGFyYW0oSVNfRk1DX05BTkRfREVWSUNFKERldmljZSkpOwogICBhc3NlcnRfcGFyYW0oSVNfRk1DX05BTkRfQkFOSyhCYW5rKSk7Ci0gICAgCisKICAgLyogRW5hYmxlIEVDQyBmZWF0dXJlICovCi0gICAgRGV2aWNlLT5QQ1IgfD0gRk1DX1BDUl9FQ0NFTjsKLSAgCi0gIHJldHVybiBIQUxfT0s7ICAKKyAgLyogUHJldmVudCB1bnVzZWQgYXJndW1lbnQocykgY29tcGlsYXRpb24gd2FybmluZyBpZiBubyBhc3NlcnRfcGFyYW0gY2hlY2sgKi8KKyAgVU5VU0VEKEJhbmspOworCisgIFNFVF9CSVQoRGV2aWNlLT5QQ1IsIEZNQ19QQ1JfRUNDRU4pOworCisgIHJldHVybiBIQUxfT0s7CiB9CiAKIApAQCAtNjM0LDE3ICs2NzUsMjAgQEAKICAgKiBAcGFyYW0gIERldmljZSBQb2ludGVyIHRvIE5BTkQgZGV2aWNlIGluc3RhbmNlCiAgICogQHBhcmFtICBCYW5rIE5BTkQgYmFuayBudW1iZXIKICAgKiBAcmV0dmFsIEhBTCBzdGF0dXMKLSAgKi8gIAotSEFMX1N0YXR1c1R5cGVEZWYgRk1DX05BTkRfRUNDX0Rpc2FibGUoRk1DX05BTkRfVHlwZURlZiAqRGV2aWNlLCB1aW50MzJfdCBCYW5rKSAgCi17ICAKLSAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8gCi0gIGFzc2VydF9wYXJhbShJU19GTUNfTkFORF9ERVZJQ0UoRGV2aWNlKSk7IAorICAqLworSEFMX1N0YXR1c1R5cGVEZWYgRk1DX05BTkRfRUNDX0Rpc2FibGUoRk1DX05BTkRfVHlwZURlZiAqRGV2aWNlLCB1aW50MzJfdCBCYW5rKQoreworICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLworICBhc3NlcnRfcGFyYW0oSVNfRk1DX05BTkRfREVWSUNFKERldmljZSkpOwogICBhc3NlcnRfcGFyYW0oSVNfRk1DX05BTkRfQkFOSyhCYW5rKSk7Ci0gICAgCi0gIC8qIERpc2FibGUgRUNDIGZlYXR1cmUgKi8KLSAgICBEZXZpY2UtPlBDUiAmPSB+Rk1DX1BDUl9FQ0NFTjsKIAotICByZXR1cm4gSEFMX09LOyAgCisgIC8qIERpc2FibGUgRUNDIGZlYXR1cmUgKi8KKyAgLyogUHJldmVudCB1bnVzZWQgYXJndW1lbnQocykgY29tcGlsYXRpb24gd2FybmluZyBpZiBubyBhc3NlcnRfcGFyYW0gY2hlY2sgKi8KKyAgVU5VU0VEKEJhbmspOworCisgIENMRUFSX0JJVChEZXZpY2UtPlBDUiwgRk1DX1BDUl9FQ0NFTik7CisKKyAgcmV0dXJuIEhBTF9PSzsKIH0KIAogLyoqCkBAIC02NTIsODIgKzY5Niw4NCBAQAogICAqIEBwYXJhbSAgRGV2aWNlIFBvaW50ZXIgdG8gTkFORCBkZXZpY2UgaW5zdGFuY2UKICAgKiBAcGFyYW0gIEVDQ3ZhbCBQb2ludGVyIHRvIEVDQyB2YWx1ZQogICAqIEBwYXJhbSAgQmFuayBOQU5EIGJhbmsgbnVtYmVyCi0gICogQHBhcmFtICBUaW1lb3V0IFRpbWVvdXQgd2FpdCB2YWx1ZSAgCisgICogQHBhcmFtICBUaW1lb3V0IFRpbWVvdXQgd2FpdCB2YWx1ZQogICAqIEByZXR2YWwgSEFMIHN0YXR1cwogICAqLwotSEFMX1N0YXR1c1R5cGVEZWYgRk1DX05BTkRfR2V0RUNDKEZNQ19OQU5EX1R5cGVEZWYgKkRldmljZSwgdWludDMyX3QgKkVDQ3ZhbCwgdWludDMyX3QgQmFuaywgdWludDMyX3QgVGltZW91dCkKK0hBTF9TdGF0dXNUeXBlRGVmIEZNQ19OQU5EX0dldEVDQyhGTUNfTkFORF9UeXBlRGVmICpEZXZpY2UsIHVpbnQzMl90ICpFQ0N2YWwsIHVpbnQzMl90IEJhbmssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgVGltZW91dCkKIHsKLSAgdWludDMyX3QgdGlja3N0YXJ0ID0gMDsKKyAgdWludDMyX3QgdGlja3N0YXJ0OwogCi0gIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovIAotICBhc3NlcnRfcGFyYW0oSVNfRk1DX05BTkRfREVWSUNFKERldmljZSkpOyAKKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8KKyAgYXNzZXJ0X3BhcmFtKElTX0ZNQ19OQU5EX0RFVklDRShEZXZpY2UpKTsKICAgYXNzZXJ0X3BhcmFtKElTX0ZNQ19OQU5EX0JBTksoQmFuaykpOwogCi0gIC8qIEdldCB0aWNrICovIAorICAvKiBHZXQgdGljayAqLwogICB0aWNrc3RhcnQgPSBIQUxfR2V0VGljaygpOwogCiAgIC8qIFdhaXQgdW50aWwgRklGTyBpcyBlbXB0eSAqLwotICB3aGlsZShfX0ZNQ19OQU5EX0dFVF9GTEFHKERldmljZSwgQmFuaywgRk1DX0ZMQUdfRkVNUFQpID09IFJFU0VUKQorICB3aGlsZSAoX19GTUNfTkFORF9HRVRfRkxBRyhEZXZpY2UsIEJhbmssIEZNQ19GTEFHX0ZFTVBUKSA9PSBSRVNFVCkKICAgewogICAgIC8qIENoZWNrIGZvciB0aGUgVGltZW91dCAqLwotICAgIGlmKFRpbWVvdXQgIT0gSEFMX01BWF9ERUxBWSkKKyAgICBpZiAoVGltZW91dCAhPSBIQUxfTUFYX0RFTEFZKQogICAgIHsKLSAgICAgIGlmKChUaW1lb3V0ID09IDApfHwoKEhBTF9HZXRUaWNrKCkgLSB0aWNrc3RhcnQgKSA+IFRpbWVvdXQpKQorICAgICAgaWYgKCgoSEFMX0dldFRpY2soKSAtIHRpY2tzdGFydCkgPiBUaW1lb3V0KSB8fCAoVGltZW91dCA9PSAwVSkpCiAgICAgICB7CiAgICAgICAgIHJldHVybiBIQUxfVElNRU9VVDsKICAgICAgIH0KLSAgICB9ICAKKyAgICB9CiAgIH0KLSAKKworICAvKiBQcmV2ZW50IHVudXNlZCBhcmd1bWVudChzKSBjb21waWxhdGlvbiB3YXJuaW5nIGlmIG5vIGFzc2VydF9wYXJhbSBjaGVjayAqLworICBVTlVTRUQoQmFuayk7CisKICAgLyogR2V0IHRoZSBFQ0NSIHJlZ2lzdGVyIHZhbHVlICovCiAgICpFQ0N2YWwgPSAodWludDMyX3QpRGV2aWNlLT5FQ0NSOwogCi0gIHJldHVybiBIQUxfT0s7ICAKKyAgcmV0dXJuIEhBTF9PSzsKIH0KIAogLyoqCiAgICogQH0KICAgKi8KLSAgCi0vKioKLSAgKiBAfQotICAqLworCisKIAogLyoqIEBkZWZncm91cCBGTUNfTExfU0RSQU0KLSAgKiBAYnJpZWYgICAgU0RSQU0gQ29udHJvbGxlciBmdW5jdGlvbnMgCisgICogQGJyaWVmICAgIFNEUkFNIENvbnRyb2xsZXIgZnVuY3Rpb25zCiAgICoKLSAgQHZlcmJhdGltIAorICBAdmVyYmF0aW0KICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgICAgICAgICAgICAgICAgICAgICAjIyMjIyBIb3cgdG8gdXNlIFNEUkFNIGRldmljZSBkcml2ZXIgIyMjIyMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0gIFsuLl0gCisgIFsuLl0KICAgICBUaGlzIGRyaXZlciBjb250YWlucyBhIHNldCBvZiBBUElzIHRvIGludGVyZmFjZSB3aXRoIHRoZSBGTUMgU0RSQU0gYmFua3MgaW4gb3JkZXIKICAgICB0byBydW4gdGhlIFNEUkFNIGV4dGVybmFsIGRldmljZXMuCi0gICAgCi0gICAgKCspIEZNQyBTRFJBTSBiYW5rIHJlc2V0IHVzaW5nIHRoZSBmdW5jdGlvbiBGTUNfU0RSQU1fRGVJbml0KCkgCisKKyAgICAoKykgRk1DIFNEUkFNIGJhbmsgcmVzZXQgdXNpbmcgdGhlIGZ1bmN0aW9uIEZNQ19TRFJBTV9EZUluaXQoKQogICAgICgrKSBGTUMgU0RSQU0gYmFuayBjb250cm9sIGNvbmZpZ3VyYXRpb24gdXNpbmcgdGhlIGZ1bmN0aW9uIEZNQ19TRFJBTV9Jbml0KCkKICAgICAoKykgRk1DIFNEUkFNIGJhbmsgdGltaW5nIGNvbmZpZ3VyYXRpb24gdXNpbmcgdGhlIGZ1bmN0aW9uIEZNQ19TRFJBTV9UaW1pbmdfSW5pdCgpCiAgICAgKCspIEZNQyBTRFJBTSBiYW5rIGVuYWJsZS9kaXNhYmxlIHdyaXRlIG9wZXJhdGlvbiB1c2luZyB0aGUgZnVuY3Rpb25zCi0gICAgICAgIEZNQ19TRFJBTV9Xcml0ZU9wZXJhdGlvbl9FbmFibGUoKS9GTUNfU0RSQU1fV3JpdGVPcGVyYXRpb25fRGlzYWJsZSgpICAgCi0gICAgKCspIEZNQyBTRFJBTSBiYW5rIHNlbmQgY29tbWFuZCB1c2luZyB0aGUgZnVuY3Rpb24gRk1DX1NEUkFNX1NlbmRDb21tYW5kKCkgICAgICAKLSAgICAgICAKKyAgICAgICAgRk1DX1NEUkFNX1dyaXRlT3BlcmF0aW9uX0VuYWJsZSgpL0ZNQ19TRFJBTV9Xcml0ZU9wZXJhdGlvbl9EaXNhYmxlKCkKKyAgICAoKykgRk1DIFNEUkFNIGJhbmsgc2VuZCBjb21tYW5kIHVzaW5nIHRoZSBmdW5jdGlvbiBGTUNfU0RSQU1fU2VuZENvbW1hbmQoKQorCiBAZW5kdmVyYmF0aW0KICAgKiBAewogICAqLwotICAgICAgICAgCisKIC8qKiBAYWRkdG9ncm91cCBGTUNfTExfU0RSQU1fUHJpdmF0ZV9GdW5jdGlvbnNfR3JvdXAxCi0gICogIEBicmllZiAgICBJbml0aWFsaXphdGlvbiBhbmQgQ29uZmlndXJhdGlvbiBmdW5jdGlvbnMgCisgICogIEBicmllZiAgICBJbml0aWFsaXphdGlvbiBhbmQgQ29uZmlndXJhdGlvbiBmdW5jdGlvbnMKICAgKgotQHZlcmJhdGltICAgIAorQHZlcmJhdGltCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICAgICAgICAgICAgICAjIyMjIyBJbml0aWFsaXphdGlvbiBhbmQgZGVfaW5pdGlhbGl6YXRpb24gZnVuY3Rpb25zICMjIyMjCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotICBbLi5dICAKKyAgWy4uXQogICAgIFRoaXMgc2VjdGlvbiBwcm92aWRlcyBmdW5jdGlvbnMgYWxsb3dpbmcgdG86CiAgICAgKCspIEluaXRpYWxpemUgYW5kIGNvbmZpZ3VyZSB0aGUgRk1DIFNEUkFNIGludGVyZmFjZQotICAgICgrKSBEZS1pbml0aWFsaXplIHRoZSBGTUMgU0RSQU0gaW50ZXJmYWNlIAorICAgICgrKSBEZS1pbml0aWFsaXplIHRoZSBGTUMgU0RSQU0gaW50ZXJmYWNlCiAgICAgKCspIENvbmZpZ3VyZSB0aGUgRk1DIGNsb2NrIGFuZCBhc3NvY2lhdGVkIEdQSU9zCi0gICAgICAgIAorCiBAZW5kdmVyYmF0aW0KICAgKiBAewogICAqLwpAQCAtNzM2LDE0ICs3ODIsMTEgQEAKICAgKiBAYnJpZWYgIEluaXRpYWxpemVzIHRoZSBGTUNfU0RSQU0gZGV2aWNlIGFjY29yZGluZyB0byB0aGUgc3BlY2lmaWVkCiAgICogICAgICAgICBjb250cm9sIHBhcmFtZXRlcnMgaW4gdGhlIEZNQ19TRFJBTV9Jbml0VHlwZURlZgogICAqIEBwYXJhbSAgRGV2aWNlIFBvaW50ZXIgdG8gU0RSQU0gZGV2aWNlIGluc3RhbmNlCi0gICogQHBhcmFtICBJbml0IFBvaW50ZXIgdG8gU0RSQU0gSW5pdGlhbGl6YXRpb24gc3RydWN0dXJlICAgCisgICogQHBhcmFtICBJbml0IFBvaW50ZXIgdG8gU0RSQU0gSW5pdGlhbGl6YXRpb24gc3RydWN0dXJlCiAgICogQHJldHZhbCBIQUwgc3RhdHVzCiAgICovCiBIQUxfU3RhdHVzVHlwZURlZiBGTUNfU0RSQU1fSW5pdChGTUNfU0RSQU1fVHlwZURlZiAqRGV2aWNlLCBGTUNfU0RSQU1fSW5pdFR5cGVEZWYgKkluaXQpCiB7Ci0gIHVpbnQzMl90IHRtcHIxID0gMDsKLSAgdWludDMyX3QgdG1wcjIgPSAwOwotICAgIAogICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLwogICBhc3NlcnRfcGFyYW0oSVNfRk1DX1NEUkFNX0RFVklDRShEZXZpY2UpKTsKICAgYXNzZXJ0X3BhcmFtKElTX0ZNQ19TRFJBTV9CQU5LKEluaXQtPlNEQmFuaykpOwpAQCAtNzU1LDU5ICs3OTgsNDMgQEAKICAgYXNzZXJ0X3BhcmFtKElTX0ZNQ19XUklURV9QUk9URUNUSU9OKEluaXQtPldyaXRlUHJvdGVjdGlvbikpOwogICBhc3NlcnRfcGFyYW0oSVNfRk1DX1NEQ0xPQ0tfUEVSSU9EKEluaXQtPlNEQ2xvY2tQZXJpb2QpKTsKICAgYXNzZXJ0X3BhcmFtKElTX0ZNQ19SRUFEX0JVUlNUKEluaXQtPlJlYWRCdXJzdCkpOwotICBhc3NlcnRfcGFyYW0oSVNfRk1DX1JFQURQSVBFX0RFTEFZKEluaXQtPlJlYWRQaXBlRGVsYXkpKTsgICAKKyAgYXNzZXJ0X3BhcmFtKElTX0ZNQ19SRUFEUElQRV9ERUxBWShJbml0LT5SZWFkUGlwZURlbGF5KSk7CiAKICAgLyogU2V0IFNEUkFNIGJhbmsgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzICovCi0gIGlmIChJbml0LT5TREJhbmsgIT0gRk1DX1NEUkFNX0JBTksyKSAKKyAgaWYgKEluaXQtPlNEQmFuayA9PSBGTUNfU0RSQU1fQkFOSzEpCiAgIHsKLSAgICB0bXByMSA9IERldmljZS0+U0RDUltGTUNfU0RSQU1fQkFOSzFdOwotICAgIAotICAgIC8qIENsZWFyIE5DLCBOUiwgTVdJRCwgTkIsIENBUywgV1AsIFNEQ0xLLCBSQlVSU1QsIGFuZCBSUElQRSBiaXRzICovCi0gICAgdG1wcjEgJj0gKCh1aW50MzJfdCl+KEZNQ19TRENSMV9OQyAgfCBGTUNfU0RDUjFfTlIgfCBGTUNfU0RDUjFfTVdJRCB8IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgRk1DX1NEQ1IxX05CICB8IEZNQ19TRENSMV9DQVMgfCBGTUNfU0RDUjFfV1AgICB8IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgRk1DX1NEQ1IxX1NEQ0xLIHwgRk1DX1NEQ1IxX1JCVVJTVCB8IEZNQ19TRENSMV9SUElQRSkpOwotCi0gICAgdG1wcjEgfD0gKHVpbnQzMl90KShJbml0LT5Db2x1bW5CaXRzTnVtYmVyICAgfFwKLSAgICAgICAgICAgICAgICAgICAgICAgIEluaXQtPlJvd0JpdHNOdW1iZXIgICAgICB8XAotICAgICAgICAgICAgICAgICAgICAgICAgSW5pdC0+TWVtb3J5RGF0YVdpZHRoICAgIHxcCi0gICAgICAgICAgICAgICAgICAgICAgICBJbml0LT5JbnRlcm5hbEJhbmtOdW1iZXIgfFwKLSAgICAgICAgICAgICAgICAgICAgICAgIEluaXQtPkNBU0xhdGVuY3kgICAgICAgICB8XAotICAgICAgICAgICAgICAgICAgICAgICAgSW5pdC0+V3JpdGVQcm90ZWN0aW9uICAgIHxcCi0gICAgICAgICAgICAgICAgICAgICAgICBJbml0LT5TRENsb2NrUGVyaW9kICAgICAgfFwKLSAgICAgICAgICAgICAgICAgICAgICAgIEluaXQtPlJlYWRCdXJzdCAgICAgICAgICB8XAotICAgICAgICAgICAgICAgICAgICAgICAgSW5pdC0+UmVhZFBpcGVEZWxheQotICAgICAgICAgICAgICAgICAgICAgICAgKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotICAgIERldmljZS0+U0RDUltGTUNfU0RSQU1fQkFOSzFdID0gdG1wcjE7CisgICAgTU9ESUZZX1JFRyhEZXZpY2UtPlNEQ1JbRk1DX1NEUkFNX0JBTksxXSwKKyAgICAgICAgICAgICAgIFNEQ1JfQ0xFQVJfTUFTSywKKyAgICAgICAgICAgICAgIChJbml0LT5Db2x1bW5CaXRzTnVtYmVyICAgfAorICAgICAgICAgICAgICAgIEluaXQtPlJvd0JpdHNOdW1iZXIgICAgICB8CisgICAgICAgICAgICAgICAgSW5pdC0+TWVtb3J5RGF0YVdpZHRoICAgIHwKKyAgICAgICAgICAgICAgICBJbml0LT5JbnRlcm5hbEJhbmtOdW1iZXIgfAorICAgICAgICAgICAgICAgIEluaXQtPkNBU0xhdGVuY3kgICAgICAgICB8CisgICAgICAgICAgICAgICAgSW5pdC0+V3JpdGVQcm90ZWN0aW9uICAgIHwKKyAgICAgICAgICAgICAgICBJbml0LT5TRENsb2NrUGVyaW9kICAgICAgfAorICAgICAgICAgICAgICAgIEluaXQtPlJlYWRCdXJzdCAgICAgICAgICB8CisgICAgICAgICAgICAgICAgSW5pdC0+UmVhZFBpcGVEZWxheSkpOwogICB9Ci0gIGVsc2UgLyogRk1DX0JhbmsyX1NEUkFNICovICAgICAgICAgICAgICAgICAgICAgIAorICBlbHNlIC8qIEZNQ19CYW5rMl9TRFJBTSAqLwogICB7Ci0gICAgdG1wcjEgPSBEZXZpY2UtPlNEQ1JbRk1DX1NEUkFNX0JBTksxXTsKLSAgICAKLSAgICAvKiBDbGVhciBTRENMSywgUkJVUlNULCBhbmQgUlBJUEUgYml0cyAqLwotICAgIHRtcHIxICY9ICgodWludDMyX3QpfihGTUNfU0RDUjFfU0RDTEsgfCBGTUNfU0RDUjFfUkJVUlNUIHwgRk1DX1NEQ1IxX1JQSVBFKSk7Ci0gICAgCi0gICAgdG1wcjEgfD0gKHVpbnQzMl90KShJbml0LT5TRENsb2NrUGVyaW9kICAgICAgfFwKLSAgICAgICAgICAgICAgICAgICAgICAgIEluaXQtPlJlYWRCdXJzdCAgICAgICAgICB8XAotICAgICAgICAgICAgICAgICAgICAgICAgSW5pdC0+UmVhZFBpcGVEZWxheSk7Ci0gICAgCi0gICAgdG1wcjIgPSBEZXZpY2UtPlNEQ1JbRk1DX1NEUkFNX0JBTksyXTsKLSAgICAKLSAgICAvKiBDbGVhciBOQywgTlIsIE1XSUQsIE5CLCBDQVMsIFdQLCBTRENMSywgUkJVUlNULCBhbmQgUlBJUEUgYml0cyAqLwotICAgIHRtcHIyICY9ICgodWludDMyX3QpfihGTUNfU0RDUjFfTkMgIHwgRk1DX1NEQ1IxX05SIHwgRk1DX1NEQ1IxX01XSUQgfCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgIEZNQ19TRENSMV9OQiAgfCBGTUNfU0RDUjFfQ0FTIHwgRk1DX1NEQ1IxX1dQICAgfCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgIEZNQ19TRENSMV9TRENMSyB8IEZNQ19TRENSMV9SQlVSU1QgfCBGTUNfU0RDUjFfUlBJUEUpKTsKKyAgICBNT0RJRllfUkVHKERldmljZS0+U0RDUltGTUNfU0RSQU1fQkFOSzFdLAorICAgICAgICAgICAgICAgRk1DX1NEQ1IxX1NEQ0xLICAgICAgICAgICB8CisgICAgICAgICAgICAgICBGTUNfU0RDUjFfUkJVUlNUICAgICAgICAgIHwKKyAgICAgICAgICAgICAgIEZNQ19TRENSMV9SUElQRSwKKyAgICAgICAgICAgICAgIChJbml0LT5TRENsb2NrUGVyaW9kICAgICAgfAorICAgICAgICAgICAgICAgIEluaXQtPlJlYWRCdXJzdCAgICAgICAgICB8CisgICAgICAgICAgICAgICAgSW5pdC0+UmVhZFBpcGVEZWxheSkpOwogCi0gICAgdG1wcjIgfD0gKHVpbnQzMl90KShJbml0LT5Db2x1bW5CaXRzTnVtYmVyICAgfFwKLSAgICAgICAgICAgICAgICAgICAgICAgSW5pdC0+Um93Qml0c051bWJlciAgICAgICB8XAotICAgICAgICAgICAgICAgICAgICAgICBJbml0LT5NZW1vcnlEYXRhV2lkdGggICAgIHxcCi0gICAgICAgICAgICAgICAgICAgICAgIEluaXQtPkludGVybmFsQmFua051bWJlciAgfFwKLSAgICAgICAgICAgICAgICAgICAgICAgSW5pdC0+Q0FTTGF0ZW5jeSAgICAgICAgICB8XAotICAgICAgICAgICAgICAgICAgICAgICBJbml0LT5Xcml0ZVByb3RlY3Rpb24pOwotCi0gICAgRGV2aWNlLT5TRENSW0ZNQ19TRFJBTV9CQU5LMV0gPSB0bXByMTsKLSAgICBEZXZpY2UtPlNEQ1JbRk1DX1NEUkFNX0JBTksyXSA9IHRtcHIyOworICAgIE1PRElGWV9SRUcoRGV2aWNlLT5TRENSW0ZNQ19TRFJBTV9CQU5LMl0sCisgICAgICAgICAgICAgICBTRENSX0NMRUFSX01BU0ssCisgICAgICAgICAgICAgICAoSW5pdC0+Q29sdW1uQml0c051bWJlciAgIHwKKyAgICAgICAgICAgICAgICBJbml0LT5Sb3dCaXRzTnVtYmVyICAgICAgfAorICAgICAgICAgICAgICAgIEluaXQtPk1lbW9yeURhdGFXaWR0aCAgICB8CisgICAgICAgICAgICAgICAgSW5pdC0+SW50ZXJuYWxCYW5rTnVtYmVyIHwKKyAgICAgICAgICAgICAgICBJbml0LT5DQVNMYXRlbmN5ICAgICAgICAgfAorICAgICAgICAgICAgICAgIEluaXQtPldyaXRlUHJvdGVjdGlvbikpOwogICB9Ci0gIAorCiAgIHJldHVybiBIQUxfT0s7CiB9CiAKQEAgLTgxNywxNCArODQ0LDEyIEBACiAgICogICAgICAgICBwYXJhbWV0ZXJzIGluIHRoZSBGTUNfU0RSQU1fVGltaW5nVHlwZURlZgogICAqIEBwYXJhbSAgRGV2aWNlIFBvaW50ZXIgdG8gU0RSQU0gZGV2aWNlIGluc3RhbmNlCiAgICogQHBhcmFtICBUaW1pbmcgUG9pbnRlciB0byBTRFJBTSBUaW1pbmcgc3RydWN0dXJlCi0gICogQHBhcmFtICBCYW5rIFNEUkFNIGJhbmsgbnVtYmVyICAgCisgICogQHBhcmFtICBCYW5rIFNEUkFNIGJhbmsgbnVtYmVyCiAgICogQHJldHZhbCBIQUwgc3RhdHVzCiAgICovCi1IQUxfU3RhdHVzVHlwZURlZiBGTUNfU0RSQU1fVGltaW5nX0luaXQoRk1DX1NEUkFNX1R5cGVEZWYgKkRldmljZSwgRk1DX1NEUkFNX1RpbWluZ1R5cGVEZWYgKlRpbWluZywgdWludDMyX3QgQmFuaykKK0hBTF9TdGF0dXNUeXBlRGVmIEZNQ19TRFJBTV9UaW1pbmdfSW5pdChGTUNfU0RSQU1fVHlwZURlZiAqRGV2aWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZNQ19TRFJBTV9UaW1pbmdUeXBlRGVmICpUaW1pbmcsIHVpbnQzMl90IEJhbmspCiB7Ci0gIHVpbnQzMl90IHRtcHIxID0gMDsKLSAgdWludDMyX3QgdG1wcjIgPSAwOwotICAgIAogICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLwogICBhc3NlcnRfcGFyYW0oSVNfRk1DX1NEUkFNX0RFVklDRShEZXZpY2UpKTsKICAgYXNzZXJ0X3BhcmFtKElTX0ZNQ19MT0FEVE9BQ1RJVkVfREVMQVkoVGltaW5nLT5Mb2FkVG9BY3RpdmVEZWxheSkpOwpAQCAtODM1LDU4ICs4NjAsNDIgQEAKICAgYXNzZXJ0X3BhcmFtKElTX0ZNQ19SUF9ERUxBWShUaW1pbmctPlJQRGVsYXkpKTsKICAgYXNzZXJ0X3BhcmFtKElTX0ZNQ19SQ0RfREVMQVkoVGltaW5nLT5SQ0REZWxheSkpOwogICBhc3NlcnRfcGFyYW0oSVNfRk1DX1NEUkFNX0JBTksoQmFuaykpOwotICAKLSAgLyogU2V0IFNEUkFNIGRldmljZSB0aW1pbmcgcGFyYW1ldGVycyAqLyAKLSAgaWYgKEJhbmsgIT0gRk1DX1NEUkFNX0JBTksyKSAKKworICAvKiBTZXQgU0RSQU0gZGV2aWNlIHRpbWluZyBwYXJhbWV0ZXJzICovCisgIGlmIChCYW5rID09IEZNQ19TRFJBTV9CQU5LMSkKICAgewotICAgIHRtcHIxID0gRGV2aWNlLT5TRFRSW0ZNQ19TRFJBTV9CQU5LMV07Ci0gICAgCi0gICAgLyogQ2xlYXIgVE1SRCwgVFhTUiwgVFJBUywgVFJDLCBUV1IsIFRSUCBhbmQgVFJDRCBiaXRzICovCi0gICAgdG1wcjEgJj0gKCh1aW50MzJfdCl+KEZNQ19TRFRSMV9UTVJEICB8IEZNQ19TRFRSMV9UWFNSIHwgRk1DX1NEVFIxX1RSQVMgfCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgIEZNQ19TRFRSMV9UUkMgIHwgRk1DX1NEVFIxX1RXUiB8IEZNQ19TRFRSMV9UUlAgfCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgIEZNQ19TRFRSMV9UUkNEKSk7Ci0gICAgCi0gICAgdG1wcjEgfD0gKHVpbnQzMl90KSgoKFRpbWluZy0+TG9hZFRvQWN0aXZlRGVsYXkpLTEpICAgICAgICAgICB8XAotICAgICAgICAgICAgICAgICAgICAgICAoKChUaW1pbmctPkV4aXRTZWxmUmVmcmVzaERlbGF5KS0xKSA8PCA0KSB8XAotICAgICAgICAgICAgICAgICAgICAgICAoKChUaW1pbmctPlNlbGZSZWZyZXNoVGltZSktMSkgPDwgOCkgICAgICB8XAotICAgICAgICAgICAgICAgICAgICAgICAoKChUaW1pbmctPlJvd0N5Y2xlRGVsYXkpLTEpIDw8IDEyKSAgICAgICB8XAotICAgICAgICAgICAgICAgICAgICAgICAoKChUaW1pbmctPldyaXRlUmVjb3ZlcnlUaW1lKS0xKSA8PDE2KSAgICB8XAotICAgICAgICAgICAgICAgICAgICAgICAoKChUaW1pbmctPlJQRGVsYXkpLTEpIDw8IDIwKSAgICAgICAgICAgICB8XAotICAgICAgICAgICAgICAgICAgICAgICAoKChUaW1pbmctPlJDRERlbGF5KS0xKSA8PCAyNCkpOwotICAgIERldmljZS0+U0RUUltGTUNfU0RSQU1fQkFOSzFdID0gdG1wcjE7CisgICAgTU9ESUZZX1JFRyhEZXZpY2UtPlNEVFJbRk1DX1NEUkFNX0JBTksxXSwKKyAgICAgICAgICAgICAgIFNEVFJfQ0xFQVJfTUFTSywKKyAgICAgICAgICAgICAgICgoKFRpbWluZy0+TG9hZFRvQWN0aXZlRGVsYXkpIC0gMVUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgICAgICAgICAgKCgoVGltaW5nLT5FeGl0U2VsZlJlZnJlc2hEZWxheSkgLSAxVSkgPDwgRk1DX1NEVFIxX1RYU1JfUG9zKSB8CisgICAgICAgICAgICAgICAgKCgoVGltaW5nLT5TZWxmUmVmcmVzaFRpbWUpIC0gMVUpICAgICAgPDwgRk1DX1NEVFIxX1RSQVNfUG9zKSB8CisgICAgICAgICAgICAgICAgKCgoVGltaW5nLT5Sb3dDeWNsZURlbGF5KSAtIDFVKSAgICAgICAgPDwgRk1DX1NEVFIxX1RSQ19Qb3MpICB8CisgICAgICAgICAgICAgICAgKCgoVGltaW5nLT5Xcml0ZVJlY292ZXJ5VGltZSkgLSAxVSkgICAgPDwgRk1DX1NEVFIxX1RXUl9Qb3MpICB8CisgICAgICAgICAgICAgICAgKCgoVGltaW5nLT5SUERlbGF5KSAtIDFVKSAgICAgICAgICAgICAgPDwgRk1DX1NEVFIxX1RSUF9Qb3MpICB8CisgICAgICAgICAgICAgICAgKCgoVGltaW5nLT5SQ0REZWxheSkgLSAxVSkgICAgICAgICAgICAgPDwgRk1DX1NEVFIxX1RSQ0RfUG9zKSkpOwogICB9CiAgIGVsc2UgLyogRk1DX0JhbmsyX1NEUkFNICovCiAgIHsKLSAgICB0bXByMSA9IERldmljZS0+U0RUUltGTUNfU0RSQU1fQkFOSzFdOwotICAgIAotICAgIC8qIENsZWFyIFRSQyBhbmQgVFJQIGJpdHMgKi8KLSAgICB0bXByMSAmPSAoKHVpbnQzMl90KX4oRk1DX1NEVFIxX1RSQyB8IEZNQ19TRFRSMV9UUlApKTsKLSAgICAKLSAgICB0bXByMSB8PSAodWludDMyX3QpKCgoKFRpbWluZy0+Um93Q3ljbGVEZWxheSktMSkgPDwgMTIpICAgICAgIHxcCi0gICAgICAgICAgICAgICAgICAgICAgICAoKChUaW1pbmctPlJQRGVsYXkpLTEpIDw8IDIwKSk7IAotICAgIAotICAgIHRtcHIyID0gRGV2aWNlLT5TRFRSW0ZNQ19TRFJBTV9CQU5LMl07Ci0gICAgCi0gICAgLyogQ2xlYXIgVE1SRCwgVFhTUiwgVFJBUywgVFJDLCBUV1IsIFRSUCBhbmQgVFJDRCBiaXRzICovCi0gICAgdG1wcjIgJj0gKCh1aW50MzJfdCl+KEZNQ19TRFRSMV9UTVJEICB8IEZNQ19TRFRSMV9UWFNSIHwgRk1DX1NEVFIxX1RSQVMgfCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgIEZNQ19TRFRSMV9UUkMgIHwgRk1DX1NEVFIxX1RXUiB8IEZNQ19TRFRSMV9UUlAgfCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgIEZNQ19TRFRSMV9UUkNEKSk7Ci0gICAgCi0gICAgdG1wcjIgfD0gKHVpbnQzMl90KSgoKFRpbWluZy0+TG9hZFRvQWN0aXZlRGVsYXkpLTEpICAgICAgICAgICB8XAotICAgICAgICAgICAgICAgICAgICAgICAoKChUaW1pbmctPkV4aXRTZWxmUmVmcmVzaERlbGF5KS0xKSA8PCA0KSAgfFwKLSAgICAgICAgICAgICAgICAgICAgICAgKCgoVGltaW5nLT5TZWxmUmVmcmVzaFRpbWUpLTEpIDw8IDgpICAgICAgIHxcCi0gICAgICAgICAgICAgICAgICAgICAgICgoKFRpbWluZy0+V3JpdGVSZWNvdmVyeVRpbWUpLTEpIDw8MTYpICAgICB8XAotICAgICAgICAgICAgICAgICAgICAgICAoKChUaW1pbmctPlJDRERlbGF5KS0xKSA8PCAyNCkpOyAgIAorICAgIE1PRElGWV9SRUcoRGV2aWNlLT5TRFRSW0ZNQ19TRFJBTV9CQU5LMV0sCisgICAgICAgICAgICAgICBGTUNfU0RUUjFfVFJDIHwKKyAgICAgICAgICAgICAgIEZNQ19TRFRSMV9UUlAsCisgICAgICAgICAgICAgICAoKChUaW1pbmctPlJvd0N5Y2xlRGVsYXkpIC0gMVUpICAgICAgICAgPDwgRk1DX1NEVFIxX1RSQ19Qb3MpICB8CisgICAgICAgICAgICAgICAoKChUaW1pbmctPlJQRGVsYXkpIC0gMVUpICAgICAgICAgICAgICAgPDwgRk1DX1NEVFIxX1RSUF9Qb3MpKTsKIAotICAgIERldmljZS0+U0RUUltGTUNfU0RSQU1fQkFOSzFdID0gdG1wcjE7Ci0gICAgRGV2aWNlLT5TRFRSW0ZNQ19TRFJBTV9CQU5LMl0gPSB0bXByMjsKKyAgICBNT0RJRllfUkVHKERldmljZS0+U0RUUltGTUNfU0RSQU1fQkFOSzJdLAorICAgICAgICAgICAgICAgU0RUUl9DTEVBUl9NQVNLLAorICAgICAgICAgICAgICAgKCgoVGltaW5nLT5Mb2FkVG9BY3RpdmVEZWxheSkgLSAxVSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgICAgICAgICAoKChUaW1pbmctPkV4aXRTZWxmUmVmcmVzaERlbGF5KSAtIDFVKSA8PCBGTUNfU0RUUjFfVFhTUl9Qb3MpIHwKKyAgICAgICAgICAgICAgICAoKChUaW1pbmctPlNlbGZSZWZyZXNoVGltZSkgLSAxVSkgICAgICA8PCBGTUNfU0RUUjFfVFJBU19Qb3MpIHwKKyAgICAgICAgICAgICAgICAoKChUaW1pbmctPldyaXRlUmVjb3ZlcnlUaW1lKSAtIDFVKSAgICA8PCBGTUNfU0RUUjFfVFdSX1BvcykgIHwKKyAgICAgICAgICAgICAgICAoKChUaW1pbmctPlJDRERlbGF5KSAtIDFVKSAgICAgICAgICAgICA8PCBGTUNfU0RUUjFfVFJDRF9Qb3MpKSk7CiAgIH0KLSAgCisKICAgcmV0dXJuIEhBTF9PSzsKIH0KIAogLyoqCi0gICogQGJyaWVmICBEZUluaXRpYWxpemVzIHRoZSBGTUNfU0RSQU0gcGVyaXBoZXJhbCAKKyAgKiBAYnJpZWYgIERlSW5pdGlhbGl6ZXMgdGhlIEZNQ19TRFJBTSBwZXJpcGhlcmFsCiAgICogQHBhcmFtICBEZXZpY2UgUG9pbnRlciB0byBTRFJBTSBkZXZpY2UgaW5zdGFuY2UKICAgKiBAcmV0dmFsIEhBTCBzdGF0dXMKICAgKi8KQEAgLTg5NSwxMyArOTA0LDEzIEBACiAgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCiAgIGFzc2VydF9wYXJhbShJU19GTUNfU0RSQU1fREVWSUNFKERldmljZSkpOwogICBhc3NlcnRfcGFyYW0oSVNfRk1DX1NEUkFNX0JBTksoQmFuaykpOwotICAKKwogICAvKiBEZS1pbml0aWFsaXplIHRoZSBTRFJBTSBkZXZpY2UgKi8KLSAgRGV2aWNlLT5TRENSW0JhbmtdID0gMHgwMDAwMDJEMDsKLSAgRGV2aWNlLT5TRFRSW0JhbmtdID0gMHgwRkZGRkZGRjsgICAgCi0gIERldmljZS0+U0RDTVIgICAgICA9IDB4MDAwMDAwMDA7Ci0gIERldmljZS0+U0RSVFIgICAgICA9IDB4MDAwMDAwMDA7Ci0gIERldmljZS0+U0RTUiAgICAgICA9IDB4MDAwMDAwMDA7CisgIERldmljZS0+U0RDUltCYW5rXSA9IDB4MDAwMDAyRDBVOworICBEZXZpY2UtPlNEVFJbQmFua10gPSAweDBGRkZGRkZGVTsKKyAgRGV2aWNlLT5TRENNUiAgICAgID0gMHgwMDAwMDAwMFU7CisgIERldmljZS0+U0RSVFIgICAgICA9IDB4MDAwMDAwMDBVOworICBEZXZpY2UtPlNEU1IgICAgICAgPSAweDAwMDAwMDAwVTsKIAogICByZXR1cm4gSEFMX09LOwogfQpAQCAtOTExLDEyICs5MjAsMTIgQEAKICAgKi8KIAogLyoqIEBhZGR0b2dyb3VwIEZNQ19MTF9TRFJBTVByaXZhdGVfRnVuY3Rpb25zX0dyb3VwMgotICAqICBAYnJpZWYgICBtYW5hZ2VtZW50IGZ1bmN0aW9ucyAKKyAgKiAgQGJyaWVmICAgbWFuYWdlbWVudCBmdW5jdGlvbnMKICAgKgotQHZlcmJhdGltICAgCitAdmVyYmF0aW0KICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgICAgICAgICAgICAgICAgICAgICAgIyMjIyMgRk1DX1NEUkFNIENvbnRyb2wgZnVuY3Rpb25zICMjIyMjCi0gID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAgCisgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBbLi5dCiAgICAgVGhpcyBzdWJzZWN0aW9uIHByb3ZpZGVzIGEgc2V0IG9mIGZ1bmN0aW9ucyBhbGxvd2luZyB0byBjb250cm9sIGR5bmFtaWNhbGx5CiAgICAgdGhlIEZNQyBTRFJBTSBpbnRlcmZhY2UuCkBAIC05MjgsMTkgKzkzNywxOSBAQAogLyoqCiAgICogQGJyaWVmICBFbmFibGVzIGR5bmFtaWNhbGx5IEZNQ19TRFJBTSB3cml0ZSBwcm90ZWN0aW9uLgogICAqIEBwYXJhbSAgRGV2aWNlIFBvaW50ZXIgdG8gU0RSQU0gZGV2aWNlIGluc3RhbmNlCi0gICogQHBhcmFtICBCYW5rIFNEUkFNIGJhbmsgbnVtYmVyIAorICAqIEBwYXJhbSAgQmFuayBTRFJBTSBiYW5rIG51bWJlcgogICAqIEByZXR2YWwgSEFMIHN0YXR1cwogICAqLwogSEFMX1N0YXR1c1R5cGVEZWYgRk1DX1NEUkFNX1dyaXRlUHJvdGVjdGlvbl9FbmFibGUoRk1DX1NEUkFNX1R5cGVEZWYgKkRldmljZSwgdWludDMyX3QgQmFuaykKLXsgCit7CiAgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCiAgIGFzc2VydF9wYXJhbShJU19GTUNfU0RSQU1fREVWSUNFKERldmljZSkpOwogICBhc3NlcnRfcGFyYW0oSVNfRk1DX1NEUkFNX0JBTksoQmFuaykpOwotICAKKwogICAvKiBFbmFibGUgd3JpdGUgcHJvdGVjdGlvbiAqLwotICBEZXZpY2UtPlNEQ1JbQmFua10gfD0gRk1DX1NEUkFNX1dSSVRFX1BST1RFQ1RJT05fRU5BQkxFOwotICAKLSAgcmV0dXJuIEhBTF9PSzsgIAorICBTRVRfQklUKERldmljZS0+U0RDUltCYW5rXSwgRk1DX1NEUkFNX1dSSVRFX1BST1RFQ1RJT05fRU5BQkxFKTsKKworICByZXR1cm4gSEFMX09LOwogfQogCiAvKioKQEAgLTk1Myw0MyArOTYyLDQ1IEBACiAgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCiAgIGFzc2VydF9wYXJhbShJU19GTUNfU0RSQU1fREVWSUNFKERldmljZSkpOwogICBhc3NlcnRfcGFyYW0oSVNfRk1DX1NEUkFNX0JBTksoQmFuaykpOwotICAKKwogICAvKiBEaXNhYmxlIHdyaXRlIHByb3RlY3Rpb24gKi8KLSAgRGV2aWNlLT5TRENSW0JhbmtdICY9IH5GTUNfU0RSQU1fV1JJVEVfUFJPVEVDVElPTl9FTkFCTEU7Ci0gIAorICBDTEVBUl9CSVQoRGV2aWNlLT5TRENSW0JhbmtdLCBGTUNfU0RSQU1fV1JJVEVfUFJPVEVDVElPTl9FTkFCTEUpOworCiAgIHJldHVybiBIQUxfT0s7CiB9Ci0gIAorCiAvKioKICAgKiBAYnJpZWYgIFNlbmQgQ29tbWFuZCB0byB0aGUgRk1DIFNEUkFNIGJhbmsKICAgKiBAcGFyYW0gIERldmljZSBQb2ludGVyIHRvIFNEUkFNIGRldmljZSBpbnN0YW5jZQotICAqIEBwYXJhbSAgQ29tbWFuZCBQb2ludGVyIHRvIFNEUkFNIGNvbW1hbmQgc3RydWN0dXJlICAgCisgICogQHBhcmFtICBDb21tYW5kIFBvaW50ZXIgdG8gU0RSQU0gY29tbWFuZCBzdHJ1Y3R1cmUKICAgKiBAcGFyYW0gIFRpbWluZyBQb2ludGVyIHRvIFNEUkFNIFRpbWluZyBzdHJ1Y3R1cmUKICAgKiBAcGFyYW0gIFRpbWVvdXQgVGltZW91dCB3YWl0IHZhbHVlCiAgICogQHJldHZhbCBIQUwgc3RhdGUKLSAgKi8gIAotSEFMX1N0YXR1c1R5cGVEZWYgRk1DX1NEUkFNX1NlbmRDb21tYW5kKEZNQ19TRFJBTV9UeXBlRGVmICpEZXZpY2UsIEZNQ19TRFJBTV9Db21tYW5kVHlwZURlZiAqQ29tbWFuZCwgdWludDMyX3QgVGltZW91dCkKLXsgCisgICovCitIQUxfU3RhdHVzVHlwZURlZiBGTUNfU0RSQU1fU2VuZENvbW1hbmQoRk1DX1NEUkFNX1R5cGVEZWYgKkRldmljZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGTUNfU0RSQU1fQ29tbWFuZFR5cGVEZWYgKkNvbW1hbmQsIHVpbnQzMl90IFRpbWVvdXQpCit7CiAgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCiAgIGFzc2VydF9wYXJhbShJU19GTUNfU0RSQU1fREVWSUNFKERldmljZSkpOwogICBhc3NlcnRfcGFyYW0oSVNfRk1DX0NPTU1BTkRfTU9ERShDb21tYW5kLT5Db21tYW5kTW9kZSkpOwogICBhc3NlcnRfcGFyYW0oSVNfRk1DX0NPTU1BTkRfVEFSR0VUKENvbW1hbmQtPkNvbW1hbmRUYXJnZXQpKTsKICAgYXNzZXJ0X3BhcmFtKElTX0ZNQ19BVVRPUkVGUkVTSF9OVU1CRVIoQ29tbWFuZC0+QXV0b1JlZnJlc2hOdW1iZXIpKTsKLSAgYXNzZXJ0X3BhcmFtKElTX0ZNQ19NT0RFX1JFR0lTVEVSKENvbW1hbmQtPk1vZGVSZWdpc3RlckRlZmluaXRpb24pKTsgIAorICBhc3NlcnRfcGFyYW0oSVNfRk1DX01PREVfUkVHSVNURVIoQ29tbWFuZC0+TW9kZVJlZ2lzdGVyRGVmaW5pdGlvbikpOwogCiAgIC8qIFNldCBjb21tYW5kIHJlZ2lzdGVyICovCi0gIE1PRElGWV9SRUcoRGV2aWNlLT5TRENNUiwgKEZNQ19TRENNUl9NT0RFIHwgRk1DX1NEQ01SX0NUQjIgfCBGTUNfU0RDTVJfQ1RCMSB8IAotICAgICAgICAgICAgIEZNQ19TRENNUl9OUkZTIHwgRk1DX1NEQ01SX01SRCksICgoQ29tbWFuZC0+Q29tbWFuZE1vZGUpIHwgCi0gICAgICAgICAgICAgKENvbW1hbmQtPkNvbW1hbmRUYXJnZXQpIHwgKCgoQ29tbWFuZC0+QXV0b1JlZnJlc2hOdW1iZXIpIC0gMVUpIDw8IEZNQ19TRENNUl9OUkZTX1BvcykgfAotICAgICAgICAgICAgICgoQ29tbWFuZC0+TW9kZVJlZ2lzdGVyRGVmaW5pdGlvbikgPDwgRk1DX1NEQ01SX01SRF9Qb3MpKSk7Ci0gIAotICByZXR1cm4gSEFMX09LOyAgCisgIE1PRElGWV9SRUcoRGV2aWNlLT5TRENNUiwgKEZNQ19TRENNUl9NT0RFIHwgRk1DX1NEQ01SX0NUQjIgfCBGTUNfU0RDTVJfQ1RCMSB8IEZNQ19TRENNUl9OUkZTIHwgRk1DX1NEQ01SX01SRCksCisgICAgICAgICAgICAgKChDb21tYW5kLT5Db21tYW5kTW9kZSkgfCAoQ29tbWFuZC0+Q29tbWFuZFRhcmdldCkgfAorICAgICAgICAgICAgICAoKChDb21tYW5kLT5BdXRvUmVmcmVzaE51bWJlcikgLSAxVSkgPDwgRk1DX1NEQ01SX05SRlNfUG9zKSB8CisgICAgICAgICAgICAgICgoQ29tbWFuZC0+TW9kZVJlZ2lzdGVyRGVmaW5pdGlvbikgPDwgRk1DX1NEQ01SX01SRF9Qb3MpKSk7CisgIC8qIFByZXZlbnQgdW51c2VkIGFyZ3VtZW50KHMpIGNvbXBpbGF0aW9uIHdhcm5pbmcgKi8KKyAgVU5VU0VEKFRpbWVvdXQpOworICByZXR1cm4gSEFMX09LOwogfQogCiAvKioKICAgKiBAYnJpZWYgIFByb2dyYW0gdGhlIFNEUkFNIE1lbW9yeSBSZWZyZXNoIHJhdGUuCi0gICogQHBhcmFtICBEZXZpY2UgUG9pbnRlciB0byBTRFJBTSBkZXZpY2UgaW5zdGFuY2UgIAotICAqIEBwYXJhbSAgUmVmcmVzaFJhdGUgVGhlIFNEUkFNIHJlZnJlc2ggcmF0ZSB2YWx1ZS4gICAgICAgCisgICogQHBhcmFtICBEZXZpY2UgUG9pbnRlciB0byBTRFJBTSBkZXZpY2UgaW5zdGFuY2UKKyAgKiBAcGFyYW0gIFJlZnJlc2hSYXRlIFRoZSBTRFJBTSByZWZyZXNoIHJhdGUgdmFsdWUuCiAgICogQHJldHZhbCBIQUwgc3RhdGUKICAgKi8KIEhBTF9TdGF0dXNUeXBlRGVmIEZNQ19TRFJBTV9Qcm9ncmFtUmVmcmVzaFJhdGUoRk1DX1NEUkFNX1R5cGVEZWYgKkRldmljZSwgdWludDMyX3QgUmVmcmVzaFJhdGUpCkBAIC05OTcsNTggKzEwMDgsNTkgQEAKICAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8KICAgYXNzZXJ0X3BhcmFtKElTX0ZNQ19TRFJBTV9ERVZJQ0UoRGV2aWNlKSk7CiAgIGFzc2VydF9wYXJhbShJU19GTUNfUkVGUkVTSF9SQVRFKFJlZnJlc2hSYXRlKSk7Ci0gIAorCiAgIC8qIFNldCB0aGUgcmVmcmVzaCByYXRlIGluIGNvbW1hbmQgcmVnaXN0ZXIgKi8KLSAgRGV2aWNlLT5TRFJUUiB8PSAoUmVmcmVzaFJhdGU8PDEpOwotICAKLSAgcmV0dXJuIEhBTF9PSzsgICAKKyAgTU9ESUZZX1JFRyhEZXZpY2UtPlNEUlRSLCBGTUNfU0RSVFJfQ09VTlQsIChSZWZyZXNoUmF0ZSA8PCBGTUNfU0RSVFJfQ09VTlRfUG9zKSk7CisKKyAgcmV0dXJuIEhBTF9PSzsKIH0KIAogLyoqCiAgICogQGJyaWVmICBTZXQgdGhlIE51bWJlciBvZiBjb25zZWN1dGl2ZSBTRFJBTSBNZW1vcnkgYXV0byBSZWZyZXNoIGNvbW1hbmRzLgotICAqIEBwYXJhbSAgRGV2aWNlIFBvaW50ZXIgdG8gU0RSQU0gZGV2aWNlIGluc3RhbmNlICAKLSAgKiBAcGFyYW0gIEF1dG9SZWZyZXNoTnVtYmVyIFNwZWNpZmllcyB0aGUgYXV0byBSZWZyZXNoIG51bWJlci4gICAgICAgCisgICogQHBhcmFtICBEZXZpY2UgUG9pbnRlciB0byBTRFJBTSBkZXZpY2UgaW5zdGFuY2UKKyAgKiBAcGFyYW0gIEF1dG9SZWZyZXNoTnVtYmVyIFNwZWNpZmllcyB0aGUgYXV0byBSZWZyZXNoIG51bWJlci4KICAgKiBAcmV0dmFsIE5vbmUKICAgKi8KLUhBTF9TdGF0dXNUeXBlRGVmIEZNQ19TRFJBTV9TZXRBdXRvUmVmcmVzaE51bWJlcihGTUNfU0RSQU1fVHlwZURlZiAqRGV2aWNlLCB1aW50MzJfdCBBdXRvUmVmcmVzaE51bWJlcikKK0hBTF9TdGF0dXNUeXBlRGVmIEZNQ19TRFJBTV9TZXRBdXRvUmVmcmVzaE51bWJlcihGTUNfU0RSQU1fVHlwZURlZiAqRGV2aWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IEF1dG9SZWZyZXNoTnVtYmVyKQogewogICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLwogICBhc3NlcnRfcGFyYW0oSVNfRk1DX1NEUkFNX0RFVklDRShEZXZpY2UpKTsKICAgYXNzZXJ0X3BhcmFtKElTX0ZNQ19BVVRPUkVGUkVTSF9OVU1CRVIoQXV0b1JlZnJlc2hOdW1iZXIpKTsKLSAgCi0gIC8qIFNldCB0aGUgQXV0by1yZWZyZXNoIG51bWJlciBpbiBjb21tYW5kIHJlZ2lzdGVyICovCi0gIERldmljZS0+U0RDTVIgfD0gKEF1dG9SZWZyZXNoTnVtYmVyIDw8IDUpOyAKIAotICByZXR1cm4gSEFMX09LOyAgCisgIC8qIFNldCB0aGUgQXV0by1yZWZyZXNoIG51bWJlciBpbiBjb21tYW5kIHJlZ2lzdGVyICovCisgIE1PRElGWV9SRUcoRGV2aWNlLT5TRENNUiwgRk1DX1NEQ01SX05SRlMsICgoQXV0b1JlZnJlc2hOdW1iZXIgLSAxVSkgPDwgRk1DX1NEQ01SX05SRlNfUG9zKSk7CisKKyAgcmV0dXJuIEhBTF9PSzsKIH0KIAogLyoqCiAgICogQGJyaWVmICBSZXR1cm5zIHRoZSBpbmRpY2F0ZWQgRk1DIFNEUkFNIGJhbmsgbW9kZSBzdGF0dXMuCi0gICogQHBhcmFtICBEZXZpY2UgUG9pbnRlciB0byBTRFJBTSBkZXZpY2UgaW5zdGFuY2UgIAotICAqIEBwYXJhbSAgQmFuayBEZWZpbmVzIHRoZSBGTUMgU0RSQU0gYmFuay4gVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIAotICAqICAgICAgICAgICAgICAgICAgICAgRk1DX0JhbmsxX1NEUkFNIG9yIEZNQ19CYW5rMl9TRFJBTS4gCisgICogQHBhcmFtICBEZXZpY2UgUG9pbnRlciB0byBTRFJBTSBkZXZpY2UgaW5zdGFuY2UKKyAgKiBAcGFyYW0gIEJhbmsgRGVmaW5lcyB0aGUgRk1DIFNEUkFNIGJhbmsuIFRoaXMgcGFyYW1ldGVyIGNhbiBiZQorICAqICAgICAgICAgICAgICAgICAgICAgRk1DX0JhbmsxX1NEUkFNIG9yIEZNQ19CYW5rMl9TRFJBTS4KICAgKiBAcmV0dmFsIFRoZSBGTUMgU0RSQU0gYmFuayBtb2RlIHN0YXR1cywgY291bGQgYmUgb24gb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6Ci0gICogICAgICAgICBGTUNfU0RSQU1fTk9STUFMX01PREUsIEZNQ19TRFJBTV9TRUxGX1JFRlJFU0hfTU9ERSBvciAKLSAgKiAgICAgICAgIEZNQ19TRFJBTV9QT1dFUl9ET1dOX01PREUuICAgICAgICAgICAKKyAgKiAgICAgICAgIEZNQ19TRFJBTV9OT1JNQUxfTU9ERSwgRk1DX1NEUkFNX1NFTEZfUkVGUkVTSF9NT0RFIG9yCisgICogICAgICAgICBGTUNfU0RSQU1fUE9XRVJfRE9XTl9NT0RFLgogICAqLwogdWludDMyX3QgRk1DX1NEUkFNX0dldE1vZGVTdGF0dXMoRk1DX1NEUkFNX1R5cGVEZWYgKkRldmljZSwgdWludDMyX3QgQmFuaykKIHsKLSAgdWludDMyX3QgdG1wcmVnID0gMDsKLSAgCisgIHVpbnQzMl90IHRtcHJlZzsKKwogICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLwogICBhc3NlcnRfcGFyYW0oSVNfRk1DX1NEUkFNX0RFVklDRShEZXZpY2UpKTsKICAgYXNzZXJ0X3BhcmFtKElTX0ZNQ19TRFJBTV9CQU5LKEJhbmspKTsKIAogICAvKiBHZXQgdGhlIGNvcnJlc3BvbmRpbmcgYmFuayBtb2RlICovCi0gIGlmKEJhbmsgPT0gRk1DX1NEUkFNX0JBTksxKQorICBpZiAoQmFuayA9PSBGTUNfU0RSQU1fQkFOSzEpCiAgIHsKLSAgICB0bXByZWcgPSAodWludDMyX3QpKERldmljZS0+U0RTUiAmIEZNQ19TRFNSX01PREVTMSk7IAorICAgIHRtcHJlZyA9ICh1aW50MzJfdCkoRGV2aWNlLT5TRFNSICYgRk1DX1NEU1JfTU9ERVMxKTsKICAgfQogICBlbHNlCiAgIHsKLSAgICB0bXByZWcgPSAoKHVpbnQzMl90KShEZXZpY2UtPlNEU1IgJiBGTUNfU0RTUl9NT0RFUzIpID4+IDIpOworICAgIHRtcHJlZyA9ICgodWludDMyX3QpKERldmljZS0+U0RTUiAmIEZNQ19TRFNSX01PREVTMikgPj4gMlUpOwogICB9Ci0gIAorCiAgIC8qIFJldHVybiB0aGUgbW9kZSBzdGF0dXMgKi8KICAgcmV0dXJuIHRtcHJlZzsKIH0KQEAgLTEwNjEsMTAgKzEwNzMsNiBAQAogICAqIEB9CiAgICovCiAKLS8qKgotICAqIEB9Ci0gICovCi0jZW5kaWYgLyogSEFMX1NSQU1fTU9EVUxFX0VOQUJMRUQgfHwgSEFMX05PUl9NT0RVTEVfRU5BQkxFRCB8fCBIQUxfTkFORF9NT0RVTEVfRU5BQkxFRCB8fCBIQUxfU0RSQU1fTU9EVUxFX0VOQUJMRUQgKi8KIAogLyoqCiAgICogQH0KQEAgLTEwNzQsNCArMTA4MiwxMCBAQAogICAqIEB9CiAgICovCiAKLS8qKioqKioqKioqKioqKioqKioqKioqKiogKEMpIENPUFlSSUdIVCBTVE1pY3JvZWxlY3Ryb25pY3MgKioqKipFTkQgT0YgRklMRSoqKiovCisjZW5kaWYgLyogSEFMX05PUl9NT0RVTEVfRU5BQkxFRCAqLworLyoqCisgICogQH0KKyAgKi8KKy8qKgorICAqIEB9CisgICovCmRpZmYgLS1naXQgYS9TcmMvc3RtMzJmN3h4X2xsX2dwaW8uYyBiL1NyYy9zdG0zMmY3eHhfbGxfZ3Bpby5jCmluZGV4IDg2Zjk5OTYuLjIzZDM3ZDAgMTAwNjQ0Ci0tLSBhL1NyYy9zdG0zMmY3eHhfbGxfZ3Bpby5jCisrKyBiL1NyYy9zdG0zMmY3eHhfbGxfZ3Bpby5jCkBAIC02LDEzICs2LDEyIEBACiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAqIEBhdHRlbnRpb24KICAgKgotICAqIDxoMj48Y2VudGVyPiZjb3B5OyBDb3B5cmlnaHQgKGMpIDIwMTcgU1RNaWNyb2VsZWN0cm9uaWNzLgotICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuPC9jZW50ZXI+PC9oMj4KKyAgKiBDb3B5cmlnaHQgKGMpIDIwMTcgU1RNaWNyb2VsZWN0cm9uaWNzLgorICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICoKLSAgKiBUaGlzIHNvZnR3YXJlIGNvbXBvbmVudCBpcyBsaWNlbnNlZCBieSBTVCB1bmRlciBCU0QgMy1DbGF1c2UgbGljZW5zZSwKLSAgKiB0aGUgIkxpY2Vuc2UiOyBZb3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlCi0gICogTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0OgotICAqICAgICAgICAgICAgICAgICAgICAgICAgb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvQlNELTMtQ2xhdXNlCisgICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCB1bmRlciB0ZXJtcyB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlCisgICogaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc29mdHdhcmUgY29tcG9uZW50LgorICAqIElmIG5vIExJQ0VOU0UgZmlsZSBjb21lcyB3aXRoIHRoaXMgc29mdHdhcmUsIGl0IGlzIHByb3ZpZGVkIEFTLUlTLgogICAqCiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAqLwpAQCAtMjk5LDQgKzI5OCwzIEBACiAKICNlbmRpZiAvKiBVU0VfRlVMTF9MTF9EUklWRVIgKi8KIAotLyoqKioqKioqKioqKioqKioqKioqKioqKiAoQykgQ09QWVJJR0hUIFNUTWljcm9lbGVjdHJvbmljcyAqKioqKkVORCBPRiBGSUxFKioqKi8KZGlmZiAtLWdpdCBhL1NyYy9zdG0zMmY3eHhfbGxfaTJjLmMgYi9TcmMvc3RtMzJmN3h4X2xsX2kyYy5jCmluZGV4IGEyZWI1ZDUuLjFlMzY0ODAgMTAwNjQ0Ci0tLSBhL1NyYy9zdG0zMmY3eHhfbGxfaTJjLmMKKysrIGIvU3JjL3N0bTMyZjd4eF9sbF9pMmMuYwpAQCAtNiwxMyArNiwxMiBAQAogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgKiBAYXR0ZW50aW9uCiAgICoKLSAgKiA8aDI+PGNlbnRlcj4mY29weTsgQ29weXJpZ2h0IChjKSAyMDE3IFNUTWljcm9lbGVjdHJvbmljcy4KLSAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLjwvY2VudGVyPjwvaDI+CisgICogQ29weXJpZ2h0IChjKSAyMDE3IFNUTWljcm9lbGVjdHJvbmljcy4KKyAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAqCi0gICogVGhpcyBzb2Z0d2FyZSBjb21wb25lbnQgaXMgbGljZW5zZWQgYnkgU1QgdW5kZXIgQlNEIDMtQ2xhdXNlIGxpY2Vuc2UsCi0gICogdGhlICJMaWNlbnNlIjsgWW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZQotICAqIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdDoKLSAgKiAgICAgICAgICAgICAgICAgICAgICAgIG9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0JTRC0zLUNsYXVzZQorICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgdW5kZXIgdGVybXMgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZQorICAqIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvZnR3YXJlIGNvbXBvbmVudC4KKyAgKiBJZiBubyBMSUNFTlNFIGZpbGUgY29tZXMgd2l0aCB0aGlzIHNvZnR3YXJlLCBpdCBpcyBwcm92aWRlZCBBUy1JUy4KICAgKgogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgKi8KQEAgLTI1LDcgKzI0LDcgQEAKICNpbmNsdWRlICJzdG0zMl9hc3NlcnQuaCIKICNlbHNlCiAjZGVmaW5lIGFzc2VydF9wYXJhbShleHByKSAoKHZvaWQpMFUpCi0jZW5kaWYKKyNlbmRpZiAvKiBVU0VfRlVMTF9BU1NFUlQgKi8KIAogLyoqIEBhZGR0b2dyb3VwIFNUTTMyRjd4eF9MTF9Ecml2ZXIKICAgKiBAewpAQCAtMTI1LDcgKzEyNCw3IEBACiAgICAgLyogUmVsZWFzZSByZXNldCBvZiBJMkMgY2xvY2sgKi8KICAgICBMTF9BUEIxX0dSUDFfUmVsZWFzZVJlc2V0KExMX0FQQjFfR1JQMV9QRVJJUEhfSTJDNCk7CiAgIH0KLSNlbmRpZgorI2VuZGlmIC8qIEkyQzQgKi8KICAgZWxzZQogICB7CiAgICAgc3RhdHVzID0gRVJST1I7CkBAIC0yNDEsNSArMjQwLDMgQEAKICAgKi8KIAogI2VuZGlmIC8qIFVTRV9GVUxMX0xMX0RSSVZFUiAqLwotCi0vKioqKioqKioqKioqKioqKioqKioqKioqIChDKSBDT1BZUklHSFQgU1RNaWNyb2VsZWN0cm9uaWNzICoqKioqRU5EIE9GIEZJTEUqKioqLwpkaWZmIC0tZ2l0IGEvU3JjL3N0bTMyZjd4eF9sbF9scHRpbS5jIGIvU3JjL3N0bTMyZjd4eF9sbF9scHRpbS5jCmluZGV4IDZjNTg1NDQuLjQxZjhlM2IgMTAwNjQ0Ci0tLSBhL1NyYy9zdG0zMmY3eHhfbGxfbHB0aW0uYworKysgYi9TcmMvc3RtMzJmN3h4X2xsX2xwdGltLmMKQEAgLTYsMTMgKzYsMTIgQEAKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgICogQGF0dGVudGlvbgogICAqCi0gICogPGgyPjxjZW50ZXI+JmNvcHk7IENvcHlyaWdodCAoYykgMjAxNyBTVE1pY3JvZWxlY3Ryb25pY3MuCi0gICogQWxsIHJpZ2h0cyByZXNlcnZlZC48L2NlbnRlcj48L2gyPgorICAqIENvcHlyaWdodCAoYykgMjAxNyBTVE1pY3JvZWxlY3Ryb25pY3MuCisgICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgKgotICAqIFRoaXMgc29mdHdhcmUgY29tcG9uZW50IGlzIGxpY2Vuc2VkIGJ5IFNUIHVuZGVyIEJTRCAzLUNsYXVzZSBsaWNlbnNlLAotICAqIHRoZSAiTGljZW5zZSI7IFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUKLSAgKiBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQ6Ci0gICogICAgICAgICAgICAgICAgICAgICAgICBvcGVuc291cmNlLm9yZy9saWNlbnNlcy9CU0QtMy1DbGF1c2UKKyAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIHVuZGVyIHRlcm1zIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUKKyAgKiBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb2Z0d2FyZSBjb21wb25lbnQuCisgICogSWYgbm8gTElDRU5TRSBmaWxlIGNvbWVzIHdpdGggdGhpcyBzb2Z0d2FyZSwgaXQgaXMgcHJvdmlkZWQgQVMtSVMuCiAgICoKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgICovCkBAIC0yOCw3ICsyNyw3IEBACiAjaW5jbHVkZSAic3RtMzJfYXNzZXJ0LmgiCiAjZWxzZQogI2RlZmluZSBhc3NlcnRfcGFyYW0oZXhwcikgKCh2b2lkKTBVKQotI2VuZGlmCisjZW5kaWYgLyogVVNFX0ZVTExfQVNTRVJUICovCiAKIC8qKiBAYWRkdG9ncm91cCBTVE0zMkY3eHhfTExfRHJpdmVyCiAgICogQHsKQEAgLTE4OSwxMSArMTg4LDE0IEBACiAgIHVpbnQzMl90IHRtcENGR1I7CiAgIHVpbnQzMl90IHRtcENNUDsKICAgdWludDMyX3QgdG1wQVJSOworICB1aW50MzJfdCBwcmltYXNrX2JpdDsKIAogICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLwogICBhc3NlcnRfcGFyYW0oSVNfTFBUSU1fSU5TVEFOQ0UoTFBUSU14KSk7CiAKLSAgX19kaXNhYmxlX2lycSgpOworICAvKiBFbnRlciBjcml0aWNhbCBzZWN0aW9uICovCisgIHByaW1hc2tfYml0ID0gX19nZXRfUFJJTUFTSygpOworICBfX3NldF9QUklNQVNLKDEpIDsKIAogICAvKioqKioqKioqKiBTYXZlIExQVElNIENvbmZpZyAqKioqKioqKiovCiAgIC8qIFNhdmUgTFBUSU0gc291cmNlIGNsb2NrICovCkBAIC0yNzEsNyArMjczLDggQEAKICAgTFBUSU14LT5JRVIgPSB0bXBJRVI7CiAgIExQVElNeC0+Q0ZHUiA9IHRtcENGR1I7CiAKLSAgX19lbmFibGVfaXJxKCk7CisgIC8qIEV4aXQgY3JpdGljYWwgc2VjdGlvbjogcmVzdG9yZSBwcmV2aW91cyBwcmlvcml0eSBtYXNrICovCisgIF9fc2V0X1BSSU1BU0socHJpbWFza19iaXQpOwogfQogCiAvKioKQEAgLTI5Myw1ICsyOTYsMyBAQAogICAqLwogCiAjZW5kaWYgLyogVVNFX0ZVTExfTExfRFJJVkVSICovCi0KLS8qKioqKioqKioqKioqKioqKioqKioqKiogKEMpIENPUFlSSUdIVCBTVE1pY3JvZWxlY3Ryb25pY3MgKioqKipFTkQgT0YgRklMRSoqKiovCmRpZmYgLS1naXQgYS9TcmMvc3RtMzJmN3h4X2xsX3B3ci5jIGIvU3JjL3N0bTMyZjd4eF9sbF9wd3IuYwppbmRleCA0NWM2MTc1Li5hZTkyYjBhIDEwMDY0NAotLS0gYS9TcmMvc3RtMzJmN3h4X2xsX3B3ci5jCisrKyBiL1NyYy9zdG0zMmY3eHhfbGxfcHdyLmMKQEAgLTYsMTMgKzYsMTIgQEAKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgICogQGF0dGVudGlvbgogICAqCi0gICogPGgyPjxjZW50ZXI+JmNvcHk7IENvcHlyaWdodCAoYykgMjAxNyBTVE1pY3JvZWxlY3Ryb25pY3MuCi0gICogQWxsIHJpZ2h0cyByZXNlcnZlZC48L2NlbnRlcj48L2gyPgorICAqIENvcHlyaWdodCAoYykgMjAxNyBTVE1pY3JvZWxlY3Ryb25pY3MuCisgICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgKgotICAqIFRoaXMgc29mdHdhcmUgY29tcG9uZW50IGlzIGxpY2Vuc2VkIGJ5IFNUIHVuZGVyIEJTRCAzLUNsYXVzZSBsaWNlbnNlLAotICAqIHRoZSAiTGljZW5zZSI7IFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUKLSAgKiBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQ6Ci0gICogICAgICAgICAgICAgICAgICAgICAgICBvcGVuc291cmNlLm9yZy9saWNlbnNlcy9CU0QtMy1DbGF1c2UKKyAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIHVuZGVyIHRlcm1zIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUKKyAgKiBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb2Z0d2FyZSBjb21wb25lbnQuCisgICogSWYgbm8gTElDRU5TRSBmaWxlIGNvbWVzIHdpdGggdGhpcyBzb2Z0d2FyZSwgaXQgaXMgcHJvdmlkZWQgQVMtSVMuCiAgICoKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgICovCkBAIC04NCw0ICs4MywzIEBACiAKICNlbmRpZiAvKiBVU0VfRlVMTF9MTF9EUklWRVIgKi8KIAotLyoqKioqKioqKioqKioqKioqKioqKioqKiAoQykgQ09QWVJJR0hUIFNUTWljcm9lbGVjdHJvbmljcyAqKioqKkVORCBPRiBGSUxFKioqKi8KZGlmZiAtLWdpdCBhL1NyYy9zdG0zMmY3eHhfbGxfcmNjLmMgYi9TcmMvc3RtMzJmN3h4X2xsX3JjYy5jCmluZGV4IDA4MzY1OWIuLmJiMzQ3ZWMgMTAwNjQ0Ci0tLSBhL1NyYy9zdG0zMmY3eHhfbGxfcmNjLmMKKysrIGIvU3JjL3N0bTMyZjd4eF9sbF9yY2MuYwpAQCAtNiwxNCArNiwxMiBAQAogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgKiBAYXR0ZW50aW9uCiAgICoKLSAgKiA8aDI+PGNlbnRlcj4mY29weTsgQ29weXJpZ2h0IChjKSAyMDE3IFNUTWljcm9lbGVjdHJvbmljcy4KLSAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLjwvY2VudGVyPjwvaDI+CisgICogQ29weXJpZ2h0IChjKSAyMDE3IFNUTWljcm9lbGVjdHJvbmljcy4KKyAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAqCi0gICogVGhpcyBzb2Z0d2FyZSBjb21wb25lbnQgaXMgbGljZW5zZWQgYnkgU1QgdW5kZXIgQlNEIDMtQ2xhdXNlIGxpY2Vuc2UsCi0gICogdGhlICJMaWNlbnNlIjsgWW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZQotICAqIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdDoKLSAgKiAgICAgICAgICAgICAgICAgICAgICAgIG9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0JTRC0zLUNsYXVzZQotICAqCisgICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCB1bmRlciB0ZXJtcyB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluCisgICogdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc29mdHdhcmUgY29tcG9uZW50LgorICAqIElmIG5vIExJQ0VOU0UgZmlsZSBjb21lcyB3aXRoIHRoaXMgc29mdHdhcmUsIGl0IGlzIHByb3ZpZGVkIEFTLUlTLgogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgKi8KICNpZiBkZWZpbmVkKFVTRV9GVUxMX0xMX0RSSVZFUikKQEAgLTE1ODAsNCArMTU3OCwzIEBACiAKICNlbmRpZiAvKiBVU0VfRlVMTF9MTF9EUklWRVIgKi8KIAotLyoqKioqKioqKioqKioqKioqKioqKioqKiAoQykgQ09QWVJJR0hUIFNUTWljcm9lbGVjdHJvbmljcyAqKioqKkVORCBPRiBGSUxFKioqKi8KZGlmZiAtLWdpdCBhL1NyYy9zdG0zMmY3eHhfbGxfcm5nLmMgYi9TcmMvc3RtMzJmN3h4X2xsX3JuZy5jCmluZGV4IDViOWZlNjYuLjUwMWZhMzYgMTAwNjQ0Ci0tLSBhL1NyYy9zdG0zMmY3eHhfbGxfcm5nLmMKKysrIGIvU3JjL3N0bTMyZjd4eF9sbF9ybmcuYwpAQCAtNiwxMyArNiwxMiBAQAogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgKiBAYXR0ZW50aW9uCiAgICoKLSAgKiA8aDI+PGNlbnRlcj4mY29weTsgQ29weXJpZ2h0IChjKSAyMDE3IFNUTWljcm9lbGVjdHJvbmljcy4KLSAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLjwvY2VudGVyPjwvaDI+CisgICogQ29weXJpZ2h0IChjKSAyMDE3IFNUTWljcm9lbGVjdHJvbmljcy4KKyAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAqCi0gICogVGhpcyBzb2Z0d2FyZSBjb21wb25lbnQgaXMgbGljZW5zZWQgYnkgU1QgdW5kZXIgQlNEIDMtQ2xhdXNlIGxpY2Vuc2UsCi0gICogdGhlICJMaWNlbnNlIjsgWW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZQotICAqIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdDoKLSAgKiAgICAgICAgICAgICAgICAgICAgICAgIG9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0JTRC0zLUNsYXVzZQorICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgdW5kZXIgdGVybXMgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZQorICAqIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvZnR3YXJlIGNvbXBvbmVudC4KKyAgKiBJZiBubyBMSUNFTlNFIGZpbGUgY29tZXMgd2l0aCB0aGlzIHNvZnR3YXJlLCBpdCBpcyBwcm92aWRlZCBBUy1JUy4KICAgKgogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgKi8KQEAgLTI2LDcgKzI1LDcgQEAKICNpbmNsdWRlICJzdG0zMl9hc3NlcnQuaCIKICNlbHNlCiAjZGVmaW5lIGFzc2VydF9wYXJhbShleHByKSAoKHZvaWQpMFUpCi0jZW5kaWYKKyNlbmRpZiAvKiBVU0VfRlVMTF9BU1NFUlQgKi8KIAogLyoqIEBhZGR0b2dyb3VwIFNUTTMyRjd4eF9MTF9Ecml2ZXIKICAgKiBAewpAQCAtNjIsMTQgKzYxLDI0IEBACiAgICovCiBFcnJvclN0YXR1cyBMTF9STkdfRGVJbml0KFJOR19UeXBlRGVmICpSTkd4KQogeworICBFcnJvclN0YXR1cyBzdGF0dXMgPSBTVUNDRVNTOworCiAgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCiAgIGFzc2VydF9wYXJhbShJU19STkdfQUxMX0lOU1RBTkNFKFJOR3gpKTsKLSAgLyogRW5hYmxlIFJORyByZXNldCBzdGF0ZSAqLwotICBMTF9BSEIyX0dSUDFfRm9yY2VSZXNldChMTF9BSEIyX0dSUDFfUEVSSVBIX1JORyk7CisgIGlmIChSTkd4ID09IFJORykKKyAgeworICAgIC8qIEVuYWJsZSBSTkcgcmVzZXQgc3RhdGUgKi8KKyAgICBMTF9BSEIyX0dSUDFfRm9yY2VSZXNldChMTF9BSEIyX0dSUDFfUEVSSVBIX1JORyk7CiAKLSAgLyogUmVsZWFzZSBSTkcgZnJvbSByZXNldCBzdGF0ZSAqLwotICBMTF9BSEIyX0dSUDFfUmVsZWFzZVJlc2V0KExMX0FIQjJfR1JQMV9QRVJJUEhfUk5HKTsKLSAgcmV0dXJuIChTVUNDRVNTKTsKKyAgICAvKiBSZWxlYXNlIFJORyBmcm9tIHJlc2V0IHN0YXRlICovCisgICAgTExfQUhCMl9HUlAxX1JlbGVhc2VSZXNldChMTF9BSEIyX0dSUDFfUEVSSVBIX1JORyk7CisgIH0KKyAgZWxzZQorICB7CisgICAgc3RhdHVzID0gRVJST1I7CisgIH0KKworICByZXR1cm4gc3RhdHVzOwogfQogCiAvKioKQEAgLTkyLDUgKzEwMSwzIEBACiAKICNlbmRpZiAvKiBVU0VfRlVMTF9MTF9EUklWRVIgKi8KIAotLyoqKioqKioqKioqKioqKioqKioqKioqKiAoQykgQ09QWVJJR0hUIFNUTWljcm9lbGVjdHJvbmljcyAqKioqKkVORCBPRiBGSUxFKioqKi8KLQpkaWZmIC0tZ2l0IGEvU3JjL3N0bTMyZjd4eF9sbF9ydGMuYyBiL1NyYy9zdG0zMmY3eHhfbGxfcnRjLmMKaW5kZXggYTMzMzA3NS4uNGZjZjMxMSAxMDA2NDQKLS0tIGEvU3JjL3N0bTMyZjd4eF9sbF9ydGMuYworKysgYi9TcmMvc3RtMzJmN3h4X2xsX3J0Yy5jCkBAIC02LDEzICs2LDEyIEBACiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAqIEBhdHRlbnRpb24KICAgKgotICAqIDxoMj48Y2VudGVyPiZjb3B5OyBDb3B5cmlnaHQgKGMpIDIwMTcgU1RNaWNyb2VsZWN0cm9uaWNzLgotICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuPC9jZW50ZXI+PC9oMj4KKyAgKiBDb3B5cmlnaHQgKGMpIDIwMTcgU1RNaWNyb2VsZWN0cm9uaWNzLgorICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICoKLSAgKiBUaGlzIHNvZnR3YXJlIGNvbXBvbmVudCBpcyBsaWNlbnNlZCBieSBTVCB1bmRlciBCU0QgMy1DbGF1c2UgbGljZW5zZSwKLSAgKiB0aGUgIkxpY2Vuc2UiOyBZb3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlCi0gICogTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0OgotICAqICAgICAgICAgICAgICAgICAgICAgICAgb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvQlNELTMtQ2xhdXNlCisgICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCB1bmRlciB0ZXJtcyB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlCisgICogaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc29mdHdhcmUgY29tcG9uZW50LgorICAqIElmIG5vIExJQ0VOU0UgZmlsZSBjb21lcyB3aXRoIHRoaXMgc29mdHdhcmUsIGl0IGlzIHByb3ZpZGVkIEFTLUlTLgogICAqCiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAqLwpAQCAtODcsMTggKzg2LDcgQEAKIAogI2RlZmluZSBJU19MTF9SVENfREFZKF9fREFZX18pICAgICgoKF9fREFZX18pID49IDFVKSAmJiAoKF9fREFZX18pIDw9IDMxVSkpCiAKLSNkZWZpbmUgSVNfTExfUlRDX01PTlRIKF9fVkFMVUVfXykgKCgoX19WQUxVRV9fKSA9PSBMTF9SVENfTU9OVEhfSkFOVUFSWSkgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgKChfX1ZBTFVFX18pID09IExMX1JUQ19NT05USF9GRUJSVUFSWSkgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgKChfX1ZBTFVFX18pID09IExMX1JUQ19NT05USF9NQVJDSCkgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgKChfX1ZBTFVFX18pID09IExMX1JUQ19NT05USF9BUFJJTCkgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgKChfX1ZBTFVFX18pID09IExMX1JUQ19NT05USF9NQVkpIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICgoX19WQUxVRV9fKSA9PSBMTF9SVENfTU9OVEhfSlVORSkgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgKChfX1ZBTFVFX18pID09IExMX1JUQ19NT05USF9KVUxZKSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAoKF9fVkFMVUVfXykgPT0gTExfUlRDX01PTlRIX0FVR1VTVCkgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgKChfX1ZBTFVFX18pID09IExMX1JUQ19NT05USF9TRVBURU1CRVIpIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICgoX19WQUxVRV9fKSA9PSBMTF9SVENfTU9OVEhfT0NUT0JFUikgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgKChfX1ZBTFVFX18pID09IExMX1JUQ19NT05USF9OT1ZFTUJFUikgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgKChfX1ZBTFVFX18pID09IExMX1JUQ19NT05USF9ERUNFTUJFUikpCisjZGVmaW5lIElTX0xMX1JUQ19NT05USChfX01PTlRIX18pICgoKF9fTU9OVEhfXykgPj0gMVUpICYmICgoX19NT05USF9fKSA8PSAxMlUpKQogCiAjZGVmaW5lIElTX0xMX1JUQ19ZRUFSKF9fWUVBUl9fKSAoKF9fWUVBUl9fKSA8PSA5OVUpCiAKQEAgLTMyOCw3ICszMTYsNyBAQAogICAgIH0KIAogICAgIC8qIEV4aXQgSW5pdGlhbGl6YXRpb24gbW9kZSAqLwotICAgIExMX1JUQ19EaXNhYmxlSW5pdE1vZGUoUlRDKTsKKyAgICBMTF9SVENfRGlzYWJsZUluaXRNb2RlKFJUQ3gpOwogCiAgICAgLyogSWYgIFJUQ19DUl9CWVBTSEFEIGJpdCA9IDAsIHdhaXQgZm9yIHN5bmNocm8gZWxzZSB0aGlzIGNoZWNrIGlzIG5vdCBuZWVkZWQgKi8KICAgICBpZiAoTExfUlRDX0lzU2hhZG93UmVnQnlwYXNzRW5hYmxlZChSVEN4KSA9PSAwVSkKQEAgLTQxNiw3ICs0MDQsNyBAQAogICAgIH0KIAogICAgIC8qIEV4aXQgSW5pdGlhbGl6YXRpb24gbW9kZSAqLwotICAgIExMX1JUQ19EaXNhYmxlSW5pdE1vZGUoUlRDKTsKKyAgICBMTF9SVENfRGlzYWJsZUluaXRNb2RlKFJUQ3gpOwogCiAgICAgLyogSWYgIFJUQ19DUl9CWVBTSEFEIGJpdCA9IDAsIHdhaXQgZm9yIHN5bmNocm8gZWxzZSB0aGlzIGNoZWNrIGlzIG5vdCBuZWVkZWQgKi8KICAgICBpZiAoTExfUlRDX0lzU2hhZG93UmVnQnlwYXNzRW5hYmxlZChSVEN4KSA9PSAwVSkKQEAgLTg3Niw0ICs4NjQsMyBAQAogCiAjZW5kaWYgLyogVVNFX0ZVTExfTExfRFJJVkVSICovCiAKLS8qKioqKioqKioqKioqKioqKioqKioqKiogKEMpIENPUFlSSUdIVCBTVE1pY3JvZWxlY3Ryb25pY3MgKioqKipFTkQgT0YgRklMRSoqKiovCmRpZmYgLS1naXQgYS9TcmMvc3RtMzJmN3h4X2xsX3NkbW1jLmMgYi9TcmMvc3RtMzJmN3h4X2xsX3NkbW1jLmMKaW5kZXggYTY5YjI4Yy4uMjhlZmI2YSAxMDA2NDQKLS0tIGEvU3JjL3N0bTMyZjd4eF9sbF9zZG1tYy5jCisrKyBiL1NyYy9zdG0zMmY3eHhfbGxfc2RtbWMuYwpAQCAtMTEsNiArMTEsMTcgQEAKICAgKiAgICAgICAgICAgKyBQZXJpcGhlcmFsIENvbnRyb2wgZnVuY3Rpb25zIAogICAqICAgICAgICAgICArIFBlcmlwaGVyYWwgU3RhdGUgZnVuY3Rpb25zCiAgICogICAgICAgICAKKyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICogQGF0dGVudGlvbgorICAqCisgICogQ29weXJpZ2h0IChjKSAyMDE3IFNUTWljcm9lbGVjdHJvbmljcy4KKyAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICAqCisgICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCB1bmRlciB0ZXJtcyB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlCisgICogaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc29mdHdhcmUgY29tcG9uZW50LgorICAqIElmIG5vIExJQ0VOU0UgZmlsZSBjb21lcyB3aXRoIHRoaXMgc29mdHdhcmUsIGl0IGlzIHByb3ZpZGVkIEFTLUlTLgorICAqCisgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICBAdmVyYmF0aW0KICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgICAgICAgICAgICAgICAgICAgICAgICMjIyMjIFNETU1DIHBlcmlwaGVyYWwgZmVhdHVyZXMgIyMjIyMKQEAgLTE0MiwxNyArMTUzLDYgQEAKICAgCiAgIEBlbmR2ZXJiYXRpbQogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAgKiBAYXR0ZW50aW9uCi0gICoKLSAgKiA8aDI+PGNlbnRlcj4mY29weTsgQ29weXJpZ2h0IChjKSAyMDE3IFNUTWljcm9lbGVjdHJvbmljcy4KLSAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLjwvY2VudGVyPjwvaDI+Ci0gICoKLSAgKiBUaGlzIHNvZnR3YXJlIGNvbXBvbmVudCBpcyBsaWNlbnNlZCBieSBTVCB1bmRlciBCU0QgMy1DbGF1c2UgbGljZW5zZSwKLSAgKiB0aGUgIkxpY2Vuc2UiOyBZb3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlCi0gICogTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0OgotICAqICAgICAgICAgICAgICAgICAgICAgICBvcGVuc291cmNlLm9yZy9saWNlbnNlcy9CU0QtMy1DbGF1c2UKLSAgKgotICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgKi8gCiAKIC8qIEluY2x1ZGVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCkBAIC0xNzcsMTEgKzE3Nyw2IEBACiAvKiBQcml2YXRlIHZhcmlhYmxlcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogLyogUHJpdmF0ZSBmdW5jdGlvbiBwcm90b3R5cGVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KIHN0YXRpYyB1aW50MzJfdCBTRE1NQ19HZXRDbWRFcnJvcihTRE1NQ19UeXBlRGVmICpTRE1NQ3gpOwotc3RhdGljIHVpbnQzMl90IFNETU1DX0dldENtZFJlc3AxKFNETU1DX1R5cGVEZWYgKlNETU1DeCwgdWludDhfdCBTRF9DTUQsIHVpbnQzMl90IFRpbWVvdXQpOwotc3RhdGljIHVpbnQzMl90IFNETU1DX0dldENtZFJlc3AyKFNETU1DX1R5cGVEZWYgKlNETU1DeCk7Ci1zdGF0aWMgdWludDMyX3QgU0RNTUNfR2V0Q21kUmVzcDMoU0RNTUNfVHlwZURlZiAqU0RNTUN4KTsKLXN0YXRpYyB1aW50MzJfdCBTRE1NQ19HZXRDbWRSZXNwNyhTRE1NQ19UeXBlRGVmICpTRE1NQ3gpOwotc3RhdGljIHVpbnQzMl90IFNETU1DX0dldENtZFJlc3A2KFNETU1DX1R5cGVEZWYgKlNETU1DeCwgdWludDhfdCBTRF9DTUQsIHVpbnQxNl90ICpwUkNBKTsKIAogLyogRXhwb3J0ZWQgZnVuY3Rpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KIApAQCAtMzExLDEwICszMDYsNiBAQAogICAvKiBTZXQgcG93ZXIgc3RhdGUgdG8gT04gKi8gCiAgIFNETU1DeC0+UE9XRVIgPSBTRE1NQ19QT1dFUl9QV1JDVFJMOwogCi0gIC8qIDFtczogcmVxdWlyZWQgcG93ZXIgdXAgd2FpdGluZyB0aW1lIGJlZm9yZSBzdGFydGluZyB0aGUgU0QgaW5pdGlhbGl6YXRpb24KLSAgc2VxdWVuY2UgKi8KLSAgSEFMX0RlbGF5KDIpOwotICAKICAgcmV0dXJuIEhBTF9PSzsKIH0KIApAQCAtMTAyNyw2ICsxMDE4LDMxIEBACiB9CiAKIC8qKgorICAqIEBicmllZiAgU2VuZCB0aGUgU2V0IFJlbGF0aXZlIEFkZHJlc3MgY29tbWFuZCB0byBNTUMgY2FyZCAobm90IFNEIGNhcmQpLgorICAqIEBwYXJhbSAgU0RNTUN4IFBvaW50ZXIgdG8gU0RNTUMgcmVnaXN0ZXIgYmFzZQorICAqIEBwYXJhbSAgUkNBIENhcmQgUkNBCisgICogQHJldHZhbCBIQUwgc3RhdHVzCisgICovCit1aW50MzJfdCBTRE1NQ19DbWRTZXRSZWxBZGRNbWMoU0RNTUNfVHlwZURlZiAqU0RNTUN4LCB1aW50MTZfdCBSQ0EpCit7CisgIFNETU1DX0NtZEluaXRUeXBlRGVmICBzZG1tY19jbWRpbml0OworICB1aW50MzJfdCBlcnJvcnN0YXRlOworCisgIC8qIFNlbmQgQ01EMyBTRF9DTURfU0VUX1JFTF9BRERSICovCisgIHNkbW1jX2NtZGluaXQuQXJndW1lbnQgICAgICAgICA9ICgodWludDMyX3QpUkNBIDw8IDE2VSk7CisgIHNkbW1jX2NtZGluaXQuQ21kSW5kZXggICAgICAgICA9IFNETU1DX0NNRF9TRVRfUkVMX0FERFI7CisgIHNkbW1jX2NtZGluaXQuUmVzcG9uc2UgICAgICAgICA9IFNETU1DX1JFU1BPTlNFX1NIT1JUOworICBzZG1tY19jbWRpbml0LldhaXRGb3JJbnRlcnJ1cHQgPSBTRE1NQ19XQUlUX05POworICBzZG1tY19jbWRpbml0LkNQU00gICAgICAgICAgICAgPSBTRE1NQ19DUFNNX0VOQUJMRTsKKyAgKHZvaWQpU0RNTUNfU2VuZENvbW1hbmQoU0RNTUN4LCAmc2RtbWNfY21kaW5pdCk7CisKKyAgLyogQ2hlY2sgZm9yIGVycm9yIGNvbmRpdGlvbnMgKi8KKyAgZXJyb3JzdGF0ZSA9IFNETU1DX0dldENtZFJlc3AxKFNETU1DeCwgU0RNTUNfQ01EX1NFVF9SRUxfQUREUiwgU0RNTUNfQ01EVElNRU9VVCk7CisKKyAgcmV0dXJuIGVycm9yc3RhdGU7Cit9CisKKy8qKgogICAqIEBicmllZiAgU2VuZCB0aGUgU3RhdHVzIGNvbW1hbmQgYW5kIGNoZWNrIHRoZSByZXNwb25zZS4KICAgKiBAcGFyYW0gIFNETU1DeDogUG9pbnRlciB0byBTRE1NQyByZWdpc3RlciBiYXNlIAogICAqIEBwYXJhbSAgQXJndW1lbnQ6IENvbW1hbmQgQXJndW1lbnQKQEAgLTExMjUsNDcgKzExNDEsNTQgQEAKIH0KIAogLyoqCi0gICogQH0KKyAgKiBAYnJpZWYgIFNlbmQgdGhlIFNlbmQgRVhUX0NTRCBjb21tYW5kIGFuZCBjaGVjayB0aGUgcmVzcG9uc2UuCisgICogQHBhcmFtICBTRE1NQ3ggUG9pbnRlciB0byBTRE1NQyByZWdpc3RlciBiYXNlCisgICogQHBhcmFtICBBcmd1bWVudCBDb21tYW5kIEFyZ3VtZW50CisgICogQHJldHZhbCBIQUwgc3RhdHVzCiAgICovCi0KLS8qIFByaXZhdGUgZnVuY3Rpb24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovICAKLS8qKiBAYWRkdG9ncm91cCBTRF9Qcml2YXRlX0Z1bmN0aW9ucwotICAqIEB7Ci0gICovCi0gICAgCi0vKioKLSAgKiBAYnJpZWYgIENoZWNrcyBmb3IgZXJyb3IgY29uZGl0aW9ucyBmb3IgQ01EMC4KLSAgKiBAcGFyYW0gIGhzZDogU0QgaGFuZGxlCi0gICogQHJldHZhbCBTRCBDYXJkIGVycm9yIHN0YXRlCi0gICovCi1zdGF0aWMgdWludDMyX3QgU0RNTUNfR2V0Q21kRXJyb3IoU0RNTUNfVHlwZURlZiAqU0RNTUN4KQordWludDMyX3QgU0RNTUNfQ21kU2VuZEVYVENTRChTRE1NQ19UeXBlRGVmICpTRE1NQ3gsIHVpbnQzMl90IEFyZ3VtZW50KQogewotICAvKiA4IGlzIHRoZSBudW1iZXIgb2YgcmVxdWlyZWQgaW5zdHJ1Y3Rpb25zIGN5Y2xlcyBmb3IgdGhlIGJlbG93IGxvb3Agc3RhdGVtZW50LgotICBUaGUgU0RNTUNfQ01EVElNRU9VVCBpcyBleHByZXNzZWQgaW4gbXMgKi8KLSAgdWludDMyX3QgY291bnQgPSBTRE1NQ19DTURUSU1FT1VUICogKFN5c3RlbUNvcmVDbG9jayAvIDhVIC8xMDAwVSk7Ci0gIAotICBkbwotICB7Ci0gICAgaWYgKGNvdW50LS0gPT0gMFUpCi0gICAgewotICAgICAgcmV0dXJuIFNETU1DX0VSUk9SX1RJTUVPVVQ7Ci0gICAgfQotICAgIAotICB9d2hpbGUoIV9fU0RNTUNfR0VUX0ZMQUcoU0RNTUN4LCBTRE1NQ19GTEFHX0NNRFNFTlQpKTsKLSAgCi0gIC8qIENsZWFyIGFsbCB0aGUgc3RhdGljIGZsYWdzICovCi0gIF9fU0RNTUNfQ0xFQVJfRkxBRyhTRE1NQ3gsIFNETU1DX1NUQVRJQ19DTURfRkxBR1MpOwotICAKLSAgcmV0dXJuIFNETU1DX0VSUk9SX05PTkU7CisgIFNETU1DX0NtZEluaXRUeXBlRGVmICBzZG1tY19jbWRpbml0OworICB1aW50MzJfdCBlcnJvcnN0YXRlOworCisgIC8qIFNlbmQgQ01EOSBTRU5EX0NTRCAqLworICBzZG1tY19jbWRpbml0LkFyZ3VtZW50ICAgICAgICAgPSBBcmd1bWVudDsKKyAgc2RtbWNfY21kaW5pdC5DbWRJbmRleCAgICAgICAgID0gU0RNTUNfQ01EX0hTX1NFTkRfRVhUX0NTRDsKKyAgc2RtbWNfY21kaW5pdC5SZXNwb25zZSAgICAgICAgID0gU0RNTUNfUkVTUE9OU0VfU0hPUlQ7CisgIHNkbW1jX2NtZGluaXQuV2FpdEZvckludGVycnVwdCA9IFNETU1DX1dBSVRfTk87CisgIHNkbW1jX2NtZGluaXQuQ1BTTSAgICAgICAgICAgICA9IFNETU1DX0NQU01fRU5BQkxFOworICAodm9pZClTRE1NQ19TZW5kQ29tbWFuZChTRE1NQ3gsICZzZG1tY19jbWRpbml0KTsKKworICAvKiBDaGVjayBmb3IgZXJyb3IgY29uZGl0aW9ucyAqLworICBlcnJvcnN0YXRlID0gU0RNTUNfR2V0Q21kUmVzcDEoU0RNTUN4LCBTRE1NQ19DTURfSFNfU0VORF9FWFRfQ1NELFNETU1DX0NNRFRJTUVPVVQpOworCisgIHJldHVybiBlcnJvcnN0YXRlOwogfQogCiAvKioKKyAgKiBAfQorICAqLworCisvKiogQGRlZmdyb3VwIEhBTF9TRE1NQ19MTF9Hcm91cDUgUmVzcG9uc2VzIG1hbmFnZW1lbnQgZnVuY3Rpb25zCisgKiAgQGJyaWVmICAgUmVzcG9uc2VzIGZ1bmN0aW9ucworICoKK0B2ZXJiYXRpbQorID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgICAgICAgICAgICAgICAgICAjIyMjIyBSZXNwb25zZXMgbWFuYWdlbWVudCBmdW5jdGlvbnMgIyMjIyMKKyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgICAgWy4uXQorICAgIFRoaXMgc3Vic2VjdGlvbiBwcm92aWRlcyBhIHNldCBvZiBmdW5jdGlvbnMgYWxsb3dpbmcgdG8gbWFuYWdlIHRoZSBuZWVkZWQgcmVzcG9uc2VzLgorCitAZW5kdmVyYmF0aW0KKyAgKiBAeworICAqLworLyoqCiAgICogQGJyaWVmICBDaGVja3MgZm9yIGVycm9yIGNvbmRpdGlvbnMgZm9yIFIxIHJlc3BvbnNlLgotICAqIEBwYXJhbSAgaHNkOiBTRCBoYW5kbGUKKyAgKiBAcGFyYW0gIFNETU1DeCBQb2ludGVyIHRvIFNETU1DIHJlZ2lzdGVyIGJhc2UKICAgKiBAcGFyYW0gIFNEX0NNRDogVGhlIHNlbnQgY29tbWFuZCBpbmRleCAgCiAgICogQHJldHZhbCBTRCBDYXJkIGVycm9yIHN0YXRlCiAgICovCi1zdGF0aWMgdWludDMyX3QgU0RNTUNfR2V0Q21kUmVzcDEoU0RNTUNfVHlwZURlZiAqU0RNTUN4LCB1aW50OF90IFNEX0NNRCwgdWludDMyX3QgVGltZW91dCkKK3VpbnQzMl90IFNETU1DX0dldENtZFJlc3AxKFNETU1DX1R5cGVEZWYgKlNETU1DeCwgdWludDhfdCBTRF9DTUQsIHVpbnQzMl90IFRpbWVvdXQpCiB7CiAgIHVpbnQzMl90IHJlc3BvbnNlX3IxOwogICB1aW50MzJfdCBzdGFfcmVnOwpAQCAtMTI5NywxMCArMTMyMCwxMCBAQAogCiAvKioKICAgKiBAYnJpZWYgIENoZWNrcyBmb3IgZXJyb3IgY29uZGl0aW9ucyBmb3IgUjIgKENJRCBvciBDU0QpIHJlc3BvbnNlLgotICAqIEBwYXJhbSAgaHNkOiBTRCBoYW5kbGUKKyAgKiBAcGFyYW0gIFNETU1DeCBQb2ludGVyIHRvIFNETU1DIHJlZ2lzdGVyIGJhc2UKICAgKiBAcmV0dmFsIFNEIENhcmQgZXJyb3Igc3RhdGUKICAgKi8KLXN0YXRpYyB1aW50MzJfdCBTRE1NQ19HZXRDbWRSZXNwMihTRE1NQ19UeXBlRGVmICpTRE1NQ3gpCit1aW50MzJfdCBTRE1NQ19HZXRDbWRSZXNwMihTRE1NQ19UeXBlRGVmICpTRE1NQ3gpCiB7CiAgIHVpbnQzMl90IHN0YV9yZWc7CiAgIC8qIDggaXMgdGhlIG51bWJlciBvZiByZXF1aXJlZCBpbnN0cnVjdGlvbnMgY3ljbGVzIGZvciB0aGUgYmVsb3cgbG9vcCBzdGF0ZW1lbnQuCkBAIC0xMzQxLDEwICsxMzY0LDEwIEBACiAKIC8qKgogICAqIEBicmllZiAgQ2hlY2tzIGZvciBlcnJvciBjb25kaXRpb25zIGZvciBSMyAoT0NSKSByZXNwb25zZS4KLSAgKiBAcGFyYW0gIGhzZDogU0QgaGFuZGxlCisgICogQHBhcmFtICBTRE1NQ3ggUG9pbnRlciB0byBTRE1NQyByZWdpc3RlciBiYXNlCiAgICogQHJldHZhbCBTRCBDYXJkIGVycm9yIHN0YXRlCiAgICovCi1zdGF0aWMgdWludDMyX3QgU0RNTUNfR2V0Q21kUmVzcDMoU0RNTUNfVHlwZURlZiAqU0RNTUN4KQordWludDMyX3QgU0RNTUNfR2V0Q21kUmVzcDMoU0RNTUNfVHlwZURlZiAqU0RNTUN4KQogewogICB1aW50MzJfdCBzdGFfcmVnOwogICAvKiA4IGlzIHRoZSBudW1iZXIgb2YgcmVxdWlyZWQgaW5zdHJ1Y3Rpb25zIGN5Y2xlcyBmb3IgdGhlIGJlbG93IGxvb3Agc3RhdGVtZW50LgpAQCAtMTM3OCwxMyArMTQwMSwxMyBAQAogCiAvKioKICAgKiBAYnJpZWYgIENoZWNrcyBmb3IgZXJyb3IgY29uZGl0aW9ucyBmb3IgUjYgKFJDQSkgcmVzcG9uc2UuCi0gICogQHBhcmFtICBoc2Q6IFNEIGhhbmRsZQorICAqIEBwYXJhbSAgU0RNTUN4IFBvaW50ZXIgdG8gU0RNTUMgcmVnaXN0ZXIgYmFzZQogICAqIEBwYXJhbSAgU0RfQ01EOiBUaGUgc2VudCBjb21tYW5kIGluZGV4CiAgICogQHBhcmFtICBwUkNBOiBQb2ludGVyIHRvIHRoZSB2YXJpYWJsZSB0aGF0IHdpbGwgY29udGFpbiB0aGUgU0QgY2FyZCByZWxhdGl2ZSAKICAgKiAgICAgICAgIGFkZHJlc3MgUkNBICAgCiAgICogQHJldHZhbCBTRCBDYXJkIGVycm9yIHN0YXRlCiAgICovCi1zdGF0aWMgdWludDMyX3QgU0RNTUNfR2V0Q21kUmVzcDYoU0RNTUNfVHlwZURlZiAqU0RNTUN4LCB1aW50OF90IFNEX0NNRCwgdWludDE2X3QgKnBSQ0EpCit1aW50MzJfdCBTRE1NQ19HZXRDbWRSZXNwNihTRE1NQ19UeXBlRGVmICpTRE1NQ3gsIHVpbnQ4X3QgU0RfQ01ELCB1aW50MTZfdCAqcFJDQSkKIHsKICAgdWludDMyX3QgcmVzcG9uc2VfcjE7CiAgIHVpbnQzMl90IHN0YV9yZWc7CkBAIC0xNDU0LDEwICsxNDc3LDEwIEBACiAKIC8qKgogICAqIEBicmllZiAgQ2hlY2tzIGZvciBlcnJvciBjb25kaXRpb25zIGZvciBSNyByZXNwb25zZS4KLSAgKiBAcGFyYW0gIGhzZDogU0QgaGFuZGxlCisgICogQHBhcmFtICBTRE1NQ3ggUG9pbnRlciB0byBTRE1NQyByZWdpc3RlciBiYXNlCiAgICogQHJldHZhbCBTRCBDYXJkIGVycm9yIHN0YXRlCiAgICovCi1zdGF0aWMgdWludDMyX3QgU0RNTUNfR2V0Q21kUmVzcDcoU0RNTUNfVHlwZURlZiAqU0RNTUN4KQordWludDMyX3QgU0RNTUNfR2V0Q21kUmVzcDcoU0RNTUNfVHlwZURlZiAqU0RNTUN4KQogewogICB1aW50MzJfdCBzdGFfcmVnOwogICAvKiA4IGlzIHRoZSBudW1iZXIgb2YgcmVxdWlyZWQgaW5zdHJ1Y3Rpb25zIGN5Y2xlcyBmb3IgdGhlIGJlbG93IGxvb3Agc3RhdGVtZW50LgpAQCAtMTUwNCwyOCArMTUyNywzOCBAQAogfQogCiAvKioKLSAgKiBAYnJpZWYgIFNlbmQgdGhlIFNlbmQgRVhUX0NTRCBjb21tYW5kIGFuZCBjaGVjayB0aGUgcmVzcG9uc2UuCi0gICogQHBhcmFtICBTRE1NQ3g6IFBvaW50ZXIgdG8gU0RNTUMgcmVnaXN0ZXIgYmFzZQotICAqIEBwYXJhbSAgQXJndW1lbnQ6IENvbW1hbmQgQXJndW1lbnQKLSAgKiBAcmV0dmFsIEhBTCBzdGF0dXMKKyAgKiBAfQogICAqLwotdWludDMyX3QgU0RNTUNfQ21kU2VuZEVYVENTRChTRE1NQ19UeXBlRGVmICpTRE1NQ3gsIHVpbnQzMl90IEFyZ3VtZW50KQorCisvKiBQcml2YXRlIGZ1bmN0aW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyAgCisvKiogQGFkZHRvZ3JvdXAgU0RfUHJpdmF0ZV9GdW5jdGlvbnMKKyAgKiBAeworICAqLworICAgIAorLyoqCisgICogQGJyaWVmICBDaGVja3MgZm9yIGVycm9yIGNvbmRpdGlvbnMgZm9yIENNRDAuCisgICogQHBhcmFtICBTRE1NQ3ggUG9pbnRlciB0byBTRE1NQyByZWdpc3RlciBiYXNlCisgICogQHJldHZhbCBTRCBDYXJkIGVycm9yIHN0YXRlCisgICovCitzdGF0aWMgdWludDMyX3QgU0RNTUNfR2V0Q21kRXJyb3IoU0RNTUNfVHlwZURlZiAqU0RNTUN4KQogewotICBTRE1NQ19DbWRJbml0VHlwZURlZiAgc2RtbWNfY21kaW5pdDsKLSAgdWludDMyX3QgZXJyb3JzdGF0ZTsKLQotICAvKiBTZW5kIENNRDkgU0VORF9DU0QgKi8KLSAgc2RtbWNfY21kaW5pdC5Bcmd1bWVudCAgICAgICAgID0gQXJndW1lbnQ7Ci0gIHNkbW1jX2NtZGluaXQuQ21kSW5kZXggICAgICAgICA9IFNETU1DX0NNRF9IU19TRU5EX0VYVF9DU0Q7Ci0gIHNkbW1jX2NtZGluaXQuUmVzcG9uc2UgICAgICAgICA9IFNETU1DX1JFU1BPTlNFX1NIT1JUOwotICBzZG1tY19jbWRpbml0LldhaXRGb3JJbnRlcnJ1cHQgPSBTRE1NQ19XQUlUX05POwotICBzZG1tY19jbWRpbml0LkNQU00gICAgICAgICAgICAgPSBTRE1NQ19DUFNNX0VOQUJMRTsKLSAgKHZvaWQpU0RNTUNfU2VuZENvbW1hbmQoU0RNTUN4LCAmc2RtbWNfY21kaW5pdCk7Ci0KLSAgLyogQ2hlY2sgZm9yIGVycm9yIGNvbmRpdGlvbnMgKi8KLSAgZXJyb3JzdGF0ZSA9IFNETU1DX0dldENtZFJlc3AxKFNETU1DeCwgU0RNTUNfQ01EX0hTX1NFTkRfRVhUX0NTRCxTRE1NQ19DTURUSU1FT1VUKTsKLQotICByZXR1cm4gZXJyb3JzdGF0ZTsKKyAgLyogOCBpcyB0aGUgbnVtYmVyIG9mIHJlcXVpcmVkIGluc3RydWN0aW9ucyBjeWNsZXMgZm9yIHRoZSBiZWxvdyBsb29wIHN0YXRlbWVudC4KKyAgVGhlIFNETU1DX0NNRFRJTUVPVVQgaXMgZXhwcmVzc2VkIGluIG1zICovCisgIHVpbnQzMl90IGNvdW50ID0gU0RNTUNfQ01EVElNRU9VVCAqIChTeXN0ZW1Db3JlQ2xvY2sgLyA4VSAvMTAwMFUpOworICAKKyAgZG8KKyAgeworICAgIGlmIChjb3VudC0tID09IDBVKQorICAgIHsKKyAgICAgIHJldHVybiBTRE1NQ19FUlJPUl9USU1FT1VUOworICAgIH0KKyAgICAKKyAgfXdoaWxlKCFfX1NETU1DX0dFVF9GTEFHKFNETU1DeCwgU0RNTUNfRkxBR19DTURTRU5UKSk7CisgIAorICAvKiBDbGVhciBhbGwgdGhlIHN0YXRpYyBmbGFncyAqLworICBfX1NETU1DX0NMRUFSX0ZMQUcoU0RNTUN4LCBTRE1NQ19TVEFUSUNfQ01EX0ZMQUdTKTsKKyAgCisgIHJldHVybiBTRE1NQ19FUlJPUl9OT05FOwogfQogCiAKQEAgLTE1NDMsNSArMTU3NiwzIEBACiAgICovCiAKICNlbmRpZiAvKiBTRE1NQzEgKi8KLQotLyoqKioqKioqKioqKioqKioqKioqKioqKiAoQykgQ09QWVJJR0hUIFNUTWljcm9lbGVjdHJvbmljcyAqKioqKkVORCBPRiBGSUxFKioqKi8KZGlmZiAtLWdpdCBhL1NyYy9zdG0zMmY3eHhfbGxfc3BpLmMgYi9TcmMvc3RtMzJmN3h4X2xsX3NwaS5jCmluZGV4IDY2OGUyZGMuLjE2ZmQ3OGEgMTAwNjQ0Ci0tLSBhL1NyYy9zdG0zMmY3eHhfbGxfc3BpLmMKKysrIGIvU3JjL3N0bTMyZjd4eF9sbF9zcGkuYwpAQCAtNiwxMyArNiwxMiBAQAogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgKiBAYXR0ZW50aW9uCiAgICoKLSAgKiA8aDI+PGNlbnRlcj4mY29weTsgQ29weXJpZ2h0IChjKSAyMDE3IFNUTWljcm9lbGVjdHJvbmljcy4KLSAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLjwvY2VudGVyPjwvaDI+CisgICogQ29weXJpZ2h0IChjKSAyMDE3IFNUTWljcm9lbGVjdHJvbmljcy4KKyAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAqCi0gICogVGhpcyBzb2Z0d2FyZSBjb21wb25lbnQgaXMgbGljZW5zZWQgYnkgU1QgdW5kZXIgQlNEIDMtQ2xhdXNlIGxpY2Vuc2UsCi0gICogdGhlICJMaWNlbnNlIjsgWW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZQotICAqIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdDoKLSAgKiAgICAgICAgICAgICAgICAgICAgICAgIG9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0JTRC0zLUNsYXVzZQorICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgdW5kZXIgdGVybXMgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZQorICAqIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvZnR3YXJlIGNvbXBvbmVudC4KKyAgKiBJZiBubyBMSUNFTlNFIGZpbGUgY29tZXMgd2l0aCB0aGlzIHNvZnR3YXJlLCBpdCBpcyBwcm92aWRlZCBBUy1JUy4KICAgKgogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgKi8KQEAgLTI3LDcgKzI2LDcgQEAKICNpbmNsdWRlICJzdG0zMl9hc3NlcnQuaCIKICNlbHNlCiAjZGVmaW5lIGFzc2VydF9wYXJhbShleHByKSAoKHZvaWQpMFUpCi0jZW5kaWYKKyNlbmRpZiAvKiBVU0VfRlVMTF9BU1NFUlQgKi8KIAogLyoqIEBhZGR0b2dyb3VwIFNUTTMyRjd4eF9MTF9Ecml2ZXIKICAgKiBAewpAQCAtNTc2LDQgKzU3NSwzIEBACiAKICNlbmRpZiAvKiBVU0VfRlVMTF9MTF9EUklWRVIgKi8KIAotLyoqKioqKioqKioqKioqKioqKioqKioqKiAoQykgQ09QWVJJR0hUIFNUTWljcm9lbGVjdHJvbmljcyAqKioqKkVORCBPRiBGSUxFKioqKi8KZGlmZiAtLWdpdCBhL1NyYy9zdG0zMmY3eHhfbGxfdGltLmMgYi9TcmMvc3RtMzJmN3h4X2xsX3RpbS5jCmluZGV4IGQzYTk5MmQuLjA1MDUxZTIgMTAwNjQ0Ci0tLSBhL1NyYy9zdG0zMmY3eHhfbGxfdGltLmMKKysrIGIvU3JjL3N0bTMyZjd4eF9sbF90aW0uYwpAQCAtNiwxMyArNiwxMiBAQAogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgKiBAYXR0ZW50aW9uCiAgICoKLSAgKiA8aDI+PGNlbnRlcj4mY29weTsgQ29weXJpZ2h0IChjKSAyMDE3IFNUTWljcm9lbGVjdHJvbmljcy4KLSAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLjwvY2VudGVyPjwvaDI+CisgICogQ29weXJpZ2h0IChjKSAyMDE3IFNUTWljcm9lbGVjdHJvbmljcy4KKyAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAqCi0gICogVGhpcyBzb2Z0d2FyZSBjb21wb25lbnQgaXMgbGljZW5zZWQgYnkgU1QgdW5kZXIgQlNEIDMtQ2xhdXNlIGxpY2Vuc2UsCi0gICogdGhlICJMaWNlbnNlIjsgWW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZQotICAqIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdDoKLSAgKiAgICAgICAgICAgICAgICAgICAgICAgIG9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0JTRC0zLUNsYXVzZQorICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgdW5kZXIgdGVybXMgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZQorICAqIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvZnR3YXJlIGNvbXBvbmVudC4KKyAgKiBJZiBubyBMSUNFTlNFIGZpbGUgY29tZXMgd2l0aCB0aGlzIHNvZnR3YXJlLCBpdCBpcyBwcm92aWRlZCBBUy1JUy4KICAgKgogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgKi8KQEAgLTIzNyw4NCArMjM2LDg0IEBACiAgICAgTExfQVBCMV9HUlAxX0ZvcmNlUmVzZXQoTExfQVBCMV9HUlAxX1BFUklQSF9USU0zKTsKICAgICBMTF9BUEIxX0dSUDFfUmVsZWFzZVJlc2V0KExMX0FQQjFfR1JQMV9QRVJJUEhfVElNMyk7CiAgIH0KLSNlbmRpZgorI2VuZGlmIC8qIFRJTTMgKi8KICNpZiBkZWZpbmVkKFRJTTQpCiAgIGVsc2UgaWYgKFRJTXggPT0gVElNNCkKICAgewogICAgIExMX0FQQjFfR1JQMV9Gb3JjZVJlc2V0KExMX0FQQjFfR1JQMV9QRVJJUEhfVElNNCk7CiAgICAgTExfQVBCMV9HUlAxX1JlbGVhc2VSZXNldChMTF9BUEIxX0dSUDFfUEVSSVBIX1RJTTQpOwogICB9Ci0jZW5kaWYKKyNlbmRpZiAvKiBUSU00ICovCiAjaWYgZGVmaW5lZChUSU01KQogICBlbHNlIGlmIChUSU14ID09IFRJTTUpCiAgIHsKICAgICBMTF9BUEIxX0dSUDFfRm9yY2VSZXNldChMTF9BUEIxX0dSUDFfUEVSSVBIX1RJTTUpOwogICAgIExMX0FQQjFfR1JQMV9SZWxlYXNlUmVzZXQoTExfQVBCMV9HUlAxX1BFUklQSF9USU01KTsKICAgfQotI2VuZGlmCisjZW5kaWYgLyogVElNNSAqLwogI2lmIGRlZmluZWQoVElNNikKICAgZWxzZSBpZiAoVElNeCA9PSBUSU02KQogICB7CiAgICAgTExfQVBCMV9HUlAxX0ZvcmNlUmVzZXQoTExfQVBCMV9HUlAxX1BFUklQSF9USU02KTsKICAgICBMTF9BUEIxX0dSUDFfUmVsZWFzZVJlc2V0KExMX0FQQjFfR1JQMV9QRVJJUEhfVElNNik7CiAgIH0KLSNlbmRpZgorI2VuZGlmIC8qIFRJTTYgKi8KICNpZiBkZWZpbmVkIChUSU03KQogICBlbHNlIGlmIChUSU14ID09IFRJTTcpCiAgIHsKICAgICBMTF9BUEIxX0dSUDFfRm9yY2VSZXNldChMTF9BUEIxX0dSUDFfUEVSSVBIX1RJTTcpOwogICAgIExMX0FQQjFfR1JQMV9SZWxlYXNlUmVzZXQoTExfQVBCMV9HUlAxX1BFUklQSF9USU03KTsKICAgfQotI2VuZGlmCisjZW5kaWYgLyogVElNNyAqLwogI2lmIGRlZmluZWQoVElNOCkKICAgZWxzZSBpZiAoVElNeCA9PSBUSU04KQogICB7CiAgICAgTExfQVBCMl9HUlAxX0ZvcmNlUmVzZXQoTExfQVBCMl9HUlAxX1BFUklQSF9USU04KTsKICAgICBMTF9BUEIyX0dSUDFfUmVsZWFzZVJlc2V0KExMX0FQQjJfR1JQMV9QRVJJUEhfVElNOCk7CiAgIH0KLSNlbmRpZgorI2VuZGlmIC8qIFRJTTggKi8KICNpZiBkZWZpbmVkKFRJTTkpCiAgIGVsc2UgaWYgKFRJTXggPT0gVElNOSkKICAgewogICAgIExMX0FQQjJfR1JQMV9Gb3JjZVJlc2V0KExMX0FQQjJfR1JQMV9QRVJJUEhfVElNOSk7CiAgICAgTExfQVBCMl9HUlAxX1JlbGVhc2VSZXNldChMTF9BUEIyX0dSUDFfUEVSSVBIX1RJTTkpOwogICB9Ci0jZW5kaWYKKyNlbmRpZiAvKiBUSU05ICovCiAjaWYgZGVmaW5lZChUSU0xMCkKICAgZWxzZSBpZiAoVElNeCA9PSBUSU0xMCkKICAgewogICAgIExMX0FQQjJfR1JQMV9Gb3JjZVJlc2V0KExMX0FQQjJfR1JQMV9QRVJJUEhfVElNMTApOwogICAgIExMX0FQQjJfR1JQMV9SZWxlYXNlUmVzZXQoTExfQVBCMl9HUlAxX1BFUklQSF9USU0xMCk7CiAgIH0KLSNlbmRpZgorI2VuZGlmIC8qIFRJTTEwICovCiAjaWYgZGVmaW5lZChUSU0xMSkKICAgZWxzZSBpZiAoVElNeCA9PSBUSU0xMSkKICAgewogICAgIExMX0FQQjJfR1JQMV9Gb3JjZVJlc2V0KExMX0FQQjJfR1JQMV9QRVJJUEhfVElNMTEpOwogICAgIExMX0FQQjJfR1JQMV9SZWxlYXNlUmVzZXQoTExfQVBCMl9HUlAxX1BFUklQSF9USU0xMSk7CiAgIH0KLSNlbmRpZgorI2VuZGlmIC8qIFRJTTExICovCiAjaWYgZGVmaW5lZChUSU0xMikKICAgZWxzZSBpZiAoVElNeCA9PSBUSU0xMikKICAgewogICAgIExMX0FQQjFfR1JQMV9Gb3JjZVJlc2V0KExMX0FQQjFfR1JQMV9QRVJJUEhfVElNMTIpOwogICAgIExMX0FQQjFfR1JQMV9SZWxlYXNlUmVzZXQoTExfQVBCMV9HUlAxX1BFUklQSF9USU0xMik7CiAgIH0KLSNlbmRpZgorI2VuZGlmIC8qIFRJTTEyICovCiAjaWYgZGVmaW5lZChUSU0xMykKICAgZWxzZSBpZiAoVElNeCA9PSBUSU0xMykKICAgewogICAgIExMX0FQQjFfR1JQMV9Gb3JjZVJlc2V0KExMX0FQQjFfR1JQMV9QRVJJUEhfVElNMTMpOwogICAgIExMX0FQQjFfR1JQMV9SZWxlYXNlUmVzZXQoTExfQVBCMV9HUlAxX1BFUklQSF9USU0xMyk7CiAgIH0KLSNlbmRpZgorI2VuZGlmIC8qIFRJTTEzICovCiAjaWYgZGVmaW5lZChUSU0xNCkKICAgZWxzZSBpZiAoVElNeCA9PSBUSU0xNCkKICAgewogICAgIExMX0FQQjFfR1JQMV9Gb3JjZVJlc2V0KExMX0FQQjFfR1JQMV9QRVJJUEhfVElNMTQpOwogICAgIExMX0FQQjFfR1JQMV9SZWxlYXNlUmVzZXQoTExfQVBCMV9HUlAxX1BFUklQSF9USU0xNCk7CiAgIH0KLSNlbmRpZgorI2VuZGlmIC8qIFRJTTE0ICovCiAgIGVsc2UKICAgewogICAgIHJlc3VsdCA9IEVSUk9SOwpAQCAtMzQyLDcgKzM0MSw4IEBACiAvKioKICAgKiBAYnJpZWYgIENvbmZpZ3VyZSB0aGUgVElNeCB0aW1lIGJhc2UgdW5pdC4KICAgKiBAcGFyYW0gIFRJTXggVGltZXIgSW5zdGFuY2UKLSAgKiBAcGFyYW0gIFRJTV9Jbml0U3RydWN0IHBvaW50ZXIgdG8gYSBAcmVmIExMX1RJTV9Jbml0VHlwZURlZiBzdHJ1Y3R1cmUgKFRJTXggdGltZSBiYXNlIHVuaXQgY29uZmlndXJhdGlvbiBkYXRhIHN0cnVjdHVyZSkKKyAgKiBAcGFyYW0gIFRJTV9Jbml0U3RydWN0IHBvaW50ZXIgdG8gYSBAcmVmIExMX1RJTV9Jbml0VHlwZURlZiBzdHJ1Y3R1cmUKKyAgKiAgICAgICAgIChUSU14IHRpbWUgYmFzZSB1bml0IGNvbmZpZ3VyYXRpb24gZGF0YSBzdHJ1Y3R1cmUpCiAgICogQHJldHZhbCBBbiBFcnJvclN0YXR1cyBlbnVtZXJhdGlvbiB2YWx1ZToKICAgKiAgICAgICAgICAtIFNVQ0NFU1M6IFRJTXggcmVnaXN0ZXJzIGFyZSBkZS1pbml0aWFsaXplZAogICAqICAgICAgICAgIC0gRVJST1I6IG5vdCBhcHBsaWNhYmxlCkBAIC0zOTUsNyArMzk1LDggQEAKIC8qKgogICAqIEBicmllZiAgU2V0IHRoZSBmaWVsZHMgb2YgdGhlIFRJTXggb3V0cHV0IGNoYW5uZWwgY29uZmlndXJhdGlvbiBkYXRhCiAgICogICAgICAgICBzdHJ1Y3R1cmUgdG8gdGhlaXIgZGVmYXVsdCB2YWx1ZXMuCi0gICogQHBhcmFtICBUSU1fT0NfSW5pdFN0cnVjdCBwb2ludGVyIHRvIGEgQHJlZiBMTF9USU1fT0NfSW5pdFR5cGVEZWYgc3RydWN0dXJlICh0aGUgb3V0cHV0IGNoYW5uZWwgY29uZmlndXJhdGlvbiBkYXRhIHN0cnVjdHVyZSkKKyAgKiBAcGFyYW0gIFRJTV9PQ19Jbml0U3RydWN0IHBvaW50ZXIgdG8gYSBAcmVmIExMX1RJTV9PQ19Jbml0VHlwZURlZiBzdHJ1Y3R1cmUKKyAgKiAgICAgICAgICh0aGUgb3V0cHV0IGNoYW5uZWwgY29uZmlndXJhdGlvbiBkYXRhIHN0cnVjdHVyZSkKICAgKiBAcmV0dmFsIE5vbmUKICAgKi8KIHZvaWQgTExfVElNX09DX1N0cnVjdEluaXQoTExfVElNX09DX0luaXRUeXBlRGVmICpUSU1fT0NfSW5pdFN0cnVjdCkKQEAgLTQyMSw3ICs0MjIsOCBAQAogICAqICAgICAgICAgQGFyZyBAcmVmIExMX1RJTV9DSEFOTkVMX0NINAogICAqICAgICAgICAgQGFyZyBAcmVmIExMX1RJTV9DSEFOTkVMX0NINQogICAqICAgICAgICAgQGFyZyBAcmVmIExMX1RJTV9DSEFOTkVMX0NINgotICAqIEBwYXJhbSAgVElNX09DX0luaXRTdHJ1Y3QgcG9pbnRlciB0byBhIEByZWYgTExfVElNX09DX0luaXRUeXBlRGVmIHN0cnVjdHVyZSAoVElNeCBvdXRwdXQgY2hhbm5lbCBjb25maWd1cmF0aW9uIGRhdGEgc3RydWN0dXJlKQorICAqIEBwYXJhbSAgVElNX09DX0luaXRTdHJ1Y3QgcG9pbnRlciB0byBhIEByZWYgTExfVElNX09DX0luaXRUeXBlRGVmIHN0cnVjdHVyZSAoVElNeCBvdXRwdXQgY2hhbm5lbCBjb25maWd1cmF0aW9uCisgICogICAgICAgICBkYXRhIHN0cnVjdHVyZSkKICAgKiBAcmV0dmFsIEFuIEVycm9yU3RhdHVzIGVudW1lcmF0aW9uIHZhbHVlOgogICAqICAgICAgICAgIC0gU1VDQ0VTUzogVElNeCBvdXRwdXQgY2hhbm5lbCBpcyBpbml0aWFsaXplZAogICAqICAgICAgICAgIC0gRVJST1I6IFRJTXggb3V0cHV0IGNoYW5uZWwgaXMgbm90IGluaXRpYWxpemVkCkBAIC00NjAsNyArNDYyLDggQEAKIC8qKgogICAqIEBicmllZiAgU2V0IHRoZSBmaWVsZHMgb2YgdGhlIFRJTXggaW5wdXQgY2hhbm5lbCBjb25maWd1cmF0aW9uIGRhdGEKICAgKiAgICAgICAgIHN0cnVjdHVyZSB0byB0aGVpciBkZWZhdWx0IHZhbHVlcy4KLSAgKiBAcGFyYW0gIFRJTV9JQ0luaXRTdHJ1Y3QgcG9pbnRlciB0byBhIEByZWYgTExfVElNX0lDX0luaXRUeXBlRGVmIHN0cnVjdHVyZSAodGhlIGlucHV0IGNoYW5uZWwgY29uZmlndXJhdGlvbiBkYXRhIHN0cnVjdHVyZSkKKyAgKiBAcGFyYW0gIFRJTV9JQ0luaXRTdHJ1Y3QgcG9pbnRlciB0byBhIEByZWYgTExfVElNX0lDX0luaXRUeXBlRGVmIHN0cnVjdHVyZSAodGhlIGlucHV0IGNoYW5uZWwgY29uZmlndXJhdGlvbgorICAqICAgICAgICAgZGF0YSBzdHJ1Y3R1cmUpCiAgICogQHJldHZhbCBOb25lCiAgICovCiB2b2lkIExMX1RJTV9JQ19TdHJ1Y3RJbml0KExMX1RJTV9JQ19Jbml0VHlwZURlZiAqVElNX0lDSW5pdFN0cnVjdCkKQEAgLTQ4MCw3ICs0ODMsOCBAQAogICAqICAgICAgICAgQGFyZyBAcmVmIExMX1RJTV9DSEFOTkVMX0NIMgogICAqICAgICAgICAgQGFyZyBAcmVmIExMX1RJTV9DSEFOTkVMX0NIMwogICAqICAgICAgICAgQGFyZyBAcmVmIExMX1RJTV9DSEFOTkVMX0NINAotICAqIEBwYXJhbSAgVElNX0lDX0luaXRTdHJ1Y3QgcG9pbnRlciB0byBhIEByZWYgTExfVElNX0lDX0luaXRUeXBlRGVmIHN0cnVjdHVyZSAoVElNeCBpbnB1dCBjaGFubmVsIGNvbmZpZ3VyYXRpb24gZGF0YSBzdHJ1Y3R1cmUpCisgICogQHBhcmFtICBUSU1fSUNfSW5pdFN0cnVjdCBwb2ludGVyIHRvIGEgQHJlZiBMTF9USU1fSUNfSW5pdFR5cGVEZWYgc3RydWN0dXJlIChUSU14IGlucHV0IGNoYW5uZWwgY29uZmlndXJhdGlvbiBkYXRhCisgICogICAgICAgICBzdHJ1Y3R1cmUpCiAgICogQHJldHZhbCBBbiBFcnJvclN0YXR1cyBlbnVtZXJhdGlvbiB2YWx1ZToKICAgKiAgICAgICAgICAtIFNVQ0NFU1M6IFRJTXggb3V0cHV0IGNoYW5uZWwgaXMgaW5pdGlhbGl6ZWQKICAgKiAgICAgICAgICAtIEVSUk9SOiBUSU14IG91dHB1dCBjaGFubmVsIGlzIG5vdCBpbml0aWFsaXplZApAQCAtNTEyLDcgKzUxNiw4IEBACiAKIC8qKgogICAqIEBicmllZiAgRmlsbHMgZWFjaCBUSU1fRW5jb2RlckluaXRTdHJ1Y3QgZmllbGQgd2l0aCBpdHMgZGVmYXVsdCB2YWx1ZQotICAqIEBwYXJhbSAgVElNX0VuY29kZXJJbml0U3RydWN0IHBvaW50ZXIgdG8gYSBAcmVmIExMX1RJTV9FTkNPREVSX0luaXRUeXBlRGVmIHN0cnVjdHVyZSAoZW5jb2RlciBpbnRlcmZhY2UgY29uZmlndXJhdGlvbiBkYXRhIHN0cnVjdHVyZSkKKyAgKiBAcGFyYW0gIFRJTV9FbmNvZGVySW5pdFN0cnVjdCBwb2ludGVyIHRvIGEgQHJlZiBMTF9USU1fRU5DT0RFUl9Jbml0VHlwZURlZiBzdHJ1Y3R1cmUgKGVuY29kZXIgaW50ZXJmYWNlCisgICogICAgICAgICBjb25maWd1cmF0aW9uIGRhdGEgc3RydWN0dXJlKQogICAqIEByZXR2YWwgTm9uZQogICAqLwogdm9pZCBMTF9USU1fRU5DT0RFUl9TdHJ1Y3RJbml0KExMX1RJTV9FTkNPREVSX0luaXRUeXBlRGVmICpUSU1fRW5jb2RlckluaXRTdHJ1Y3QpCkBAIC01MzIsNyArNTM3LDggQEAKIC8qKgogICAqIEBicmllZiAgQ29uZmlndXJlIHRoZSBlbmNvZGVyIGludGVyZmFjZSBvZiB0aGUgdGltZXIgaW5zdGFuY2UuCiAgICogQHBhcmFtICBUSU14IFRpbWVyIEluc3RhbmNlCi0gICogQHBhcmFtICBUSU1fRW5jb2RlckluaXRTdHJ1Y3QgcG9pbnRlciB0byBhIEByZWYgTExfVElNX0VOQ09ERVJfSW5pdFR5cGVEZWYgc3RydWN0dXJlIChUSU14IGVuY29kZXIgaW50ZXJmYWNlIGNvbmZpZ3VyYXRpb24gZGF0YSBzdHJ1Y3R1cmUpCisgICogQHBhcmFtICBUSU1fRW5jb2RlckluaXRTdHJ1Y3QgcG9pbnRlciB0byBhIEByZWYgTExfVElNX0VOQ09ERVJfSW5pdFR5cGVEZWYgc3RydWN0dXJlIChUSU14IGVuY29kZXIgaW50ZXJmYWNlCisgICogICAgICAgICBjb25maWd1cmF0aW9uIGRhdGEgc3RydWN0dXJlKQogICAqIEByZXR2YWwgQW4gRXJyb3JTdGF0dXMgZW51bWVyYXRpb24gdmFsdWU6CiAgICogICAgICAgICAgLSBTVUNDRVNTOiBUSU14IHJlZ2lzdGVycyBhcmUgZGUtaW5pdGlhbGl6ZWQKICAgKiAgICAgICAgICAtIEVSUk9SOiBub3QgYXBwbGljYWJsZQpAQCAtNTk2LDcgKzYwMiw4IEBACiAvKioKICAgKiBAYnJpZWYgIFNldCB0aGUgZmllbGRzIG9mIHRoZSBUSU14IEhhbGwgc2Vuc29yIGludGVyZmFjZSBjb25maWd1cmF0aW9uIGRhdGEKICAgKiAgICAgICAgIHN0cnVjdHVyZSB0byB0aGVpciBkZWZhdWx0IHZhbHVlcy4KLSAgKiBAcGFyYW0gIFRJTV9IYWxsU2Vuc29ySW5pdFN0cnVjdCBwb2ludGVyIHRvIGEgQHJlZiBMTF9USU1fSEFMTFNFTlNPUl9Jbml0VHlwZURlZiBzdHJ1Y3R1cmUgKEhBTEwgc2Vuc29yIGludGVyZmFjZSBjb25maWd1cmF0aW9uIGRhdGEgc3RydWN0dXJlKQorICAqIEBwYXJhbSAgVElNX0hhbGxTZW5zb3JJbml0U3RydWN0IHBvaW50ZXIgdG8gYSBAcmVmIExMX1RJTV9IQUxMU0VOU09SX0luaXRUeXBlRGVmIHN0cnVjdHVyZSAoSEFMTCBzZW5zb3IgaW50ZXJmYWNlCisgICogICAgICAgICBjb25maWd1cmF0aW9uIGRhdGEgc3RydWN0dXJlKQogICAqIEByZXR2YWwgTm9uZQogICAqLwogdm9pZCBMTF9USU1fSEFMTFNFTlNPUl9TdHJ1Y3RJbml0KExMX1RJTV9IQUxMU0VOU09SX0luaXRUeXBlRGVmICpUSU1fSGFsbFNlbnNvckluaXRTdHJ1Y3QpCkBAIC02MjMsNyArNjMwLDggQEAKICAgKiBAbm90ZSBMTF9USU1fSUNfUE9MQVJJVFlfQk9USEVER0UgbXVzdCBub3QgYmUgdXNlZCBmb3IgVEkxIHdoZW4gaXQgaXMgdXNlZAogICAqICAgICAgIHdoZW4gVElNeCBvcGVyYXRlcyBpbiBIYWxsIHNlbnNvciBpbnRlcmZhY2UgbW9kZS4KICAgKiBAcGFyYW0gIFRJTXggVGltZXIgSW5zdGFuY2UKLSAgKiBAcGFyYW0gIFRJTV9IYWxsU2Vuc29ySW5pdFN0cnVjdCBwb2ludGVyIHRvIGEgQHJlZiBMTF9USU1fSEFMTFNFTlNPUl9Jbml0VHlwZURlZiBzdHJ1Y3R1cmUgKFRJTXggSEFMTCBzZW5zb3IgaW50ZXJmYWNlIGNvbmZpZ3VyYXRpb24gZGF0YSBzdHJ1Y3R1cmUpCisgICogQHBhcmFtICBUSU1fSGFsbFNlbnNvckluaXRTdHJ1Y3QgcG9pbnRlciB0byBhIEByZWYgTExfVElNX0hBTExTRU5TT1JfSW5pdFR5cGVEZWYgc3RydWN0dXJlIChUSU14IEhBTEwgc2Vuc29yCisgICogICAgICAgICBpbnRlcmZhY2UgY29uZmlndXJhdGlvbiBkYXRhIHN0cnVjdHVyZSkKICAgKiBAcmV0dmFsIEFuIEVycm9yU3RhdHVzIGVudW1lcmF0aW9uIHZhbHVlOgogICAqICAgICAgICAgIC0gU1VDQ0VTUzogVElNeCByZWdpc3RlcnMgYXJlIGRlLWluaXRpYWxpemVkCiAgICogICAgICAgICAgLSBFUlJPUjogbm90IGFwcGxpY2FibGUKQEAgLTcwMyw3ICs3MTEsOCBAQAogLyoqCiAgICogQGJyaWVmICBTZXQgdGhlIGZpZWxkcyBvZiB0aGUgQnJlYWsgYW5kIERlYWQgVGltZSBjb25maWd1cmF0aW9uIGRhdGEgc3RydWN0dXJlCiAgICogICAgICAgICB0byB0aGVpciBkZWZhdWx0IHZhbHVlcy4KLSAgKiBAcGFyYW0gIFRJTV9CRFRSSW5pdFN0cnVjdCBwb2ludGVyIHRvIGEgQHJlZiBMTF9USU1fQkRUUl9Jbml0VHlwZURlZiBzdHJ1Y3R1cmUgKEJyZWFrIGFuZCBEZWFkIFRpbWUgY29uZmlndXJhdGlvbiBkYXRhIHN0cnVjdHVyZSkKKyAgKiBAcGFyYW0gIFRJTV9CRFRSSW5pdFN0cnVjdCBwb2ludGVyIHRvIGEgQHJlZiBMTF9USU1fQkRUUl9Jbml0VHlwZURlZiBzdHJ1Y3R1cmUgKEJyZWFrIGFuZCBEZWFkIFRpbWUgY29uZmlndXJhdGlvbgorICAqICAgICAgICAgZGF0YSBzdHJ1Y3R1cmUpCiAgICogQHJldHZhbCBOb25lCiAgICovCiB2b2lkIExMX1RJTV9CRFRSX1N0cnVjdEluaXQoTExfVElNX0JEVFJfSW5pdFR5cGVEZWYgKlRJTV9CRFRSSW5pdFN0cnVjdCkKQEAgLTczMyw3ICs3NDIsOCBAQAogICAqIEBub3RlIE1hY3JvIElTX1RJTV9CS0lOMl9JTlNUQU5DRShUSU14KSBjYW4gYmUgdXNlZCB0byBjaGVjayB3aGV0aGVyIG9yIG5vdAogICAqICAgICAgIGEgdGltZXIgaW5zdGFuY2UgcHJvdmlkZXMgYSBzZWNvbmQgYnJlYWsgaW5wdXQuCiAgICogQHBhcmFtICBUSU14IFRpbWVyIEluc3RhbmNlCi0gICogQHBhcmFtICBUSU1fQkRUUkluaXRTdHJ1Y3QgcG9pbnRlciB0byBhIEByZWYgTExfVElNX0JEVFJfSW5pdFR5cGVEZWYgc3RydWN0dXJlIChCcmVhayBhbmQgRGVhZCBUaW1lIGNvbmZpZ3VyYXRpb24gZGF0YSBzdHJ1Y3R1cmUpCisgICogQHBhcmFtICBUSU1fQkRUUkluaXRTdHJ1Y3QgcG9pbnRlciB0byBhIEByZWYgTExfVElNX0JEVFJfSW5pdFR5cGVEZWYgc3RydWN0dXJlIChCcmVhayBhbmQgRGVhZCBUaW1lIGNvbmZpZ3VyYXRpb24KKyAgKiAgICAgICAgIGRhdGEgc3RydWN0dXJlKQogICAqIEByZXR2YWwgQW4gRXJyb3JTdGF0dXMgZW51bWVyYXRpb24gdmFsdWU6CiAgICogICAgICAgICAgLSBTVUNDRVNTOiBCcmVhayBhbmQgRGVhZCBUaW1lIGlzIGluaXRpYWxpemVkCiAgICogICAgICAgICAgLSBFUlJPUjogbm90IGFwcGxpY2FibGUKQEAgLTEzNzUsNCArMTM4NSwzIEBACiAKICNlbmRpZiAvKiBVU0VfRlVMTF9MTF9EUklWRVIgKi8KIAotLyoqKioqKioqKioqKioqKioqKioqKioqKiAoQykgQ09QWVJJR0hUIFNUTWljcm9lbGVjdHJvbmljcyAqKioqKkVORCBPRiBGSUxFKioqKi8KZGlmZiAtLWdpdCBhL1NyYy9zdG0zMmY3eHhfbGxfdXNhcnQuYyBiL1NyYy9zdG0zMmY3eHhfbGxfdXNhcnQuYwppbmRleCBhYjkyNDM1Li5kOWNhMjdmIDEwMDY0NAotLS0gYS9TcmMvc3RtMzJmN3h4X2xsX3VzYXJ0LmMKKysrIGIvU3JjL3N0bTMyZjd4eF9sbF91c2FydC5jCkBAIC02LDEzICs2LDEyIEBACiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAqIEBhdHRlbnRpb24KICAgKgotICAqIDxoMj48Y2VudGVyPiZjb3B5OyBDb3B5cmlnaHQgKGMpIDIwMTcgU1RNaWNyb2VsZWN0cm9uaWNzLgotICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuPC9jZW50ZXI+PC9oMj4KKyAgKiBDb3B5cmlnaHQgKGMpIDIwMTcgU1RNaWNyb2VsZWN0cm9uaWNzLgorICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICoKLSAgKiBUaGlzIHNvZnR3YXJlIGNvbXBvbmVudCBpcyBsaWNlbnNlZCBieSBTVCB1bmRlciBCU0QgMy1DbGF1c2UgbGljZW5zZSwKLSAgKiB0aGUgIkxpY2Vuc2UiOyBZb3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlCi0gICogTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0OgotICAqICAgICAgICAgICAgICAgICAgICAgICAgb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvQlNELTMtQ2xhdXNlCisgICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCB1bmRlciB0ZXJtcyB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlCisgICogaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc29mdHdhcmUgY29tcG9uZW50LgorICAqIElmIG5vIExJQ0VOU0UgZmlsZSBjb21lcyB3aXRoIHRoaXMgc29mdHdhcmUsIGl0IGlzIHByb3ZpZGVkIEFTLUlTLgogICAqCiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAqLwpAQCAtNDM3LDUgKzQzNiw0IEBACiAKICNlbmRpZiAvKiBVU0VfRlVMTF9MTF9EUklWRVIgKi8KIAotLyoqKioqKioqKioqKioqKioqKioqKioqKiAoQykgQ09QWVJJR0hUIFNUTWljcm9lbGVjdHJvbmljcyAqKioqKkVORCBPRiBGSUxFKioqKi8KIApkaWZmIC0tZ2l0IGEvU3JjL3N0bTMyZjd4eF9sbF91c2IuYyBiL1NyYy9zdG0zMmY3eHhfbGxfdXNiLmMKaW5kZXggMTdkNGVkMy4uMjFlMTkwYiAxMDA2NDQKLS0tIGEvU3JjL3N0bTMyZjd4eF9sbF91c2IuYworKysgYi9TcmMvc3RtMzJmN3h4X2xsX3VzYi5jCkBAIC0xMSw2ICsxMSwxNyBAQAogICAqICAgICAgICAgICArIFBlcmlwaGVyYWwgQ29udHJvbCBmdW5jdGlvbnMKICAgKiAgICAgICAgICAgKyBQZXJpcGhlcmFsIFN0YXRlIGZ1bmN0aW9ucwogICAqCisgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAqIEBhdHRlbnRpb24KKyAgKgorICAqIENvcHlyaWdodCAoYykgMjAxNyBTVE1pY3JvZWxlY3Ryb25pY3MuCisgICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAgKgorICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgdW5kZXIgdGVybXMgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZQorICAqIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvZnR3YXJlIGNvbXBvbmVudC4KKyAgKiBJZiBubyBMSUNFTlNFIGZpbGUgY29tZXMgd2l0aCB0aGlzIHNvZnR3YXJlLCBpdCBpcyBwcm92aWRlZCBBUy1JUy4KKyAgKgorICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgQHZlcmJhdGltCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICAgICAgICAgICAgICAgICAgICAjIyMjIyBIb3cgdG8gdXNlIHRoaXMgZHJpdmVyICMjIyMjCkBAIC0yMywxNyArMzQsNyBAQAogICAgICAgKCMpIFRoZSB1cHBlciBIQUwgSENEL1BDRCBkcml2ZXIgd2lsbCBjYWxsIHRoZSByaWdodCByb3V0aW5lcyBmb3IgaXRzIGludGVybmFsIHByb2Nlc3Nlcy4KIAogICBAZW5kdmVyYmF0aW0KLSAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gICogQGF0dGVudGlvbgotICAqCi0gICogPGgyPjxjZW50ZXI+JmNvcHk7IENvcHlyaWdodCAoYykgMjAxNyBTVE1pY3JvZWxlY3Ryb25pY3MuCi0gICogQWxsIHJpZ2h0cyByZXNlcnZlZC48L2NlbnRlcj48L2gyPgotICAqCi0gICogVGhpcyBzb2Z0d2FyZSBjb21wb25lbnQgaXMgbGljZW5zZWQgYnkgU1QgdW5kZXIgQlNEIDMtQ2xhdXNlIGxpY2Vuc2UsCi0gICogdGhlICJMaWNlbnNlIjsgWW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZQotICAqIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdDoKLSAgKiAgICAgICAgICAgICAgICAgICAgICAgIG9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0JTRC0zLUNsYXVzZQotICAqCisKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgICovCiAKQEAgLTU0LDEwICs1NSw5IEBACiAvKiBQcml2YXRlIGZ1bmN0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogI2lmIGRlZmluZWQgKFVTQl9PVEdfRlMpIHx8IGRlZmluZWQgKFVTQl9PVEdfSFMpCiBzdGF0aWMgSEFMX1N0YXR1c1R5cGVEZWYgVVNCX0NvcmVSZXNldChVU0JfT1RHX0dsb2JhbFR5cGVEZWYgKlVTQngpOwotCi0jaWZkZWYgVVNCX0hTX1BIWUMKKyNpZmRlZiBVU0JQSFlDCiBzdGF0aWMgSEFMX1N0YXR1c1R5cGVEZWYgVVNCX0hTX1BIWUNJbml0KFVTQl9PVEdfR2xvYmFsVHlwZURlZiAqVVNCeCk7Ci0jZW5kaWYKKyNlbmRpZiAvKiBVU0JQSFlDICovCiAKIC8qIEV4cG9ydGVkIGZ1bmN0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAvKiogQGRlZmdyb3VwIFVTQl9MTF9FeHBvcnRlZF9GdW5jdGlvbnMgVVNCIExvdyBMYXllciBFeHBvcnRlZCBGdW5jdGlvbnMKQEAgLTEwNSwxMCArMTA1LDExIEBACiAgICAgewogICAgICAgVVNCeC0+R1VTQkNGRyB8PSBVU0JfT1RHX0dVU0JDRkdfVUxQSUVWQlVTRDsKICAgICB9Ci0gICAgLyogUmVzZXQgYWZ0ZXIgYSBQSFkgc2VsZWN0ICAqLworCisgICAgLyogUmVzZXQgYWZ0ZXIgYSBQSFkgc2VsZWN0ICovCiAgICAgcmV0ID0gVVNCX0NvcmVSZXNldChVU0J4KTsKICAgfQotI2lmZGVmIFVTQl9IU19QSFlDCisjaWYgZGVmaW5lZChTVE0zMkY3MjJ4eCkgfHwgZGVmaW5lZChTVE0zMkY3MjN4eCkgfHwgZGVmaW5lZChTVE0zMkY3MzB4eCkgfHwgZGVmaW5lZChTVE0zMkY3MzJ4eCkgfHwgZGVmaW5lZChTVE0zMkY3MzN4eCkKICAgZWxzZSBpZiAoY2ZnLnBoeV9pdGZhY2UgPT0gVVNCX09UR19IU19FTUJFRERFRF9QSFkpCiAgIHsKICAgICBVU0J4LT5HQ0NGRyAmPSB+KFVTQl9PVEdfR0NDRkdfUFdSRFdOKTsKQEAgLTEyMSw2ICsxMjIsOCBAQAogCiAgICAgLyogU2VsZWN0IFVUTUkgSW50ZXJmYWNlICovCiAgICAgVVNCeC0+R1VTQkNGRyAmPSB+VVNCX09UR19HVVNCQ0ZHX1VMUElfVVRNSV9TRUw7CisjaWZkZWYgVVNCUEhZQworICAgIC8qIEVuYWJsZSBVU0IgSFMgUEhZICovCiAgICAgVVNCeC0+R0NDRkcgfD0gVVNCX09UR19HQ0NGR19QSFlIU0VOOwogCiAgICAgLyogRW5hYmxlcyBjb250cm9sIG9mIGEgSGlnaCBTcGVlZCBVU0IgUEhZICovCkBAIC0xMjgsMTUgKzEzMSwxNyBAQAogICAgIHsKICAgICAgIHJldHVybiBIQUxfRVJST1I7CiAgICAgfQorI2VuZGlmIC8qIFVTQlBIWUMgKi8KIAogICAgIGlmIChjZmcudXNlX2V4dGVybmFsX3ZidXMgPT0gMVUpCiAgICAgewogICAgICAgVVNCeC0+R1VTQkNGRyB8PSBVU0JfT1RHX0dVU0JDRkdfVUxQSUVWQlVTRDsKICAgICB9Ci0gICAgLyogUmVzZXQgYWZ0ZXIgYSBQSFkgc2VsZWN0ICAqLworCisgICAgLyogUmVzZXQgYWZ0ZXIgYSBQSFkgc2VsZWN0ICovCiAgICAgcmV0ID0gVVNCX0NvcmVSZXNldChVU0J4KTsKICAgfQotI2VuZGlmCisjZW5kaWYgLyogZGVmaW5lZChTVE0zMkY3MjJ4eCkgfHwgZGVmaW5lZChTVE0zMkY3MjN4eCkgfHwgZGVmaW5lZChTVE0zMkY3MzB4eCkgfHwgZGVmaW5lZChTVE0zMkY3MzJ4eCkgfHwgZGVmaW5lZChTVE0zMkY3MzN4eCkgKi8KICAgZWxzZSAvKiBGUyBpbnRlcmZhY2UgKGVtYmVkZGVkIFBoeSkgKi8KICAgewogICAgIC8qIFNlbGVjdCBGUyBFbWJlZGRlZCBQSFkgKi8KQEAgLTI3NywyMSArMjgyLDM5IEBACiAgICovCiBIQUxfU3RhdHVzVHlwZURlZiBVU0JfU2V0Q3VycmVudE1vZGUoVVNCX09UR19HbG9iYWxUeXBlRGVmICpVU0J4LCBVU0JfT1RHX01vZGVUeXBlRGVmIG1vZGUpCiB7CisgIHVpbnQzMl90IG1zID0gMFU7CisKICAgVVNCeC0+R1VTQkNGRyAmPSB+KFVTQl9PVEdfR1VTQkNGR19GSE1PRCB8IFVTQl9PVEdfR1VTQkNGR19GRE1PRCk7CiAKICAgaWYgKG1vZGUgPT0gVVNCX0hPU1RfTU9ERSkKICAgewogICAgIFVTQngtPkdVU0JDRkcgfD0gVVNCX09UR19HVVNCQ0ZHX0ZITU9EOworCisgICAgZG8KKyAgICB7CisgICAgICBIQUxfRGVsYXkoMVUpOworICAgICAgbXMrKzsKKyAgICB9IHdoaWxlICgoVVNCX0dldE1vZGUoVVNCeCkgIT0gKHVpbnQzMl90KVVTQl9IT1NUX01PREUpICYmIChtcyA8IDUwVSkpOwogICB9CiAgIGVsc2UgaWYgKG1vZGUgPT0gVVNCX0RFVklDRV9NT0RFKQogICB7CiAgICAgVVNCeC0+R1VTQkNGRyB8PSBVU0JfT1RHX0dVU0JDRkdfRkRNT0Q7CisKKyAgICBkbworICAgIHsKKyAgICAgIEhBTF9EZWxheSgxVSk7CisgICAgICBtcysrOworICAgIH0gd2hpbGUgKChVU0JfR2V0TW9kZShVU0J4KSAhPSAodWludDMyX3QpVVNCX0RFVklDRV9NT0RFKSAmJiAobXMgPCA1MFUpKTsKICAgfQogICBlbHNlCiAgIHsKICAgICByZXR1cm4gSEFMX0VSUk9SOwogICB9Ci0gIEhBTF9EZWxheSg1MFUpOworCisgIGlmIChtcyA9PSA1MFUpCisgIHsKKyAgICByZXR1cm4gSEFMX0VSUk9SOworICB9CiAKICAgcmV0dXJuIEhBTF9PSzsKIH0KQEAgLTM1Miw2ICszNzUsNyBAQAogICAgICAgKHZvaWQpVVNCX1NldERldlNwZWVkKFVTQngsIFVTQl9PVEdfU1BFRURfSElHSF9JTl9GVUxMKTsKICAgICB9CiAgIH0KKyNpZiBkZWZpbmVkKFNUTTMyRjcyMnh4KSB8fCBkZWZpbmVkKFNUTTMyRjcyM3h4KSB8fCBkZWZpbmVkKFNUTTMyRjczMHh4KSB8fCBkZWZpbmVkKFNUTTMyRjczMnh4KSB8fCBkZWZpbmVkKFNUTTMyRjczM3h4KQogICBlbHNlIGlmIChjZmcucGh5X2l0ZmFjZSA9PSBVU0JfT1RHX0hTX0VNQkVEREVEX1BIWSkKICAgewogICAgIGlmIChjZmcuc3BlZWQgPT0gVVNCRF9IU19TUEVFRCkKQEAgLTM2NSw2ICszODksNyBAQAogICAgICAgKHZvaWQpVVNCX1NldERldlNwZWVkKFVTQngsIFVTQl9PVEdfU1BFRURfSElHSF9JTl9GVUxMKTsKICAgICB9CiAgIH0KKyNlbmRpZiAvKiBkZWZpbmVkKFNUTTMyRjcyMnh4KSB8fCBkZWZpbmVkKFNUTTMyRjcyM3h4KSB8fCBkZWZpbmVkKFNUTTMyRjczMHh4KSB8fCBkZWZpbmVkKFNUTTMyRjczMnh4KSB8fCBkZWZpbmVkKFNUTTMyRjczM3h4KSAqLwogICBlbHNlCiAgIHsKICAgICAvKiBTZXQgQ29yZSBzcGVlZCB0byBGdWxsIHNwZWVkIG1vZGUgKi8KQEAgLTQ2NSw3ICs0OTAsNyBAQAogfQogCiAvKioKLSAgKiBAYnJpZWYgIFVTQl9PVEdfRmx1c2hUeEZpZm8gOiBGbHVzaCBhIFR4IEZJRk8KKyAgKiBAYnJpZWYgIFVTQl9GbHVzaFR4RmlmbyBGbHVzaCBhIFR4IEZJRk8KICAgKiBAcGFyYW0gIFVTQnggIFNlbGVjdGVkIGRldmljZQogICAqIEBwYXJhbSAgbnVtICBGSUZPIG51bWJlcgogICAqICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGEgdmFsdWUgZnJvbSAxIHRvIDE1CkBAIC00NzQsOCArNDk5LDE5IEBACiAgICovCiBIQUxfU3RhdHVzVHlwZURlZiBVU0JfRmx1c2hUeEZpZm8oVVNCX09UR19HbG9iYWxUeXBlRGVmICpVU0J4LCB1aW50MzJfdCBudW0pCiB7Ci0gIHVpbnQzMl90IGNvdW50ID0gMFU7CisgIF9fSU8gdWludDMyX3QgY291bnQgPSAwVTsKIAorICAvKiBXYWl0IGZvciBBSEIgbWFzdGVyIElETEUgc3RhdGUuICovCisgIGRvCisgIHsKKyAgICBpZiAoKytjb3VudCA+IDIwMDAwMFUpCisgICAgeworICAgICAgcmV0dXJuIEhBTF9USU1FT1VUOworICAgIH0KKyAgfSB3aGlsZSAoKFVTQngtPkdSU1RDVEwgJiBVU0JfT1RHX0dSU1RDVExfQUhCSURMKSA9PSAwVSk7CisKKyAgLyogRmx1c2ggVFggRmlmbyAqLworICBjb3VudCA9IDBVOwogICBVU0J4LT5HUlNUQ1RMID0gKFVTQl9PVEdfR1JTVENUTF9UWEZGTFNIIHwgKG51bSA8PCA2KSk7CiAKICAgZG8KQEAgLTQ5MCwxNCArNTI2LDI1IEBACiB9CiAKIC8qKgotICAqIEBicmllZiAgVVNCX0ZsdXNoUnhGaWZvIDogRmx1c2ggUnggRklGTworICAqIEBicmllZiAgVVNCX0ZsdXNoUnhGaWZvICBGbHVzaCBSeCBGSUZPCiAgICogQHBhcmFtICBVU0J4ICBTZWxlY3RlZCBkZXZpY2UKICAgKiBAcmV0dmFsIEhBTCBzdGF0dXMKICAgKi8KIEhBTF9TdGF0dXNUeXBlRGVmIFVTQl9GbHVzaFJ4RmlmbyhVU0JfT1RHX0dsb2JhbFR5cGVEZWYgKlVTQngpCiB7Ci0gIHVpbnQzMl90IGNvdW50ID0gMDsKKyAgX19JTyB1aW50MzJfdCBjb3VudCA9IDBVOwogCisgIC8qIFdhaXQgZm9yIEFIQiBtYXN0ZXIgSURMRSBzdGF0ZS4gKi8KKyAgZG8KKyAgeworICAgIGlmICgrK2NvdW50ID4gMjAwMDAwVSkKKyAgICB7CisgICAgICByZXR1cm4gSEFMX1RJTUVPVVQ7CisgICAgfQorICB9IHdoaWxlICgoVVNCeC0+R1JTVENUTCAmIFVTQl9PVEdfR1JTVENUTF9BSEJJREwpID09IDBVKTsKKworICAvKiBGbHVzaCBSWCBGaWZvICovCisgIGNvdW50ID0gMFU7CiAgIFVTQngtPkdSU1RDVEwgPSBVU0JfT1RHX0dSU1RDVExfUlhGRkxTSDsKIAogICBkbwpAQCAtNzU4LDcgKzgwNSw5IEBACiAgICAgICAqLwogICAgICAgVVNCeF9JTkVQKGVwbnVtKS0+RElFUFRTSVogJj0gfihVU0JfT1RHX0RJRVBUU0laX1hGUlNJWik7CiAgICAgICBVU0J4X0lORVAoZXBudW0pLT5ESUVQVFNJWiAmPSB+KFVTQl9PVEdfRElFUFRTSVpfUEtUQ05UKTsKLSAgICAgIFVTQnhfSU5FUChlcG51bSktPkRJRVBUU0laIHw9IChVU0JfT1RHX0RJRVBUU0laX1BLVENOVCAmICgoKGVwLT54ZmVyX2xlbiArIGVwLT5tYXhwYWNrZXQgLSAxVSkgLyBlcC0+bWF4cGFja2V0KSA8PCAxOSkpOworICAgICAgVVNCeF9JTkVQKGVwbnVtKS0+RElFUFRTSVogfD0gKFVTQl9PVEdfRElFUFRTSVpfUEtUQ05UICYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKChlcC0+eGZlcl9sZW4gKyBlcC0+bWF4cGFja2V0IC0gMVUpIC8gZXAtPm1heHBhY2tldCkgPDwgMTkpKTsKKwogICAgICAgVVNCeF9JTkVQKGVwbnVtKS0+RElFUFRTSVogfD0gKFVTQl9PVEdfRElFUFRTSVpfWEZSU0laICYgZXAtPnhmZXJfbGVuKTsKIAogICAgICAgaWYgKGVwLT50eXBlID09IEVQX1RZUEVfSVNPQykKQEAgLTk3OSw4ICsxMDI4LDkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90IGNoX2VwX251bSwgdWludDE2X3QgbGVuLCB1aW50OF90IGRtYSkKIHsKICAgdWludDMyX3QgVVNCeF9CQVNFID0gKHVpbnQzMl90KVVTQng7Ci0gIHVpbnQzMl90ICpwU3JjID0gKHVpbnQzMl90ICopc3JjOwotICB1aW50MzJfdCBjb3VudDMyYiwgaTsKKyAgdWludDhfdCAqcFNyYyA9IHNyYzsKKyAgdWludDMyX3QgY291bnQzMmI7CisgIHVpbnQzMl90IGk7CiAKICAgaWYgKGRtYSA9PSAwVSkKICAgewpAQCAtOTg5LDYgKzEwMzksOSBAQAogICAgIHsKICAgICAgIFVTQnhfREZJRk8oKHVpbnQzMl90KWNoX2VwX251bSkgPSBfX1VOQUxJR05FRF9VSU5UMzJfUkVBRChwU3JjKTsKICAgICAgIHBTcmMrKzsKKyAgICAgIHBTcmMrKzsKKyAgICAgIHBTcmMrKzsKKyAgICAgIHBTcmMrKzsKICAgICB9CiAgIH0KIApAQCAtMTAwNSwxNCArMTA1OCwzNCBAQAogdm9pZCAqVVNCX1JlYWRQYWNrZXQoVVNCX09UR19HbG9iYWxUeXBlRGVmICpVU0J4LCB1aW50OF90ICpkZXN0LCB1aW50MTZfdCBsZW4pCiB7CiAgIHVpbnQzMl90IFVTQnhfQkFTRSA9ICh1aW50MzJfdClVU0J4OwotICB1aW50MzJfdCAqcERlc3QgPSAodWludDMyX3QgKilkZXN0OworICB1aW50OF90ICpwRGVzdCA9IGRlc3Q7CisgIHVpbnQzMl90IHBEYXRhOwogICB1aW50MzJfdCBpOwotICB1aW50MzJfdCBjb3VudDMyYiA9ICgodWludDMyX3QpbGVuICsgM1UpIC8gNFU7CisgIHVpbnQzMl90IGNvdW50MzJiID0gKHVpbnQzMl90KWxlbiA+PiAyVTsKKyAgdWludDE2X3QgcmVtYWluaW5nX2J5dGVzID0gbGVuICUgNFU7CiAKICAgZm9yIChpID0gMFU7IGkgPCBjb3VudDMyYjsgaSsrKQogICB7CiAgICAgX19VTkFMSUdORURfVUlOVDMyX1dSSVRFKHBEZXN0LCBVU0J4X0RGSUZPKDBVKSk7CiAgICAgcERlc3QrKzsKKyAgICBwRGVzdCsrOworICAgIHBEZXN0Kys7CisgICAgcERlc3QrKzsKKyAgfQorCisgIC8qIFdoZW4gTnVtYmVyIG9mIGRhdGEgaXMgbm90IHdvcmQgYWxpZ25lZCwgcmVhZCB0aGUgcmVtYWluaW5nIGJ5dGUgKi8KKyAgaWYgKHJlbWFpbmluZ19ieXRlcyAhPSAwVSkKKyAgeworICAgIGkgPSAwVTsKKyAgICBfX1VOQUxJR05FRF9VSU5UMzJfV1JJVEUoJnBEYXRhLCBVU0J4X0RGSUZPKDBVKSk7CisKKyAgICBkbworICAgIHsKKyAgICAgICoodWludDhfdCAqKXBEZXN0ID0gKHVpbnQ4X3QpKHBEYXRhID4+ICg4VSAqICh1aW50OF90KShpKSkpOworICAgICAgaSsrOworICAgICAgcERlc3QrKzsKKyAgICAgIHJlbWFpbmluZ19ieXRlcy0tOworICAgIH0gd2hpbGUgKHJlbWFpbmluZ19ieXRlcyAhPSAwVSk7CiAgIH0KIAogICByZXR1cm4gKCh2b2lkICopcERlc3QpOwpAQCAtMTI0NCw3ICsxMzE3LDkgQEAKIHVpbnQzMl90IFVTQl9SZWFkRGV2SW5FUEludGVycnVwdChVU0JfT1RHX0dsb2JhbFR5cGVEZWYgKlVTQngsIHVpbnQ4X3QgZXBudW0pCiB7CiAgIHVpbnQzMl90IFVTQnhfQkFTRSA9ICh1aW50MzJfdClVU0J4OwotICB1aW50MzJfdCB0bXByZWcsIG1zaywgZW1wOworICB1aW50MzJfdCB0bXByZWc7CisgIHVpbnQzMl90IG1zazsKKyAgdWludDMyX3QgZW1wOwogCiAgIG1zayA9IFVTQnhfREVWSUNFLT5ESUVQTVNLOwogICBlbXAgPSBVU0J4X0RFVklDRS0+RElFUEVNUE1TSzsKQEAgLTEzNDAsNyArMTQxNSw3IEBACiAgICovCiBzdGF0aWMgSEFMX1N0YXR1c1R5cGVEZWYgVVNCX0NvcmVSZXNldChVU0JfT1RHX0dsb2JhbFR5cGVEZWYgKlVTQngpCiB7Ci0gIHVpbnQzMl90IGNvdW50ID0gMFU7CisgIF9fSU8gdWludDMyX3QgY291bnQgPSAwVTsKIAogICAvKiBXYWl0IGZvciBBSEIgbWFzdGVyIElETEUgc3RhdGUuICovCiAgIGRvCkBAIC0xMzY2LDkgKzE0NDEsOSBAQAogICByZXR1cm4gSEFMX09LOwogfQogCi0jaWZkZWYgVVNCX0hTX1BIWUMKKyNpZmRlZiBVU0JQSFlDCiAvKioKLSAgKiBAYnJpZWYgIEVuYWJsZXMgY29udHJvbCBvZiBhIEhpZ2ggU3BlZWQgVVNCIFBIWcKScworICAqIEBicmllZiAgRW5hYmxlcyBjb250cm9sIG9mIGEgSGlnaCBTcGVlZCBVU0IgUEhZCiAgICogICAgICAgICBJbml0IHRoZSBsb3cgbGV2ZWwgaGFyZHdhcmUgOiBHUElPLCBDTE9DSywgTlZJQy4uLgogICAqIEBwYXJhbSAgVVNCeCAgU2VsZWN0ZWQgZGV2aWNlCiAgICogQHJldHZhbCBIQUwgc3RhdHVzCkBAIC0xMzc2LDcgKzE0NTEsNyBAQAogc3RhdGljIEhBTF9TdGF0dXNUeXBlRGVmIFVTQl9IU19QSFlDSW5pdChVU0JfT1RHX0dsb2JhbFR5cGVEZWYgKlVTQngpCiB7CiAgIFVOVVNFRChVU0J4KTsKLSAgdWludDMyX3QgY291bnQgPSAwVTsKKyAgX19JTyB1aW50MzJfdCBjb3VudCA9IDBVOwogCiAgIC8qIEVuYWJsZSBMRE8gKi8KICAgVVNCX0hTX1BIWUMtPlVTQl9IU19QSFlDX0xETyB8PSBVU0JfSFNfUEhZQ19MRE9fRU5BQkxFOwpAQCAtMTQyNiwxMyArMTUwMSwxNCBAQAogICAvKiBFbmFibGUgUExMIGludGVybmFsIFBIWSAqLwogICBVU0JfSFNfUEhZQy0+VVNCX0hTX1BIWUNfUExMIHw9IFVTQl9IU19QSFlDX1BMTF9QTExFTjsKIAorCiAgIC8qIDJtcyBEZWxheSByZXF1aXJlZCB0byBnZXQgaW50ZXJuYWwgcGh5IGNsb2NrIHN0YWJsZSAqLwogICBIQUxfRGVsYXkoMlUpOwogCiAgIHJldHVybiBIQUxfT0s7CiB9CiAKLSNlbmRpZiAvKiBVU0JfSFNfUEhZQyAqLworI2VuZGlmIC8qIFVTQlBIWUMgKi8KIC8qKgogICAqIEBicmllZiAgVVNCX0hvc3RJbml0IDogSW5pdGlhbGl6ZXMgdGhlIFVTQiBPVEcgY29udHJvbGxlciByZWdpc3RlcnMKICAgKiAgICAgICAgIGZvciBIb3N0IG1vZGUKQEAgLTE0NDMsNiArMTUxOSw3IEBACiAgICovCiBIQUxfU3RhdHVzVHlwZURlZiBVU0JfSG9zdEluaXQoVVNCX09UR19HbG9iYWxUeXBlRGVmICpVU0J4LCBVU0JfT1RHX0NmZ1R5cGVEZWYgY2ZnKQogeworICBIQUxfU3RhdHVzVHlwZURlZiByZXQgPSBIQUxfT0s7CiAgIHVpbnQzMl90IFVTQnhfQkFTRSA9ICh1aW50MzJfdClVU0J4OwogICB1aW50MzJfdCBpOwogCkBAIC0xNDcyLDggKzE1NDksMTUgQEAKICAgfQogCiAgIC8qIE1ha2Ugc3VyZSB0aGUgRklGT3MgYXJlIGZsdXNoZWQuICovCi0gICh2b2lkKVVTQl9GbHVzaFR4RmlmbyhVU0J4LCAweDEwVSk7IC8qIGFsbCBUeCBGSUZPcyAqLwotICAodm9pZClVU0JfRmx1c2hSeEZpZm8oVVNCeCk7CisgIGlmIChVU0JfRmx1c2hUeEZpZm8oVVNCeCwgMHgxMFUpICE9IEhBTF9PSykgLyogYWxsIFR4IEZJRk9zICovCisgIHsKKyAgICByZXQgPSBIQUxfRVJST1I7CisgIH0KKworICBpZiAoVVNCX0ZsdXNoUnhGaWZvKFVTQngpICE9IEhBTF9PSykKKyAgeworICAgIHJldCA9IEhBTF9FUlJPUjsKKyAgfQogCiAgIC8qIENsZWFyIGFsbCBwZW5kaW5nIEhDIEludGVycnVwdHMgKi8KICAgZm9yIChpID0gMFU7IGkgPCBjZmcuSG9zdF9jaGFubmVsczsgaSsrKQpAQCAtMTQ4MiwxMSArMTU2Niw2IEBACiAgICAgVVNCeF9IQyhpKS0+SENJTlRNU0sgPSAwVTsKICAgfQogCi0gIC8qIEVuYWJsZSBWQlVTIGRyaXZpbmcgKi8KLSAgKHZvaWQpVVNCX0RyaXZlVmJ1cyhVU0J4LCAxVSk7Ci0KLSAgSEFMX0RlbGF5KDIwMFUpOwotCiAgIC8qIERpc2FibGUgYWxsIGludGVycnVwdHMuICovCiAgIFVTQngtPkdJTlRNU0sgPSAwVTsKIApAQCAtMTUxOSw3ICsxNTk4LDcgQEAKICAgICAgICAgICAgICAgICAgICAgVVNCX09UR19HSU5UTVNLX1NPRk0gICAgICAgICAgICAgfCBVU0JfT1RHX0dJTlRTVFNfRElTQ0lOVCB8IFwKICAgICAgICAgICAgICAgICAgICAgVVNCX09UR19HSU5UTVNLX1BYRlJNX0lJU09PWEZSTSAgfCBVU0JfT1RHX0dJTlRNU0tfV1VJTSk7CiAKLSAgcmV0dXJuIEhBTF9PSzsKKyAgcmV0dXJuIHJldDsKIH0KIAogLyoqCkBAIC0xNjcwLDcgKzE3NDksOCBAQAogewogICBIQUxfU3RhdHVzVHlwZURlZiByZXQgPSBIQUxfT0s7CiAgIHVpbnQzMl90IFVTQnhfQkFTRSA9ICh1aW50MzJfdClVU0J4OwotICB1aW50MzJfdCBIQ2NoYXJFcERpciwgSENjaGFyTG93U3BlZWQ7CisgIHVpbnQzMl90IEhDY2hhckVwRGlyOworICB1aW50MzJfdCBIQ2NoYXJMb3dTcGVlZDsKICAgdWludDMyX3QgSG9zdENvcmVTcGVlZDsKIAogICAvKiBDbGVhciBvbGQgaW50ZXJydXB0IGNvbmRpdGlvbnMgZm9yIHRoaXMgaG9zdCBjaGFubmVsLiAqLwpAQCAtMTczNSw2ICsxODE1LDkgQEAKICAgICAgIGJyZWFrOwogICB9CiAKKyAgLyogRW5hYmxlIGhvc3QgY2hhbm5lbCBIYWx0IGludGVycnVwdCAqLworICBVU0J4X0hDKCh1aW50MzJfdCljaF9udW0pLT5IQ0lOVE1TSyB8PSBVU0JfT1RHX0hDSU5UTVNLX0NISE07CisKICAgLyogRW5hYmxlIHRoZSB0b3AgbGV2ZWwgaG9zdCBjaGFubmVsIGludGVycnVwdC4gKi8KICAgVVNCeF9IT1NULT5IQUlOVE1TSyB8PSAxVUwgPDwgKGNoX251bSAmIDB4RlUpOwogCkBAIC0xOTQzLDcgKzIwMjYsNyBAQAogewogICB1aW50MzJfdCBVU0J4X0JBU0UgPSAodWludDMyX3QpVVNCeDsKICAgdWludDMyX3QgaGNudW0gPSAodWludDMyX3QpaGNfbnVtOwotICB1aW50MzJfdCBjb3VudCA9IDBVOworICBfX0lPIHVpbnQzMl90IGNvdW50ID0gMFU7CiAgIHVpbnQzMl90IEhjRXBUeXBlID0gKFVTQnhfSEMoaGNudW0pLT5IQ0NIQVIgJiBVU0JfT1RHX0hDQ0hBUl9FUFRZUCkgPj4gMTg7CiAgIHVpbnQzMl90IENoYW5uZWxFbmEgPSAoVVNCeF9IQyhoY251bSktPkhDQ0hBUiAmIFVTQl9PVEdfSENDSEFSX0NIRU5BKSA+PiAzMTsKIApAQCAtMTk2NCw3ICsyMDQ3LDYgQEAKICAgICAgIHsKICAgICAgICAgVVNCeF9IQyhoY251bSktPkhDQ0hBUiAmPSB+VVNCX09UR19IQ0NIQVJfQ0hFTkE7CiAgICAgICAgIFVTQnhfSEMoaGNudW0pLT5IQ0NIQVIgfD0gVVNCX09UR19IQ0NIQVJfQ0hFTkE7Ci0gICAgICAgIFVTQnhfSEMoaGNudW0pLT5IQ0NIQVIgJj0gflVTQl9PVEdfSENDSEFSX0VQRElSOwogICAgICAgICBkbwogICAgICAgICB7CiAgICAgICAgICAgaWYgKCsrY291bnQgPiAxMDAwVSkKQEAgLTE5ODcsNyArMjA2OSw2IEBACiAgICAgewogICAgICAgVVNCeF9IQyhoY251bSktPkhDQ0hBUiAmPSB+VVNCX09UR19IQ0NIQVJfQ0hFTkE7CiAgICAgICBVU0J4X0hDKGhjbnVtKS0+SENDSEFSIHw9IFVTQl9PVEdfSENDSEFSX0NIRU5BOwotICAgICAgVVNCeF9IQyhoY251bSktPkhDQ0hBUiAmPSB+VVNCX09UR19IQ0NIQVJfRVBESVI7CiAgICAgICBkbwogICAgICAgewogICAgICAgICBpZiAoKytjb3VudCA+IDEwMDBVKQpAQCAtMjAzOCwxNiArMjExOSwyNCBAQAogICAqLwogSEFMX1N0YXR1c1R5cGVEZWYgVVNCX1N0b3BIb3N0KFVTQl9PVEdfR2xvYmFsVHlwZURlZiAqVVNCeCkKIHsKKyAgSEFMX1N0YXR1c1R5cGVEZWYgcmV0ID0gSEFMX09LOwogICB1aW50MzJfdCBVU0J4X0JBU0UgPSAodWludDMyX3QpVVNCeDsKLSAgdWludDMyX3QgY291bnQgPSAwVTsKKyAgX19JTyB1aW50MzJfdCBjb3VudCA9IDBVOwogICB1aW50MzJfdCB2YWx1ZTsKICAgdWludDMyX3QgaTsKIAogICAodm9pZClVU0JfRGlzYWJsZUdsb2JhbEludChVU0J4KTsKIAotICAvKiBGbHVzaCBGSUZPICovCi0gICh2b2lkKVVTQl9GbHVzaFR4RmlmbyhVU0J4LCAweDEwVSk7Ci0gICh2b2lkKVVTQl9GbHVzaFJ4RmlmbyhVU0J4KTsKKyAgLyogRmx1c2ggVVNCIEZJRk8gKi8KKyAgaWYgKFVTQl9GbHVzaFR4RmlmbyhVU0J4LCAweDEwVSkgIT0gSEFMX09LKSAvKiBhbGwgVHggRklGT3MgKi8KKyAgeworICAgIHJldCA9IEhBTF9FUlJPUjsKKyAgfQorCisgIGlmIChVU0JfRmx1c2hSeEZpZm8oVVNCeCkgIT0gSEFMX09LKQorICB7CisgICAgcmV0ID0gSEFMX0VSUk9SOworICB9CiAKICAgLyogRmx1c2ggb3V0IGFueSBsZWZ0b3ZlciBxdWV1ZWQgcmVxdWVzdHMuICovCiAgIGZvciAoaSA9IDBVOyBpIDw9IDE1VTsgaSsrKQpAQCAtMjA4Myw3ICsyMTcyLDcgQEAKIAogICAodm9pZClVU0JfRW5hYmxlR2xvYmFsSW50KFVTQngpOwogCi0gIHJldHVybiBIQUxfT0s7CisgIHJldHVybiByZXQ7CiB9CiAKIC8qKgpAQCAtMjEzNCw1ICsyMjIzLDMgQEAKIC8qKgogICAqIEB9CiAgICovCi0KLS8qKioqKioqKioqKioqKioqKioqKioqKiogKEMpIENPUFlSSUdIVCBTVE1pY3JvZWxlY3Ryb25pY3MgKioqKipFTkQgT0YgRklMRSoqKiovCmRpZmYgLS1naXQgYS9TcmMvc3RtMzJmN3h4X2xsX3V0aWxzLmMgYi9TcmMvc3RtMzJmN3h4X2xsX3V0aWxzLmMKaW5kZXggNGFjNTdjMC4uMmZmODA4NyAxMDA2NDQKLS0tIGEvU3JjL3N0bTMyZjd4eF9sbF91dGlscy5jCisrKyBiL1NyYy9zdG0zMmY3eHhfbGxfdXRpbHMuYwpAQCAtNiwxMyArNiwxMiBAQAogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgKiBAYXR0ZW50aW9uCiAgICoKLSAgKiA8aDI+PGNlbnRlcj4mY29weTsgQ29weXJpZ2h0IChjKSAyMDE3IFNUTWljcm9lbGVjdHJvbmljcy4KLSAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLjwvY2VudGVyPjwvaDI+CisgICogQ29weXJpZ2h0IChjKSAyMDE3IFNUTWljcm9lbGVjdHJvbmljcy4KKyAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAqCi0gICogVGhpcyBzb2Z0d2FyZSBjb21wb25lbnQgaXMgbGljZW5zZWQgYnkgU1QgdW5kZXIgQlNEIDMtQ2xhdXNlIGxpY2Vuc2UsCi0gICogdGhlICJMaWNlbnNlIjsgWW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZQotICAqIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdDoKLSAgKiAgICAgICAgICAgICAgICAgICAgICAgIG9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0JTRC0zLUNsYXVzZQorICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgdW5kZXIgdGVybXMgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZQorICAqIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvZnR3YXJlIGNvbXBvbmVudC4KKyAgKiBJZiBubyBMSUNFTlNFIGZpbGUgY29tZXMgd2l0aCB0aGlzIHNvZnR3YXJlLCBpdCBpcyBwcm92aWRlZCBBUy1JUy4KICAgKgogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgKi8KQEAgLTc1MSw0ICs3NTAsMyBAQAogICAqIEB9CiAgICovCiAKLS8qKioqKioqKioqKioqKioqKioqKioqKiogKEMpIENPUFlSSUdIVCBTVE1pY3JvZWxlY3Ryb25pY3MgKioqKipFTkQgT0YgRklMRSoqKiovCg==